За основу данной разработки взят модуль КоннекторHTTP
https://github.com/vbondarevsky/Connector
Выкладываю код, который представляет основную логику интеграции.
В приложенном расширении для корректной работы по поставщику Аувикс, нужно указать Токен.
Поставщики Эдустронг и ПРОМЕТ предоставляют файлы, размещенные на фиксированном адресе в интернете.
После установки расширения на конфигурацию Комплексная автоматизация 2.5 появляются 6 регламентных заданий.
Достаточно установить расписание их выполнения, и вы имеете обновляемый по расписанию каталог номенклатуры по поставщику, формирование документов Установка цен номенклатуры и отчет по выбывшим и добавленным позициям.
Выложена основная логика
Для корректной работы приведенный ниже код нужно вставить в оригинальный модуль КоннекторHTTP
#Область ПрограммныйИнтерфейс
#Область Обмен
#Область ИнтернетЗапросы
#Область АУВИКС
Функция Токен()
Токен = "";// Токен
Возврат Токен;
КонецФункции
Функция КатегорииТоваровАУВИКС() Экспорт
Токен = Токен();
Результат = КоннекторHTTP.GetJson("https://b2b.auvix.ru/api/categories" ,, Новый Структура("Аутентификация", КоннекторHTTP.НоваяАутентификацияBearer(Токен)));
Возврат Результат;
КонецФункции
Функция КатегорияТоваровАУВИКС(НомерКатегории) Экспорт
Токен = Токен();
Результат = КоннекторHTTP.GetJson("https://b2b.auvix.ru/api/categories/" + Формат(НомерКатегории, "ЧГ=0") ,, Новый Структура("Аутентификация", КоннекторHTTP.НоваяАутентификацияBearer(Токен)));
Возврат Результат;
КонецФункции
Функция СубкатегорииПоКатегорииАУВИКС(НомерКатегории) Экспорт
Токен = Токен();
Результат = КоннекторHTTP.GetJson("https://b2b.auvix.ru/api/products/" + Формат(НомерКатегории, "ЧГ=0") ,, Новый Структура("Аутентификация", КоннекторHTTP.НоваяАутентификацияBearer(Токен)));
Возврат Результат;
КонецФункции
Функция АттрибутыПоКатегорииАУВИКС(НомерКатегории) Экспорт
Токен = Токен();
Результат = КоннекторHTTP.GetJson("https://b2b.auvix.ru/api/categories/" + Формат(НомерКатегории, "ЧГ=0") + "/attributes" ,, Новый Структура("Аутентификация", КоннекторHTTP.НоваяАутентификацияBearer(Токен)));
Возврат Результат;
КонецФункции
Функция БрэндыАУВИКС() Экспорт
Токен = Токен();
Результат = КоннекторHTTP.GetJson("https://b2b.auvix.ru/api/brands" ,, Новый Структура("Аутентификация", КоннекторHTTP.НоваяАутентификацияBearer(Токен)));
Возврат Результат;
КонецФункции
Функция МассивКатегорийАУВИКС()
МассивКатегорий = Новый Массив;
МассивКатегорий.Добавить(3);
МассивКатегорий.Добавить(31);
МассивКатегорий.Добавить(83);
МассивКатегорий.Добавить(32);
МассивКатегорий.Добавить(151);
МассивКатегорий.Добавить(230);
МассивКатегорий.Добавить(231);
МассивКатегорий.Добавить(245);
МассивКатегорий.Добавить(248);
МассивКатегорий.Добавить(270);
МассивКатегорий.Добавить(272);
МассивКатегорий.Добавить(353);
Возврат МассивКатегорий;
КонецФункции
Функция МассивСвойствАУВИКС()
МассивСвойств = Новый Массив;
МассивСвойств.Добавить("Разрешение");
МассивСвойств.Добавить("Соотношение сторон изображения");
МассивСвойств.Добавить("Яркость, lm");
МассивСвойств.Добавить("Тип объектива");
МассивСвойств.Добавить("Технология");
МассивСвойств.Добавить("Соотношение сторон");
МассивСвойств.Добавить("Тип оборудования");
МассивСвойств.Добавить("Назначение");
МассивСвойств.Добавить("Тип экрана");
МассивСвойств.Добавить("Тип лампы");
МассивСвойств.Добавить("Способ монтажа");
МассивСвойств.Добавить("Кронштейн");
МассивСвойств.Добавить("Тип проекции");
МассивСвойств.Добавить("Цвет");
МассивСвойств.Добавить("Встраиваемый");
МассивСвойств.Добавить("Площадь захвата (соотн. сторон)");
МассивСвойств.Добавить("Фокусировка");
МассивСвойств.Добавить("Разъем VGA");
МассивСвойств.Добавить("Разъем HDMI");
МассивСвойств.Добавить("Разъем DVI");
МассивСвойств.Добавить("Подсветка");
МассивСвойств.Добавить("Встроенное ИК управление");
МассивСвойств.Добавить("Встроенное РЧ управление");
МассивСвойств.Добавить("Система натяжения по бокам");
МассивСвойств.Добавить("Цвет корпуса");
МассивСвойств.Добавить("С электроприводом");
//МассивСвойств.Добавить("Проекционное отношение, min");
//МассивСвойств.Добавить("Проекционное отношение, max");
// МассивСвойств.Добавить("Диагональ экрана");
МассивСвойств.Добавить("Камера");
МассивСвойств.Добавить("Микрофон");
МассивСвойств.Добавить("Яркость, кд/м2");
МассивСвойств.Добавить("Контрастность динамическая");
МассивСвойств.Добавить("Время отклика сенсора, мс");
Возврат МассивСвойств;
КонецФункции
#КонецОбласти
Процедура УстановитьКартинку(Знач НоменклатураОбъект, СсылкаНаКартинкуHTTP)
ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки);
КартинкаОбъект = Справочники.НоменклатураПрисоединенныеФайлы.СоздатьЭлемент();
КартинкаОбъект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
КартинкаОбъект.Наименование = НоменклатураОбъект.Код;
КартинкаОбъект.ВладелецФайла = НоменклатураОбъект.Ссылка;
КартинкаОбъект.ДатаСоздания = ТекущаяДата();
Попытка
К1 = КакДвоичныеДанные(Get(СсылкаНаКартинку));
Исключение
Возврат;
КонецПопытки;
КартинкаОбъект.ФайлХранилище = Новый ХранилищеЗначения(К1);
КартинкаОбъект.Расширение = "jpg";
КартинкаОбъект.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен;
КартинкаОбъект.Размер = К1.Размер();
КартинкаОбъект.Записать();
КартинкаСсылка = КартинкаОбъект.Ссылка;
КартинкаСохранить = Справочники.ХранилищеДвоичныхДанных.СоздатьЭлемент();
КартинкаСохранить.ДвоичныеДанные = КартинкаОбъект.ФайлХранилище;
КартинкаСохранить.Размер = КартинкаОбъект.Размер;
КартинкаСохранить.Записать();
Набор = РегистрыСведений.ХранилищеФайлов.СоздатьНаборЗаписей();
Набор.Отбор.Файл.Установить(КартинкаОбъект.Ссылка);
СтрокаДобавить = Набор.Добавить();
СтрокаДобавить.Файл = КартинкаСсылка;
СтрокаДобавить.ХранилищеДвоичныхДанных = КартинкаСохранить.Ссылка;
Набор.Записать(Истина);
НоменклатураОбъект.ФайлКартинки = КартинкаСсылка;
КонецПроцедуры
Функция СтруктураКаталогаСтроникумXML() Экспорт
СсылкаНаКартинкуHTTP = "https://stronikum.ru/PriceYML.xml";
ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки);
ТекстКаталога = КакXDTO(Get(СсылкаНаКартинку));
СоответствиеКартинка = Новый Соответствие;
СоответствиеОписание = Новый Соответствие;
СоответствиеЦена = Новый Соответствие;
Для Каждого Запись Из ТекстКаталога.shop.offers.offer Цикл
СоответствиеКартинка.Вставить(Запись.id, Запись.picture);
СоответствиеОписание.Вставить(Запись.id, Запись.description);
СоответствиеЦена.Вставить(Запись.id, Запись.price);
КонецЦикла;
СтруктураРезультата = Новый Структура;
СтруктураРезультата.Вставить("СоответствиеКартинка", СоответствиеКартинка);
СтруктураРезультата.Вставить("СоответствиеОписание", СоответствиеОписание);
СтруктураРезультата.Вставить("СоответствиеЦена", СоответствиеЦена);
Возврат СтруктураРезультата;
КонецФункции
Функция СтруктураКаталогаПрометXML() Экспорт
СсылкаНаКартинкуHTTP = "https://www.safe.ru/upload/nm.catalogexport/catalog-nn.xml";
ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки);
ТекстКаталога = КакXDTO(Get(СсылкаНаКартинку));
Возврат ТекстКаталога;
КонецФункции
#КонецОбласти
#Область Номенклатура
Функция НоменклатураСтроникумПоАртикулу(Артикул) Экспорт
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("07 Учебно-наглядные пособия и оборудование");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РодительскаяГруппа", КорневойЭлемент);
Запрос.УстановитьПараметр("Артикул", Артикул);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("Строникум"));
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
//МассивКонтрагентов.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("Строникум"));
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&РодительскаяГруппа)
| И Номенклатура.Артикул = &Артикул
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция НоменклатураПРОМЕТПоАртикулу(Артикул, КорневойЭлемент) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РодительскаяГруппа", КорневойЭлемент);
Запрос.УстановитьПараметр("Артикул", Артикул);
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&РодительскаяГруппа)
| И Номенклатура.Б_Идентификатор = &Артикул";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция ВидНоменклатурыПРОМЕТПоАртикулу(Артикул, КорневойЭлемент) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РодительскаяГруппа", КорневойЭлемент);
Запрос.УстановитьПараметр("Артикул", Артикул);
//МассивКонтрагентов.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("Строникум"));
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВидыНоменклатуры КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&РодительскаяГруппа)
| И Номенклатура.Б_Идентификатор = &Артикул";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция СоздатьЕслиНетДополнительныйРеквизитИлиСведение(Ид, ИдРеквизита, Знач Заголовок, ОписаниеТипов,
ИмяНабора = Неопределено, Знач ЭтоДополнительноеСведение = Ложь,
ПараметрыДоступностиРеквизита = Неопределено, ЗначенияСвойствОбъектов = Неопределено, Имя = "") Экспорт
Наименование = Заголовок;
ТекущийНаборСвойствСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Ид, "СправочникСсылка.НаборыДополнительныхРеквизитовИСведений", "Справочник.НаборыДополнительныхРеквизитовИСведений");
Если ТекущийНаборСвойствСсылка = Неопределено Тогда
ТекущийНаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.СоздатьЭлемент();
ТекущийНаборСвойств.Родитель = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура");
ТекущийНаборСвойств.Наименование = ИмяНабора;
ТекущийНаборСвойств.Б_Идентификатор = Ид;
ТекущийНаборСвойств.Используется = Истина;
ТекущийНаборСвойств.Записать();
Иначе
ТекущийНаборСвойств = ТекущийНаборСвойствСсылка.ПолучитьОбъект();
КонецЕсли;
НовыйЭлементСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(ИдРеквизита, "ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения", "ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения");
Если НовыйЭлементСсылка = Неопределено Тогда
НовыйЭлемент = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
Иначе
НовыйЭлемент = НовыйЭлементСсылка.ПолучитьОбъект();
КонецЕсли;
НовыйЭлемент.Б_Идентификатор = ИдРеквизита;
НовыйЭлемент.Виден = Истина;
НовыйЭлемент.Доступен = Истина;
НовыйЭлемент.Заголовок = Заголовок;
НовыйЭлемент.НаборСвойств = ТекущийНаборСвойств.Ссылка;
НовыйЭлемент.Наименование = Наименование;
НовыйЭлемент.Имя = Имя;
Если Имя = "" Тогда
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(Заголовок, "");
ЗаголовокОбъектаЧастями = СтрРазделить(Заголовок, " ", Ложь);
Для Каждого ЧастьЗаголовка Из ЗаголовокОбъектаЧастями Цикл
НовыйЭлемент.Имя = НовыйЭлемент.Имя + ВРег(Лев(ЧастьЗаголовка, 1)) + Сред(ЧастьЗаголовка, 2);
КонецЦикла;
УИД = Новый УникальныйИдентификатор();
СтрокаУИД = СтрЗаменить(Строка(УИД), "-", "");
НовыйЭлемент.Имя = НовыйЭлемент.Имя + "_" + СтрокаУИД;
КонецЕсли;
НовыйЭлемент.ТипЗначения = Новый ОписаниеТипов(ОписаниеТипов);
Попытка
НовыйЭлемент.Записать();
Если ЗначенияСвойствОбъектов <> Неопределено И НовыйЭлементСсылка = Неопределено Тогда
Для каждого ОписаниеСвойства Из ЗначенияСвойствОбъектов Цикл
НовоеСвойство = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
НовоеСвойство.Владелец = НовыйЭлемент.Ссылка;
НовоеСвойство.Наименование = СтрЗаменить(ОписаниеСвойства, ";", ",");
НовоеСвойство.ПолноеНаименование = СтрЗаменить(ОписаниеСвойства, ";", ",");
НовоеСвойство.Записать();
КонецЦикла;
КонецЕсли;
СтрокаСвойства = ТекущийНаборСвойств.ДополнительныеРеквизиты.Добавить();
СтрокаСвойства.Свойство = НовыйЭлемент.Ссылка;
ТекущийНаборСвойств.Записать();
Исключение
Возврат Ложь;
КонецПопытки;
Возврат НовыйЭлемент.Ссылка;
КонецФункции
Процедура ЗагрузитьОбновитьНоменклатуруАУВИКСПоНомеруКатегории(НомерКатегории, Брэнды = Неопределено) Экспорт
Токен = Токен();
Если Брэнды = Неопределено Тогда
Брэнды = БрэндыАУВИКС();
КонецЕсли;
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоНаименованию("АУВИКС ООО");;
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
ВидНоменклатурыСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Формат(НомерКатегории, "ЧГ=0"), "СправочникСсылка.ВидыНоменклатуры", "Справочник.ВидыНоменклатуры");
Результат = КоннекторHTTP.GetJson("https://b2b.auvix.ru/api/categories/" + Формат(НомерКатегории, "ЧГ=0") + "/products",, Новый Структура("Аутентификация", КоннекторHTTP.НоваяАутентификацияBearer(Токен)));
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("АУВИКС", Истина);
ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(ВидНоменклатурыСсылка.Наименование);
Если ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда
ЦеноваяГруппа = Справочники.ЦеновыеГруппы.СоздатьЭлемент();
ЦеноваяГруппа.Наименование = ВидНоменклатурыСсылка.Наименование;
ЦеноваяГруппа.Записать();
ЦеноваяГруппаСсылка = ЦеноваяГруппа.Ссылка;
КонецЕсли;
Для Каждого Запись ИЗ Результат Цикл
НоменклатураСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Формат(Запись["product_id"], "ЧГ=0"), "СправочникСсылка.Номенклатура", "Справочник.Номенклатура");
ЗагружатьКартинку = Ложь;
НоваяПозиция = Ложь;
МассивАртикуловПоставщика.Добавить(Формат(Запись["product_id"], "ЧГ=0"));
Если НоменклатураСсылка = Неопределено Тогда
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Формат(Запись["product_id"], "ЧГ=0"));
Если НоменклатураСсылка = Справочники.Номенклатура.ПустаяСсылка() Тогда
НоваяПозиция = Истина;
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
Иначе
ЗагружатьКартинку = Истина;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
Иначе
ЗагружатьКартинку = Ложь;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
Номенклатура.Б_Идентификатор = Формат(Запись["product_id"], "ЧГ=0");
Номенклатура.ЦеноваяГруппа = ЦеноваяГруппаСсылка;
Номенклатура.Родитель = КорневойЭлементНоменклатуры;
Номенклатура.НаименованиеПолное = Запись["product_full_name"];
Если Не ПустаяСтрока(Запись["product_description"]) И ПустаяСтрока(Номенклатура.Описание) Тогда
Номенклатура.Описание = Запись["product_description"];
КонецЕсли;
Если НЕ ПустаяСтрока(Запись["product_image_main"]) И ЗагружатьКартинку Тогда
УстановитьКартинку(Номенклатура, Запись["product_image_main"]);
КонецЕсли;
Номенклатура.ПроизводительИмпортерКонтрагент = КонтрагентАУВИКС;
Номенклатура.Наименование = Запись["product_short_name"] + " " + Запись["product_model"] + " " + Формат(Запись["product_id"], "ЧГ=0");
Номенклатура.Артикул = Формат(Запись["product_id"], "ЧГ=0");
Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
//Вес
Номенклатура.ВесИспользовать = Истина;
Номенклатура.ВесЕдиницаИзмерения = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию("Вес");
Номенклатура.ВесЧислитель = Запись["product_weight"];
Номенклатура.ВесЗнаменатель = 1;
Номенклатура.ВидНоменклатуры = ВидНоменклатурыСсылка;
Номенклатура.ТипНоменклатуры = ВидНоменклатурыСсылка.ТипНоменклатуры;
Номенклатура.ИспользованиеХарактеристик = ВидНоменклатурыСсылка.ИспользованиеХарактеристик;
Номенклатура.ИспользоватьУпаковки = ВидНоменклатурыСсылка.ИспользоватьУпаковки;
Номенклатура.НаборУпаковок = ВидНоменклатурыСсылка.НаборУпаковок;
Номенклатура.ВариантОформленияПродажи = ВидНоменклатурыСсылка.ВариантОформленияПродажи;
Номенклатура.ГруппаДоступа = ВидНоменклатурыСсылка.ГруппаДоступа;
Номенклатура.ЕдиницаИзмерения = ВидНоменклатурыСсылка.ЕдиницаИзмерения;
//Номенклатура.ДополнительныеРеквизиты.Очистить();
МассивСвойств = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Запись["product_attributes_list"], "==|");
ТекущийНаборСвойствСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Формат(НомерКатегории, "ЧГ=0"), "СправочникСсылка.НаборыДополнительныхРеквизитовИСведений", "Справочник.НаборыДополнительныхРеквизитовИСведений");
//ТекущийНаборСвойствСсылка = Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию(ВидНоменклатурыСсылка.Наименование);
ТекущийНаборСвойств = ТекущийНаборСвойствСсылка.ПолучитьОбъект();
Номенклатура.Спецификация.Очистить();
Номенклатура.ДополнительныеРеквизиты.Очистить();
ПервыйРаз = Истина;
Для Каждого Свойство Из МассивСвойств Цикл
СвойствоЗначение = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Свойство, "=");
// Заполнение спецификаций
СтрокаСпецификации = Номенклатура.Спецификация.Добавить();
СтрокаСпецификации.Свойство = СвойствоЗначение[0];
СтрокаСпецификации.Значение = СвойствоЗначение[1];
Для Каждого СтрокаДопРеквизитов Из ТекущийНаборСвойств.ДополнительныеРеквизиты Цикл
Если СтрокаДопРеквизитов.Свойство.Наименование = "Брэнд" И ПервыйРаз Тогда
СтрокаНоменклатуры = Номенклатура.ДополнительныеРеквизиты.Добавить();
СтрокаНоменклатуры.Свойство = СтрокаДопРеквизитов.Свойство;
Для Каждого Брэнд Из Брэнды Цикл
Если Запись["brand_id"] = Брэнд["brand_id"] Тогда
ИмяБрэнда = Брэнд["brand_name"];
Прервать;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Свойство", СтрокаНоменклатуры.Свойство);
Запрос.УстановитьПараметр("Наименование", ИмяБрэнда);
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ЗначенияСвойствОбъектов.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Владелец = &Свойство
| И ЗначенияСвойствОбъектов.Наименование = &Наименование";
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
СтрокаНоменклатуры.Значение = Выборка.Ссылка;
ПервыйРаз = Ложь;
КонецЕсли;
Если СвойствоЗначение[0] = СтрокаДопРеквизитов.Свойство.Наименование Тогда
СтрокаНоменклатуры = Номенклатура.ДополнительныеРеквизиты.Добавить();
СтрокаНоменклатуры.Свойство = СтрокаДопРеквизитов.Свойство;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Свойство", СтрокаНоменклатуры.Свойство);
Запрос.УстановитьПараметр("Наименование", СвойствоЗначение[1]);
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ЗначенияСвойствОбъектов.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Владелец = &Свойство
| И ЗначенияСвойствОбъектов.Наименование = &Наименование";
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
СтрокаНоменклатуры.Значение = Выборка.Ссылка;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Номенклатура.Записать();
Если НоваяПозиция Тогда
МассивДобавленныхПозиций.Добавить(Номенклатура.Ссылка);
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("08 Интерактивное оборудование");
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&Корень)
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Запрос.УстановитьПараметр("Корень", КорневойЭлемент);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(КонтрагентАУВИКС);
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
ПозицииВБазе = Запрос.Выполнить().Выгрузить();
МассивВыбывшихПозиций = Новый Массив;
Для Каждого ПозицияБаза Из ПозицииВБазе ЦИкл
Если МассивАртикуловПоставщика.Найти(ПозицияБаза.Артикул) = Неопределено Тогда
МассивВыбывшихПозиций.Добавить(ПозицияБаза.Ссылка);
КонецЕсли;
КонецЦикла;
ЗаписатьНаборИстории(КонтрагентАУВИКС, МассивВыбывшихПозиций, МассивДобавленныхПозиций);
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("Успешно обновлена номенклатура АУВИКС по категории: " + Строка(НомерКатегории), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Номенклатура, "");
КонецПроцедуры
Процедура ДобавитьОтборы(НовыйВидНоменклатуры, ДопРеквизит)
БыстрыйОтбор = НовыйВидНоменклатуры.РеквизитыБыстрогоОтбораНоменклатуры.Добавить();
БыстрыйОтбор.Свойство = ДопРеквизит;
БыстрыйОтбор.ИмяРеквизита = ДопРеквизит.Наименование;
БыстрыйОтбор.ПредставлениеРеквизита = ДопРеквизит.Наименование;
БыстрыйОтбор.Используется = Истина;
БыстрыйОтбор.ЭтоДопРеквизит = Истина;
РеквизитДляКонтроля = НовыйВидНоменклатуры.РеквизитыДляКонтроляНоменклатуры.Добавить();
ЗаполнитьЗначенияСвойств(РеквизитДляКонтроля, БыстрыйОтбор);
РеквизитДляКонтроля.ОтображатьПриСоздании = Истина;
РеквизитДляКонтроля.Уникален = Истина;
РеквизитДляКонтроля.ДоступностьУникален =Истина;
РеквизитДляКонтроля.ДоступностьЗаполнятьОбязательно =Истина;
РеквизитДляКонтроля.ДоступностьОтображатьПриСоздании =Истина;
НовыйВидНоменклатуры.НаборСвойств = ДопРеквизит.НаборСвойств;
КонецПроцедуры
Процедура ЗагрузитьСоздатьВидНоменклатурыПоКатегорииАУВИКС(НомерКатегории, Брэнды = Неопределено) Экспорт
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("08 Интерактивное оборудование");
Категория = КатегорияТоваровАУВИКС(НомерКатегории);
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("OPS").ПолучитьОбъект();
НовыйВидНоменклатурыСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Формат(Категория["category_id"], "ЧГ=0"), "СправочникСсылка.ВидыНоменклатуры", "Справочник.ВидыНоменклатуры");
Если Брэнды = Неопределено Тогда
Брэнды = БрэндыАУВИКС();
КонецЕсли;
Если НовыйВидНоменклатурыСсылка = Неопределено Тогда
НовыйВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(НовыйВидНоменклатуры, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
НовыйВидНоменклатуры.Родитель = КорневойЭлемент;
НовыйВидНоменклатуры.Наименование = Категория["category_name"];
НовыйВидНоменклатуры.Б_Идентификатор = Категория["category_id"];
Иначе
НовыйВидНоменклатуры = НовыйВидНоменклатурыСсылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(НовыйВидНоменклатуры, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
НовыйВидНоменклатуры.Родитель = КорневойЭлемент;
НовыйВидНоменклатуры.Наименование = Категория["category_name"];
НовыйВидНоменклатуры.Б_Идентификатор = Категория["category_id"];
КонецЕсли;
МассивБрэндов = Новый Массив;
Для Каждого Брэнд Из Брэнды Цикл
МассивБрэндов.Добавить(Брэнд["brand_name"]);
КонецЦикла;
НовыйВидНоменклатуры.РеквизитыБыстрогоОтбораНоменклатуры.Очистить();
НовыйВидНоменклатуры.РеквизитыДляКонтроляНоменклатуры.Очистить();
ТекущийНаборСвойствСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Формат(Категория["category_id"], "ЧГ=0"), "СправочникСсылка.НаборыДополнительныхРеквизитовИСведений", "Справочник.НаборыДополнительныхРеквизитовИСведений");
Если ТекущийНаборСвойствСсылка <> Неопределено Тогда
ТекущийНаборСвойств = ТекущийНаборСвойствСсылка.ПолучитьОбъект();
ТекущийНаборСвойств.ДополнительныеРеквизиты.Очистить();
ТекущийНаборСвойств.Записать();
КонецЕсли;
ДопРеквизит = СоздатьЕслиНетДополнительныйРеквизитИлиСведение(Формат(Категория["category_id"], "ЧГ=0"), Формат(Категория["category_id"], "ЧГ=0"), "Брэнд", Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"),
Категория["category_name"], , , МассивБрэндов);
ДобавитьОтборы(НовыйВидНоменклатуры, ДопРеквизит);
НовыйВидНоменклатуры.Записать();
Аттрибуты = АттрибутыПоКатегорииАУВИКС(НомерКатегории);
МассивСвойств = МассивСвойствАУВИКС();
Для Каждого Аттрибут Из Аттрибуты Цикл
ИндексСвойства = МассивСвойств.Найти(Аттрибут["attr_name"]);
Если ИндексСвойства <> Неопределено Тогда
МассивЗначений = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Аттрибут["attr_list_values"]);
ДопРеквизит = СоздатьЕслиНетДополнительныйРеквизитИлиСведение(Формат(Категория["category_id"], "ЧГ=0"), Формат(Аттрибут["attribute_id"], "ЧГ=0"), МассивСвойств[ИндексСвойства], Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"),
Категория["category_name"], , , МассивЗначений);
ДобавитьОтборы(НовыйВидНоменклатуры, ДопРеквизит);
НовыйВидНоменклатуры.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруСтроникум() Экспорт
СсылкаНаКартинкуHTTP = "https://stronikum.ru/resources/download/dataforsqlstronikum_utf.txt";
ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки);
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("07 Учебно-наглядные пособия и оборудование");
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Учебно-наглядные пособия и оборудование").ПолучитьОбъект();
ТекстКаталога = КакТекст(Get(СсылкаНаКартинку), КодировкаТекста.UTF8);
СтруктураКаталога = СтруктураКаталогаСтроникумXML();
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоНаименованию("Строникум");
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
Для Сч = 1 По СтрЧислоСтрок(ТекстКаталога) Цикл
ТекущаяСтрока = СтрПолучитьСтроку(ТекстКаталога, Сч);
МассивКатегорий = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, Символы.Таб);
МассивДляГрупп = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, "|");
Если МассивДляГрупп.Количество() = 3 Тогда
Позиция = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(МассивДляГрупп[0], Символы.Таб);
НовыйВидНоменклатурыСсылка = Справочники.ВидыНоменклатуры.НайтиПоРеквизиту("Б_Идентификатор", Позиция[1], КорневойЭлемент);
Если НовыйВидНоменклатурыСсылка = Справочники.ВидыНоменклатуры.ПустаяСсылка() Тогда
НовыйВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
Иначе
НовыйВидНоменклатуры = НовыйВидНоменклатурыСсылка.ПолучитьОбъект();
КонецЕсли;
ЗаполнитьЗначенияСвойств(НовыйВидНоменклатуры, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
НовыйВидНоменклатуры.Родитель = КорневойЭлемент;
НовыйВидНоменклатуры.Наименование = Позиция[2];
НовыйВидНоменклатуры.Б_Идентификатор = Позиция[1];
НовыйВидНоменклатуры.Записать();
КонецЕсли;
Если ЗначениеЗаполнено(МассивКатегорий[5]) Тогда
ВидНоменклатурыСсылка = НовыйВидНоменклатуры.Ссылка;
ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(ВидНоменклатурыСсылка.Наименование);
Если ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда
ЦеноваяГруппа = Справочники.ЦеновыеГруппы.СоздатьЭлемент();
ЦеноваяГруппа.Наименование = ВидНоменклатурыСсылка.Наименование;
ЦеноваяГруппа.Записать();
ЦеноваяГруппаСсылка = ЦеноваяГруппа.Ссылка;
КонецЕсли;
НоменклатураСсылка = НоменклатураСтроникумПоАртикулу(МассивКатегорий[1]);
НоваяПозиция = Ложь;
МассивАртикуловПоставщика.Добавить(МассивКатегорий[1]);
Если НоменклатураСсылка = Неопределено Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяПозиция = Истина;
ЗагружатьКартинку = Истина;
Иначе
//Продолжить;
ЗагружатьКартинку = Ложь;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
//
// ЗагружатьКартинку = Истина;
//
Номенклатура.Наименование = МассивКатегорий[2] + " " + МассивКатегорий[1];
Номенклатура.Б_Идентификатор = МассивКатегорий[1];
Номенклатура.ЦеноваяГруппа = ЦеноваяГруппаСсылка;
Номенклатура.НаименованиеПолное = Номенклатура.Наименование;
Если Не ПустаяСтрока(СтруктураКаталога.СоответствиеОписание[МассивКатегорий[1]]) Тогда
Номенклатура.Описание = СтруктураКаталога.СоответствиеОписание[МассивКатегорий[1]];
КонецЕсли;
Номенклатура.ПроизводительИмпортерКонтрагент = КонтрагентАУВИКС;
Номенклатура.Артикул = Номенклатура.Б_Идентификатор;
Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
//Вес
//Номенклатура.ВесИспользовать = Истина;
//Номенклатура.ВесЕдиницаИзмерения = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию("Вес");
//Номенклатура.ВесЧислитель = Запись["product_weight"];
//Номенклатура.ВесЗнаменатель = 1;
Номенклатура.ВидНоменклатуры = ВидНоменклатурыСсылка;
Номенклатура.ТипНоменклатуры = ВидНоменклатурыСсылка.ТипНоменклатуры;
Номенклатура.ИспользованиеХарактеристик = ВидНоменклатурыСсылка.ИспользованиеХарактеристик;
Номенклатура.ИспользоватьУпаковки = ВидНоменклатурыСсылка.ИспользоватьУпаковки;
Номенклатура.НаборУпаковок = ВидНоменклатурыСсылка.НаборУпаковок;
Номенклатура.ВариантОформленияПродажи = ВидНоменклатурыСсылка.ВариантОформленияПродажи;
Номенклатура.ГруппаДоступа = ВидНоменклатурыСсылка.ГруппаДоступа;
Номенклатура.ЕдиницаИзмерения = ВидНоменклатурыСсылка.ЕдиницаИзмерения;
Номенклатура.Записать();
Если НЕ ПустаяСтрока(СтруктураКаталога.СоответствиеКартинка[МассивКатегорий[1]]) И ЗагружатьКартинку Тогда
УстановитьКартинку(Номенклатура, СтруктураКаталога.СоответствиеКартинка[МассивКатегорий[1]]);
КонецЕсли;
Номенклатура.Записать();
Если НоваяПозиция Тогда
МассивДобавленныхПозиций.Добавить(Номенклатура.Ссылка);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&Корень)
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Запрос.УстановитьПараметр("Корень", КорневойЭлемент);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("Строникум"));
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
ПозицииВБазе = Запрос.Выполнить().Выгрузить();
МассивВыбывшихПозиций = Новый Массив;
Для Каждого ПозицияБаза Из ПозицииВБазе ЦИкл
Если МассивАртикуловПоставщика.Найти(ПозицияБаза.Артикул) = Неопределено Тогда
МассивВыбывшихПозиций.Добавить(ПозицияБаза.Ссылка);
КонецЕсли;
КонецЦикла;
ЗаписатьНаборИстории(КонтрагентАУВИКС, МассивВыбывшихПозиций, МассивДобавленныхПозиций);
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("Успешно обновлена номенклатура СТРОНИКУМ", УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Номенклатура, "");
КонецПроцедуры
Процедура СоздатьПозиции(Позиции, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
Если Не УстановкаЦен Тогда
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("ПРОМЕТ", Истина);
ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(РодительВид.Наименование);
Если ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда
ЦеноваяГруппа = Справочники.ЦеновыеГруппы.СоздатьЭлемент();
ЦеноваяГруппа.Наименование = РодительВид.Наименование;
ЦеноваяГруппа.Записать();
ЦеноваяГруппаСсылка = ЦеноваяГруппа.Ссылка;
КонецЕсли;
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоНаименованию("НПО ПРОМЕТ");
КонецЕсли;
Для Каждого Категория Из Позиции Цикл
НоменклатураСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "pos", РодительНоменклатура);
Если УстановкаЦен Тогда
Для Каждого ВидЦен Из ДокЦена.ВидыЦен Цикл
НоваяСтрока=ДокЦена.Товары.Добавить();
НоваяСтрока.Номенклатура = НоменклатураСсылка;
НоваяСтрока.ВидЦены = ВидЦен.ВидЦены;
Если ВидЦен.ВидЦены.Наименование = "Вход Промет" Тогда
НоваяСтрока.Цена= Категория.price7 * 0.7;
Иначе
НоваяСтрока.Цена= Категория.price7;
КонецЕсли;;
КонецЦикла;
Продолжить;
КонецЕсли;
МассивАртикуловПоставщика.Добавить(Категория.id + "pos");
Если НоменклатураСсылка = Неопределено Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяПозиция = Истина;
ЗагружатьКартинку = Истина;
Иначе
ЗагружатьКартинку = Ложь;
НоваяПозиция = Ложь;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
Номенклатура.Наименование = Категория.name + " " + Категория.id;
Номенклатура.Б_Идентификатор = Категория.id + "pos";
Номенклатура.ЦеноваяГруппа = ЦеноваяГруппаСсылка;
Номенклатура.НаименованиеПолное = Номенклатура.Наименование;
Если Не ПустаяСтрока(Категория.preview_text) Тогда
Номенклатура.Описание = Категория.preview_text;
КонецЕсли;
Номенклатура.ПроизводительИмпортерКонтрагент = КонтрагентАУВИКС;
Номенклатура.Артикул = Номенклатура.Б_Идентификатор;
Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
//Вес
Номенклатура.ВесИспользовать = Истина;
Номенклатура.ВесЕдиницаИзмерения = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию("Вес");
Номенклатура.ВесЧислитель = Категория["weight"];
Номенклатура.ВесЗнаменатель = 1;
Номенклатура.ВидНоменклатуры = РодительВид;
Номенклатура.Родитель = РодительНоменклатура;
Номенклатура.ТипНоменклатуры = РодительВид.ТипНоменклатуры;
Номенклатура.ИспользованиеХарактеристик = РодительВид.ИспользованиеХарактеристик;
Номенклатура.ИспользоватьУпаковки = РодительВид.ИспользоватьУпаковки;
Номенклатура.НаборУпаковок = РодительВид.НаборУпаковок;
Номенклатура.ВариантОформленияПродажи = РодительВид.ВариантОформленияПродажи;
Номенклатура.ГруппаДоступа = РодительВид.ГруппаДоступа;
Номенклатура.ЕдиницаИзмерения = РодительВид.ЕдиницаИзмерения;
Номенклатура.Записать();
Если НЕ ПустаяСтрока(Категория.preview_picture) И ЗагружатьКартинку Тогда
УстановитьКартинку(Номенклатура, Категория.preview_picture);
Номенклатура.Записать();
КонецЕсли;
Если НоваяПозиция Тогда
МассивДобавленныхПозиций.Добавить(Номенклатура.Ссылка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СоздатьВидыГруппыНоменклатуры(Категории, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Шкафы", Истина).ПолучитьОбъект();
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("06 Металлическая мебель", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("ПРОМЕТ", Истина);
Для Каждого Категория Из Категории Цикл
ВидСсылка = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.id + "cat", КорневойЭлемент);
ГруппаСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "cat", КорневойЭлементНоменклатуры);
Если Не УстановкаЦен Тогда
Если Категория.sections.Свойства().Получить("section") <> Неопределено
И ТипЗнч(Категория.sections.section) = Тип("СписокXDTO") Тогда
Если ВидСсылка = Неопределено Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьГруппу();
Иначе
ВидОбъект = ВидСсылка.ПолучитьОбъект();
КонецЕсли;
Иначе // Это элемент
Если Не (Категория.Свойства().Получить("Items") <> Неопределено
И Категория.Items.Свойства().Получить("Item") <> Неопределено
И ТипЗнч(Категория.Items.Item) = Тип("СписокXDTO")) Тогда
Продолжить;
КонецЕсли;
Если ВидСсылка = Неопределено Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
Иначе
ВидОбъект = ВидСсылка.ПолучитьОбъект();
КонецЕсли;
ЗаполнитьЗначенияСвойств(ВидОбъект, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
КонецЕсли;
Если ГруппаСсылка = Неопределено Тогда
ГруппаОбъект = Справочники.Номенклатура.СоздатьГруппу();
Иначе
ГруппаОбъект = ГруппаСсылка.ПолучитьОбъект();
КонецЕсли;
ВидОбъект.Родитель = РодительВид;
ГруппаОбъект.Родитель = РодительНоменклатура;
ВидОбъект.Б_Идентификатор = Категория.id + "cat";
ВидОбъект.Наименование = Категория.name + " ПРОМЕТ";
ВидОбъект.Записать();
ГруппаОбъект.Б_Идентификатор = Категория.id + "cat";
ГруппаОбъект.Наименование = Категория.name + " " + XMLСтрока(Категория.id);
ГруппаОбъект.Записать();
КонецЕсли;
Если Категория.Свойства().Получить("Items") <> Неопределено
И Категория.Items.Свойства().Получить("Item") <> Неопределено
И ТипЗнч(Категория.Items.Item) = Тип("СписокXDTO") Тогда
Если УстановкаЦен Тогда
СоздатьПозиции(Категория.Items.Item, ВидСсылка, ГруппаСсылка, ДокЦена, УстановкаЦен);
Иначе
СоздатьПозиции(Категория.Items.Item, ВидОбъект.Ссылка, ГруппаОбъект.Ссылка, Неопределено, Ложь, МассивДобавленныхПозиций, МассивАртикуловПоставщика);
КонецЕсли;
КонецЕсли;
Если Категория.sections.Свойства().Получить("section") <> Неопределено
И ТипЗнч(Категория.sections.section) = Тип("СписокXDTO") Тогда
Если УстановкаЦен Тогда
СоздатьВидыГруппыНоменклатуры(Категория.sections.section, ВидСсылка, ГруппаСсылка, ДокЦена, УстановкаЦен);
Иначе
СоздатьВидыГруппыНоменклатуры(Категория.sections.section, ВидОбъект.Ссылка, ГруппаОбъект.Ссылка, Неопределено, Ложь, МассивДобавленныхПозиций, МассивАртикуловПоставщика);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗаписатьНаборИстории(Контрагент, МассивВыбывших, МассивДобавленных)
Набор = РегистрыСведений.ИсторияОбновленияНоменклатуры.СоздатьНаборЗаписей();
Набор.Отбор.Период.Установить(КонецДня(ТекущаяДата()));
Набор.Отбор.Контрагент.Установить(Контрагент);
Для Каждого Запись Из МассивВыбывших Цикл
СтрокаНабора = Набор.Добавить();
СтрокаНабора.Период = КонецДня(ТекущаяДата());
СтрокаНабора.Номенклатура = Запись;
СтрокаНабора.Контрагент = Контрагент;
СтрокаНабора.Изменение = "Выбытие"
КонецЦикла;
Для Каждого Запись Из МассивДобавленных Цикл
СтрокаНабора = Набор.Добавить();
СтрокаНабора.Период = КонецДня(ТекущаяДата());
СтрокаНабора.Номенклатура = Запись;
СтрокаНабора.Контрагент = Контрагент;
СтрокаНабора.Изменение = "Добавление"
КонецЦикла;
Набор.Записать();
КонецПроцедуры
#КонецОбласти
#Область Цены
Процедура УстановитьЦеныАУВИКСПоКатегории(НомерКатегории) Экспорт
Токен = Токен();
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоНаименованию("АУВИКС ООО");;
ВидНоменклатурыСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Формат(НомерКатегории, "ЧГ=0"), "СправочникСсылка.ВидыНоменклатуры", "Справочник.ВидыНоменклатуры");
Результат = КоннекторHTTP.GetJson("https://b2b.auvix.ru/api/categories/" + Формат(НомерКатегории, "ЧГ=0") + "/products",, Новый Структура("Аутентификация", КоннекторHTTP.НоваяАутентификацияBearer(Токен)));
ДокЦена=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ДокЦена.Дата=ТекущаяДата();
ДокЦена.Согласован = Истина;
////// Это добавил
ДокЦена.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
////
ДокЦена.Ответственный = Пользователи.ТекущийПользователь();
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("Дилерская цена Аувикс");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("Аувикс самовывоз (+15%)");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("РРЦ Аувикс (+30%)");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
Для Каждого Запись ИЗ Результат Цикл
НоменклатураСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Формат(Запись["product_id"], "ЧГ=0"), "СправочникСсылка.Номенклатура", "Справочник.Номенклатура");
Цена = Запись["product_price_dealer_rub"];
Для Каждого ВидЦен Из ДокЦена.ВидыЦен Цикл
НоваяСтрока=ДокЦена.Товары.Добавить();
НоваяСтрока.Номенклатура = НоменклатураСсылка;
НоваяСтрока.ВидЦены=ВидЦен.ВидЦены;
НоваяСтрока.Цена= Цена;
Если ВидЦен.ВидЦены.Наименование = "Аувикс самовывоз (+15%)" Тогда
НоваяСтрока.Цена= Цена * 1.15;
КонецЕсли;
Если ВидЦен.ВидЦены.Наименование = "РРЦ Аувикс (+30%)" Тогда
НоваяСтрока.Цена= Цена * 1.3;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ДокЦена.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
#КонецОбласти
#Область Роботы
Процедура ЗагрузитьЦеныСтпоникум(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
ДокЦена=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ДокЦена.Дата=ТекущаяДата();
ДокЦена.Согласован = Истина;
////// Это добавил
ДокЦена.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
////
ДокЦена.Ответственный = Пользователи.ТекущийПользователь();
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("Цена оптовая Эдустронг");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("Розница Эдустронг");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("ВХОД Строникум Опт -30%");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("Опт -15% Строникум Оптовики");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
СсылкаНаКартинкуHTTP = "https://stronikum.ru/resources/download/dataforsqlstronikum_utf.txt";
ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки);
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("07 Учебно-наглядные пособия и оборудование");
ТекстКаталога = КакТекст(Get(СсылкаНаКартинку), КодировкаТекста.UTF8);
СтруктураКаталога = СтруктураКаталогаСтроникумXML();
Для Сч = 1 По СтрЧислоСтрок(ТекстКаталога) Цикл
ТекущаяСтрока = СтрПолучитьСтроку(ТекстКаталога, Сч);
МассивКатегорий = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, Символы.Таб);
Если ЗначениеЗаполнено(МассивКатегорий[5]) Тогда
НоменклатураСсылка = НоменклатураСтроникумПоАртикулу(МассивКатегорий[1]);
Для Каждого ВидЦен Из ДокЦена.ВидыЦен Цикл
НоваяСтрока=ДокЦена.Товары.Добавить();
НоваяСтрока.Номенклатура = НоменклатураСсылка;
НоваяСтрока.ВидЦены=ВидЦен.ВидЦены;
Если ВидЦен.ВидЦены.Наименование = "Цена оптовая Эдустронг" Тогда
НоваяСтрока.Цена= МассивКатегорий[5];
КонецЕсли;
Если ВидЦен.ВидЦены.Наименование = "ВХОД Строникум Опт -30%" Тогда
НоваяСтрока.Цена= МассивКатегорий[5] * 0.7;
КонецЕсли;
Если ВидЦен.ВидЦены.Наименование = "Опт -15% Строникум Оптовики" Тогда
НоваяСтрока.Цена= МассивКатегорий[5] * 0.85;
КонецЕсли;
Если ВидЦен.ВидЦены.Наименование = "Розница Эдустронг" Тогда
НоваяСтрока.Цена= СтруктураКаталога.СоответствиеЦена[МассивКатегорий[1]];
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ТаблицаСвернуть = ДокЦена.Товары.Выгрузить();
ТаблицаСвернуть.Свернуть("Номенклатура, ВидЦены, Цена");
ДокЦена.Товары.Загрузить(ТаблицаСвернуть);
ДокЦена.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
Процедура ЗагрузитьОбновитьЦеныПромет(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
СтруктураКаталога = СтруктураКаталогаПрометXML();
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("06 Металлическая мебель", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("ПРОМЕТ", Истина);
ДокЦена=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ДокЦена.Дата=ТекущаяДата();
ДокЦена.Согласован = Истина;
ДокЦена.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
ДокЦена.Ответственный = Пользователи.ТекущийПользователь();
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("РРЦ Промет поставщик");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоНаименованию("Вход Промет");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
СоздатьВидыГруппыНоменклатуры(СтруктураКаталога.section, КорневойЭлемент, КорневойЭлементНоменклатуры, ДокЦена, Истина);
ТаблицаСвернуть = ДокЦена.Товары.Выгрузить();
ТаблицаСвернуть.Свернуть("Номенклатура, ВидЦены, Цена");
ДокЦена.Товары.Загрузить(ТаблицаСвернуть);
ДокЦена.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
Процедура ЗагрузитьЦеныАУВИКС(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
МассивКатегорий = МассивКатегорийАУВИКС();
Для Каждого Категория Из МассивКатегорий Цикл
УстановитьЦеныАУВИКСПоКатегории(Категория);
ВызватьПаузу(60000);
КонецЦикла;
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруСтроникумРобот(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
ЗагрузитьОбновитьНоменклатуруСтроникум();
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруПромет(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
СтруктураКаталога = СтруктураКаталогаПрометXML();
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоНаименованию("НПО ПРОМЕТ");
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("06 Металлическая мебель", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("ПРОМЕТ", Истина);
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
СоздатьВидыГруппыНоменклатуры(СтруктураКаталога.section, КорневойЭлемент, КорневойЭлементНоменклатуры, Неопределено, Ложь, МассивДобавленныхПозиций, МассивАртикуловПоставщика);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&Корень)
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Запрос.УстановитьПараметр("Корень", КорневойЭлемент);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(КонтрагентАУВИКС);
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
ПозицииВБазе = Запрос.Выполнить().Выгрузить();
МассивВыбывшихПозиций = Новый Массив;
Для Каждого ПозицияБаза Из ПозицииВБазе ЦИкл
Если МассивАртикуловПоставщика.Найти(ПозицияБаза.Артикул) = Неопределено Тогда
МассивВыбывшихПозиций.Добавить(ПозицияБаза.Ссылка);
КонецЕсли;
КонецЦикла;
ЗаписатьНаборИстории(КонтрагентАУВИКС, МассивВыбывшихПозиций, МассивДобавленныхПозиций);
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("Успешно обновлена номенклатура ПРОМЕТ", УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Номенклатура, "");
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруАУВИКС(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
Брэнды = БрэндыАУВИКС();
МассивКатегорий = МассивКатегорийАУВИКС();
Для Каждого Категория Из МассивКатегорий Цикл
ЗагрузитьСоздатьВидНоменклатурыПоКатегорииАУВИКС(Категория, Брэнды);
ВызватьПаузу(60000);
ЗагрузитьОбновитьНоменклатуруАУВИКСПоНомеруКатегории(Категория, Брэнды);
ВызватьПаузу(60000);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.441