При разработке интеграционных решений часто возникает задача передачи точных данных о продажах товаров на внешние ресурсы, например, на сайт интернет-магазина. В процессе работы с конфигурацией 1С:Розница многие разработчики сталкиваются с желанием модифицировать движения документа Отчет о розничных продажах, чтобы изменить время списания товаров в регистре Товары на складах. Давайте разберем, почему этот путь является ошибочным и как правильно реализовать задачу оперативного отслеживания продаж.
Документ Отчет о розничных продажах (ОРП) в типовых конфигурациях 1С выполняет роль регистратора, который фиксирует итоги за смену или определенный период. Изменение времени его движений внутри обработчика проведения приводит к ряду критических проблем:
Для реализации выгрузки остатков на сайт в режиме реального времени (например, с точностью до часа), рассмотрим более профессиональные и стабильные способы.
Основная проблема заключается в том, что Отчет о розничных продажах является сводным документом. Фактическое время продажи товара фиксируется в момент пробития документа Чек ККМ. Вместо того чтобы пытаться воздействовать на ОРП, выгрузку на сайт нужно строить на основе данных чеков.
Рассмотрим логику реализации:
Отчета о розничных продажах как источника оперативных данных.Чек ККМ, которые содержат точное время продажи и состав товаров.Если задача требует хранения истории для сложных аналитических отчетов, создайте собственный регистр сведений. Это позволит хранить данные о времени продаж, не вмешиваясь в типовые механизмы проведения документов.
Рекомендуемая структура регистра:
Товар (Справочник.Номенклатура)ДокументПродажи (ДокументСсылка)ДатаПродажи (Дата, включая время)Реализация процесса:
ПриЗаписи или ОбработкаПроведения для документа Чек ККМ.
// Пример логики в модуле менеджера или подписке на событие
Процедура ЗаписатьДатуПродажи(Источник) Экспорт
Если Источник.Проведен Тогда
НаборЗаписей = РегистрыСведений.ДатыПоследнихПродаж.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ДокументПродажи.Установить(Источник.Ссылка);
Для Каждого СтрокаТЧ Из Источник.Товары Цикл
Запись = НаборЗаписей.Добавить();
Запись.Товар = СтрокаТЧ.Номенклатура;
Запись.ДокументПродажи = Источник.Ссылка;
Запись.ДатаПродажи = Источник.Дата;
КонецЦикла;
НаборЗаписей.Записать();
КонецЕсли;
КонецПроцедуры
Проанализировав ситуацию, мы пришли к выводу, что модификация движений Отчета о розничных продажах не является целесообразной. Описанные методы использования первичных чеков или специализированного регистра сведений позволяют решить бизнес-задачу по выгрузке данных на сайт без рисков повреждения данных в основной учетной системе. Эти подходы соответствуют стандартам разработки 1С и гарантируют стабильность работы конфигурации даже после обновлений.