Как реализовать партионный учет и автоматическую уценку скоропортящегося товара в 1С

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

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

Анализ бизнес-требований и ограничений платформы

Типовой сценарий предполагает регулярную проверку сроков хранения (например, через 5 и 10 дней после поступления) и применение ступенчатой уценки к остаткам конкретных партий. Однако при попытке реализовать этот процесс напрямую через регламентные задания разработчики сталкиваются с техническими ограничениями платформы 1С:

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

Рассмотрим проверенные практические подходы к реализации задачи.

Вариант 1. Архитектура через серии и механизм FEFO

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

  1. При поступлении товара регистрируется серия с указанием даты производства или срока годности.
  2. Списание и продажи настраиваются по принципу FEFO (First Expired, First Out), при котором система автоматически подбирает остатки с наименьшим оставшимся сроком хранения.
  3. Присвоение штрихкода выполняется для связки номенклатуры и серии. Это исключает необходимость переклеивать этикетки с процентами скидок при каждом изменении цен.

Вариант 2. Динамический расчет цен в модуле ценообразования

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

Разберем по шагам логику доработки:

  1. Создаем правила ценообразования (например, через регистр сведений или дополнительную табличную часть в типах цен), где прописываются диапазоны: срок партии от 5 дней — скидка 50%, от 10 дней — скидка 70%.
  2. В модулях документов или в функции ПолучитьЦенуНоменклатуры переопределяем алгоритм, запрашивающий дату оприходования конкретной партии.
  3. При подборе позиции или сканировании штрихкода система определяет возраст партии и автоматически корректирует отпускную цену.

Посмотрим на пример структуры запроса для получения даты партии и расчета срока нахождения на складе:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура,
    |	ПартииТоваровНаСкладах.ДокументОприходования.Дата КАК ДатаПоступления,
    |	РАЗНОСТЬДАТ(ПартииТоваровНаСкладах.ДокументОприходования.Дата, &ТекущаяДата, ДЕНЬ) КАК ДнейНаСкладе,
    |	ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество
    |ИЗ
    |	РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
    |		&Период,
    |		Номенклатура = &Номенклатура
    |			И Склад = &Склад) КАК ПартииТоваровНаСкладах";

Полученное значение ДнейНаСкладе передается в алгоритм определения процента наценки или скидки.

Вариант 3. Пакетная ночная переоценка и интерактивное оповещение

Для предотвращения зависания кассовых рабочих мест (РМК) эффективнее использовать схему с фоновой подготовкой данных и утренним подтверждением:

  1. Регламентное задание: ночью по расписанию выполняет проверку партионных остатков. Если обнаружен товар старше заданного количества дней, задание создает запись в служебном регистре сведений ОчередьУценки или формирует непроведенный документ установки цен / скидок.
  2. Интерактивное открытие формы: при входе пользователя в систему или через ПодключитьОбработчикОжидания на клиенте проверяется наличие записей в очереди. При их обнаружении пользователю открывается форма со списком позиций и кнопками утверждения переоценки.
  3. Изменение качества: если товар физически отделяется от кондиционного, для сохранения непрерывности себестоимости оформляется типовой документ КомплектацияНоменклатуры, где качественный товар списывается, а уцененный приходуется с новой характеристикой или категорией качества.

Рекомендации по организации рабочих процессов

Проанализируем ключевые организационные моменты, без которых автоматизация не даст результата:

  1. Маркировка: при приемке товар должен маркироваться штрихкодом, содержащим информацию о партии или дате. Ручной выбор партий кассиром на практике неизбежно приводит к пересорту.
  2. Ограничение прав: кассирам в интерфейсе РМК следует закрывать возможность ручной корректировки скидок и цен. Все правила уценки должны жестко рассчитываться системой на основе считанного кода.
  3. Регулярный аудит: для скоропортящейся продукции необходимо периодически проводить выборочную инвентаризацию списания брака и потерь от увядания, разделяя уцененный товар и позиции, подлежащие полной утилизации.
← На главную