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