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

Внешняя печатная форма с формой в 8.3

Автор lolozhiga, 18 фев 2014, 10:45

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

lolozhiga

Помогите с формой. Есть код:
&НаКлиенте
Процедура ПечатьК(ТабДокумент,Команда)
Печать(ТабДокумент);
КонецПроцедуры

&НаСервере
Процедура Печать(ТабДокумент)
ПечатьАкта(ТабДокумент)  ;
ТабДокумент.Показать();
КонецПроцедуры

&НаСервере
Функция ПечатьАкта(ТабДокумент)

Перем ПодразделениеОтветственныхЛиц; 
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ПолеСверху              = 10;
ТабДокумент.ПолеСлева               = 5;
ТабДокумент.ПолеСнизу               = 10;
ТабДокумент.ПолеСправа              = 5;
ТабДокумент.АвтоМасштаб             = Ложь;
ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Портрет; 
Табдокумент.ОтображатьСетку = Ложь;
ТабДокумент.ОтображатьЗаголовки = Ложь;


//Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());

Запрос = ЗапросНаСервере(); 
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ТОРГ2");
 

//СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.ДатаДокумента);
//СведенияОПоставщике = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо,  Шапка.ДатаДокумента);

//Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Руководители, Шапка.ДатаДокумента, ПодразделениеОтветственныхЛиц);
//Руководитель = Руководители.РуководительПредставление;
//Бухгалтер    = Руководители.ГлавныйБухгалтерПредставление;

ОбластьМакета = Макет.ПолучитьОбласть("ШапкаПервойСтраницы");
ОбластьМакета.Параметры.Заполнить(Шапка);
//ОбластьМакета.Параметры.ПредставлениеОрганизации = ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование,ЮридическийАдрес,ИНН,КПП,Телефоны");
//ОбластьМакета.Параметры.ОрганизацияПоОКПО = ОписаниеОрганизации(СведенияОПокупателе, "КодПоОКПО");
ОбластьМакета.Параметры.ДатаДокумента  = Формат(Шапка.ДатаДокумента, "ДФ=dd.MM.yyyy");
//ОбластьМакета.Параметры.ДолжностьРуководителя     = Руководители.РуководительДолжность;
//ОбластьМакета.Параметры.РуководительФИО           = Руководители.РуководительПредставление;
//ОбластьМакета.Параметры.Грузоотправитель = ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,ЮридическийАдрес,ИНН,КПП,Телефоны");
ОбластьМакета.Параметры.НомерДокумента = Шапка.НомерДок;
ОбластьМакета.Параметры.НомерОснования = Объект.НомерОснования;
ОбластьМакета.Параметры.ОснованиеДляСоставленияАкта  = Объект.Основание;
ОбластьМакета.Параметры.ПредставлениеПодразделения = Шапка.ПодразделениеОрганизации;
ОбластьМакета.Параметры.ДатаОснования  = Формат(Объект.ДатаОснования, "ДФ=dd.MM.yyyy");
//ОбластьМакета.Параметры.МестоПриемкиТовара = ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес");
ОбластьМакета.Параметры.ПереченьСопроводительныхДокументов = "Накладная № " + Шапка.Номер + " от " + Формат(Шапка.Дата, "ДФ=dd.MM.yyyy");
ОбластьМакета.Параметры.ДатаДоставкиТоваровДень = Шапка.День;
ОбластьМакета.Параметры.ДатаДоставкиТоваровМесяц = Шапка.Месяц;
ОбластьМакета.Параметры.ДатаДоставкиТоваровГод = Шапка.Год;
ТабДокумент.Вывести(ОбластьМакета);


//ТабДокумент.Показать();


Возврат ТабДокумент;


КонецФункции

&НаСервере
Функция ЗапросНаСервере ()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("СсылкаНаОбъект", Объект.СсылкаНаОбъект);

Запрос.Текст =

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

КонецФункции


Выдает ошибку:
{Форма.Форма.Форма(168)}: Ошибка при вызове метода контекста (Печать)
   Печать(ТабДокумент);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'КомандаФормы'
Как это исправить? Может у кого - нибудь есть простой пример вывода ВПФ с формой? Платформа : 8.3.4.408, Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.29.8), Форма Торг-2.

MuI_I_Ika

Подозреваю что ТабДокумент - это у вас реквизит на форме.

MuI_I_Ika

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

lolozhiga

Цитата: MuI_I_Ika от 18 фев 2014, 11:54
Подозреваю что ТабДокумент - это у вас реквизит на форме.
На форме у меня только  3 вводимых параметра. Туда я нехочу ничего передовать.
Добавлено: 18 фев 2014, 17:08


