Как реализовать раздельную нумерацию для приходных и расходных денежных документов в 1С:ERP

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

В типовых решениях на базе 1С:ERP Управление предприятием 2 часто встречается ситуация, когда документы движения денежных документов (билетов, марок, путевок) используют общую сквозную нумерацию. С точки зрения методологии учета, особенно в государственных учреждениях или организациях с жесткой учетной политикой, это может считаться ошибкой. Разберем, как проанализировать ситуацию, обосновать необходимость доработки и технически реализовать раздельный нумоучет для приходных и расходных операций.

Анализ методологической базы

Прежде чем приступать к коду, выясним причину возникновения претензий со стороны бухгалтерии. Согласно Инструкции № 157н (пункты 169-172), которая регулирует учет в бюджетных учреждениях, прием и выдача денежных документов должны оформляться приходными и расходными кассовыми ордерами с пометкой «Фондовый». Хотя в коммерческих версиях 1С:ERP используются специализированные документы ПоступлениеДенежныхДокументов и ВыдачаДенежныхДокументов, требования к их нумерации часто дублируют требования к обычным кассовым ордерам (ПКО и РКО), где нумерация всегда раздельная.

Проанализируем ситуацию: если в системе приходный документ получает номер 1, а следующий за ним расходный — номер 2, это затрудняет ведение журналов регистрации. Наша задача — сделать так, чтобы поступления имели свою последовательность (1, 2, 3...), а выдачи — свою.

Оценка трудозатрат на доработку

Рассмотрим, сколько времени реально занимает такая задача у программиста 1С. В обсуждениях часто звучат полярные мнения, но мы разделим работу на этапы:

  1. Анализ метаданных (30 минут): Проверка, используют ли документы общий объект Нумератор или индивидуальные последовательности.
  2. Создание расширения (1-2 часа): Написание кода, который будет перехватывать событие установки нового номера.
  3. Тестирование и отладка (1 час): Проверка на копии базы, контроль уникальности номеров при переходе периодов.

Таким образом, реальная оценка задачи составляет от 2.5 до 4 рабочих часов. Заявления о «месяце работы» являются преувеличением, если речь идет только о смене логики нумератора.

Техническое решение через расширение конфигурации

Для исправления «типового поведения» без снятия конфигурации с поддержки мы воспользуемся механизмом расширений. Нам необходимо переопределить процедуру ПриУстановкеНовогоНомера для обоих документов.

Рассмотрим пример кода, который можно внедрить в модуль объекта документа через расширение. Мы будем использовать префиксы для разделения потоков нумерации, что является наиболее безопасным методом.


&После("ПриУстановкеНовогоНомера")
Процедура Расш1_ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    
    // Определяем тип документа и назначаем соответствующий префикс
    Если ТипЗнч(ЭтотОбъект) = Тип("ДокументОбъект.ПоступлениеДенежныхДокументов") Тогда
        Префикс = "ПД" + Префикс; // ПД - Поступление Документов
    ИначеЕсли ТипЗнч(ЭтотОбъект) = Тип("ДокументОбъект.ВыдачаДенежныхДокументов") Тогда
        Префикс = "ВД" + Префикс; // ВД - Выдача Документов
    КонецЕсли;
    
КонецПроцедуры

Разберем по шагам, что дает этот код. Добавляя уникальный префикс в начало номера, мы заставляем механизм платформы 1С:Предприятие 8.3 автоматически создавать разные последовательности. Платформа ищет последний номер с таким же префиксом и инкрементирует его. В результате ПД00-000001 и ВД00-000001 будут сосуществовать независимо друг от друга.

Использование отдельного объекта Нумератор

Если использование префиксов не устраивает заказчика (требуются «чистые» цифровые номера), рассмотрим более сложный вариант — создание и назначение различных нумераторов. В дереве метаданных 1С:ERP существует объект Нумераторы.

Посмотрим на алгоритм действий:

  1. В расширении создаем два новых объекта типа Нумератор: НумераторПоступленияДД и НумераторВыдачиДД.
  2. В свойствах документов ПоступлениеДенежныхДокументов и ВыдачаДенежныхДокументов указываем соответствующие нумераторы.
  3. Важный момент: При внедрении этого решения в уже работающую базу необходимо проконтролировать, чтобы новые номера не пересеклись со старыми. Рекомендуется начинать нумерацию с нового года или с номера, заведомо большего, чем максимальный текущий.

Проверка корректности работы и типичные ошибки

После внесения изменений проанализируем возможные риски. Основная проблема — это нарушение уникальности. Если в системе уже есть документы, созданные до доработки, платформа может попытаться присвоить уже существующий номер.

Для предотвращения конфликтов воспользуемся следующим методом:

Выясним причину, почему фирма 1С не всегда спешит вносить такие правки в типовой код. Зачастую это связано с тем, что универсальные конфигурации (ERP, КА) ориентированы на широкий рынок, где требования к нумерации «фондовых» операций могут варьироваться. Поэтому умение быстро и грамотно внести изменения через расширение — критически важный навык для программиста 1С.

Подводя итог, отметим, что задача по разделению нумератора является типовой задачей по адаптации системы под требования законодательства или учетной политики. Она требует минимального вмешательства в код при использовании правильных инструментов платформы 1С:Предприятие.

← На главную