Создание ВПФ в УТ 11

1. vertkov2010 3 08.07.12 10:44 Сейчас в теме
Здравствуйте, дорогие форумчане.не судите строго...
Я начинающий программист.Перешел с 7.7 на 8.2, сейчас начал изучать Радченко.Но сейчас возникла необходимость во внешних печатных формах. В обычном приложении ( конфигурация Розница 1.0) получилось все прекрасно, а вот в управляемом приложении ( конфигурация УТ 11) возникло много вопросов. С Функцией СведенияОВнешнейОбработке, Печать(), ПолучитьТаблицуКоманд(), ДобавитьКоманду - разобрался вполне.а с процедурой допустим СформироватьПечатнуюФорму() разобраться не могу. У меня допустим стоит задача создать ВПФ Пересчет товаров с дополнительной колонкой артикул и штрихкод и цена.При копировании процедуры ПечатьЗадания() в ВПФ выдало кучу ошибок непонятных. помогите пожалуйста разобраться с впф,подскажите как что делается по порядку.Заранее большое спасибо.
По теме из базы знаний
Найденные решения
6. tolyan_ekb 80 09.07.12 12:38 Сейчас в теме
Я когда начинал, скачал http://infostart.ru/public/94783/. С помощью них разобрался что и как. Есть и другие конечно.
orsy-surgut; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. Поручик 4659 09.07.12 12:28 Сейчас в теме
(1) Взять с сайта для примера готовые ВПФ для УТ 11, посмотреть, как реализовано в типовых. Если совсем не получается, заплатить деньги и не иметь мозг ни себе, ни почтеннейшей публике.

>>> выдало кучу ошибок непонятных
Начать думать головой, а не другим местом, научиться приводить тексты этих ошибок.
2. Spektr 1024 08.07.12 12:39 Сейчас в теме
Определить сведения о ВПФ:

Функция СведенияОВнешнейОбработке() Экспорт
    // Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
    ПараметрыРегистрации = Новый Структура;

    // Объявим еще одну переменную, которая нам потребуется ниже
    МассивНазначений = Новый Массив;
    
    // Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать. 
    // Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");

    // Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
    // Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе, 
    // которые поддерживают механизм ВПФ
    МассивНазначений.Добавить("Документ.ЗаказКлиента");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    
    // Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
    ПараметрыРегистрации.Вставить("Наименование", "Заказ клиента (в виде счета)");
    
    // Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);

    // Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
    ПараметрыРегистрации.Вставить("Версия", "1.0");    
    ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма 'Счет' к документу заказ клиента");
    
    // Создадим таблицу команд (подробнее смотрим ниже)
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    
    // Добавим команду в таблицу
    ДобавитьКоманду(ТаблицаКоманд, "Счет покупателю", "Заказ клиента (в виде счета)", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
    
    // Сохраним таблицу команд в параметры регистрации обработки
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    
    // Теперь вернем системе наши параметры
    Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()

   // Создадим пустую таблицу команд и колонки в ней
   Команды = Новый ТаблицаЗначений;

   // Как будет выглядеть описание печатной формы для пользователя
   Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); 

   // Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
   Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

   // Тут задается, как должна вызваться команда обработки
   // Возможные варианты:
   // - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
   // - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
   // - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
   Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));

   // Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
   Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

   // Для печатной формы должен содержать строку ПечатьMXL 
   Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
   Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  // Добавляем команду в таблицу команд по переданному описанию.
  // Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
Показать


Сделать процедуру Печать в модуле объетка и сформировать ТабличныйДокумент:

// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
//   ИменаМакетов    - Строка    - Имена макетов, перечисленные через запятую
//   МассивОбъектов  - Массив    - Массив ссылок на объекты которые нужно распечатать
//
// ИСХОДЯЩИЕ:
//   КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
//   ПараметрыВывода       - Структура        - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
     Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)") Тогда
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
                     "ВПФ Заказ клиента (в виде счета)", "Счет на оплату", 
                     СформироватьПечатнуюФорму("Счет", МассивОбъектов, ОбъектыПечати));
    КонецЕсли;
