Почему в чеке ККМ и РМК в 1С:УТ 11 подставляются старые цены и как это исправить?

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

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

Рассмотрим подробно причины возникновения такой проблемы и разберем по шагам как штатные варианты настройки ценообразования, так и программный способ коррекции подбора цен.

Причины непопадания новых цен в РМК и чеки ККМ

Проанализируем ситуацию и выясним, почему типовые механизмы ценообразования 1С:УТ 11 могут игнорировать вновь назначенный вид цен:

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

Штатные способы решения проблемы

Перед тем как приступать к доработке программного кода, проверим последовательность настройки базы штатными средствами.

Шаг 1. Переоценка остатков на розничном складе

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

Шаг 2. Проверка правил продаж и соглашений

Разберем настройки типовых условий продаж:

  1. Перейдем в раздел Маркетинг и планирование → Типовые соглашения с клиентами (или Правила продаж).
  2. Убедимся, что для розничной торговли указан актуальный вид цен.
  3. Проверим, применено ли данное соглашение для рабочего места кассира и основного розничного покупателя.

Шаг 3. Проверка даты документа установки цен

Убедимся, что документ Установка цен номенклатуры проведен с временем 00:00:00 даты начала действия цен. Это гарантирует, что при открытии смены кассиром в любое время текущего дня система увидит новые цены как действующие.

Программное решение (корректировка логики подбора цен)

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

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

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

Пример логики замещения вида цены в коде 1С:


// Получаем розничный вид цены из карточки склада кассы
ВидЦеныСклада = ОбъектКасса.РозничныйСклад.РозничныйВидЦены;

Если ЗначениеЗаполнено(ВидЦеныСклада) Тогда
    // Подменяем расчетный вид цены на розничный вид цены склада
    ПараметрыРасчета.ВидЦены = ВидЦеныСклада;
КонецЕсли;

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

← На главную