При настройке обмена между 1С:Розница (версии 2.2 и аналогичных) и интернет-магазином многие специалисты сталкиваются с ситуацией, когда система игнорирует все настроенные виды цен, кроме розничной. Даже при добавлении дополнительных типов цен в отборы или создании новых документов Установка цен номенклатуры, выгрузка продолжает «видеть» только один вид цены. Давайте разберемся, почему это происходит и как исправить данную проблему программным путем.
В устаревших редакциях 1С:Розница механизм обмена с сайтом спроектирован с жесткой привязкой к конкретному полю в справочнике Магазины. Система не использует произвольный список цен, заданный в правилах обмена, а опирается на поле ВидМинимальныхЦенПродажи. Программный код модуля обмена при формировании пакета предложений выполняет запрос к регистру сведений ЦеныНоменклатуры, где жестко фильтрует выборку по значению этого реквизита.
Даже если пользователь пытается создать «хитрые» схемы с базовыми видами цен или множественные настройки, логика запроса остается неизменной: он всегда ищет только тот тип цены, который указан как основной для данного магазина. Именно поэтому стандартные инструменты настройки интерфейса в данном случае не приносят результата.
Чтобы разрешить выгрузку нескольких видов цен или изменить логику выбора, нам необходимо вмешаться в работу модуля ОбменсСайтомРТ. Основная точка входа для внесения изменений — функция ПолучитьТекстЗапросаОбновлениеПакетаПредложений.
Рассмотрим, как выглядит стандартный запрос, который ограничивает нас в выборе:
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Магазины.Ссылка КАК Магазин,
| Магазины.ВидМинимальныхЦенПродажи КАК ВидМинимальныхЦенПродажи
|ПОМЕСТИТЬ ТаблицаМагазиновСМинимальнымиЦенами
|ИЗ
| Справочник.Магазины КАК Магазины
|ГДЕ
| НЕ Магазины.ВидМинимальныхЦенПродажи = ЗНАЧЕНИЕ(Справочник.Магазины.ПустаяСсылка)
| И НЕ Магазины.СкладУправляющейСистемы
...
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &Период,
| ВидЦены В
| (ВЫБРАТЬ
| ТаблицаМагазиновСМинимальнымиЦенами.ВидМинимальныхЦенПродажи КАК ВидЦены
| ИЗ
| ТаблицаМагазиновСМинимальнымиЦенами КАК ТаблицаМагазиновСМинимальнымиЦенами)) КАК ЦеныНоменклатурыСрезПоследних
Расширение конфигурации и добавьте в него модуль ОбменсСайтомРТ.ПолучитьТекстЗапросаОбновлениеПакетаПредложений. Вам необходимо изменить текст запроса так, чтобы вместо одиночного поля ВидМинимальныхЦенПродажи система могла оперировать списком или массивом видов цен.ГДЕ или в соединении с РегистрСведений.ЦеныНоменклатуры на проверку вхождения вида цены в нужный вам список. Для этого можно использовать параметр запроса, в который вы передадите массив необходимых видов цен из настроек обмена.Помните, что версия конфигурации 2.2.11.30 является крайне устаревшей. В актуальных версиях 1С:Розница 2.3 и выше разработчики уже реализовали более гибкие механизмы управления видами цен в обмене. Если объем доработок становится значительным, переход на новую версию конфигурации будет более экономически оправданным и безопасным решением, чем поддержка «самописного» кода в расширении.
Также обратите внимание на то, что любая правка кода запроса должна сопровождаться проверкой корректности данных. Убедитесь, что при изменении логики запроса не возникнет дублирования строк для одной номенклатуры, если сайт ожидает строго определенную структуру данных для цен.
Надеемся, что данная инструкция поможет вам наладить процесс обмена и выгружать все необходимые цены для вашего интернет-магазина!