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

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

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

Разберем по шагам, почему возникает такое поведение системы, как программно обрабатываются строки чека и какими способами можно навсегда устранить эту проблему.

Анализ механизма возникновения ошибки

Проанализируем ситуацию на уровне программного кода формы РМК и структуры данных документа ЧекККМ. При добавлении номенклатуры в табличную часть РМК должны автоматически заполняться реквизиты аналитики: Организация, Склад (склад реализации), а также привязка к кассе ККМ.

Если в карточке используемого склада или в правилах распределения продаж аналитика задана не полностью, в табличную часть Товары реквизит Организация не подставляется при первичном добавлении позиции. При нажатии кнопки «Оплата» срабатывает процедура проверки и распределения строк чека по кассам и организациям:


Для Каждого СтрокаТаблицыЧеков Из ТабличноеПолеЧеков Цикл
    Если не СтрокаТаблицыЧеков.КассаККМ = КассаККМДляЧеков или не СтрокаТаблицыЧеков.Организация = ОрганизацияДляЧеков Тогда
        СтруктураПоискаТовары = Новый Структура();
        СтруктураПоискаТовары.Вставить("Организация", СтрокаТаблицыЧеков.Организация);
        СтрокиТовары = Объект.Товары.НайтиСтроки(СтруктураПоискаТовары);
        Для Каждого СтрокаТовары Из СтрокиТовары Цикл
            СтрокаТовары.Организация = ОрганизацияДляЧеков;
        КонецЦикла;
        СтрокиТПЧековДляУдаления.Добавить(СтрокаТаблицыЧеков);
    КонецЕсли;
КонецЦикла;

Для Каждого СтрокаДляУдаления Из СтрокиТПЧековДляУдаления Цикл
    ТабличноеПолеЧеков.Удалить(СтрокаДляУдаления);
КонецЦикла;

В этот момент программа обнаруживает несоответствие пустой организации в строках с организацией текущего чека, выдает пользователю предупреждение о неправильном заполнении складов реализации, но одновременно с этим в цикле принудительно перезаполняет СтрокаТовары.Организация = ОрганизацияДляЧеков. В результате при повторной попытке оплаты реквизит уже оказывается заполненным, и чек пробивается без ошибок.

Способ 1. Заполнение служебного реквизита «Организация» в справочнике «Склады»

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

Рассмотрим порядок исправления реквизита через типовой функционал:

  1. Перейдем в раздел Администрирование → Обслуживание → Корректировка данных.
  2. Откроем обработку Групповое изменение реквизитов.
  3. В поле «Изменять» выберем справочник Склады (или Складские территории).
  4. По кнопке «Добавить условие отбора» настроим выборку складов нужного магазина или конкретного проблемного склада.
  5. В списке реквизитов найдем поле Организация (при необходимости в дополнительных параметрах включим показ служебных реквизитов) и установим флаг для изменения.
  6. Укажем значение требуемой организации и нажмем Изменить реквизиты.

Если используется внешняя обработка или код на встроенном языке 1С, изменение реквизита выполняется следующим образом:


Выборка = Справочники.Склады.Выбрать();
Пока Выборка.Следующий() Цикл
    Если Не ЗначениеЗаполнено(Выборка.Организация) Тогда
        СкладОбъект = Выборка.ПолучитьОбъект();
        СкладОбъект.Организация = НужнаяОрганизация;
        СкладОбъект.Записать();
    КонецЕсли;
КонецЦикла;

Способ 2. Настройка регистра сведений «Распределение продаж»

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

Разберем настройку по шагам:

  1. Откроем карточку магазина в разделе НСИ → Магазины.
  2. Перейдем по гиперссылке Настройка распределения продаж (или откроем регистр напрямую).
  3. Создадим новую запись распределения по умолчанию:
    1. Магазин: текущий магазин;
    2. Номенклатурная группа: оставить незаполненным (правило будет действовать на все товары без индивидуальной настройки);
    3. Склад: основной склад реализации магазина;
    4. Организация: организация, от лица которой пробиваются чеки;
    5. Касса ККМ: касса ККМ, привязанная к фискальному регистратору.
  4. Запишем и закроем настройки. После этого перезапустим сеанс РМК.

Способ 3. Проверка соответствия настроек магазина и касс ККМ

Посмотрим на связанные параметры торгового объекта:

  1. В карточке магазина (раздел НСИ → Магазины) проверим соответствие полей «Склад поступления» и «Склад продажи».
  2. В справочнике Кассы ККМ проверим, чтобы в карточке кассы была выбрана та же организация, которая закреплена за магазином и складом реализации.
  3. Если в фискальном регистраторе зарегистрировано совмещение систем налогообложения (СНО), проверим, чтобы в настройках распределения номенклатуры по СНО не было нераспределенных позиций.
← На главную