Цитата: MuI_I_Ika от 18 фев 2014, 11:55
Вам нужно на клиенте получать табличный документ, а уже потом на основании него заполнять поле на форме.
Нет в ланах что-то заполнять на форме! Хочу получить из запроса данные и из формы, вводимые вручную и ими уже заполнять печатную форму.

MuI_I_Ika

Тогда что такое ТабДокумент для формы?

lolozhiga

Цитата: MuI_I_Ika от 18 фев 2014, 17:12
Тогда что такое ТабДокумент для формы?
Переделала. Убрала ТабДокумент. Теперь выглядит так:

&НаКлиенте
Процедура ПечатьК(Команда,МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
   Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры

&НаСервере
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
   КоллекцияПечатныхФорм     = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ТОРГ2");
   Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ2") Тогда
      УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ2", "ТОРГ2",
      ПечатьАкта()) ;
   КонецЕсли
КонецПроцедуры
Ошибка:
{Форма.Форма.Форма(168)}: Ошибка при вызове метода контекста (Печать)
   Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: param   Форма: Элемент   Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable';

MuI_I_Ika

По порядку какие типы у реквизитов?

МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода

lolozhiga

Цитата: MuI_I_Ika от 18 фев 2014, 18:17
По порядку какие типы у реквизитов?

МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода
Убрала эти реквизиты. Получилось так:

&НаКлиенте
Процедура ПечатьК(Команда,СсылкаНаДок, ТабДок, ЗаголовокТабДок)
   Печать(СсылкаНаДок, ТабДок, ЗаголовокТабДок);
КонецПроцедуры

&НаСервере
Процедура Печать(СсылкаНаДок, ТабДок, ЗаголовокТабДок) Экспорт
   Массив=Новый Массив;
   Массив.Добавить(СсылкаНаДок);
   
   КоллекцияПечатныхФорм=Новый ТаблицаЗначений;
   КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
   КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
   КоллекцияПечатныхФорм.Колонки.Добавить("Картинка");
   КоллекцияПечатныхФорм.Колонки.Добавить("ПолныйПутьКМакету");
   КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
   КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
   КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
   
   ПечФорма=КоллекцияПечатныхФорм.Добавить();
   ПечФорма.ИмяВРЕГ="ТОРГ2";
   ПечФорма.Экземпляров=1;
   
   ПараметрыОтправки=Новый Структура;
   ПараметрыОтправки.Вставить("Получатель");
   ПараметрыОтправки.Вставить("Текст","");
   ПараметрыОтправки.Вставить("Тема","");
   
   ПараметрыВывода=Новый Структура;
   ПараметрыВывода.Вставить("ДоступнаПечатьПоКомплектно",Ложь);
   ПараметрыВывода.Вставить("ПараметрыОтправки",ПараметрыОтправки);
   
   ОбъектыПечати=Новый СписокЗначений;
   
   ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
   ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект);
   
   ОбъектДляСервера.Печать(
   Массив,
   КоллекцияПечатныхФорм,
   ОбъектыПечати,
   ПараметрыВывода
   );
   
   // Проверим, все ли макеты были сформированы
   Для Каждого Стр Из КоллекцияПечатныхФорм Цикл
      Если Стр.ТабличныйДокумент = Неопределено Тогда
         ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
         НСтр("ru = 'В обработчике печати не был сформирован табличный документ для: %1'"),
         Стр.ИмяМакета
         );
         ВызватьИсключение(ТекстСообщенияОбОшибке);
      КонецЕсли;
      
      Стр.ТабличныйДокумент.КоличествоЭкземпляров = Стр.Экземпляров;
   КонецЦикла;
   
   ТабДок=КоллекцияПечатныхФорм[0].ТабличныйДокумент;
   ЗаголовокТабДок=КоллекцияПечатныхФорм[0].СинонимМакета;
   
КонецПроцедуры
Ошибка:
{Форма.Форма.Форма(208)}: Метод объекта не обнаружен (Печать)
    ОбъектДляСервера.Печать(

Besart

процедура Печать() должна быть экспортной, и если вы привели весь код из ВПФ, то этого недостаточно, для конфигураций построенных на БСП, нужен специальный алгоритм технология создания ВПФдля регистрации ВПФ и обработок, почитайте

lolozhiga

Цитата: Besart от 18 фев 2014, 19:35
процедура Печать() должна быть экспортной, и если вы привели весь код из ВПФ, то этого недостаточно, для конфигураций построенных на БСП, нужен специальный алгоритм технология создания ВПФдля регистрации ВПФ и обработок, почитайте
Должна быть, если она в модуле, а если она в форме? Ссылка не открывается. У кого-нибудь есть простой пример?

Теги:

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

Рейтинг@Mail.ru

Поиск