|
Программное заполнение табличной части документа | ☑ | ||
---|---|---|---|---|
0
pavel1982
23.03.18
✎
16:01
|
Здравствуйте. Подскажите как справиться с такой задачей. 1С 8.3 управляемые формы конф ЗУП 3.0. Пишу обработку, которая загружает некоторые данные в документ(список сотрудников в документ Премия в данном случае).
1. Как сделать это более правильно - программным заполнением реквизитов самого документа или программным заполнением реквизитов формы или программным заполнением элементов формы? Первый и второй способ в принципе работает, все заполняется, но в таких случаях не срабатывают обработчики событий, которые срабатывают в случае интерактивного ввода строк таблицы. Нет уверенности что эти обработчики не меняют что то, что важно для дальнейшей логики работы программы. 2. Не пойму как заполнить строки таблицы по 3 варианту. &НаКлиенте П = Новый Структура("Ключ", ПолучитьДокСсылка());//получаю ссылку на сервере Форма = ПолучитьФорму("Документ.Премия.ФормаОбъекта", П); Форма.Открыть();//все работает Форма.Элементы.Начисления.ДобавитьСтроку();//добавляет После этого открывается документ нужный - форма и есть добавленная строка, просит сохранить при закрытии. А как в эту строку что то внести? Спасибо |
|||
1
xxTANATORxx
23.03.18
✎
16:25
|
(0)после заполнения предполагается открытие формы?
|
|||
2
xxTANATORxx
23.03.18
✎
16:25
|
(1)+ и нужно ли открывать форму?
|
|||
3
Alexandr_U1982
23.03.18
✎
16:27
|
НоваяСтрока = Форма.Объект.Начисления.ДобавитьСтроку();
НоваяСтрока.Сотрудник = Сотрудник; |
|||
4
pavel1982
23.03.18
✎
17:02
|
1. Открытие формы не обязательно. Нет никаких спец требований. Кроме того, что в итоге документ должен быть полностью эквивалентен как если бы его заполняли вручную.
2. Alexandr_U1982: Этот вариант работает. Только функция Добавить() вместо ДобавитьСтроку(); Вот так работает П = Новый Структура("Ключ", ПолучитьДокСсылка()); Форма = ПолучитьФорму("Документ.Премия.ФормаОбъекта", П); Форма.Открыть(); //открываем форму //здесь меняем связанные данные НоваяСтрока = Форма.Объект.Начисления.Добавить(); НоваяСтрока.Сотрудник = ПолучитьСотрСсылка();//ссылку на объект получаем серверным вызовом Только пара ньюансов. Работает только если есть Форма.Открыть(); иначе документ пустой. Это в принципе и понятно. Но главное что после отработки кода когда заполнено естественно только сотрудник, а если сотрудника вводить интерактивно, автоматом заполняется еще и подразделение. Подразделение то заполнить тоже не сложно, но где уверенность что не работают еще какие то важные обработчики? |
|||
5
pavel1982
23.03.18
✎
17:06
|
Вопрос как программно при заполнении полностью сымитировать интерактивный ввод? Не очень то и охота с элементами управления возиться, а есть ли другой выход? В конфигураторе смотришь - что в документе Премия что в его форме кроме той ТЧ что видно еще куча ТЧ, реквизитов и еще много чего. При интерактивном вводе все заполниться как задумано в логике работы дока.
|
|||
6
Alexandr_U1982
23.03.18
✎
17:14
|
(5)Если бы процедуры в модуле формы были экспортными, то их можно было бы вызвать через переменную "Форма". Остается только посмотреть код в форме документа и перенести его в свою обработку.
|
|||
7
Alexandr_U1982
23.03.18
✎
17:15
|
(4)Конечно же "Добавить()", а не "ДобавитьСтроку()")))
"ДобавитьСтроку()" скопировал из 0. |
|||
8
Alexandr_U1982
23.03.18
✎
17:20
|
А вообще в ЗУП 3.1 включена стандартная подсистема "Загрузка данных из файла".
http://its.1c.ru/db/bsp245doc#content:33:1 Можно ее подключить к документу "Премия" и использовать для загрузки данных. Правда для этого придется снимать конфу с поддержки и вносить изменения в модуль формы и модуль менеджера. |
|||
9
xxTANATORxx
23.03.18
✎
17:21
|
(4)создавай объект, заполняй, анализируй обработчики формы, переноси нужные алгоритмы в свою обработку. С открытием формы и вызовом обработчиков вообще не связывайся
|
|||
10
xxTANATORxx
23.03.18
✎
17:22
|
(9)+ посмотри мошт можно использовать обработку заполнения, подсунуть ей структуру
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |