Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 окт 2021, 20:45

Выбор данных из справочника в печатную форму.

Автор vitali279, 13 апр 2017, 11:50

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

vitali279

Здравствуйте, есть документ ДопСоглашение который выводится на печать через макет. В документе ДопСоглашение в форме ПоляДоговора предварительно заполняются поля, которые выводятся на печать через макет. Одно из полей ВЛицеДолжность тип строка выводится на печать в WORD параметром в тексте [ВЛицеДолжность] через макет шаблоном.
Если поле заполнять вручную - все нормально выводится. (Листинг процедуры внизу).
Поставили задачу получать Должности в форму путем выбора их из справочника. Попытка смена типа реквизита на СправочникСсылка.Должности результата не дала.
В форме ПоляДоговора теперь можно выбрать из справочника любую должность, но на печать выводится сам параметр [ВЛицеДолжность] а не его содержимое.
Причем что примечательно после смены типа одного единственного реквизита все остальные реквизиты с типом строка тоже перестали выводить содержимое передаваемое параметрами.

Заранее благодарен за ваши идеи!     

Процедура Печать() Экспорт
   // формируем док-файл договора
   Если Организация.Пустая() Или Контрагент.Пустая() Тогда
      Предупреждение("Не выбрана организация или контрагент",3);
      Возврат;
   КонецЕсли;
   ИННорг = СокрЛП(Договор.Организация.ИНН);
   // форма ввода доп.данных
   СтруктДанных = Новый Структура();
   СтруктДанных.Вставить("НомерДС", Строка(ЭтотОбъект.НомерДопСоглашения));
   СтруктДанных.Вставить("ДатаДС", Формат(ЭтотОбъект.Дата,"ДФ=dd.MM.yyyy"));
   СтруктДанных.Вставить("Контрагент", СокрЛП(ЭтотОбъект.Контрагент.Наименование));
   СтруктДанных.Вставить("НаОсновании", "Устава");
   СтруктДанных.Вставить("ВЛицеДолжность");
   СтруктДанных.Вставить("Должность");
   СтруктДанных.Вставить("ВЛицеФИО", "");
   СтруктДанных.Вставить("ФИО", "");
   СтруктДанных.Вставить("НомерДоговора",Договор.НомерВРеестре);   
   СтруктДанных.Вставить("ДатаДоговора",Формат(Договор.ДатаВРеестре,"ДФ=dd.MM.yyyy"));
   СтруктДанных.Вставить("ВидУслуги",Строка(ЭтотОбъект.СтатьяЗатрат));
   
   форма = ЭтотОбъект.ПолучитьФорму("ПоляДоговора");
   ЗаполнитьЗначенияСвойств(Форма,СтруктДанных);
   рез = Форма.ОткрытьМодально();
   Если рез<>"OK" Тогда Возврат; КонецЕсли; //отмена
   ЗаполнитьЗначенияСвойств(СтруктДанных,Форма);
   
   Имя = "Протокол"+СокрЛП(Организация.ИНН);
   Макет  = Метаданные.ОбщиеМакеты.Найти(Имя);
   Если Макет = неопределено Тогда
      Предупреждение("Не найден макет договора для данной организации",3);
      Возврат;
   КонецЕсли;
   Макет = ПолучитьОбщийМакет(имя);
   ИмяФайла = ПолучитьИмяВременногоФайла("doc");
   Макет.Записать(ИмяФайла);
// заменяем поля шаблонов   
   НастройкиЗамены = Новый Массив;
   Для Каждого Эл Из СтруктДанных Цикл
      НастройкиЗамены.Добавить(Новый Структура("ТермДляЗамены, ЗаменяемаяСтрока, ЗначениеЗамены",Эл.Ключ,"",Эл.Значение));
   КонецЦикла;
   Расширение = ".docx";
   док = ЗаполнитьФайлMSWord(Расширение, НастройкиЗамены, ИмяФайла);
// заполняем табличную часть   
   tbl = док.tables(1);
   // добавляем нужное кол-во строк
   Для сч=1 По Тарифы.Количество()-1 Цикл tbl.Rows.Add(); КонецЦикла;
   Для  сч=1 По Тарифы.Количество() Цикл
      стр = Тарифы[сч-1];
      СтанцияНазначения = СокрЛП(стр.СтанцияНазначения)+" ["+СокрЛП(стр.СтанцияНазначения.Родитель.Сокращение)+"]";
      СтанцияОтправления = СокрЛП(стр.СтанцияОтправления)+" ["+СокрЛП(стр.СтанцияОтправления.Родитель.Сокращение)+"]";
      ТипВагона = СокрЛП(стр.ТипВагона);
      ТипГруза = СокрЛП(стр.Груз);
      Сумма = Формат(стр.Тариф,"ЧЦ=15; ЧДЦ=2; ЧРД=,; ЧРГ=' '");
      tbl.Rows(сч+1).Range.Cells(1).Range.Text = СтанцияОтправления;
      tbl.Rows(сч+1).Range.Cells(2).Range.Text = СтанцияНазначения;
      tbl.Rows(сч+1).Range.Cells(3).Range.Text = ТипВагона;
      tbl.Rows(сч+1).Range.Cells(4).Range.Text = ТипГруза;
      tbl.Rows(сч+1).Range.Cells(5).Range.Text = Сумма;
   КонецЦикла;
   
   ИмяФайла = "Договор.doc";
   //док.SaveAs2(ИмяФайла);   

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


Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск