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