Как включить учет по подразделениям для кассовых документов в 1С:Бухгалтерия 3.0 и предотвратить очистку реквизита при записи?

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

При настройке аналитического учета денежных средств в конфигурации 1С:Бухгалтерия предприятия 3.0 (версия ПРОФ) нередко возникает задача организовать учет по подразделениям на счете 50.01 «Касса организации». Типовая архитектура конфигурации связывает видимость и заполнение реквизита ПодразделениеОрганизации с функциональной опцией ВестиУчетПоПодразделениям. Однако простое исключение реквизита документа из состава функциональной опции приводит к тому, что при интерактивном выборе значение подразделения отображается, но в момент записи или проведения документа поле автоматически очищается, а проводки формируются без подразделения.

Разберем детально, почему так происходит, какие системные механизмы отвечают за очистку подразделений и как правильно настроить кассовые документы ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер.

Выясним причину автоматической очистки реквизита

Проанализируем архитектурную логику типовой конфигурации. В «1С:Бухгалтерия предприятия» версии ПРОФ учет по подразделениям штатно предусмотрен только для затратных счетов (20, 23, 25, 26, 29). Полноценный сквозной учет по подразделениям на счетах денежных средств и расчетов заложен разработчиками исключительно в версии КОРП.

Включение общей константы ВестиУчетПоПодразделениям глобально в версии ПРОФ может привести к нежелательным последствиям — в частности, к ошибкам при закрытии месяца и некорректному списанию партий запасов, так как алгоритмы распределения не рассчитаны на выборочное включение небалансовых счетов. Поэтому программисты часто отключают опцию для конкретных реквизитов.

Однако при отключенной функциональной опции срабатывает типовой механизм контроля целостности данных. В конфигурации присутствует подписка на событие УстановитьПустоеПодразделениеПередЗаписьюДокумента, связанная с обработчиком в общем модуле УчетПоПодразделениямСобытия. Этот обработчик принудительно обнуляет значение подразделения перед непосредственной записью документа в базу данных, если в программе отключен учет по подразделениям для соответствующего раздела учета.

Решение проблемы: модификация обработчика событий

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

  1. Исключим реквизит ПодразделениеОрганизации документов ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер из состава функциональной опции ВестиУчетПоПодразделениям (или вынесем элемент на форму документа вручную, управляя его видимостью).
  2. Откроем процедуру УстановитьПустоеПодразделениеПередЗаписьюДокумента в общем модуле УчетПоПодразделениямСобытия.
  3. Добавим исключение для документов кассы, чтобы процедура не сбрасывала выбранное пользователем значение подразделения.

Посмотрим на пример доработки кода процедуры:


Процедура УстановитьПустоеПодразделениеПередЗаписьюДокумента(Источник, Отказ) Экспорт

    // Проверяем тип объекта источника
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
        Или ТипЗнч(Источник) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
        Возврат;
    КонецЕсли;

    // Стандартная типовая логика очистки подразделений...

КонецПроцедуры

После добавления данного условия при сохранении документов ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер значение реквизита сохраняется в базе данных, а типовые алгоритмы проведения успешно передают заполненное подразделение в проводки регистра бухгалтерии Хозрасчетный.

Реализация через расширение конфигурации

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

В расширении конфигурации перехватим выполнение процедуры УстановитьПустоеПодразделениеПередЗаписьюДокумента с помощью аннотации &Вместо или &ИзменениеИКонтроль:


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

    // Вызываем базовую функциональность для остальных документов
    ПродолжитьВызов(Источник, Отказ);

КонецПроцедуры

Ограничения и альтернативные подходы к учету кассы по подразделениям

При внедрении раздельного учета денежных средств в кассе необходимо учитывать сопутствующие системные и методические нюансы конфигурации версии ПРОФ:

  1. Настройка плана счетов: Для того чтобы отчеты (например, Оборотно-сальдовая ведомость по счету) отображали сальдо в разрезе подразделений, в плане счетов для счета 50.01 должен быть активен признак учета по подразделениям.
  2. Формирование кассовой книги: В типовой версии ПРОФ отчет Кассовая книга (унифицированная форма КО-4) формируется только сводно по организации в целом. Механизм раздельных листов кассовой книги по подразделениям штатно доступен только в версии КОРП.
  3. Альтернатива через субконто: Если требуется избежать вмешательства в логику подписок на события и измерений регистра бухгалтерии, можно добавить на счет 50.01 дополнительный вид субконто со ссылкой на справочник ПодразделенияОрганизаций или пользовательский справочник Кассы. Это позволит формировать детализированные отчеты без риска нарушения типовых алгоритмов закрытия месяца.
← На главную