Как «победить» нумерацию выданных счетов-фактур в 1С:Бухгалтерия предприятия 3.0

Программист 1С v8.3 (Управляемые формы) Налоговый учет
← На главную

При переходе с редакции 2.0 на 3.0 многие пользователи и программисты сталкиваются с тем, что привычные механизмы ручной или нестандартной нумерации счетов-фактур перестают работать. Попытки установить номер через дробь (например, 1/1) или добавить буквенные индексы часто приводят к тому, что система игнорирует ввод и при создании следующего документа сбрасывает счетчик на 000000001. Разберем детально, почему это происходит, какие законодательные нормы необходимо учитывать и как технически решить эту задачу без внесения изменений в основную конфигурацию.

Причина изменения поведения системы в БП 3.0

Проанализируем техническую сторону вопроса. В платформе 1С:Предприятие 8.3 и типовой конфигурации «Бухгалтерия предприятия 3.0» реализован строгий механизм префиксации. Стандартный номер документа состоит из нескольких частей:

  1. Префикс организации: два символа, задаваемые в карточке организации.
  2. Префикс информационной базы: два символа, задаваемые в настройках синхронизации данных.
  3. Разделитель: символ дефиса -.
  4. Числовой номер: дополненный нулями до определенной длины (обычно 11 символов).

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

Законодательный контекст использования дробей

Выясним, насколько безопасна такая нумерация с точки зрения налогового учета. Согласно Постановлению Правительства РФ №1137, использование разделительного знака «/» строго регламентировано. Рассмотрим основные случаи:

  1. Обособленные подразделения: через дробь указывается цифровой индекс подразделения, зафиксированный в учетной политике.
  2. Доверительное управление: после номера через дробь ставится индекс «Д».
  3. Простое товарищество: используется индекс конкретного участника.

Если организация не имеет обособленных подразделений и не является участником товарищества, использование дроби может вызвать лишние вопросы у ИФНС при проверке. Однако, согласно ст. 169 НК РФ, ошибки в нумерации не являются критичными, если они не мешают идентифицировать продавца, покупателя и сумму налога. Тем не менее, для стабильной работы системы рекомендуется придерживаться штатных префиксов.

Решение проблемы через механизм расширений

Чтобы «заставить» систему поддерживать нужный нам формат (например, yyyyMMdd-### или номера с буквами), проанализируем способ реализации через расширение. Это позволит нам не снимать конфигурацию с поддержки и сохранит возможность автоматического обновления.

Рассмотрим алгоритм действий для программиста:

  1. Создадим новое расширение и добавим в него документ СчетФактураВыданный.
  2. Нам необходимо перехватить событие ПриУстановкеНовогоНомера. Это можно сделать через аннотацию &Вместо или &Перед для процедуры в модуле объекта.

Посмотрим на пример кода, который формирует номер в формате ГГГГММДД + порядковый номер за день:


&НаСервере
Процедура Расш_ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    
    // Отключаем стандартную генерацию номера
    СтандартнаяОбработка = Ложь;
    
    ДатаДок = ЭтотОбъект.Дата;
    ПрефиксДаты = Формат(ДатаДок, "ДФ=yyyyMMdd");
    
    // Поиск последнего номера за текущий день в базе
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |   СчетФактураВыданный.Номер КАК Номер
        |ИЗ
        |   Документ.СчетФактураВыданный КАК СчетФактураВыданный
        |ГДЕ
        |   СчетФактураВыданный.Дата МЕЖДУ &НачалоДня И &КонецДня
        |УПОРЯДОЧИТЬ ПО
        |   СчетФактураВыданный.Номер УБЫВ";
        
    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ДатаДок));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(ДатаДок));
    
    Результат = Запрос.Выполнить();
    Если Не Результат.Пустой() Тогда
        Выборка = Результат.Выбрать();
        Выборка.Следующий();
        ПоследнийНомер = Выборка.Номер;
        // Извлекаем числовую часть и увеличиваем на 1
        // Предполагаем формат yyyyMMdd-001
        ЧисловаяЧасть = Число(Прав(ПоследнийНомер, 3));
        НовыйПорядковыйНомер = ЧисловаяЧасть + 1;
    Иначе
        НовыйПорядковыйНомер = 1;
    КонецЕсли;
    
    ЭтотОбъект.Номер = ПрефиксДаты + "-" + Формат(НовыйПорядковыйНомер, "ЧГ=0; ЧЦ=3; ЧВН=");
    
КонецПроцедуры

Альтернативный способ: Использование штатных префиксов

Проанализируем ситуацию: если ваша цель — разделение нумерации по разным клиентам или типам деятельности, не обязательно использовать дробь. Разберем по шагам, как настроить систему штатными средствами:

  1. Перейдите в справочник Организации.
  2. Для каждой организации (или филиала, если они заведены как отдельные организации) укажите уникальный Префикс (2 символа).
  3. Система автоматически будет формировать номера вида ПР-000000001, ТД-000000001. Это корректно воспринимается всеми алгоритмами 1С и налоговыми органами.

Если же требуется префикс для авансовых счетов-фактур (например, индекс «А»), воспользуйтесь настройками учетной политики:

Риски и последствия изменения формата номера

Рассмотрим важный нюанс, упомянутый в ходе обсуждения специалистами. При использовании формата ГГГГММДД-Номер (дата в номере) часто возникают логические ловушки:

Для исправления сбившейся нумерации без кодинга можно воспользоваться стандартной обработкой «Групповое изменение реквизитов» (раздел Администрирование — Обслуживание — Корректировка данных). С ее помощью можно массово перенумеровать документы за период, восстановив правильную последовательность и префиксы.

Выводы

Мы выяснили, что «победить» нумерацию в 1С:БП 3.0 можно двумя основными путями: либо через расширение конфигурации с переопределением процедуры ПриУстановкеНовогоНомера, либо через грамотную настройку штатных префиксов организаций. Рекомендуем второй путь как наиболее стабильный и соответствующий методологии 1С. Использование спецсимволов вроде дробей допустимо только в случаях, прямо предусмотренных законодательством (ОП, доверительное управление), во всех остальных случаях лучше придерживаться стандартного формата XX00-0000001.

← На главную