Почему в Бухгалтерии 3.0 не печатается префикс документа, пришедшего из УТ 11, и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Управленческий учет Торговля и дистрибуция
← На главную

В процессе обмена данными между конфигурациями Управление торговлей 11 и Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с тем, что документы, созданные в торговой системе, при печати в бухгалтерии теряют свой префикс. Это происходит из-за механизмов Библиотеки стандартных подсистем (БСП), которые по умолчанию «очищают» номера для формирования красивых печатных форм. Давайте разберемся, как настроить систему, чтобы префиксы отображались корректно.

Способ 1: Настройка регистра сведений «Префиксы информационных баз»

Прежде чем прибегать к программированию, рассмотрим штатный механизм платформы. В типовых конфигурациях за логику обработки префиксов отвечает регистр сведений Префиксы информационных баз. Именно здесь система «решает», является ли префикс значимой частью номера или техническим служебным символом.

  1. Откройте раздел Администрирование или Функции технического специалиста.
  2. Найдите регистр сведений Префиксы информационных баз.
  3. В списке найдите нужный префикс, который соответствует вашей базе-источнику (УТ 11).
  4. Установите флажок Печатать префикс. Это даст системе команду не удалять указанную строку из номера при формировании печатной формы.
  5. Важно: Установите также флажок Формат БСП. Это необходимо для того, чтобы алгоритмы формирования печатных форм правильно интерпретировали структуру номера и не отсекали префикс при вызове функции НомерНаПечать.

После внесения изменений обязательно перезапустите сеанс или очистите кэш, так как настройки регистра могут кэшироваться в памяти клиентского приложения.

Способ 2: Программная доработка через расширение конфигурации

Если настройки регистра не приносят ожидаемого результата (например, из-за специфики печатных форм или версий БСП), мы можем перехватить логику формирования номера. Основная функция, отвечающая за очистку номера, находится в общем модуле ПрефиксацияОбъектовКлиентСервер.

Рассмотрим структуру функции, которая управляет выводом номера на печать:


// Функция получает номер документа для вывода на печать
// НомерОбъекта - Исходный номер документа
// УдалитьПрефиксИнформационнойБазы - Булево
// УдалитьПользовательскийПрефикс - Булево
Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт
    // В типовом коде здесь вызывается очистка префиксов
    // Мы можем перехватить эту функцию через Расширение
КонецФункции

Чтобы принудительно оставить префикс, мы создаем расширение и переопределяем логику вызова функции очистки. Вместо того чтобы передавать параметр Истина в функцию УдалитьПрефиксыИзНомераОбъекта, мы можем передать Ложь для удаления префикса информационной базы.


&После("НомерНаПечать")
Функция НашеРасширение_НомерНаПечать(НомерОбъекта, УдалитьПрефиксИнформационнойБазы, УдалитьПользовательскийПрефикс)
    // Передаем Ложь, чтобы префикс остался в строке
    НомерОбъекта = УдалитьПрефиксыИзНомераОбъекта(НомерОбъекта, Истина, Ложь); 
    Возврат НомерОбъекта;
КонецФункции

Почему это происходит и на что обратить внимание

Разберем причины, по которым проблема может сохраняться:

Рекомендуем начинать решение проблемы с настройки регистра Префиксы информационных баз, так как это штатный и наиболее надежный способ, не требующий изменения конфигурации. Если же задача требует индивидуального подхода для конкретных типов документов, использование расширения с перехватом функции НомерНаПечать будет оптимальным решением.

← На главную