Работаю с конфигурацией 1с 8.2 "Управление торговлей", редакция 10.3 (10.3.14.5), сам я не программист 1с, но была поставлена задача сделать внешнюю печатную форму "Товарный чек" с значением в строке покупатель "Частное лицо". Печатная форма будет вызываться из документа реализация товаров и услуг по кнопке "Печать". Спасибо статье из http://www.1c-pro.ru/forum66.html, но в каждом варианте есть свои нюансы, вот их то и пришлось решать, действуя по ананлогии.
Для начала создадим пустую внешнюю обработку, только макет создавать не будем -
мы его скопируем для последующего изменения из основной конфигурации. Находим в конфигурации документ "РеализацияТоваровУслуг" копируем макет "Накладная" в обработку из конфигурации - более удобный путь - напрямую перетащить мышкой макет из основной конфигурации в дерево данных нашей
обработки.
Открываем двойным кликом макет в нашей обработке, заходим в свойства "" и в разделе "Макет" для строки "заполнение" меняем "параметр" на "текст", в разделе "Основные" меняем надпись "ПредставлениеПолучателя" на " Частное лицо" все Макет готов.
Что бы не изобретать велосипед - посмотрим, как происходит формирование табличного документа в основной конфигурации: для этого мы зайдём
в модуль документа "РеализацияТоваровУслуг". Найдём в модуле Процедуру Печать, которая выглядит в моем случае (сокращенно) вот так:
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
........................
........................
// Получить экземпляр документа на печать
Если ИмяМакета ="Накладная" Тогда
ТабДокумент = ПечатьДокумента();
КонецЕсли;
.........................
.........................
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект));
КонецПроцедуры // Печать
В нашем случае получается, что для печати накладной в эту функцию передается параметр ИмяМакета равный строковой переменной "Накладная"
если посмотреть на код, мы увидим, что для формирование стандартной накладной используется функция ПечатьДокумента(...);, которую теперь
нам и требуется найти в коде модуля документа. Обычно она расположена чуть выше Процедуры печать(...)
Итак, вот сокращенный текст этой функции в эталонной конфигурации:
Функция Печать(СуммыВРублях = Ложь)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
// ...код программы...
КонецФункции // ПечатьДокумента()
Копируем эту функцию со всем содержимым в модуль объекта внешней обработки:
Переходим к Модулю объекта внешней обработки: по кнопке "Действия" нажимаем "Открыть модуль объекта" и скопированную функцию вставляем туда
Функция Печать(СуммыВРублях = Ложь) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
// ...код программы...
КонецФункции // ПечатьДокумента()
Добавляем в функцию "Экспорт", Что мы сделали: для работы внешней печатной формы требуется экспортная (т.е. видимая для других объектов конфигурации) функция Печать,
которая должна возвращать в основную программу сформированный табличный документ для предварительно просмотра и последующей печати.
Теперь нужно найти строчку в модуле объекта:
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Расходная накладная");
И заменить надпись в шапке "Расходная накладная" на "Товарный чек".
Добавляем в нашу внешнюю обработку реквизит Имя "СсылкаНаОбъект"
Синоним "Ссылка на объект"
Тип " ДокументСсылка.РеализацияТоваровУслуг"
И как следствие меняем в модуле объекта нашей внешней обработки все "ЭтотОбъект.Ссылка " на "СсылкаНаОбъект"
После попытки закрыть модуль объекта внешней обработки:
{ВнешняяОбработка.НакладнаяЧЛ.МодульОбъекта(391,64)}: Переменная не определена (мВалютаРегламентированногоУчета)
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, <>мВалютаРегламентированногоУчета); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.НакладнаяЧЛ.МодульОбъекта(392,101)}: Переменная не определена (мВалютаРегламентированногоУчета)
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, <>мВалютаРегламентированногоУчета); (Проверка: Толстый клиент (обычное приложение))
Еще раз редактируем код модуля так:
Перем мВалютаРегламентированногоУчета Экспорт;
Функция Печать(СуммыВРублях = Ложь) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
// ...код программы...
КонецФункции // ПечатьДокумента()
мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
На этом все.
Внешняя печатная форма есть во вложении.