![]() |
|
Внешняя обработка заполнения табличных частей - запись документа | ☑ | ||
---|---|---|---|---|
0
Надмозг
17.11.17
✎
12:36
|
Делаю внешнюю обработку для заполнения таб части.
Вид - ЗаполнениеОбъекта ВызовКлиентскогоМетода При запуске система просит записать объект. Если это проведенный документ, и оттуда удалить строки вручную, то при записи ругается, что таб часть пустая. Есть вообще вариант запустить обработку, чтобы запись не требовалась? |
|||
1
Mort
17.11.17
✎
12:44
|
А обработка сама не может удалить строки?
|
|||
2
Cyberhawk
17.11.17
✎
12:55
|
Щас напишу ответ, найду только письмо
|
|||
3
Cyberhawk
17.11.17
✎
12:56
|
В ходе реализации выяснилось, что решение текущей задачи через подключаемую обработку вида "Заполнение объекта" предусматривает два варианта, оба из которых накладывают ограничения на возможность использования этой обработки:
1. Для интерактивного взаимодействия с пользователем (открытие формы подбора по документам списания) следует использовать клиентские команды "ОткрытиеФормы" или "ВызовКлиентскогоМетода", при выполнении которых ожидается заполнение данных по ссылкам. Т.е. перед вызовом этих команд задается вопрос о записи объекта, и в случае, если ТЧ у документа пустая, то объект не записывается и команда, соответственно, не выполняется. В результате для того, чтобы форма подбора открылась, нужно перед вызовом команды добавлять в ТЧ документа как минимум одну строку и обеспечить запись документа без ошибок. 2. С некоторых пор в БСП существует тип команды "ЗаполнениеФормы", не требующий записи объекта в БД перед вызовом команды. Однако, для такой команды отсутствует возможность выполнения какого-либо кода на клиенте (а именно это нам и нужно - открывать форму подбора на клиенте), поэтому такой вариант просто не подходит. Делаем вывод, что если все-таки решать текущую задачу через подключаемую обработку заполнения объекта по варианту 1, то накладывается существенное ограничение на предмет обязательной заполненности документа до вызова формы подбора. Повторно предлагаю рассмотреть и одобрить вариант решения задачи через расширение конфигурации, либо подтвердить согласие на то, что будет действовать описанное выше ограничение. Вдогонку замечу, что проверка на обязательность заполнения ТЧ при записи объекта в форме выполняется только если документ проводится (или уже проведен). Для нового документа такая проверка не выполняется. Таким образом, неудобство от внешней обработки будет проявляться только в сценарии, когда уже у проведенного документа в форме очищается ТЧ и вызывается команда подбора (в этом случае такой документ придется сначала распровести из формы). |
|||
4
h-sp
17.11.17
✎
12:56
|
(0) вроде нет такого варианта.
|
|||
5
Cyberhawk
17.11.17
✎
12:57
|
Распроводи документ (с задаванием вопроса) и дело в шляпе
|
|||
6
Cyberhawk
17.11.17
✎
13:09
|
Ну или юзай ЗаполнениеФормы, если клиентские методы не нужны
|
|||
7
Надмозг
17.11.17
✎
14:35
|
(1) зачем?
|
|||
8
Надмозг
17.11.17
✎
14:35
|
(6) задать вопрос перед заполнением нужно, получается клиентский метод нужен
|
|||
9
Надмозг
17.11.17
✎
14:36
|
(6) плюс там надо открыть форму с некоторыми настройками для заполнения
|
|||
10
Надмозг
17.11.17
✎
14:39
|
(3) почитаю, спасибо
|
|||
11
vvp91
17.11.17
✎
14:57
|
Как я делаю:
1. Минимальное универсальное расширение, которое исправляет недоработку БСП. Надо перекрыть &Вместо метод ОМ.ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуНаКлиенте Вместо строки <Если Объект.Ссылка.Пустая() Или Форма.Модифицированность Тогда> Написать <Если ВРег(ВыполняемаяКоманда.Модификатор) <> "БЕЗЗАПИСИФОРМЫ" И (Объект.Ссылка.Пустая() Или Форма.Модифицированность) Тогда> 2. При создании обработок заполнения объектов использовать модификатор команды "БезЗаписиФормы" Таким образом будем объяснять системе, что это клиентская команда, в которой не надо записывать объект. 3. В обработке заполнения должна быть основная форма, можно пустая, в которой должна быть процедура &НаКлиенте с сигнатурой <Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт> Таким образом будем обрабатывать вызовы из приложения. Для доступа к текущему контексту вызывающей формы (Объект - данные формы) в нашей обработке следует использовать <ЭтотОбъект.ВладелецФормы.Объект> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |