При формировании книги продаж в «1С:Бухгалтерия предприятия 3.0» бухгалтеры часто сталкиваются с ситуацией, когда номер счета-фактуры выводится с полным префиксом и лидирующими нулями (например, НВ000002419 вместо лаконичного 2419). На печатную форму документа при этом выводится корректный номер без префиксов, а в отчете книги продаж остаётся нетиповой номер. Проанализируем, почему возникает эта проблема и как ее правильно устранить.
Рассмотрим алгоритмы Библиотеки стандартных подсистем (БСП). Типовая функция НомерНаПечать из модуля префиксации рассчитывает на стандартный формат номера 1С, в котором префикс организации или информационной базы отделяется разделителем — дефисом (например, НВ-000002419).
Разберем типовую функцию вывода номера:
Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт
СтандартнаяОбработка = Истина;
ПрефиксацияОбъектовКлиентСерверПереопределяемый.ПриПолученииНомераНаПечать(НомерОбъекта, СтандартнаяОбработка,
УдалитьПрефиксИнформационнойБазы, УдалитьПользовательскийПрефикс);
Если СтандартнаяОбработка = Ложь Тогда
Возврат НомерОбъекта;
КонецЕсли;
Если УдалитьПользовательскийПрефикс Тогда
НомерОбъекта = УдалитьПользовательскиеПрефиксыИзНомераОбъекта(НомерОбъекта);
КонецЕсли;
НомерОбъекта = УдалитьЛидирующиеНулиИзНомераОбъекта(НомерОбъекта);
НомерОбъекта = УдалитьПрефиксыИзНомераОбъекта(НомерОбъекта, Истина, УдалитьПрефиксИнформационнойБазы);
Возврат НомерОбъекта;
КонецФункции
Если документы загружаются из внешних самописных систем или систем оперативного учета без соблюдения стандарта нумерации 1С (без дефиса), стандартные механизмы отбрасывания префиксов не определяют границы символов. В результате при проведении документа СчетФактураВыданный в регистр сведений Журнал учета счетов-фактур (полю НомерСчетаФактуры) попадает исходная строка целиком. Именно из этого регистра книга продаж берет данные для формирования отчета.
Разберем вариант решения проблемы непосредственно при проведении документа СчетФактураВыданный. Посмотрим на пример кода, который переопределяет значение номера в наборе движений перед их записью в базу данных:
НаборДвижений = Движения.ЖурналУчетаСчетовФактур;
Для Каждого Движение Из НаборДвижений Цикл
Движение.НомерСчетаФактуры = ПроизвольныйАлгоритмЗаменыНомера(Движение.НомерСчетаФактуры);
КонецЦикла;
НаборДвижений.Записывать = Истина;
В этой схеме функция ПроизвольныйАлгоритмЗаменыНомера очищает полученный номер от буквенных символов и удаляет лидирующие нули с помощью регулярных выражений или функций работы со строками СтрНайти и Сред.
Рассмотрим более безопасный подход, который не требует изменения логики проведения документов в 1С. Для этого скорректируем правила загрузки данных (КД или EnterpriseData) одним из следующих способов:
НВ000002419 в формат НВ-000002419. В этом случае типовая функция префиксации БП 3.0 сможет корректно выделить префикс НВ- и автоматически очистит его как при печати, так и при записи в движения регистров НДС.Посмотрим, как решить задачу без изменения типовой конфигурации с помощью расширения. Для этого создадим подписку на событие ПередЗаписью для регистра сведений Журнал сведений счетов-фактур или переопределим процедуру ПриПолученииНомераНаПечать в модуле ПрефиксацияОбъектовКлиентСерверПереопределяемый.
Сформулируем основные преимущества использования расширений:
Проанализируем сопутствующие требования при изменении нумерации счетов-фактур:
Сверка данных ЭДО и Декларации по НДС: Обратите внимание на совпадение номеров с контрагентами. Если покупателю уходит электронный документ с номером НВ000002419, а в вашей книге продаж зарегистрирован номер 2419, налоговые органы при автоматической проверке деклараций по НДС (АСК НДС) могут выявить расхождение. Убедитесь, что формат номера в выгружаемых файлах XML совпадает с номером в книге продаж.