В типовых решениях на базе 1С:ERP Управление предприятием 2 часто встречается ситуация, когда документы движения денежных документов (билетов, марок, путевок) используют общую сквозную нумерацию. С точки зрения методологии учета, особенно в государственных учреждениях или организациях с жесткой учетной политикой, это может считаться ошибкой. Разберем, как проанализировать ситуацию, обосновать необходимость доработки и технически реализовать раздельный нумоучет для приходных и расходных операций.
Прежде чем приступать к коду, выясним причину возникновения претензий со стороны бухгалтерии. Согласно Инструкции № 157н (пункты 169-172), которая регулирует учет в бюджетных учреждениях, прием и выдача денежных документов должны оформляться приходными и расходными кассовыми ордерами с пометкой «Фондовый». Хотя в коммерческих версиях 1С:ERP используются специализированные документы ПоступлениеДенежныхДокументов и ВыдачаДенежныхДокументов, требования к их нумерации часто дублируют требования к обычным кассовым ордерам (ПКО и РКО), где нумерация всегда раздельная.
Проанализируем ситуацию: если в системе приходный документ получает номер 1, а следующий за ним расходный — номер 2, это затрудняет ведение журналов регистрации. Наша задача — сделать так, чтобы поступления имели свою последовательность (1, 2, 3...), а выдачи — свою.
Рассмотрим, сколько времени реально занимает такая задача у программиста 1С. В обсуждениях часто звучат полярные мнения, но мы разделим работу на этапы:
Нумератор или индивидуальные последовательности.Таким образом, реальная оценка задачи составляет от 2.5 до 4 рабочих часов. Заявления о «месяце работы» являются преувеличением, если речь идет только о смене логики нумератора.
Для исправления «типового поведения» без снятия конфигурации с поддержки мы воспользуемся механизмом расширений. Нам необходимо переопределить процедуру ПриУстановкеНовогоНомера для обоих документов.
Рассмотрим пример кода, который можно внедрить в модуль объекта документа через расширение. Мы будем использовать префиксы для разделения потоков нумерации, что является наиболее безопасным методом.
&После("ПриУстановкеНовогоНомера")
Процедура Расш1_ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
// Определяем тип документа и назначаем соответствующий префикс
Если ТипЗнч(ЭтотОбъект) = Тип("ДокументОбъект.ПоступлениеДенежныхДокументов") Тогда
Префикс = "ПД" + Префикс; // ПД - Поступление Документов
ИначеЕсли ТипЗнч(ЭтотОбъект) = Тип("ДокументОбъект.ВыдачаДенежныхДокументов") Тогда
Префикс = "ВД" + Префикс; // ВД - Выдача Документов
КонецЕсли;
КонецПроцедуры
Разберем по шагам, что дает этот код. Добавляя уникальный префикс в начало номера, мы заставляем механизм платформы 1С:Предприятие 8.3 автоматически создавать разные последовательности. Платформа ищет последний номер с таким же префиксом и инкрементирует его. В результате ПД00-000001 и ВД00-000001 будут сосуществовать независимо друг от друга.
Если использование префиксов не устраивает заказчика (требуются «чистые» цифровые номера), рассмотрим более сложный вариант — создание и назначение различных нумераторов. В дереве метаданных 1С:ERP существует объект Нумераторы.
Посмотрим на алгоритм действий:
Нумератор: НумераторПоступленияДД и НумераторВыдачиДД.ПоступлениеДенежныхДокументов и ВыдачаДенежныхДокументов указываем соответствующие нумераторы.После внесения изменений проанализируем возможные риски. Основная проблема — это нарушение уникальности. Если в системе уже есть документы, созданные до доработки, платформа может попытаться присвоить уже существующий номер.
Для предотвращения конфликтов воспользуемся следующим методом:
Выясним причину, почему фирма 1С не всегда спешит вносить такие правки в типовой код. Зачастую это связано с тем, что универсальные конфигурации (ERP, КА) ориентированы на широкий рынок, где требования к нумерации «фондовых» операций могут варьироваться. Поэтому умение быстро и грамотно внести изменения через расширение — критически важный навык для программиста 1С.
Подводя итог, отметим, что задача по разделению нумератора является типовой задачей по адаптации системы под требования законодательства или учетной политики. Она требует минимального вмешательства в код при использовании правильных инструментов платформы 1С:Предприятие.