Настройка уникальной нумерации документов в 1С, особенно когда требуется обнуление номера каждый день, является частым запросом пользователей. Стандартные механизмы 1С:Бухгалтерии 3.0 настроены на годовую периодичность нумерации, что не всегда соответствует бизнес-процессам или специфическим требованиям организации. В этой статье мы подробно рассмотрим, как модифицировать систему для достижения ежедневной нумерации накладных и счетов-фактур, а также проанализируем важные юридические нюансы, связанные с такой настройкой.
Прежде чем приступать к технической реализации, крайне важно понять юридическую сторону вопроса. Законодательство РФ достаточно гибки в части нумерации счетов-фактур, но есть определенные рекомендации, которые стоит учитывать.
Согласно подпункту 1 пункта 5 статьи 169 Налогового кодекса РФ, счет-фактура должен содержать порядковый номер и дату его составления. Однако ни НК РФ, ни Постановление Правительства РФ от 26 декабря 2011 года № 1137 (о правилах заполнения счетов-фактур) не устанавливают конкретных правил по периодичности нумерации. То есть, ежедневная нумерация счетов-фактур с первого порядкового номера прямо не предусмотрена указанным постановлением Правительства РФ.
Министерство финансов РФ в своих разъяснениях (например, письма от 16.10.2012 № 03-07-11/427 и 10.08.2012 № 03-07-11/284) придерживается позиции, что нумерация счетов-фактур должна быть сквозной и возрастающей в целом по организации, без обнуления в течение года и без отдельных серий для авансовых счетов-фактур или накладных. Отдельная нумерация, например, для авансовых счетов-фактур, по мнению Минфина, не отвечает требованиям правил. Однако важно отметить, что это рекомендация, а не строгий запрет.
Использование разделительной черты ("/") в номере счета-фактуры по правилам используется для дополнения порядкового номера цифровым индексом обособленного подразделения, установленным организацией в учетной политике для целей налогообложения. Если вы планируете использовать дробную черту для разделения даты и порядкового номера, имейте в виду, что это может быть не совсем соответствует изначальному предназначению этого символа в номере счета-фактуры.
Отсутствие штрафов за нарушение нумерации. Это ключевой момент. Ошибки в счетах-фактурах, которые не препятствуют налоговым органам идентифицировать продавца, покупателя, наименование товаров (работ, услуг), их стоимость, ставку и сумму налога, не являются основанием для отказа в принятии к вычету сумм НДС. Нарушение порядка нумерации (пропуск номеров, их повторение или отсутствие хронологической последовательности) обычно относится к таким ошибкам. Налоговые органы в целом лояльны к таким отступлениям, если они не мешают идентификации. Однако это может стать причиной повышенного внимания со стороны проверяющих органов, поэтому будьте готовы аргументировать свою позицию.
Закрепление порядка в учетной политике. Налогоплательщик имеет право самостоятельно разработать и закрепить порядок (способ) присвоения номеров счетам-фактурам в своей учетной политике для целей налогообложения, исходя из особенностей своей деятельности. Мы настоятельно рекомендуем, если вы решаете использовать ежедневную нумерацию, обязательно зафиксировать этот порядок в учетной политике вашей организации.
В "1С:Бухгалтерия предприятия 3.0" нумерация документов автоматизирована. По умолчанию программа присваивает номера, которые обычно обнуляются с начала каждого календарного года. Это достигается за счет использования объекта метаданных «Нумератор документов».
Каждый документ, требующий нумерации (например, РеализацияТоваровУслуг или СчетФактураВыданный), связан с определенным нумератором. В настройках нумератора можно задать:
Однако, простое изменение периодичности на «День» может быть недостаточно для корректной работы нумерации, особенно если вы хотите включить дату в префикс номера или изменить его формат. Система 1С имеет внутренние механизмы, которые контролируют присвоение номера. Например, при изменении даты документа в рамках текущего года, номер может не меняться, поскольку внутренний механизм считает, что дата находится в пределах одного периода нумерации. Мы можем увидеть это в стандартных модулях, где проверяется, относятся ли даты объекта к одному периоду:
Если Не ПрефиксацияОбъектовСлужебный.ДатыОбъектаОдногоПериода(Выборка.Дата, Объект.Дата, Объект.Ссылка) Тогда
Объект.Номер = "";
КонецЕсли;
Этот фрагмент кода показывает, что если даты объекта (старая и новая) попадают в один "период" по логике конфигурации (обычно год, если не изменено), то номер не очищается, и, следовательно, не переформировывается. Нам потребуется вмешаться в эту логику.
Стандартный номер документа в 1С:Предприятии 8.3 также может состоять из префиксов организации, информационной базы и дополнительного пользовательского префикса. Эти префиксы добавляются к порядковому номеру, формируя конечную строку. Расположение и длина этих префиксов фиксированы, и их наличие может повлиять на желаемый формат номера, такой как 010124/1.
Для модификации логики нумерации мы будем использовать расширения конфигурации. Это позволяет изменять поведение типовой конфигурации, не снимая ее с поддержки, что является наилучшей практикой. Рассмотрим шаги по реализации ежедневной нумерации документов.
Документ.РеализацияТоваровУслуг и Документ.СчетФактураВыданный. Для этого в окне расширения найдем соответствующие объекты в ветке «Документы», выделим их и добавим в расширение.Для каждого документа, который вы добавили в расширение, необходимо изменить периодичность его нумератора.
РеализацияТоваровУслуг).СчетФактураВыданный).Важно: Это изменение в расширении модифицирует метаданные документа, указывая, что нумерация должна быть уникальной в пределах дня. Однако сама логика присвоения номера всё равно потребует корректировки.
ПриУстановкеНовогоНомераДля того чтобы в номер документа автоматически подставлялась дата, мы будем использовать обработчик события ПриУстановкеНовогоНомера в модуле объекта документа. Это событие вызывается непосредственно перед тем, как система генерирует новый номер.
Документ.РеализацияТоваровУслуг (или другого нужного документа).ПриУстановкеНовогоНомера.
// В модуле объекта документа "РеализацияТоваровУслуг" (или "СчетФактураВыданный") в расширении
// Создаем обработчик события "После" для процедуры ПриУстановкеНовогоНомера
Процедура Расш_ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
// Форматируем дату документа в нужный нам формат (например, ддММгг) и добавляем "/"
Префикс = Формат(ЭтотОбъект.Дата, "ДФ=ддММгг") + "/";
КонецПроцедуры
Этот код позволит заменить префикс документа на дату в формате ДДММГГ/. Например, для 14 января 2024 года префикс будет 140124/. После этого 1С добавит к этому префиксу порядковый номер дня.
Стандартные механизмы 1С могут добавлять свои префиксы (например, префикс организации типа 0000- или префикс ИБ). Чтобы ваш префикс даты был единственным, может потребоваться изменение префикса у реализации и счетов-фактур. Это делается путем переопределения стандартных процедур в общих модулях, которые отвечают за префиксацию.
ПрефиксацияОбъектовСобытия или ПрефиксацияОбъектовБПСобытия.ПрефиксИнформационнойБазыОрганизацииПодразделения).РеализацияТоваровУслуг или СчетФактураВыданный, то мы будем отменять стандартную обработку.
// В модуле расширения, например, для обработчика события
// "Перед" процедуры, которая вызывает ПрефиксИнформационнойБазыОрганизацииПодразделения
// Примерный код, требующий адаптации под конкретный общий модуль и процедуру
// Внимание: Этот код нужно интегрировать с осторожностью, чтобы не нарушить другую префиксацию.
Процедура Расш_Перед_УстановкойСтандартногоПрефикса(Источник, ИмяОрганизации, ИмяПодразделения, Префикс, СтандартнаяОбработка)
Если ТипЗнч(Источник.Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
ИЛИ ТипЗнч(Источник.Ссылка) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
// Если это наши документы, отключаем стандартную обработку префиксации,
// так как мы уже задали свой префикс в ПриУстановкеНовогоНомера
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
Будьте осторожны с этим шагом! Правильное место для вмешательства зависит от конкретной версии конфигурации. Мы должны убедиться, что отключаем только ту префиксацию, которая мешает нашему формату, и не нарушаем логику других документов.
ПередЗаписью документаДля того чтобы обеспечить правильное присвоение номера, особенно при изменении даты документа, рекомендуется явно очищать номер и вызывать его установку в процедуре ПередЗаписью модуля объекта документа.
Документ.РеализацияТоваровУслуг.ПередЗаписью.
// В модуле объекта документа "РеализацияТоваровУслуг" (или "СчетФактураВыданный") в расширении
// Создаем обработчик события "Перед" для процедуры ПередЗаписью
Процедура Расш_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Если документ новый или его номер пустой,
// или если дата документа изменилась и требуется перенумерация
// Мы можем добавить свою логику проверки изменения даты
Если ЭтоНовый() Или ПустаяСтрока(Номер) Тогда
// Очищаем номер, чтобы система запросила новый
Номер = "";
// Вызываем стандартную процедуру установки нового номера,
// которая теперь будет использовать наш префикс из Расш_ПриУстановкеНовогоНомера
УстановитьНовыйНомер();
// Для счетов-фактур может потребоваться также заполнить ПредставлениеНомера
ПредставлениеНомера = Номер;
КонецЕсли;
// Также можно добавить логику для случаев, когда дата изменилась после первой записи
// Например, если старая дата не совпадает с текущей датой документа
// и если мы хотим перенумеровать документ при изменении даты
// (потребуется хранить старую дату или получать ее из базы)
// Если Не ЭтоНовый() И ДатаДокументаПриОткрытии <> ЭтотОбъект.Дата Тогда
// Номер = "";
// УстановитьНовыйНомер();
// ПредставлениеНомера = Номер;
// КонецЕсли;
КонецПроцедуры
Важно: Механизм 1С для счета-фактуры часто также заполняет поле ПредставлениеНомера. Мы должны убедиться, что оно тоже корректно формируется с нашим префиксом. Обычно достаточно присвоить ему значение поля Номер.
Один из важных сценариев – это когда пользователь меняет дату уже существующего документа. Стандартный механизм 1С не перенумеровывает документ при смене даты в рамках одного года, если не очищен номер. Если вы хотите, чтобы при изменении даты документа на другую дату (например, с 01.01.2024 на 02.01.2024) номер документа автоматически пересчитывался в соответствии с новой датой, вам потребуется дополнительная логика.
Мы можем реализовать это, запоминая дату документа при открытии формы и сравнивая ее с датой при записи. Если даты различаются, и мы хотим обновить номер, тогда мы очищаем поле Номер и вызываем УстановитьНовыйНомер(). Это можно сделать в модуле формы или в модуле объекта, но для корректного сравнения дат может потребоваться временное хранение старой даты.
Пример дополнительной логики в модуле формы для перенумерации при изменении даты:
// В модуле формы документа (например, ФормаДокумента)
ПеременныеФормы.ДатаДокументаПриОткрытии = Дата; // Присваиваем при чтении объекта
// В процедуре ПередЗаписьюНаСервере
Если Не Объект.ЭтоНовый() И ПеременныеФормы.ДатаДокументаПриОткрытии <> Объект.Дата Тогда
// Если дата изменилась, очищаем номер, чтобы сработал наш механизм
Объект.Номер = "";
КонецЕсли;
Этот подход гарантирует, что даже если пользователь изменит дату у уже записанного документа, номер будет переформирован согласно новым правилам.
Часто пользователи хотят видеть номер в формате ДДММГГ/1, ДДММГГ/2, без ведущих нулей в порядковом номере. Однако стандартный нумератор 1С автоматически добавляет ведущие нули, чтобы обеспечить фиксированную длину номера и корректную сортировку, например 0001, 0002, ..., 0010. Если вам принципиально нужен формат без ведущих нулей, вы столкнетесь с необходимостью полной переработки механизма получения номера, не используя стандартный УстановитьНовыйНомер(), а реализуя его полностью вручную, что значительно усложняет решение. Как правило, для автоматической нумерации и удобства сортировки, формат с ведущими нулями (ДДММГГ/0001) является более предпочтительным и не вызывает проблем.
Помимо использования расширения и модификации стандартных процедур, существуют и другие, менее предпочтительные, но возможные способы реализации ежедневной нумерации.
Мы можем создать собственный регистр сведений, который будет хранить последний присвоенный номер для каждой даты. Например, регистр с измерениями "Дата" и "ВидДокумента" и ресурсом "ПоследнийНомер".
НомераДокументовПоДатам, непериодический, независимый.ДатаДокумента (тип Дата), ВидДокумента (тип Строка, или перечисление, или ссылка на метаданные).ПоследнийНомер (тип Число).ПередЗаписью для наших документов мы будем:
Формат(Дата, "ДФ=ддММгг") + "/" + НовыйНомер).Преимущества: Полная независимость от стандартного механизма нумерации 1С. Недостатки: Требует написания большого объема кода для обработки всех нюансов (пропуски, повторы, параллельная работа), нет стандартного механизма контроля уникальности номеров 1С.
Этот метод наименее автоматизирован и обычно используется в случаях, когда прямая модификация конфигурации или расширения нежелательна или невозможна (например, в очень старых или сильно заблокированных конфигурациях).
РеализацияТоваровУслуг и СчетФактураВыданный за текущий день, которые не имеют нужный формат номера.ДДММГГ/1, ДДММГГ/2 и так далее).Преимущества: Не требует изменения конфигурации. Недостатки: Ручной запуск, высокая вероятность ошибок (забыли запустить обработку), нет "живой" нумерации при создании документа, возможны конфликты при изменении уже перенумерованных документов.
Реализация ежедневной нумерации накладных и счетов-фактур в 1С:Бухгалтерии 3.0 возможна и наиболее эффективно достигается путем использования расширений конфигурации. Этот подход позволяет точечно изменить поведение программы, сохранив при этом возможность обновления типовой конфигурации. Мы рассмотрели пошаговую инструкцию, включающую изменение периодичности нумератора, переопределение процедуры ПриУстановкеНовогоНомера для добавления даты в префикс, а также методы предотвращения конфликтов со стандартными префиксами и обработки изменения даты.
Мы также подробно остановились на юридических аспектах. Помним, что хотя нет прямых штрафов за такую нумерацию, мы рекомендуем закрепить выбранный порядок в учетной политике вашей организации, чтобы минимизировать риски и вопросы со стороны налоговых органов. Мы считаем, что внимательный и последовательный подход к этой задаче обеспечит стабильную и соответствующую вашим требованиям работу системы.