Как реализовать контроль цен при перемещении товаров между розничными складами в УТ 10.3

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

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

Анализ структуры хранения цен в УТ 10.3

Для начала проанализируем, как система хранит данные. В отличие от старых версий, где цена могла быть жестко привязана к остаткам конкретного склада, в УТ 10.3 используется иная архитектура. Рассмотрим ключевые объекты:

  1. Регистр сведений ЦеныНоменклатуры: это основной регистр, где хранятся цены. Если мы заглянем в его структуру, то увидим, что измерениями являются Номенклатура, ХарактеристикаНоменклатуры и ТипЦен. Склада здесь нет. Это означает, что цена привязана не к физическому месту, а к категории цены.
  2. Справочник Склады: для розничного склада (АТТ — автоматизированная торговая точка) в карточке обязательно указывается ТипЦенРозницы. Именно через эту связь система «понимает», по какой цене товар должен продаваться на конкретном складе.
  3. Регистр накопления ТоварыВРознице: это критически важный узел. В отличие от оптовых складов, остатки на розничных складах хранятся в этом регистре не только в количестве, но и в сумме в розничных ценах.

Проанализируем ситуацию: если мы перемещаем товар со склада А на склад Б, и на складе Б установлена другая розничная цена (другой тип цен или та же категория, но с другим значением), документ ПеремещениеТоваров просто переносит количество. Без дополнительных действий сумма в регистре ТоварыВРознице может перестать соответствовать формуле Количество * АктуальнаяЦена, что вызовет проблемы при розничных продажах и инвентаризации.

Методологическое решение: Переоценка товаров в рознице

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

  1. Оформляем документ ПеремещениеТоваров между розничными складами.
  2. Сразу после проведения перемещения необходимо создать документ ПереоценкаТоваровВРознице на складе-получателе.
  3. Этот документ зафиксирует новую розничную стоимость для поступившего товара в регистре ТоварыВРознице и позволит избежать расхождений в отчете о розничных продажах.

Если этого не сделать, возникнет ситуация, описанная пользователями: товар на складе уже есть, цена на ценнике одна, а в системе в суммовом выражении остаток числится по старой цене склада-отправителя. При продаже по новой цене в конце смены «не сойдутся» деньги в кассе и списанная учетная стоимость.

Техническая реализация контроля (для программиста)

Если клиент настаивает на «контроле как в 7.7», нам потребуется небольшая доработка документа ПеремещениеТоваров. Разберем по шагам, как реализовать программную проверку при проведении или записи документа.

Нам необходимо сравнить цену товара по типу цен склада-отправителя с ценой по типу цен склада-получателя. Рассмотрим пример кода, который можно разместить в модуле документа (или в подписке на событие ОбработкаПроведения):


// Пример логики проверки цен при перемещении
Для Каждого ТекСтрока Из Товары Цикл
    
    // Получаем типы цен со складов
    ТипЦенОтправителя = СкладОтправитель.ТипЦенРозницы;
    ТипЦенПолучателя  = СкладПолучатель.ТипЦенРозницы;
    
    Если ЗначениеЗаполнено(ТипЦенОтправителя) И ЗначениеЗаполнено(ТипЦенПолучателя) Тогда
        
        // Получаем актуальные цены через срез последних
        ПараметрыОтбора = Новый Структура;
        ПараметрыОтбора.Вставить("Номенклатура", ТекСтрока.Номенклатура);
        
        ЦенаОтправителя = Ценообразование.ПолучитьЦенуНоменклатуры(ТекСтрока.Номенклатура, , ТипЦенОтправителя, Дата);
        ЦенаПолучателя  = Ценообразование.ПолучитьЦенуНоменклатуры(ТекСтрока.Номенклатура, , ТипЦенПолучателя, Дата);
        
        Если ЦенаОтправителя <> ЦенаПолучателя Тогда
            Сообщить("Внимание! Цена товара " + ТекСтрока.Номенклатура + " на складе-получателе отличается!");
            // Здесь можно добавить Отказ = Истина, если нужен жесткий запрет
        КонецЕсли;
        
    КонецЕсли;
    
КонецЦикла;

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

Автоматизация создания переоценки

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

Проанализируем шаги реализации этой функции:

  1. В документе перемещения при нажатии кнопки «Провести» система проверяет наличие разницы в ценах (см. код выше).
  2. Если разница обнаружена, вызывается процедура создания документа ПереоценкаТоваровВРознице.
  3. Документ заполняется только теми позициями номенклатуры, по которым выявлено расхождение.
  4. Склад в переоценке устанавливается равным СкладПолучатель из перемещения.

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

Резюме

Подводя итоги, отметим, что «проблема» контроля цен в УТ 10.3 — это следствие более гибкой и сложной архитектуры платформы 8.3. Чтобы решить задачу, мы рекомендуем:

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

← На главную