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

Открытие формы из модуля объекта внешней печатной формы

Автор illyaromanenko, 11 мар 2024, 15:39

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

illyaromanenko

Добрый день. Вопрос следующий: есть внешняя печатная форма. В модуле объекта в функции СформироватьТабДок необходимо открывать форму выбора в условной конструкции. Приведу код модуля объекта ():

Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
   Запрос.Текст =
   "ВЫБРАТЬ
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.НомерСтроки КАК НомерСтроки,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.Номенклатура КАК Номенклатура,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.Номенклатура.Артикул КАК Артикул,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.Номенклатура.НаименованиеПолное КАК Товар,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.Характеристика КАК Характеристика,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.Цена КАК Цена,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.Упаковка КАК Упаковка,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.ВидЦеныПоставщика.Валюта КАК ВидЦеныПоставщикаВалюта,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.ВидЦеныПоставщика.Валюта.Представление КАК ВидЦеныПоставщикаВалютаПредставление,
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.Упаковка.Наименование КАК УпНазв
   |ИЗ
   |   Документ.РегистрацияЦенНоменклатурыПоставщика.Товары КАК РегистрацияЦенНоменклатурыПоставщикаТовары
   |ГДЕ
   |   РегистрацияЦенНоменклатурыПоставщикаТовары.Ссылка = &ТекущийДокумент";

   ВыборкаПоТоварам = Запрос.Выполнить().Выбрать();
   
   
      
   НалоговыйАгент = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект,"Организация");
   

   
   
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |   РегистрацияЦенНоменклатурыПоставщикаТовары.Номенклатура КАК Номенклатура,
               |   РегистрацияЦенНоменклатурыПоставщикаТовары.Ссылка.Партнер КАК Партнер
               |ПОМЕСТИТЬ ВТ
               |ИЗ
               |   Документ.РегистрацияЦенНоменклатурыПоставщика.Товары КАК РегистрацияЦенНоменклатурыПоставщикаТовары
               |ГДЕ
               |   РегистрацияЦенНоменклатурыПоставщикаТовары.Ссылка = &Ссылка
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |   ВариантыОбеспеченияТоварами.СпособОбеспеченияПотребностей.Соглашение КАК Соглашение
               |ИЗ
               |   ВТ КАК ВТ
               |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК ВариантыОбеспеченияТоварами
               |      ПО ВТ.Номенклатура = ВариантыОбеспеченияТоварами.Номенклатура
               |
               |СГРУППИРОВАТЬ ПО
               |   ВариантыОбеспеченияТоварами.СпособОбеспеченияПотребностей.Соглашение";

Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
ВыборкаСоглашение = Запрос.Выполнить().Выбрать();








Если ВыборкаСоглашение.Количество() > 1 Тогда
   ТаблицаСоглашений = Запрос.Выполнить().Выгрузить();
   //!!!!!!!!Открыть форму выбора, передать в неё ТаблицуСоглашений и выгрузить её в таблицу на форме выбора. Далее выбрать одно значение и вернуть его обратно в эту функцию и записать в переменную Соглашение!!!!!!!!
   ДоговорСсылка = УправлениеСвойствами.ЗначениеСвойства(Соглашение, "ДоговорКонтрагента_e7b95e67e986453297c2ccab8e27dd38");
ИначеЕсли ВыборкаСоглашение.Количество() = 1 Тогда:
   ДоговорСсылка = УправлениеСвойствами.ЗначениеСвойства(ВыборкаСоглашение.Соглашение, "ДоговорКонтрагента_e7b95e67e986453297c2ccab8e27dd38");
КонецЕсли;





     




   
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ДоговорыКонтрагентов.Дата КАК Дата,
      |   ДоговорыКонтрагентов.Номер КАК Номер
      |ИЗ
      |   Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
      |ГДЕ
      |   ДоговорыКонтрагентов.Ссылка = &Ссылка";
   
Запрос.УстановитьПараметр("Ссылка", ДоговорСсылка);
   
РезультатЗапроса = Запрос.Выполнить();
   
ВыборкаДанныеДоговора = РезультатЗапроса.Выбрать();

Пока ВыборкаДанныеДоговора.Следующий() Цикл
   
   ДатаДог = ВыборкаДанныеДоговора.Дата;
   НомерДог = ВыборкаДанныеДоговора.Номер;
   
КонецЦикла;
   

   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УстановкаЦенНоменклатурыКонтрагентов_СпецификацияНаПодпись";
   
   Макет = ПолучитьМакет("СпецификацияБезФормы");
   
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); 
   ОбластьМакета.Параметры.НомерСпецификации = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект,"НомерСпецификации_13c98ec06db64ad586ab77648e1d69f2");
   ОбластьМакета.Параметры.ДатаСпецификации = Формат(УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект,"ДатаСпецификации3"), "ДФ=dd.MM.yyyy");
   ОбластьМакета.Параметры.НомерДог = НомерДог;
   ОбластьМакета.Параметры.ДатаДог = ДатаДог;
   ОбластьМакета.Параметры.ПредставлениеКонтрагента = СсылкаНаОбъект.Партнер;
   
   ОбластьМакета.Параметры.ПредставлениеПокупателя = НалоговыйАгент;
   
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Контрагент");
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьШапка= Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подписи");
   
   ТабДокумент.Вывести(ОбластьШапка);
      
   Пока ВыборкаПоТоварам.Следующий() Цикл
      
         ОбластьСтрока.Параметры.НомерСтроки = ВыборкаПоТоварам.НомерСтроки;
         ОбластьСтрока.Параметры.Товар = ВыборкаПоТоварам.Номенклатура;
         ОбластьСтрока.Параметры.Цена = ВыборкаПоТоварам.Цена;
         ОбластьСтрока.Параметры.Артикул = ВыборкаПоТоварам.Артикул;
         Упаковка = ВыборкаПоТоварам.Упаковка;
         Если Упаковка = ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка") Тогда
            Упаковка = КомплектЕдиницаИзмеренияПриИзмененииНаСервере(ВыборкаПоТоварам.Номенклатура);
         КонецЕсли;
         ОбластьСтрока.Параметры.ЕдиницаИзмерения = Упаковка;
         
         ШК = ПолучитьШтрихкодТовара(ВыборкаПоТоварам.Номенклатура, ВыборкаПоТоварам.Упаковка);
         ОбластьСтрока.Параметры.Штрихкод = ШК;
         ТабДокумент.Вывести(ОбластьСтрока);
      
   КонецЦикла;
   
    ОбластьПодвал.Параметры.ПредставлениеКонтрагента = НалоговыйАгент;
   ОбластьПодвал.Параметры.ПредставлениеПокупателя = СсылкаНаОбъект.Партнер;

   
   ТабДокумент.Вывести(ОбластьПодвал);
    ТабДокумент.АвтоМасштаб = Истина;
   Возврат ТабДокумент;








Вот собственно и весь код. Открывать форму необходимо в редких случаях, но всё-таки надо. Как сделать это не изменяя сведения о внешней обработке?
   


LexaK

illyaromanenko, ну все супер!
в вашем случае ПФ надо объявить как обработку с Клиентским методом, т.е. с открытием формы обработки печати.

   НоваяКоманда.Использование          = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();


вот на ней и выполняете все свои проверки и настройки и получение промежуточных данных и их передачу дальше
так же в этом режиме можете задавать пользователю Вопросы (ПоказатьВопрос), выбрать различнве настройки и др.
если помогло нажмите: Спасибо!

illyaromanenko


Теги:

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

Рейтинг@Mail.ru

Поиск