Подсистема Обмен с сайтами в 1С Розница
По материалами библиотеки электронных документов
Подсистема Обмен с сайтами входит в состав библиотеки электронных документов. Последняя версия библиотеки 1.9.х используется , например, в редакции 1С:Розница 2.3.10.х.
Подсистема позволяет настроить обмен данными между прикладным решением 1С и Интернет-магазином, поддерживающим, разработанный компаниями «1С» и «1С-Битрикс»., протокол обмена между системой 1С:Предприятие и сайтом,
Такие системы управления сайтами как , Moguta и Bitrix поддерживают двухсторонний обмен данными с 1С на базе подсистемы Обмен с сайтами.
Подробное описание объектов подсистемы Обмен с сайтами можно посмотреть в документации библиотеки электронных документов. на диске ИТС.
В разделе Обмен с сайтом доступны возможности :
- Создание нового сайта в домене umi.ru. – Это конструктор создания быстрого бесплатного сайта на домене umi.ru. Существуют также другие домены каr bitirix и Mogut, поддерживающие этот протокол обмена системы еще
- Обмен товарами – Выгрузка на сайт каталога товаров, включая все свойства товаров, цены и остатки товара на складах, а также автоматическая поддержка этих данных в актуальном состоянии.
- Обмен заказами – Загрузка заказов, оформленных в Интернет-магазине, а также обновление данных на сайте о статусе оплаты и отгрузке по заказам.
В каждой прикладном решении есть свои особенности и изменения в программном коде подсистемы, особенно при обмене заказами.
Некоторые особенности обмена заказами в 1С Розница 2.3
Для изменения программного кода функционала используются общие модули с приставкой Преопределяемый , назначение которых – служить буфером между подсистема библиотеки и прикладным решением с уникальным составом метаданных :
- «ОбменССайтомКлиентПереопределяемый»
- , «ОбменССайтомКлиентСерверПереопределяемый»
- , «ОбменССайтомПереопределяемый»
Основные изменения описаны в общем модуле ОбменССайтомРТ. Все глобальные функции и процедуры в этом модуле вызываются из стандартного модуля подсистемы ОбменССайтомПереопределяемый .
В этом модуле ОбменССайтомРТ формируются все тексты запросов, которые позволяют получить таблицу значений, описанные в макетах плана обмена “Обмен с сайтом”.:
Для обмена заказами используется макет СхемаВыгрузкиЗаказов. Текст запроса формируется процедуре
ПолучитьТекстЗапросаЗаказы(ТекстЗапроса) .
Я посмотрел текст запроса и заметил, что поля ЗаказКОплатеОстаток и ЗаказКОтгрузкеОстаток имеют одинаковое значение. См рис 2
Это не совсем корректно. Остаток к отгрузке и остаток к оплате не могут иметь одинаковое значение. Запрос обращается к регистру накопления заказов покупателей. где ведется учет только по отгрузке – Заказы увеличивают количество, заказанных товаров, а реализация и чеки ККМ – уменьшают их. Согласно такому запросу получается , что заказ всегда будет оплачен как только будет отгружен.
Также не понятно почему в этом запросе не участвует регистр сведения СостояниеОплатыЗаказаПокупателя . В этом периодическом регистре хранится текущее состояние заказа по оплате: Не оплачен, Оплачен частично, оплачен полностью.
Если посмотреть аналогичную функцию ПолучитьТекстЗапросаЗаказы(ТекстЗапроса) в конфигурации 1С управления торговлей 11.4/ 11.5 , то можно убедитсяч, что поля ЗаказКОплатеОстаток и ЗаказКОтгрузкеОстаток имеют различные значения ( см Рис 3).
Это связано с тем, что запрос в конфигурации УТ выгрузки состояния на сайт учитывается состояние заказов по оплате.
Следует отметить, что в механизме обмена заказами в рознице , в отличии от УТ, отсутствует таблица Соответствия статусов заказов. и поэтому в функции РеквизитыОбменаЗаказами() модуля ОбменССайтомРТ. закомментирован элемент массива реквизитов обмена заказами:
Функция РеквизитыОбменаЗаказами()
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("СпособИдентификацииКонтрагентов");
МассивРеквизитов.Добавить("ЕдиницаИзмеренияНовойНоменклатуры");
МассивРеквизитов.Добавить("ГруппаДляНовойНоменклатуры");
МассивРеквизитов.Добавить("ГруппаДляНовыхКонтрагентов");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("НомерНаСайте");
МассивРеквизитов.Добавить("ДатаНаСайте");
// МассивРеквизитов.Добавить("СоответствиеСтатусовЗаказов");
МассивРеквизитов.Добавить("ВидНоменклатурыТоварДляНовойНоменклатуры");
МассивРеквизитов.Добавить("ВидНоменклатурыУслугаДляНовойНоменклатуры");
Возврат МассивРеквизитов;
КонецФункции
Статусы и Состояния – это разные перечисления в системе 1С. Соответствие состояний и статусов в рознице со статусами заказов на сайте имеет предопределенное соответствие в программном коде обмена как показано в следующей таблице
Статус заказа на сайте | Алгоритм определения |
---|---|
Заказ в работе | Если заказ покупателя не закрыт |
Заказ отгружен | Если ЗаказКОтгрузкеОстаток = 0 |
Заказ оплачен | Если ЗаказКОплатеОстаток = 0 |
Следующая процедура модуля ОбменССайтомРТ определения статус Заказ в работе. Параметр ЗаказВРаботе – Булево – Признак того, что заказ был “обработан” в прикладном решении (т.е. поменял свой статус после загрузки с сайта). Данный признак влияет на статус заказа на сайте.
Процедура ОпределитьСтатусСостоянияЗаказаЗаказВРаботе(ЗаказВРаботе, ДанныеДокументаСостояниеЗаказа) Экспорт
ЗаказВРаботе = НЕ ДанныеДокументаСостояниеЗаказа = Перечисления.СостоянияЗаказовПокупателей.Закрыт;
КонецПроцедуры
Следующая процедура модуля ОбменССайтомРТ определяет была ли оплата по заказу. ЗаказОплачен – типа Булево – признак того, что заказ был оплачен, влияет на статус оплаты заказа на сайте. В качестве параметра ДанныеДокументаКОплатеОстаток передается значение поля ЗаказКОплатеОстаток из результата запроса на рис 2
Процедура ОпределитьСтатусОплатыЗаказа(ЗаказОплачен, СтатусЗаказа, ДанныеДокументаКОплатеОстаток) Экспорт
ЗаказОплачен = ДанныеДокументаКОплатеОстаток = 0;
КонецПроцедуры
Следующая процедура модуля ОбменССайтомРТ определения была ли отгрузка товара по заказу. Параметр ЗаказОтгружен – Булево – признак того, что товар по заказу был отгружен. Влияет на статус отгрузки заказа на сайте. В качестве параметра ДанныеДокументаКОтгрузкеОстаток передается значение поля ЗаказКОтгрузкеОстаток из результата запроса на рис 2
Процедура ОпределитьСтатусОтгрузкиЗаказа(ЗаказОтгружен, ДанныеДокументаСтатусЗаказа,
ДанныеДокументаКОтгрузкеОстаток) Экспорт
ЗаказОтгружен = ДанныеДокументаКОтгрузкеОстаток = 0;
КонецПроцедуры