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

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

Программное заполнение табличной части документа

Программное заполнение табличной части документа
Я
   pavel1982
 
23.03.18 - 16:01
Здравствуйте. Подскажите как справиться с такой задачей. 1С 8.3 управляемые формы конф ЗУП 3.0. Пишу обработку, которая загружает некоторые данные в документ(список сотрудников в документ Премия в данном случае).
1. Как сделать это более правильно - программным заполнением реквизитов самого документа или программным заполнением реквизитов формы или программным заполнением элементов формы? Первый и второй способ в принципе работает, все заполняется, но в таких случаях не срабатывают обработчики событий, которые срабатывают в случае интерактивного ввода строк таблицы. Нет уверенности что эти обработчики не меняют что то, что важно для дальнейшей логики работы программы.
2. Не пойму как заполнить строки таблицы по 3 варианту.

&НаКлиенте
П = Новый Структура("Ключ", ПолучитьДокСсылка())//получаю ссылку на сервере

Форма = ПолучитьФорму("Документ.Премия.ФормаОбъекта", П);
Форма.Открыть()//все работает    

Форма.Элементы.Начисления.ДобавитьСтроку()//добавляет


После этого открывается документ нужный - форма и есть добавленная строка, просит сохранить при закрытии. А как в эту строку что то внести? Спасибо
 
 
   xxTANATORxx
 
1 - 23.03.18 - 16:25
(0)после заполнения предполагается открытие формы?
   xxTANATORxx
 
2 - 23.03.18 - 16:25
(1)+ и нужно ли открывать форму?
   Alexandr_U1982
 
3 - 23.03.18 - 16:27
НоваяСтрока = Форма.Объект.Начисления.ДобавитьСтроку();
НоваяСтрока.Сотрудник = Сотрудник;
   pavel1982
 
4 - 23.03.18 - 17:02
1. Открытие формы не обязательно. Нет никаких спец требований. Кроме того, что в итоге документ должен быть полностью эквивалентен как если бы его заполняли вручную.

2. Alexandr_U1982: Этот вариант работает. Только функция Добавить() вместо ДобавитьСтроку(); Вот так работает

П = Новый Структура("Ключ", ПолучитьДокСсылка());
Форма = ПолучитьФорму("Документ.Премия.ФормаОбъекта", П);
Форма.Открыть();//открываем форму

//здесь меняем связанные данные    
НоваяСтрока = Форма.Объект.Начисления.Добавить();
НоваяСтрока.Сотрудник = ПолучитьСотрСсылка()//ссылку на объект получаем серверным вызовом


Только пара ньюансов. Работает только если есть Форма.Открыть(); иначе документ пустой. Это в принципе и понятно. Но главное что после отработки кода когда заполнено естественно только сотрудник, а если сотрудника вводить интерактивно, автоматом заполняется еще и подразделение. Подразделение то заполнить тоже не сложно, но где уверенность что не работают еще какие то важные обработчики?
   pavel1982
 
5 - 23.03.18 - 17:06
Вопрос как программно при заполнении полностью сымитировать интерактивный ввод? Не очень то и охота с элементами управления возиться, а есть ли другой выход? В конфигураторе смотришь - что в документе Премия что в его форме кроме той ТЧ что видно еще куча ТЧ, реквизитов и еще много чего. При интерактивном вводе все заполниться как задумано в логике работы дока.
   Alexandr_U1982
 
6 - 23.03.18 - 17:14
(5)Если бы процедуры в модуле формы были экспортными, то их можно было бы вызвать через переменную "Форма". Остается только посмотреть код в форме документа и перенести его в свою обработку.
   Alexandr_U1982
 
7 - 23.03.18 - 17:15
(4)Конечно же "Добавить()", а не "ДобавитьСтроку()")))
"ДобавитьСтроку()" скопировал из 0.
   Alexandr_U1982
 
8 - 23.03.18 - 17:20
А вообще в ЗУП 3.1 включена стандартная подсистема "Загрузка данных из файла".
http://its.1c.ru/db/bsp245doc#content:33:1

Можно ее подключить к документу "Премия" и использовать для загрузки данных. Правда для этого придется снимать конфу с поддержки и вносить изменения в модуль формы и модуль менеджера.
   xxTANATORxx
 
9 - 23.03.18 - 17:21
(4)создавай объект, заполняй, анализируй обработчики формы, переноси нужные алгоритмы в свою обработку. С открытием формы и вызовом обработчиков вообще не связывайся
   xxTANATORxx
 
10 - 23.03.18 - 17:22
(9)+ посмотри мошт можно использовать обработку заполнения, подсунуть ей структуру
 
 Рекламное место пустует

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