В процессе обмена данными между конфигурациями Управление торговлей 11 и Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с тем, что документы, созданные в торговой системе, при печати в бухгалтерии теряют свой префикс. Это происходит из-за механизмов Библиотеки стандартных подсистем (БСП), которые по умолчанию «очищают» номера для формирования красивых печатных форм. Давайте разберемся, как настроить систему, чтобы префиксы отображались корректно.
Прежде чем прибегать к программированию, рассмотрим штатный механизм платформы. В типовых конфигурациях за логику обработки префиксов отвечает регистр сведений Префиксы информационных баз. Именно здесь система «решает», является ли префикс значимой частью номера или техническим служебным символом.
Префиксы информационных баз.НомерНаПечать.После внесения изменений обязательно перезапустите сеанс или очистите кэш, так как настройки регистра могут кэшироваться в памяти клиентского приложения.
Если настройки регистра не приносят ожидаемого результата (например, из-за специфики печатных форм или версий БСП), мы можем перехватить логику формирования номера. Основная функция, отвечающая за очистку номера, находится в общем модуле ПрефиксацияОбъектовКлиентСервер.
Рассмотрим структуру функции, которая управляет выводом номера на печать:
// Функция получает номер документа для вывода на печать
// НомерОбъекта - Исходный номер документа
// УдалитьПрефиксИнформационнойБазы - Булево
// УдалитьПользовательскийПрефикс - Булево
Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт
// В типовом коде здесь вызывается очистка префиксов
// Мы можем перехватить эту функцию через Расширение
КонецФункции
Чтобы принудительно оставить префикс, мы создаем расширение и переопределяем логику вызова функции очистки. Вместо того чтобы передавать параметр Истина в функцию УдалитьПрефиксыИзНомераОбъекта, мы можем передать Ложь для удаления префикса информационной базы.
&После("НомерНаПечать")
Функция НашеРасширение_НомерНаПечать(НомерОбъекта, УдалитьПрефиксИнформационнойБазы, УдалитьПользовательскийПрефикс)
// Передаем Ложь, чтобы префикс остался в строке
НомерОбъекта = УдалитьПрефиксыИзНомераОбъекта(НомерОбъекта, Истина, Ложь);
Возврат НомерОбъекта;
КонецФункции
Разберем причины, по которым проблема может сохраняться:
Рекомендуем начинать решение проблемы с настройки регистра Префиксы информационных баз, так как это штатный и наиболее надежный способ, не требующий изменения конфигурации. Если же задача требует индивидуального подхода для конкретных типов документов, использование расширения с перехватом функции НомерНаПечать будет оптимальным решением.