Переход на новую базу "УТ 11" очень порадовал функционалом, но разработчики, написав тонну кода, все же не хотят доделать все тонкости для полноценной работы, и приходится дорабатывать мелочи, которые в итоге перетекают в большую доработку. Править конфигурацию не будем, и поэтому пробуем добавить внешную печатную форму, находим статью по подключению "Создание внешней печатной формы под Управляемое приложение" //infostart.ru/public/180159, все отлично, но результат не получается, и чего-то не хватает. Макет копируем из конфигурации и вносим в обработку. Модуль объекта обработки оставляем как в примере по ссылке, а вот форму меняем на следующий код:
&НаКлиенте
Процедура Печать(Команда, ОбъектыНазначения) Экспорт
ТабДок = Новый ТабличныйДокумент;
ПечатьСервер(ТабДок, ОбъектыНазначения); //Отправляем документ на сервер, там его можно будет объявить и так будет удобней получать реквизиты. Пробовал обработать массив если в журнале выделенно несколько строк документов, но приходит всегда только первый. Если у кого есть решение на этот счет подскажите плиз, в пабликах ни чего не нашел.
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Истина;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
КонецПроцедуры
&НаСервере
Процедура ПечатьСервер(ТабличныйДокумент, ОбъектыНазначения)
Док = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(ОбъектыНазначения[0].УникальныйИдентификатор());
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПФ_MXL_ТоварнаяНакладная");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.ТекстЗаголовка = "Накладная " + Док.Номер + " от " + Док.Дата;
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.ПредставлениеСклада = Док.Склад;
ТабличныйДокумент.Вывести(ОбластьШапка);
ОбластьПокупатель = Макет.ПолучитьОбласть("Покупатель");
ОбластьПокупатель.Параметры.ПредставлениеПартнера = Док.Партнер;
ТабличныйДокумент.Вывести(ОбластьПокупатель);
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
ИтогКолУпаковок = 0;
ИтогКоличество = 0;
ТабЧасть = Док.Товары;
Для i = 0 по ТабЧасть.Количество() - 1 Цикл
СтрокаТЧ = ТабЧасть.Получить(i);
ОбластьСтрокаТаблицы.Параметры.НомерСтроки = СтрокаТЧ.НомерСтроки;
ОбластьСтрокаТаблицы.Параметры.ЗначениеКода = СтрокаТЧ.Номенклатура.Код;
ОбластьСтрокаТаблицы.Параметры.Товар = СтрокаТЧ.Номенклатура;
ОбластьСтрокаТаблицы.Параметры.Количество = СтрокаТЧ.Количество;
ОбластьСтрокаТаблицы.Параметры.ПредставлениеБазовойЕдиницыИзмерения = СтрокаТЧ.Номенклатура.ЕдиницаИзмерения;
ОбластьСтрокаТаблицы.Параметры.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок;
ОбластьСтрокаТаблицы.Параметры.ПредставлениеЕдининицыИзмеренияУпаковки = СтрокаТЧ.Упаковка.ЕдиницаИзмерения;
ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
ИтогКолУпаковок = ИтогКолУпаковок + СтрокаТЧ.КоличествоУпаковок;
ИтогКоличество = ИтогКоличество + СтрокаТЧ.Количество;
КонецЦикла;
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьПодвалТаблицы.Параметры.ИтогКолУпаковок = ИтогКолУпаковок;
ОбластьПодвалТаблицы.Параметры.ИтогКоличество = ИтогКоличество;
ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);
ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
ТабличныйДокумент.Вывести(ОбластьПодписи);
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ВывестиВертикальныйРазделительСтраниц();
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецПроцедуры
Что получаем в итоге, за две минуты подключаем внешнюю форму и добавляем в нее любой реквизит. Макет используется внешний, и подправить его труда не составит. На планируемые два десятка внешних форм сэкономим немного времени, а вообще 1С уже пора сделать конструктор клиентский для подобных вещей, настройка шапки и таб. части для печати документа не такая уже великая задача. На данную тему есть пример платной обработки //infostart.ru/public/262490/, но стоимость ее немного пугает.
СПРАВКА Б
Между тем, не обращая внимание на "позитивные" комментарии, добавляем форму Справки Б. Принцип используем тот же самый, копируем макет старых версий, и в onepage расписываем код. Пока писал текст, возникла идея парсера макетов, который бы формировал код исходя из объявленных параметров печатной формы макета. Возможно данная публикация по "Конвертации макетов 7.7->8.x" в этом поможет, на вид вроде что-то похожее, только правая часть будет фомируемый код модуля: //infostart.ru/public/147611/
Текстовый макет
Для поклонников текстовых макетов и печати на матречных принтерах , полезными будут материалы:
http://its.1c.ru/db/metod8dev/content/2584/hdoc
http://v8.1c.ru/overview/Term_000000303.htm
Публикация ниочЁм.
(1) fishca, Вам со знанием С++ зачем ее было вообще читать? Понятно было что уровень для новичка!