Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

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

Внешняя обработка заполнения табличных частей - запись документа
Я
   Надмозг
 
17.11.17 - 12:36
Делаю внешнюю обработку для заполнения таб части.
Вид - ЗаполнениеОбъекта
ВызовКлиентскогоМетода

При запуске система просит записать объект. Если это проведенный документ, и оттуда удалить строки вручную, то при записи ругается, что таб часть пустая.

Есть вообще вариант запустить обработку, чтобы запись не требовалась?
 
 
   Mort
 
1 - 17.11.17 - 12:44
А обработка сама не может удалить строки?
   Cyberhawk
 
2 - 17.11.17 - 12:55
Щас напишу ответ, найду только письмо
   Cyberhawk
 
3 - 17.11.17 - 12:56
В ходе реализации выяснилось, что решение текущей задачи через подключаемую обработку вида "Заполнение объекта" предусматривает два варианта, оба из которых накладывают ограничения на возможность использования этой обработки:
1. Для интерактивного взаимодействия с пользователем (открытие формы подбора по документам списания) следует использовать клиентские команды "ОткрытиеФормы" или "ВызовКлиентскогоМетода", при выполнении которых ожидается заполнение данных по ссылкам. Т.е. перед вызовом этих команд задается вопрос о записи объекта, и в случае, если ТЧ у документа пустая, то объект не записывается и команда, соответственно, не выполняется.
В результате для того, чтобы форма подбора открылась, нужно перед вызовом команды добавлять в ТЧ документа как минимум одну строку и обеспечить запись документа без ошибок.

2. С некоторых пор в БСП существует тип команды "ЗаполнениеФормы", не требующий записи объекта в БД перед вызовом команды. Однако, для такой команды отсутствует возможность выполнения какого-либо кода на клиенте (а именно это нам и нужно - открывать форму подбора на клиенте), поэтому такой вариант просто не подходит.

Делаем вывод, что если все-таки решать текущую задачу через подключаемую обработку заполнения объекта по варианту 1, то накладывается существенное ограничение на предмет обязательной заполненности документа до вызова формы подбора.

Повторно предлагаю рассмотреть и одобрить вариант решения задачи через расширение конфигурации, либо подтвердить согласие на то, что будет действовать описанное выше ограничение.

Вдогонку замечу, что проверка на обязательность заполнения ТЧ при записи объекта в форме выполняется только если документ проводится (или уже проведен).
Для нового документа такая проверка не выполняется.
Таким образом, неудобство от внешней обработки будет проявляться только в сценарии, когда уже у проведенного документа в форме очищается ТЧ и вызывается команда подбора (в этом случае такой документ придется сначала распровести из формы).
   h-sp
 
4 - 17.11.17 - 12:56
(0) вроде нет такого варианта.
   Cyberhawk
 
5 - 17.11.17 - 12:57
Распроводи документ (с задаванием вопроса) и дело в шляпе
   Cyberhawk
 
6 - 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) почитаю, спасибо
 
 Рекламное место пустует
   vvp91
 
11 - 17.11.17 - 14:57
Как я делаю:

1. Минимальное универсальное расширение, которое исправляет недоработку БСП.
Надо перекрыть &Вместо метод ОМ.ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуНаКлиенте
Вместо строки <Если Объект.Ссылка.Пустая() Или Форма.Модифицированность Тогда>
Написать <Если ВРег(ВыполняемаяКоманда.Модификатор) <> "БЕЗЗАПИСИФОРМЫ" И (Объект.Ссылка.Пустая() Или Форма.Модифицированность) Тогда>

2. При создании обработок заполнения объектов использовать модификатор команды "БезЗаписиФормы"
Таким образом будем объяснять системе, что это клиентская команда, в которой не надо записывать объект.
3. В обработке заполнения должна быть основная форма, можно пустая, в которой должна быть процедура &НаКлиенте с сигнатурой <Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт>
Таким образом будем обрабатывать вызовы из приложения.
Для доступа к текущему контексту вызывающей формы (Объект - данные формы) в нашей обработке следует использовать <ЭтотОбъект.ВладелецФормы.Объект>

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует