При необходимости скорректировать форму счета на оплату (например, изменить текст условий поставки, поменять шрифт, добавить статичные надписи или полностью переработать структуру документа) у пользователей и разработчиков часто возникает вопрос: пропадут ли изменения при очередном обновлении конфигурации и какой способ доработки выбрать, особенно если используется базовая версия программы.
Проанализируем особенности базовой версии 1С, выясним поведение программы при обновлении измененных макетов и подробно разберем два надежных способа решения задачи.
В базовых версиях 1С:Предприятия действуют строгие системные ограничения: конфигуратор заблокирован для внесения любых изменений в структуру метаданных, а также заблокирована возможность подключения механизмов расширений конфигурации. Однако разработчики платформы предусмотрели штатные возможности адаптации:
Разберем самый быстрый и доступный способ изменения счета, не требующий написания программного кода.
Многие опасаются, что при обновлении типовой конфигурации измененный макет сотрется. Это заблуждение: пользовательские макеты сохраняются в информационной базе отдельно от макетов поставщика конфигурации. При установке обновлений измененный макет не пропадает и продолжает действовать.
Рассмотрим по шагам, как отредактировать макет счета:
Администрирование, выберем пункт Печатные формы, отчеты и обработки и откроем справочник Макеты печатных форм.Счет на оплату (принадлежащий документу СчетНаОплатуПокупателю).Изменить. Откроется табличный документ, доступный для редактирования.<Номер>, <Дата>, <Контрагент>), иначе процедура формирования печатной формы может завершиться с ошибкой.Записать и закрыть. В списке макет будет визуально отмечен специальным значком, указывающим на то, что используется отредактированная версия.Риск при обновлении заключается лишь в том, что если разработчики 1С в новом релизе изменят программный алгоритм формирования счета (добавят обязательные новые параметры или разделы), старый пользовательский макет может перестать формироваться. В этом случае в форме списка макетов всегда можно нажать кнопку Использовать стандартный макет, чтобы сбросить форму к типовому виду поставщика.
Если цель изменений — добавить в счет логотип компании, факсимильную печать, подписи руководителя и главного бухгалтера, а также условия оплаты, то редактировать макет вовсе не требуется. Проверим настройки карточки организации:
Главное — Организации и откроем карточку нужной организации.Логотип и печать.Печать — Счет на оплату (с печатью и подписями) программа автоматически подставит эти данные.Если макет требует вывода новых реквизитов из базы данных, сложных расчетов или нестандартных запросов, пользовательского редактирования недостаточно. В таком случае создадим внешнюю печатную форму на базе стандартов БСП.
Разберем по шагам алгоритм переноса логики счета во внешнюю обработку:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма счета на оплату");
Назначение = Новый Массив;
Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
ПараметрыРегистрации.Вставить("Назначение", Назначение);
ТаблицаКоманд = Новый ТаблицаЗначений;
ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
ТаблицаКоманд.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
НоваяСтрока = ТаблицаКоманд.Добавить();
НоваяСтрока.Представление = "Счет на оплату (внешний)";
НоваяСтрока.Идентификатор = "СчетЗаказВПФ";
НоваяСтрока.Использование = "ВызовСерверногоМетода";
НоваяСтрока.ПоказыватьОповещение = Ложь;
НоваяСтрока.Модификатор = "ПечатьДокументов";
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
СчетНаОплатуПокупателю типовой конфигурации.
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыПечати = Новый Структура;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетЗаказВПФ") Тогда
ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыПечати);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетЗаказВПФ", "Счет на оплату (внешний)", ТабличныйДокумент);
КонецЕсли;
КонецПроцедуры
СчетНаОплатуПокупателю (процедура Печать и вспомогательные функции формирования табличного документа) в модуль объекта нашей обработки. Обратим внимание: получение макета в модуле объекта обработки выполняется через инструкцию ЭтотОбъект.ПолучитьМакет("ИмяМакета"). Все вызываемые неэкспортные методы модуля менеджера переносим как локальные процедуры обработки..epf.Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки.Оба рассмотренных варианта полностью сохраняют работоспособность конфигурации, не нарушают условий использования базовой версии и не затираются при стандартном обновлении программы.