Здравствуйте, дорогие форумчане.не судите строго...
Я начинающий программист.Перешел с 7.7 на 8.2, сейчас начал изучать Радченко.Но сейчас возникла необходимость во внешних печатных формах. В обычном приложении ( конфигурация Розница 1.0) получилось все прекрасно, а вот в управляемом приложении ( конфигурация УТ 11) возникло много вопросов. С Функцией СведенияОВнешнейОбработке, Печать(), ПолучитьТаблицуКоманд(), ДобавитьКоманду - разобрался вполне.а с процедурой допустим СформироватьПечатнуюФорму() разобраться не могу. У меня допустим стоит задача создать ВПФ Пересчет товаров с дополнительной колонкой артикул и штрихкод и цена.При копировании процедуры ПечатьЗадания() в ВПФ выдало кучу ошибок непонятных. помогите пожалуйста разобраться с впф,подскажите как что делается по порядку.Заранее большое спасибо.
(1) Взять с сайта для примера готовые ВПФ для УТ 11, посмотреть, как реализовано в типовых. Если совсем не получается, заплатить деньги и не иметь мозг ни себе, ни почтеннейшей публике.
>>> выдало кучу ошибок непонятных
Начать думать головой, а не другим местом, научиться приводить тексты этих ошибок.
Функция СведенияОВнешнейОбработке() Экспорт
// Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
ПараметрыРегистрации = Новый Структура;
// Объявим еще одну переменную, которая нам потребуется ниже
МассивНазначений = Новый Массив;
// Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать.
// Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
// Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
// Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
// которые поддерживают механизм ВПФ
МассивНазначений.Добавить("Документ.ЗаказКлиента");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", "Заказ клиента (в виде счета)");
// Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
// Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма 'Счет' к документу заказ клиента");
// Создадим таблицу команд (подробнее смотрим ниже)
ТаблицаКоманд = ПолучитьТаблицуКоманд();
// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, "Счет покупателю", "Заказ клиента (в виде счета)", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
// Сохраним таблицу команд в параметры регистрации обработки
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
// Теперь вернем системе наши параметры
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;
// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Показать
Сделать процедуру Печать в модуле объетка и сформировать ТабличныйДокумент:
// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
// ИменаМакетов - Строка - Имена макетов, перечисленные через запятую
// МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать
//
// ИСХОДЯЩИЕ:
// КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
// ПараметрыВывода - Структура - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ВПФ Заказ клиента (в виде счета)", "Счет на оплату",
СформироватьПечатнуюФорму("Счет", МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры // Печать()
// Функция формирует печатную форму документа.
//
// Параметры:
// Тип - Строка - тип печатной формы: Заказ или Счет
// МассивОбъектов - Массив - массив документов для печати
// ОбъектыПечати - СписокЗначений
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
....
КонецФункции // СформироватьПечатнуюФорму()
Показать
Подключить ВПФ через справочник "Дополнительные отчеты и обработки"
и все таки я собрался с силами и попробовал создать ВПФ задания на пересчет товаров с дополнительными колонками артикул , код, штрихкод, и цена.
Взял ВПФ товарного чека , закоментил процедуру и вставил процедуру из типовой УТ 11 документа Пересчет товаров. Проверил на ошибки и не могу справится с одной ошибкой. Покретикуйте пожалуйста меня и укажите на ошибки и как их исправить а именно :
{ВнешняяОбработка.ЗаданиеНаПересчет.МодульОбъекта(632,78)}: Переменная не определена (ПараметрыПечати)
ТабличныйДокумент = ПечатьЗадания(МассивОбъектовНазначения, ОбъектыПечати, <<?>>ПараметрыПечати); (Проверка: Сервер)
Код процедур из ВПФ прилагаю:
Функция ПечатьЗадания(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();
ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
ВыводитьГрадацииКачества = ПараметрыПечати.ВыводитьГрадацииКачества;
ВыводитьРезультатыПересчета = ПараметрыПечати.ВыводитьРезультатыПересчета;
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаданиеНаПересчетТоваров";
ТекстЗапроса =
"ВЫБРАТЬ
| ПересчетТоваров.Ссылка КАК Ссылка,
| ПересчетТоваров.Представление КАК ПредставлениеДокумента,
| ПересчетТоваров.Дата КАК Дата,
| ПересчетТоваров.Номер КАК Номер,
| ПересчетТоваров.Склад КАК Склад,
| ПересчетТоваров.Помещение КАК Помещение,
| ПересчетТоваров.ЯчейкаКонсолидацииИзлишковТоваров КАК ЯчейкаИзлишков,
| ПересчетТоваров.ЯчейкаКонсолидацииИспорченныхТоваров КАК ЯчейкаИспорченных,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваров.Склад) КАК СкладПредставление,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваров.Помещение) КАК ПомещениеПредставление,
| ПересчетТоваров.Исполнитель.ФизическоеЛицо КАК Исполнитель,
| ПересчетТоваров.ПечататьКоличествоПоУчету КАК ПечататьКоличествоПоУчету,
| ПересчетТоваров.Статус КАК Статус
|ИЗ
| Документ.ПересчетТоваров КАК ПересчетТоваров
|ГДЕ
| ПересчетТоваров.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| ПересчетТоваров.Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПересчетТоваровТовары.НомерСтроки КАК НомерСтроки,
| ПересчетТоваровТовары.Количество КАК Количество,
| ПересчетТоваровТовары.КоличествоУпаковок КАК КоличествоУпаковок,";
Если ВыводитьРезультатыПересчета Тогда
ТекстЗапроса = ТекстЗапроса + "
| ПересчетТоваровТовары.КоличествоФакт КАК КоличествоФакт,
| ПересчетТоваровТовары.КоличествоУпаковокФакт КАК КоличествоУпаковокФакт,";
Иначе
ТекстЗапроса = ТекстЗапроса + "
| 0 КАК КоличествоФакт,
| 0 КАК КоличествоУпаковокФакт,";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
| ПересчетТоваровТовары.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
| ПересчетТоваровТовары.Характеристика.НаименованиеПолное КАК ХарактеристикаПредставление,
| ВЫБОР КОГДА ЕСТЬNULL(ПересчетТоваровТовары.Упаковка.Коэффициент, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ПересчетТоваровТовары.Упаковка.Наименование
| КОНЕЦ КАК УпаковкаПредставление,
| ПересчетТоваровТовары.Серия.Наименование КАК СерияПредставление,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставлениеНоменклатура,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Упаковка.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставлениеУпаковка,
| ПРЕДСТАВЛЕНИЕ(ПересчетТоваровТовары.Ячейка) КАК ЯчейкаПредставление,
| ПересчетТоваровТовары.Номенклатура.Код КАК Код,
| ПересчетТоваровТовары.Номенклатура.Артикул КАК Артикул,
| ПересчетТоваровТовары.Ссылка КАК Ссылка
|ИЗ
| Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
|ГДЕ
| ПересчетТоваровТовары.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки
|ИТОГИ ПО
| Ссылка";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Результаты = Запрос.ВыполнитьПакет();
ВыборкаПоДокументам = Результаты[0].Выбрать();
ВыборкаПоТабличнымЧастям = Результаты[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
Если ВыводитьРезультатыПересчета Тогда
СинонимДокумента = НСтр("ru='Задание на пересчет товаров'");
Иначе
СинонимДокумента = НСтр("ru='Результаты пересчета товаров'");
КонецЕсли;
Пока ВыборкаПоДокументам.Следующий() Цикл
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс");
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам);
Заголовок = ОбщегоНазначенияКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента);
Если ВыводитьРезультатыПересчета
И Не ВыборкаПоДокументам.Статус = Перечисления.СтатусыПересчетовТоваров.Выполнено Тогда
ТекстСообщения = НСтр("ru = 'Документ ""%ПредставлениеДокумента%"" находится в статусе ""%Статус%"". Печать результатов пересчета возможна только в статусе ""Выполнено""'");
РеквизитыДокумента.Вставить("Представление",ВыборкаПоДокументам.ПредставлениеДокумента);
ПредставлениеДокумента = ОбщегоНазначенияКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента);
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%ПредставлениеДокумента%",ПредставлениеДокумента);
ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Статус%",ВыборкаПоДокументам.Статус);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Продолжить;
КонецЕсли;
ВыводитьПоУчету = ВыборкаПоДокументам.ПечататьКоличествоПоУчету Или ВыводитьРезультатыПересчета;
ПоАдресномуСкладу = СкладыСервер.ИспользоватьАдресноеХранение(ВыборкаПоДокументам.Склад, ВыборкаПоДокументам.Помещение);
Макет = УправлениеПечатью.ПолучитьМакет("ПФ_MXL_ЗаданиеНаПересчет");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьСкладИсполнитель = Макет.ПолучитьОбласть("СкладИсполнитель");
ОбластьЯчейкаИзлишков = Макет.ПолучитьОбласть("ОбластьЯчейкаИзлишков");
ОбластьЯчейкаИспорченных = Макет.ПолучитьОбласть("ОбластьЯчейкаИспорченных");
Если ПоАдресномуСкладу Тогда
Если ВыводитьКоды Тогда
ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|НачалоСтроки");
ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|НачалоСтроки");
ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|НачалоСтроки");
ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаКодов");
ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаКодов");
ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаКодов");
ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
Иначе
ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|НачалоСтроки");
ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|НачалоСтроки");
ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|НачалоСтроки");
ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
КонецЕсли;
Иначе
ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицы|Номер");
ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицы|Номер");
ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицы|Номер");
Если ВыводитьКоды Тогда
ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаЯчейкаКод");
ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаЯчейкаКод");
ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаЯчейкаКод");
ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
Иначе
ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
КонецЕсли;
КонецЕсли;
ОбластьШапкаТаблицыУпаковки = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаУпаковок");
ОбластьСтрокаТаблицыУпаковки = Макет.ПолучитьОбласть(?(ПоАдресномуСкладу, "СтрокаТаблицыЯчейка|КолонкаУпаковок", "СтрокаТаблицы|КолонкаУпаковок"));
ОбластьПодвалТаблицыУпаковки = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаУпаковок");
Если ВыводитьКоды Тогда
ОбластьШапкаТаблицыКолонкаКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов;
КонецЕсли;
Если Не ВыводитьПоУчету Тогда
Если ВыводитьГрадацииКачества Тогда
ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества");
ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества");
ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества");
Иначе
ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицы|ФактБезКоличестваПоУчету");
ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицы|ФактБезКоличестваПоУчету");
ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицы|ФактБезКоличестваПоУчету");
КонецЕсли;
Иначе
ОбластьШапкаТаблицыПоУчету = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаПоУчету");
ОбластьСтрокаТаблицыПоУчету = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаПоУчету");
ОбластьПодвалТаблицыПоУчету = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаПоУчету");
Если ВыводитьГрадацииКачества Тогда
ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества");
ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества");
ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества");
Иначе
ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаФакт");
ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаФакт");
ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаФакт");
КонецЕсли;
КонецЕсли;
Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
Продолжить;
КонецЕсли;
ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
ОбластьЗаголовок.Параметры.ТекстЗаголовка = Заголовок;
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабДокумент, Макет, ОбластьЗаголовок, ВыборкаПоДокументам.Ссылка);
ТабДокумент.Вывести(ОбластьЗаголовок);
ОбластьСкладИсполнитель.Параметры.ИсполнительПредставление = ФизическиеЛица.ФамилияИнициалыФизЛица(ВыборкаПоДокументам.Исполнитель);
ОбластьСкладИсполнитель.Параметры.СкладПредставление = СкладыСервер.ПолучитьПредставлениеСклада(ВыборкаПоДокументам.СкладПредставление,ВыборкаПоДокументам.ПомещениеПредставление);
ТабДокумент.Вывести(ОбластьСкладИсполнитель);
Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИзлишков) Тогда
ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИзлишков.Параметры, ВыборкаПоДокументам);
ТабДокумент.Вывести(ОбластьЯчейкаИзлишков);
КонецЕсли;
Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИспорченных) Тогда
ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИспорченных.Параметры, ВыборкаПоДокументам);
ТабДокумент.Вывести(ОбластьЯчейкаИспорченных);
КонецЕсли;
ТабДокумент.Вывести(ОбластьШапкаТаблицыНачало);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаТоваров);
ТабДокумент.Присоединить(ОбластьШапкаТаблицыУпаковки);
Если ВыводитьПоУчету Тогда
ТабДокумент.ПолеСправа = 5;
ТабДокумент.Присоединить(ОбластьШапкаТаблицыПоУчету);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьШапкаТаблицыФакт);
Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабДокумент.Вывести(ОбластьСтрокаТаблицыНачало);
Если ВыводитьКоды Тогда
ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ[КолонкаКодов];
ТабДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов);
КонецЕсли;
ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = ФормированиеПечатныхФорм.ПолучитьПредставлениеНоменклатурыДляПечати(
ВыборкаПоСтрокамТЧ.НоменклатураПредставление,
ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление,
ВыборкаПоСтрокамТЧ.УпаковкаПредставление,
ВыборкаПоСтрокамТЧ.СерияПредставление
);
ТабДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров);
ОбластьСтрокаТаблицыУпаковки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабДокумент.Присоединить(ОбластьСтрокаТаблицыУпаковки);
Если ВыводитьПоУчету Тогда
ОбластьСтрокаТаблицыПоУчету.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабДокумент.Присоединить(ОбластьСтрокаТаблицыПоУчету);
КонецЕсли;
ОбластьСтрокаТаблицыФакт.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабДокумент.Присоединить(ОбластьСтрокаТаблицыФакт);
КонецЦикла;
ТабДокумент.Вывести(ОбластьПодвалТаблицыНачало);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаТоваров);
ТабДокумент.Присоединить(ОбластьПодвалТаблицыУпаковки);
Если ВыводитьПоУчету Тогда
ТабДокумент.Присоединить(ОбластьПодвалТаблицыПоУчету);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьПодвалТаблицыФакт);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
КонецЦикла;
ТабДокумент.АвтоМасштаб = Истина;
Возврат ТабДокумент;
КонецФункции
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЗаданиеНаПересчет") Тогда
ТабличныйДокумент = ПечатьЗадания(МассивОбъектовНазначения, ОбъектыПечати, ПараметрыПечати);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ЗаданиеНаПересчет",
"Задание на пересчет",
ТабличныйДокумент
);
КонецЕсли;
КонецПроцедуры