Работа с отраслевыми решениями, такими как «Астор: Торговый дом» (особенно версии 7 SE), часто ставит перед разработчиком нестандартные задачи. В отличие от типовых конфигураций фирмы «1С», где механизмы подключения внешних печатных форм (ВПФ) стандартизированы через Библиотеку стандартных подсистем (БСП) или справочник ВнешниеОбработки, в решениях от «Астор» используются собственные механизмы. Рассмотрим подробно, как правильно зарегистрировать и отладить внешнюю печатную форму в этой системе.
Проанализируем структуру конфигурации. В «Астор: Торговый дом» вы не найдете привычного раздела в меню «Сервис», ведущего к списку дополнительных отчетов и обработок. Вместо этого ключевым узлом управления печатью является справочник «Имена печатных форм». Именно в нем прописываются связи между объектами метаданных (документами, справочниками) и файлами печатных форм.
Разберем по шагам процесс регистрации:
РеализацияТоваров или ПоступлениеТоваров)..epf. Важный нюанс: если база работает в клиент-серверном или многопользовательском режиме, путь к файлу должен быть сетевым (UNC-путь), например: \\ServerName\1C_Reports\MyPrintForm.epf. Это гарантирует, что форма будет доступна всем пользователям системы.Даже если форма успешно зарегистрирована в справочнике и появилась в меню «Печать» нужного документа, она может «не срабатывать» — то есть при нажатии на кнопку ничего не происходит. Выясним причину такого поведения. В стандартных конфигурациях 1С система ожидает, что функция Печать() вернет объект типа ТабличныйДокумент, который система сама выведет на экран. В Асторе логика иная.
Рассмотрим пример кода, который часто используется в типовых решениях, но не будет работать в Асторе без доработки:
Функция Печать() Экспорт
ТабДок = Новый ТабличныйДокумент;
// ... здесь идет формирование макета и заполнение данными ...
Возврат ТабДок;
КонецФункции
В конфигурации «Торговый дом 7 SE» механизм вызова реализован упрощенно: система просто создает объект обработки и запускает его экспортный метод. Она не обрабатывает возвращаемое значение. Поэтому за вывод результата на экран отвечает сама обработка. Исправим код, добавив явный вызов метода Показать().
Правильный вариант реализации функции в модуле обработки:
Процедура Печать(ОбъектСсылка = Неопределено) Экспорт
ТабДок = Новый ТабличныйДокумент;
// Заполняем табличный документ данными из ОбъектСсылка
// ...
// Обязательно выводим на экран самостоятельно:
ТабДок.Показать("Печать: " + Строка(ОбъектСсылка));
КонецПроцедуры
Проанализируем еще один критически важный момент — параметры функции. В зависимости от конкретной версии Астор, вызывающий код в модуле менеджера документа может передавать в функцию Печать разные параметры. Чаще всего это ссылка на текущий документ (ОбъектСсылка) или массив ссылок при групповой печати.
Если количество параметров в вашей функции не совпадает с тем, что передает система, возникнет ошибка выполнения, которая в некоторых режимах работы может просто «проглатываться» системой. Чтобы избежать этого, рекомендуется делать параметры необязательными или использовать проверку типа:
// Универсальный заголовок функции для Астор
Процедура Печать(Параметр1 = Неопределено, Параметр2 = Неопределено) Экспорт
// Если Параметр1 — это ссылка на документ
Если ТипЗнч(Параметр1) = Тип("ДокументСсылка.РеализацияТоваров") Тогда
СсылкаНаОбъект = Параметр1;
КонецЕсли;
// Формируем и выводим документ
ТабДок = СформироватьПечатнуюФорму(СсылкаНаОбъект);
ТабДок.Показать();
КонецПроцедуры
Многие программисты, привыкшие к БСП, пытаются найти справочник ДополнительныеОтчетыИОбработки. Выясним, почему его нет. Конфигурация «Торговый дом 7 SE» разрабатывалась в период, когда БСП еще не была внедрена повсеместно. Весь функционал по работе с внешними файлами в ней является «самописным» со стороны разработчиков Астор.
Если вы столкнулись с ситуацией, когда печать всё равно не вызывается, рекомендуем выполнить следующие действия:
Печать помечена ключевым словом Экспорт.РаботаСПечатнымиФормами или аналогичный), чтобы увидеть, по какому пути система пытается найти файл .epf.Таким образом, успех подключения внешней печатной формы в «Астор: Торговый дом» зависит от правильной связки в справочнике «Имена печатных форм» и обязательного использования метода Показать() внутри программного кода обработки.