Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:24

Программное создание документа, и заполнение его формы.

Автор IgoryanYa, 17 окт 2018, 16:23

0 Пользователей и 1 гость просматривают эту тему.

IgoryanYa

Приветствую всех дорогие друзья. Вопрос такого характера. Имею документ. У документа есть реквизиты документа. Так же есть форма этого документа и на форме есть дополнительные реквизиты, которые не состоят в Объект.{реквизиты документа}. Например есть такой реквизит Дерево Значений с типом ДеревоЗначений. Так вот во внешней обработки создаю документ:

&НаСервере
ЗаписатьВДокументНаСервере();
ДокументБюджет = Документы.МойДокумент.СоздатьДокумент();
ДокументБюджет.Дата = Объект.Дата;
ДокументБюджет.Сценарий = Объект.Сценарий;
ДокументБюджет.Бюджет = Объект.Бюджет;
ДокументБюджет.ВалютаДокумента = Объект.ВалютаДокумента;
ДокументБюджет.КурсДокумента = Объект.КурсДокумента;
ДокументБюджет.ДатаНач = Объект.ДатаНач;
ДокументБюджет.ДатаКон = Объект.ДатаКон;
ДокументБюджет.Организация = Объект.Организация;
ДокументБюджет.ЦФО = Объект.ЦФО;
ДокументБюджет.Ответственный = Объект.Ответственный;
ДокументБюджет.Состояние = Объект.Состояние;
ДокументБюджет.Записать(РежимЗаписиДокумента.Запись);
Возврат(ДокументБюджет.Ссылка);


В итоге все отлично записывается и все реквизиты документа видны и к ним можно обратиться, надо заполнить еще реквизит ДеревоЗначений. Так как он находиться на форме значит надо получать форму созданного документа, получаю по ссылке. На сервере форма не доступа, поэтому получаю на клиенте.

&НаКлиенте
Ссылка = ЗаписатьВДокументНаСервере();
Структура = Новый Структура("Ключ", Ссылка);
ФормаДокумента = ПолучитьФорму("Документ.МойДокумент.Форма.ФормаДокумента",Структура,,Истина);

В переменной ФормаДокументаБюджет имею форму созданного документа. А далее пробую ФормаДокументаБюджет.ДеревоЗначений = ЭтаФорма.ДеревоБюджет

В результате имею ошибку. Перепробовал все что знал. Помогите советом или подскажите как заполнять элементы формы документа. Может как то перебором? Кто знает?

MuI_I_Ika

А смысл заполнения этого дерева какой? Форма откроется пользователем и дерево должно автоматом заполниться по данным объекта

MuI_I_Ika

А вообще придется перебором дерево заполнять потому что ЗначениеВРеквизитФормы работает только в контексте самой формы

IgoryanYa

Цитата: MuI_I_Ika от 17 окт 2018, 17:46
А смысл заполнения этого дерева какой? Форма откроется пользователем и дерево должно автоматом заполниться по данным объекта

Смысл такой. Обработка для 1с укф. Там при планирование бюджета выбирается сценарий, период, бюджет, регион и всякое остальное. Так как регионов много, и в каждом регионе много магазинов, пользователю нужно создать количество документов равное кол-во регионов *кол-во магазин и число получается огромное, а статьи одинаковые, только планируемые цифры разные. Так как число  документов большое, пользователь в обработке выбирает сценарий, бюджет и сразу область. И в обработке получает страницы, кол - во которых равно кол-ву магазинов в регионе и каждая страница имеет название магащина. И на каждый странице свое дерево бюджета(дерево значений). Вносит цифры и при нажмите на кнопку создаётся столько документов, сколько страниц и с одноимённой страницы из дерево значений вносятся все что есть в дереве значений создаваемого документа. Получилось все, но вот как этот перенос сделать, не знаю.
Добавлено: 17 окт 2018, 18:23


Цитата: MuI_I_Ika от 17 окт 2018, 17:47
А вообще придется перебором дерево заполнять потому что ЗначениеВРеквизитФормы работает только в контексте самой формы
А как? Значениевреквизитформы работает только на форме обработки. Как достучаться до дерева значений в документе, вот вопрос ❓

АлександрВладимирович

Если есть возможность добавить процедуру в модуль формы создаваемого документа, то добавить

&НаСервере
Процедура ЗаполнитьДерево(Знач Дерево) Экспорт
   
   ЗначениеВРеквизитФормы(ДанныеФормыВЗначение(Дерево, Тип("ДеревоЗначений")), "ДеревоЗначений");
   
КонецПроцедуры


А из обработки дергать уже ее после того как получена форма

ФормаДокументаБюджет.ЗаполнитьДерево(ДеревоБюджет);


Но смысла в таком заполнении я тоже не понимаю. Ведь это дерево будет жить только пока жива форма, а в базу не запишется.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск