Внешняя обработка заполнения табличных частей - запись документа #808616


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

В этой группе 1С