Почему 1С:Розница требует заполнить реквизит «Касса» в документе «Выемка ДС», если его там нет?

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

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

Анализируем бизнес-процесс движения денежных средств

Для начала проанализируем, как в норме должны перемещаться наличные деньги в розничном магазине. Процесс состоит из нескольких этапов, каждый из которых фиксируется в регистрах накопления:

  1. Закрытие смены и Выемка: В момент закрытия смены формируется документ ВыемкаДенежныхСредствИзКассыККМ. Его задача — отразить расход денег из операционной кассы (ККМ) и зафиксировать их состояние «в пути». В этот момент деньги должны «нацелиться» на конкретную кассу предприятия.
  2. Приходование в кассу предприятия: Бухгалтер или кассир на основании выемки создает ПриходныйКассовыйОрдер (ПКО) с видом операции «Поступление денежных средств из кассы ККМ». Этот документ переводит деньги из состояния «в пути» на остаток конкретной кассы организации.

Связующим звеном здесь выступает регистр накопления ДенежныеСредстваКПоступлению. Документ выемки делает в него запись Приход, а ПКО — запись Расход. Чтобы регистр «закрылся» (то есть остаток по нему стал нулевым), все аналитические разрезы (измерения) в обоих документах должны совпадать. Ключевым измерением здесь является Касса.

В чем заключается причина ошибки?

Проанализируем ситуацию: почему проверка учета ругается на пустое значение? Дело в том, что в некоторых релизах конфигурации 1С:Розница (особенно в ветке 2.3) допущена программная недоработка в модуле менеджера документа. Рассмотрим фрагмент кода, который отвечает за формирование движений в регистр ДенежныеСредстваКПоступлению:


Функция ТекстЗапросаТаблицаДенежныеСредстваКПоступлениюНаличные()
    ТекстЗапроса = "
    |ВЫБРАТЬ
    |    ДанныеДокумента.Дата КАК Период,
    |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
    |    ДанныеДокумента.Организация КАК Организация,
    |    ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) КАК Касса,
    |    ДанныеДокумента.Ссылка КАК ДокументПередачи,
    |    ДанныеДокумента.СуммаДокумента КАК Сумма,
    |    ДанныеДокумента.КассаККМ КАК КассаОтправитель
    |ИЗ
    |    Документ.ВыемкаДенежныхСредствИзКассыККМ КАК ДанныеДокумента
    |ГДЕ
    |    ДанныеДокумента.Ссылка = &Ссылка";
    Возврат ТекстЗапроса;
КонецФункции

Обратим внимание на строку ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка) КАК Касса. Здесь разработчики жестко прописали передачу пустой ссылки в измерение Касса. В то же время ПриходныйКассовыйОрдер, создаваемый на основании этой выемки, записывает в это же измерение конкретную кассу организации, выбранную пользователем.

В результате в регистре возникают две «зависшие» записи:

Система контроля учета видит этот «хвост» по пустой аналитике и сигнализирует об ошибке, хотя фактически деньги поступили верно.

Способ 1: Настройка «Операционной кассы» в карточке Магазина

Прежде чем приступать к исправлению кода, проверим стандартные настройки НСИ. Выясним, указана ли в системе связь между магазином и основной кассой. Посмотрим на алгоритм заполнения данных:

  1. Перейдем в раздел НСИ — Магазины.
  2. Откроем карточку вашего магазина.
  3. Проверим наличие заполненного поля «Основная касса».

Если это поле пустое, система в принципе не знает, в какую кассу по умолчанию должны поступать деньги при выемке. Однако стоит учитывать, что при наличии вышеуказанной ошибки в коде (ПустаяСсылка), даже заполненная настройка в магазине может игнорироваться документом выемки.

Способ 2: Установка официальных патчей (исправлений)

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

  1. Зайдем в раздел Администрирование — Обслуживание.
  2. Выберем пункт Обновление программы — Установленные исправления (патчи).
  3. Нажмем «Поиск и установка исправлений» (требуется подключение к интернет-поддержке).
  4. Ищем исправления, связанные с документом ВыемкаДенежныхСредствИзКассыККМ и регистром ДенежныеСредстваКПоступлению.

Способ 3: Исправление через расширение конфигурации (для программистов)

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

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

Важный момент: Если мы меняем логику в Выемке, нам нужно убедиться, что в ПКО используется та же самая касса. В противном случае регистр все равно не закроется. Проанализируем реквизиты: в ПКО касса берется из документа, а в выемке ее нет на форме, но она может быть вычислена программно на основе КассыККМ (у каждой Кассы ККМ в настройках указана принадлежность к магазину, а у магазина — основная касса).

Способ 4: Ручная корректировка регистров

Если ошибок накопилось много и нужно «навести порядок» в текущем периоде, разберем вариант с использованием документа КорректировкаРегистров:

  1. Создадим новый документ КорректировкаРегистров.
  2. Добавим в состав регистров ДенежныеСредстваКПоступлению.
  3. Заполним таблицу двумя строками:
    • Первая строка: Вид движения Расход, Касса — (пустая), сумма совпадает с суммой «ошибочной» выемки.
    • Вторая строка: Вид движения Приход, Касса — Ваша касса предприятия, сумма та же.

После проведения такой корректировки остатки по пустой кассе обнулятся, и проверка учета перестанет выдавать предупреждение.

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

← На главную