КонецПроцедуры // Печать() 


// Функция формирует печатную форму документа.
//
// Параметры:
// Тип - Строка - тип печатной формы: Заказ или Счет
// МассивОбъектов - Массив - массив документов для печати
// ОбъектыПечати - СписокЗначений
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
....
КонецФункции // СформироватьПечатнуюФорму()
Показать


Подключить ВПФ через справочник "Дополнительные отчеты и обработки"
3. vertkov2010 3 08.07.12 14:46 Сейчас в теме
(2) Spektr, спасибо меня интересует особо
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
как быть с ней
4. vertkov2010 3 09.07.12 12:10 Сейчас в теме
6. tolyan_ekb 80 09.07.12 12:38 Сейчас в теме
Я когда начинал, скачал http://infostart.ru/public/94783/. С помощью них разобрался что и как. Есть и другие конечно.
orsy-surgut; +1 Ответить
7. vertkov2010 3 15.07.12 10:18 Сейчас в теме
и все таки я собрался с силами и попробовал создать ВПФ задания на пересчет товаров с дополнительными колонками артикул , код, штрихкод, и цена.
Взял ВПФ товарного чека , закоментил процедуру и вставил процедуру из типовой УТ 11 документа Пересчет товаров. Проверил на ошибки и не могу справится с одной ошибкой. Покретикуйте пожалуйста меня и укажите на ошибки и как их исправить а именно :
{ВнешняяОбработка.ЗаданиеНаПересчет.МодульОбъекта(632,78)}: Переменная не определена (ПараметрыПечати)
ТабличныйДокумент = ПечатьЗадания(МассивОбъектовНазначения, ОбъектыПечати, <<?>>ПараметрыПечати); (Проверка: Сервер)

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

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

		
		ВыводитьПоУчету = ВыборкаПоДокументам.ПечататьКоличествоПоУчету Или ВыводитьРезультатыПересчета;
		ПоАдресномуСкладу = СкладыСервер.ИспользоватьАдресноеХранение(ВыборкаПоДокументам.Склад, ВыборкаПоДокументам.Помещение);
		Макет = УправлениеПечатью.ПолучитьМакет("ПФ_MXL_ЗаданиеНаПересчет");
			
		ОбластьЗаголовок 		= Макет.ПолучитьОбласть("Заголовок");
		ОбластьСкладИсполнитель = Макет.ПолучитьОбласть("СкладИсполнитель");
		ОбластьЯчейкаИзлишков	= Макет.ПолучитьОбласть("ОбластьЯчейкаИзлишков");
		ОбластьЯчейкаИспорченных	= Макет.ПолучитьОбласть("ОбластьЯчейкаИспорченных");
		
		Если ПоАдресномуСкладу Тогда
			
			Если ВыводитьКоды Тогда
				ОбластьШапкаТаблицыНачало 			= Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|НачалоСтроки");
				ОбластьСтрокаТаблицыНачало 			= Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|НачалоСтроки");
				ОбластьПодвалТаблицыНачало 			= Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|НачалоСтроки");
				ОбластьШапкаТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаКодов");
				ОбластьСтрокаТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаКодов");
				ОбластьПодвалТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаКодов");
				ОбластьШапкаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
				ОбластьСтрокаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
				ОбластьПодвалТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
			Иначе
				ОбластьШапкаТаблицыНачало 			= Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|НачалоСтроки");
				ОбластьСтрокаТаблицыНачало 			= Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|НачалоСтроки");
				ОбластьПодвалТаблицыНачало 			= Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|НачалоСтроки");
				ОбластьШапкаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
				ОбластьСтрокаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
				ОбластьПодвалТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
			КонецЕсли;
		Иначе 
			ОбластьШапкаТаблицыНачало 			= Макет.ПолучитьОбласть("ШапкаТаблицы|Номер");
			ОбластьСтрокаТаблицыНачало 			= Макет.ПолучитьОбласть("СтрокаТаблицы|Номер");
			ОбластьПодвалТаблицыНачало 			= Макет.ПолучитьОбласть("ПодвалТаблицы|Номер");
			
			Если ВыводитьКоды Тогда
				
				ОбластьШапкаТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаЯчейкаКод");
				ОбластьСтрокаТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаЯчейкаКод");
				ОбластьПодвалТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаЯчейкаКод");
				ОбластьШапкаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
				ОбластьСтрокаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
				ОбластьПодвалТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
			Иначе 
				ОбластьШапкаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
				ОбластьСтрокаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
				ОбластьПодвалТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
			КонецЕсли; 
		КонецЕсли;
		
				ОбластьШапкаТаблицыУпаковки 	= Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаУпаковок");
				ОбластьСтрокаТаблицыУпаковки 	= Макет.ПолучитьОбласть(?(ПоАдресномуСкладу, "СтрокаТаблицыЯчейка|КолонкаУпаковок", "СтрокаТаблицы|КолонкаУпаковок"));
				ОбластьПодвалТаблицыУпаковки 	= Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаУпаковок");
				
		Если ВыводитьКоды Тогда
			
			ОбластьШапкаТаблицыКолонкаКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов; 
			
		КонецЕсли;	
		
		Если Не ВыводитьПоУчету Тогда
			Если ВыводитьГрадацииКачества Тогда
				ОбластьШапкаТаблицыФакт 	= Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества");
				ОбластьСтрокаТаблицыФакт 	= Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества");
				ОбластьПодвалТаблицыФакт 	= Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества");
			Иначе 	
				ОбластьШапкаТаблицыФакт 	= Макет.ПолучитьОбласть("ШапкаТаблицы|ФактБезКоличестваПоУчету");
				ОбластьСтрокаТаблицыФакт 	= Макет.ПолучитьОбласть("СтрокаТаблицы|ФактБезКоличестваПоУчету");
				ОбластьПодвалТаблицыФакт 	= Макет.ПолучитьОбласть("ПодвалТаблицы|ФактБезКоличестваПоУчету");
			КонецЕсли;	
		Иначе
			
			ОбластьШапкаТаблицыПоУчету 		= Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаПоУчету");
			ОбластьСтрокаТаблицыПоУчету 	= Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаПоУчету");
			ОбластьПодвалТаблицыПоУчету 	= Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаПоУчету");
			Если ВыводитьГрадацииКачества Тогда
				ОбластьШапкаТаблицыФакт 	= Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества");
				ОбластьСтрокаТаблицыФакт 	= Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества");
				ОбластьПодвалТаблицыФакт 	= Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества");
			Иначе 
				ОбластьШапкаТаблицыФакт 	= Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаФакт");
				ОбластьСтрокаТаблицыФакт 	= Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаФакт");
				ОбластьПодвалТаблицыФакт 	= Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаФакт");
			КонецЕсли;	
		КонецЕсли;		
		
			
		Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
			Продолжить;
		КонецЕсли;
			
		ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Если Не ПервыйДокумент Тогда
			ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ПервыйДокумент = Ложь;
		НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
		
		ОбластьЗаголовок.Параметры.ТекстЗаголовка = Заголовок;
		
		ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабДокумент, Макет, ОбластьЗаголовок, ВыборкаПоДокументам.Ссылка);
		ТабДокумент.Вывести(ОбластьЗаголовок);
		
		ОбластьСкладИсполнитель.Параметры.ИсполнительПредставление	= ФизическиеЛица.ФамилияИнициалыФизЛица(ВыборкаПоДокументам.Исполнитель);
		ОбластьСкладИсполнитель.Параметры.СкладПредставление		= СкладыСервер.ПолучитьПредставлениеСклада(ВыборкаПоДокументам.СкладПредставление,ВыборкаПоДокументам.ПомещениеПредставление);
		
		ТабДокумент.Вывести(ОбластьСкладИсполнитель);
		
		Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИзлишков) Тогда
			ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИзлишков.Параметры, ВыборкаПоДокументам);
			ТабДокумент.Вывести(ОбластьЯчейкаИзлишков);
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИспорченных) Тогда
			ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИспорченных.Параметры, ВыборкаПоДокументам);
			ТабДокумент.Вывести(ОбластьЯчейкаИспорченных);
		КонецЕсли;
		
		ТабДокумент.Вывести(ОбластьШапкаТаблицыНачало);
		
		Если ВыводитьКоды Тогда
			ТабДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаКодов);
		КонецЕсли;
		ТабДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаТоваров);
		ТабДокумент.Присоединить(ОбластьШапкаТаблицыУпаковки);
		
		Если ВыводитьПоУчету Тогда
			ТабДокумент.ПолеСправа = 5;
			ТабДокумент.Присоединить(ОбластьШапкаТаблицыПоУчету);
		КонецЕсли;
		
		ТабДокумент.Присоединить(ОбластьШапкаТаблицыФакт);
		
		Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
			
			ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			ТабДокумент.Вывести(ОбластьСтрокаТаблицыНачало);
			
			Если ВыводитьКоды Тогда
				ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ[КолонкаКодов];
				ТабДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов);
			КонецЕсли;
			
			ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = ФормированиеПечатныхФорм.ПолучитьПредставлениеНоменклатурыДляПечати(
				ВыборкаПоСтрокамТЧ.НоменклатураПредставление,
				ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление,
				ВыборкаПоСтрокамТЧ.УпаковкаПредставление,
				ВыборкаПоСтрокамТЧ.СерияПредставление
			);
			ТабДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров);
			
			ОбластьСтрокаТаблицыУпаковки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			
			ТабДокумент.Присоединить(ОбластьСтрокаТаблицыУпаковки);	
			
			Если ВыводитьПоУчету Тогда
				ОбластьСтрокаТаблицыПоУчету.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
				ТабДокумент.Присоединить(ОбластьСтрокаТаблицыПоУчету);
			КонецЕсли;
			
			ОбластьСтрокаТаблицыФакт.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			
			ТабДокумент.Присоединить(ОбластьСтрокаТаблицыФакт);
		КонецЦикла;
		
		ТабДокумент.Вывести(ОбластьПодвалТаблицыНачало);
		Если ВыводитьКоды Тогда
			ТабДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаКодов);
		КонецЕсли;
		
		ТабДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаТоваров);
		ТабДокумент.Присоединить(ОбластьПодвалТаблицыУпаковки);
		Если ВыводитьПоУчету Тогда
			ТабДокумент.Присоединить(ОбластьПодвалТаблицыПоУчету);
		КонецЕсли;
		ТабДокумент.Присоединить(ОбластьПодвалТаблицыФакт);
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
	КонецЦикла;
	
	ТабДокумент.АвтоМасштаб = Истина;
	
	Возврат ТабДокумент;	
КонецФункции


Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЗаданиеНаПересчет") Тогда

		ТабличныйДокумент = ПечатьЗадания(МассивОбъектовНазначения, ОбъектыПечати, ПараметрыПечати);

		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"ЗаданиеНаПересчет",
			"Задание на пересчет",
			ТабличныйДокумент
		);

	КонецЕсли;

КонецПроцедуры
Показать



{ВнешняяОбработка.ЗаданиеНаПересчет.МодульОбъекта(632,78)}: Переменная не определена (ПараметрыПечати)
ТабличныйДокумент = ПечатьЗадания(МассивОбъектовНазначения, ОбъектыПечати, <<?>>ПараметрыПечати); (Проверка: Сервер)
8. vertkov2010 3 15.07.12 10:29 Сейчас в теме
После вашей помощи буду разбираться дальше и вставлять остальные колонки
9. пользователь 23.05.16 12:03
Сообщение было скрыто модератором.
...
10. пользователь 23.05.16 12:04
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот