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

Программное заполнение реквизитов документа.

Автор |R|U|D|E|N, 07 мар 2011, 17:36

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

|R|U|D|E|N

Добрый день.

Ответ на мой вопрос, как то уже дала уважаемая  Klyacksa, но к сожалению предложенный ею вариант у меня не сработал.
Мне необходимо из одной формы, открыть Форму конкретного документа и автоматически заполнить реквизиты этой формы.

Делаю следующее:

//закрываю тикущую форму
Закрыть(0);
//получаю документ
Документ = Документы.АктПриемаОборудования.СоздатьДокумент();
//заполняю реквизиты
Документ.ТипПриема = Перечисления.ТипПриема.ГарантийныйРемонт;
//открываю форму документа
Документ.ПолучитьФорму("ФормаДокумента").Открыть()


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

С уважением Александр.


cska-fanat-kz

//закрываю тикущую форму
Закрыть(0);
//получаю документ
ДокументОбъект = Документы.АктПриемаОборудования.СоздатьДокумент();
//открываю форму документа
ФормаДокумента = ДокументОбъект.ПолучитьФорму("ФормаДокумента");
ФормаДокумента.ТипПриема = Перечисления.ТипПриема.ГарантийныйРемонт;
ФормаДокумента.Открыть();
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

|R|U|D|E|N

Спасибо большее cska-fanat-kz ! Все работает четко.
Только вот предложенный вариант позволяет заполнить реквизиты документа а табличную часть не получается.

У меня в документе есть табличная часть "ПереченьОборудования" а ней есть колонкии SN, Наименование и прочии..Как быть с ними?

Делаю так:
...
ФормаДокумента.ПереченьОборудования.SN = ЭлементыФормы.Оборудование.SN.Значение;

Ругается, что элемент не найден?

ЭлементыФормы.Оборудование.SN.Значение - Это поле табличного документа, первой формы, значение которого я хочу передать в документ.


progmikon


НС = ДокументОбъект.ПереченьОборудования.Добавить()
НС.Наименование = ...;

|R|U|D|E|N

cska-fanat-kz Вы как всегда в точку!
Есть еще одна проблемма. Помните мы вместе с Вами создовали ТаблицуЗначений+ТабличноеПоле+КоманднуюПанель из встроенного языка? Так вот теперь мне необходимо данные из этой ТаблицыЗначений перенести в соответствующее ТабличноеПоле документа.


Вот код ТаблицыЗначений+ТабличногоПоля+КоманднойПанели:

//Создаем табличное поле для ввода оборудования
Если ЭлементыФормы.Найти("Оборудование") = Неопределено Тогда
ТабЗн = Новый ТаблицаЗначений;
ТабЗн.Колонки.Добавить("SN", Новый ОписаниеТипов("СправочникСсылка.СерийныеНомера"));
ТабЗн.Колонки.SN.Ширина = 32;
ТабЗн.Колонки.Добавить("Оборудование", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТабЗн.Колонки.Оборудование.Ширина = 32;
ТабЗн.Колонки.Добавить("Комплектация", Новый ОписаниеТипов("Строка"));
ТабЗн.Колонки.Комплектация.Ширина = 35;
ТабЗн.Колонки.Добавить("ВнешнийВид", Новый ОписаниеТипов("Строка"));
ТабЗн.Колонки.ВнешнийВид.Ширина = 35;
ТабЗн.Колонки.Добавить("Кол", Новый ОписаниеТипов("Строка"));
ТабЗн.Колонки.Кол.Ширина = 10;
ТабЗн.Колонки.Добавить("ОтПоставщика", Новый ОписаниеТипов("ПеречислениеСсылка.ПринятоОтПоставщика"));
ТабЗн.Колонки.ОтПоставщика.Ширина = 20;
ТабЗн.Колонки.Добавить("Диагноз", Новый ОписаниеТипов("Строка"));
ТабЗн.Колонки.Диагноз.Ширина = 35;
ТабЗн.Колонки.Добавить("ПредЦена", Новый ОписаниеТипов("Строка"));
ТабЗн.Колонки.ПредЦена.Ширина = 12;




//НоваяСтрока = ТабЗн.Добавить();
//НоваяСтрока.SN = Справочники.СерийныеНомера.НайтиПоКоду(000002);

ТабПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "Оборудование", Истина);
ТабПоле.Лево = 15; ТабПоле.Верх = 195;
ТабПоле.Ширина = ЭтаФорма.Ширина - 30;
ТабПоле.Высота = 70;
ТабПоле.ТолькоПросмотр = ЛОЖЬ;
ТабПоле.ТипЗначения = Новый ОписаниеТипов("ТаблицаЗначений");
ТабПоле.Значение = ТабЗн;
ТабПоле.СоздатьКолонки();

КПанель = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"), "КоманднаяПанельКТаблице", Истина);
Кпанель.Лево = 15;
Кпанель.Верх = 170;
Кпанель.Ширина = Этаформа.Ширина - 30;
Кпанель.Высота = 20;

КПанель.ИсточникДействий = ЭлементыФормы.Оборудование;
Кпанель.АвтоЗаполнение = Истина;
Иначе
ЭлементыФормы.Оборудование.Видимость = Истина;
ЭлементыФормы.КоманднаяПанельКТаблице.Видимость = Истина;
КонецЕсли;



КонецПроцедуры



ТП = ДокументОбъект.ПереченьОборудования.Добавить();
ТП.SN = ТабЗн.??????;


|R|U|D|E|N

Простите progmikon Вам конечно тоже спасибо большее!

progmikon

Не за что.

1. Если вам нужно из ТЗ загрузить в табличную часть, то можно:

ДокументОбъект.ПереченьОборудования.Загрузить(ТЗ);// если имена колонок совпадают, то это самый быстрый вариант

или

Для Каждого ТекСтрока Из ТЗ Цикл
ТП = ДокументОбъект.ПереченьОборудования.Добавить();
ТП.SN = ТекСтрока.СерийныйНомер;
КонецЦикла;

|R|U|D|E|N

progmikon спасибо!  :zebzdr:

ДокументОбъект.ПереченьОборудования.Загрузить(ТЗ); - Это самая генеальная, простая и эффективная синтаксическая конструкция из всех что я пока видел в 1с))

Все работает! Тема закрыта.

Теги:

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

Рейтинг@Mail.ru

Поиск