| Мегапрайс ПРО — это дополнение к 1С Управление торговлей для обработки прайс-листов поставщиков в 1С 8.3 Мегапрайс умеет устанавливать количество товара у поставщика. Задача: Выгружать это количество в интернет-магазин на Битриксе через модуль обмена, суммировав с реальным количеством товара на складе компании. Но без виртуальных складов и приходования товара на них. |
| апдейт 22.02.2025 новые модули обмена с БУС на расширениях, надо переработать и внедрить в расширение
![]() |
Решение старое:
Мегапрайс хранит количество товара у поставщика в Регистре Сведений "Мегапрайс: цены поставщиков"
- Заходим в конфигуратор, открываем конфигурацию
- Общие > Общие модули > Б_ОбменССайтомСерверВыгрузкаДанных
- Функция СформироватьВременныеТаблицыПоИнформацииОТоварахПакета
- После иницилизации переменной ЗапросОстатков иницилизируем переменную ЗапросОстатковМегапрайса
ЗапросОстатковМегапрайса = " |ВЫБРАТЬ | Мегапрайс.Номенклатура КАК Номенклатура, | Мегапрайс.ХарактеристикаНоменклатуры КАК Характеристика, | СУММА(Мегапрайс.Количество) Как Остаток |ПОМЕСТИТЬ ВремМегапрайс |ИЗ | РегистрСведений.мегапрайсЦеныНоменклатурыПоставщиков |КАК Мегапрайс |ГДЕ | Мегапрайс.Номенклатура.Ссылка В(&СписокТоваров) | И Мегапрайс.Количество>0 |СГРУППИРОВАТЬ ПО | Мегапрайс.Номенклатура, | Мегапрайс.ХарактеристикаНоменклатуры |////////////////////////////////////////////////////////////////////////////////"; |
ТекстЗапроса = ТекстЗапроса + Символы.ПС + ";" + Символы.ПС + ЗапросОстатков; |
ТекстЗапроса = ТекстЗапроса + Символы.ПС + ";" + Символы.ПС + ЗапросОстатков + Символы.ПС + ";" + ЗапросОстатковМегапрайса ; |
Если ПараметрыОбмена.ВыгружатьОстатки Тогда //было так: //ТекстЗапроса = ТекстЗапроса + Символы.ПС + ";" + Символы.ПС + ЗапросОстатков; ТекстЗапроса = ТекстЗапроса + Символы.ПС + ";" + Символы.ПС + ЗапросОстатков + Символы.ПС + ";" + ЗапросОстатковМегапрайса ; КонецЕсли; |
там есть
ЗапросПоОстаткам = Новый Запрос;
ЗапросПоОстаткам.МенеджерВременныхТаблиц = лМенеджерВременныхТаблиц;
//Временная таблица формируется в функции СформироватьВременныеТаблицыПоИнформацииОТоварахПакета
ЗапросПоОстаткам.Текст = "ВЫБРАТЬ * ИЗ ВремОстаткиПоСкладам КАК ВремОстаткиПоСкладам
|ГДЕ ВремОстаткиПоСкладам.Номенклатура = &Номенклатура И ВремОстаткиПоСкладам.Характеристика = &Характеристика
|УПОРЯДОЧИТЬ ПО
| ИдентификаторНоменклатуры,
| ИдентификаторХарактеристики";
ЗапросПоОстаткам.УстановитьПараметр("Номенклатура",Выборка.Номенклатура);
ЗапросПоОстаткам.УстановитьПараметр("Характеристика",Выборка.Характеристика);
ТзнОстатков = ЗапросПоОстаткам.Выполнить().Выгрузить();
|
ЗапросПоМегапрайсу.МенеджерВременныхТаблиц = лМенеджерВременныхТаблиц;
//Временная таблица формируется в функции СформироватьВременныеТаблицыПоИнформацииОТоварахПакета
ЗапросПоМегапрайсу.Текст = "ВЫБРАТЬ * ИЗ ВремМегапрайс КАК ВремМегапрайс
|ГДЕ ВремМегапрайс.Номенклатура = &Номенклатура И ВремМегапрайс.Характеристика = &Характеристика";
ЗапросПоМегапрайсу.УстановитьПараметр("Номенклатура",Выборка.Номенклатура);
ЗапросПоМегапрайсу.УстановитьПараметр("Характеристика",Выборка.Характеристика);
ОстаткиМегапрайс = ЗапросПоМегапрайсу.Выполнить().Выгрузить();
|
И
Если лВыгрузкаПоСкладам тогда
.
.
.
Иначе
XDTOОстаток = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOОстатокТип);
ТзнОстатков.Свернуть("ИдентификаторНоменклатуры, ИдентификаторХарактеристики", "Остаток");
Если ТзнОстатков.Количество() > 0 тогда
XDTOОстаток.Количество = ТзнОстатков[0].Остаток;
Иначе
XDTOОстаток.Количество = 0;
Конецесли;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//добавляем данные строчки
Если ((ОстаткиМегапрайс.Количество() > 0) И (ОстаткиМегапрайс[0].Остаток > 0)) тогда
XDTOОстаток.Количество = XDTOОстаток.Количество + ОстаткиМегапрайс[0].Остаток;
Конецесли;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
XDTOОстатки.Остаток.Добавить(XDTOОстаток);
Итератор = Итератор + 1;
КонецЕсли;
|
