За основу данной разработки взят модуль КоннекторHTTP
https://github.com/vbondarevsky/Connector
Выкладываю код, который представляет основную логику интеграции.
Поставщики: Аувикс, Эдустронг(Строникум), Промет, ФСИ Аналитика, Ballmarket, Пищевые Технологии
#Область Обмен
#Область ИнтернетЗапросы
Функция Токен()
Токен = "";
Возврат Токен;
КонецФункции
Функция КатегорииТоваровАУВИКС() Экспорт
Токен = Токен();
Результат = Коннектор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(СсылкаНаКартинку));
Возврат ТекстКаталога;
КонецФункции
Функция СтруктураКаталогаБоллМаркетXML() Экспорт
СсылкаНаКартинкуHTTP = "https://ballmarket.ru/upload/catalog.xml";
ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки);
ТекстКаталога = КакXDTO(Get(СсылкаНаКартинку),,,"UTF-8");
Возврат ТекстКаталога;
КонецФункции
Функция СтруктураКаталогаАналитикаXML() Экспорт
СсылкаНаКартинкуHTTP = "https://sfsi.ru/bitrix/catalog_export/export_euk.xml";
ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки);
ТекстКаталога = КакXDTO(Get(СсылкаНаКартинку),,,"UTF-8");
Возврат ТекстКаталога;
КонецФункции
Функция СтруктураКаталогаПищевыеТехнологииXML() Экспорт
СсылкаНаКартинкуHTTP = "https://zavod-pt.ru/api/yml/get/?apikey=";
ДлинаСсылки = СтрДлина(СсылкаНаКартинкуHTTP);
СсылкаНаКартинку = Сред(СсылкаНаКартинкуHTTP, 9, ДлинаСсылки);
ТекстКаталога = КакXDTO(Get(СсылкаНаКартинку));
Возврат ТекстКаталога;
КонецФункции
Функция ФорматироватьПараметр(Параметр)
НовыйПараметр = СтрЗаменить(Параметр, " ", "_");
НовыйПараметр = СтрЗаменить(НовыйПараметр, "(", "_");
НовыйПараметр = СтрЗаменить(НовыйПараметр, ")", "_");
НовыйПараметр = СтрЗаменить(НовыйПараметр, "-", "_");
НовыйПараметр = СтрЗаменить(НовыйПараметр, ",", "_");
НовыйПараметр = СтрЗаменить(НовыйПараметр, ".", "_");
Возврат НовыйПараметр;
КонецФункции
Функция СтруктураПараметровБоллМаркет(Позиции)
ТаблицаПараметров = Новый ТаблицаЗначений;
ТаблицаПараметров.Колонки.Добавить("id");
ТаблицаПараметров.Колонки.Добавить("categoryId");
Для Каждого Позиция Из Позиции Цикл
СтруктураПараметров = Новый Структура;
Для Каждого Параметр Из Позиция.param Цикл
Если Параметр.name = "Уровень" Тогда
Продолжить;
КонецЕсли;
Если ТаблицаПараметров.Колонки.Найти(ФорматироватьПараметр(Параметр.name)) = Неопределено Тогда
ТаблицаПараметров.Колонки.Добавить(ФорматироватьПараметр(Параметр.name));
КонецЕсли;
СтруктураПараметров.Вставить(ФорматироватьПараметр(Параметр.name), Параметр.Последовательность().ПолучитьТекст(0));
КонецЦикла;
СтрокаПараметров = ТаблицаПараметров.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаПараметров, СтруктураПараметров);
СтрокаПараметров.categoryId = ?(ТипЗнч(Позиция.categoryId) = Тип("СписокXDTO"), Позиция.categoryId[0], Позиция.categoryId);
СтрокаПараметров.id = Позиция.id;
КонецЦикла;
Возврат ТаблицаПараметров;
КонецФункции
#КонецОбласти
#Область Номенклатура
Функция НоменклатураСтроникумПоАртикулу(Артикул) Экспорт
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("07 Учебно-наглядные пособия и оборудование");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РодительскаяГруппа", КорневойЭлемент);
Запрос.УстановитьПараметр("Артикул", Артикул);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "9718140096"));
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&РодительскаяГруппа)
| И Номенклатура.Артикул = &Артикул
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция НоменклатураБМПоАртикулу(Артикул) Экспорт
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("12 Спортивное снаряжение и оборудование");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РодительскаяГруппа", КорневойЭлемент);
Запрос.УстановитьПараметр("Артикул", Артикул);
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&РодительскаяГруппа)
| И Номенклатура.Артикул = &Артикул";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция НоменклатураПТПоАртикулу(Артикул) Экспорт
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("16 Оборудование для пищеблока");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РодительскаяГруппа", КорневойЭлемент);
Запрос.УстановитьПараметр("Артикул", Артикул);
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&РодительскаяГруппа)
| И Номенклатура.Артикул = &Артикул";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция НоменклатураПРОМЕТПоАртикулу(Артикул, КорневойЭлемент) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РодительскаяГруппа", КорневойЭлемент);
Запрос.УстановитьПараметр("Артикул", Артикул);
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&РодительскаяГруппа)
| И Номенклатура.Б_Идентификатор = &Артикул";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция ВидНоменклатурыПРОМЕТПоАртикулу(Артикул, КорневойЭлемент) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РодительскаяГруппа", КорневойЭлемент);
Запрос.УстановитьПараметр("Артикул", Артикул);
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВидыНоменклатуры КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&РодительскаяГруппа)
| И Номенклатура.Б_Идентификатор = &Артикул";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция СоздатьЕслиНетДополнительныйРеквизитИлиСведение(Ид, ИдРеквизита, Знач Заголовок, ОписаниеТипов,
ИмяНабора = Неопределено, Знач ЭтоДополнительноеСведение = Ложь,
ПараметрыДоступностиРеквизита = Неопределено, ЗначенияСвойствОбъектов = Неопределено, Имя = "", Перезаписывать = Ложь) Экспорт
Наименование = Заголовок;
ТекущийНаборСвойствСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Ид, "СправочникСсылка.НаборыДополнительныхРеквизитовИСведений", "Справочник.НаборыДополнительныхРеквизитовИСведений");
Если ТекущийНаборСвойствСсылка = Неопределено Тогда
ТекущийНаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.СоздатьЭлемент();
ТекущийНаборСвойств.Родитель = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура");
ТекущийНаборСвойств.Наименование = ИмяНабора;
ТекущийНаборСвойств.Б_Идентификатор = Ид;
ТекущийНаборСвойств.Используется = Истина;
ТекущийНаборСвойств.Записать();
Иначе
ТекущийНаборСвойств = ТекущийНаборСвойствСсылка.ПолучитьОбъект();
КонецЕсли;
НовыйЭлементСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(ИдРеквизита, "ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения", "ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения");
Если НовыйЭлементСсылка = Неопределено Тогда
НовыйЭлемент = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
Иначе
Если Не Перезаписывать Тогда
Возврат НовыйЭлементСсылка;
КонецЕсли;
НовыйЭлемент = НовыйЭлементСсылка.ПолучитьОбъект();
КонецЕсли;
НовыйЭлемент.Б_Идентификатор = ИдРеквизита;
НовыйЭлемент.Виден = Истина;
НовыйЭлемент.Доступен = Истина;
НовыйЭлемент.Заголовок = Заголовок;
НовыйЭлемент.НаборСвойств = ТекущийНаборСвойств.Ссылка;
НовыйЭлемент.Наименование = Наименование;
НовыйЭлемент.Имя = Имя;
Если Имя = "" Тогда
ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(Заголовок, "");
ЗаголовокОбъектаЧастями = СтрРазделить(Заголовок, " ", Ложь);
Для Каждого ЧастьЗаголовка Из ЗаголовокОбъектаЧастями Цикл
НовыйЭлемент.Имя = НовыйЭлемент.Имя + ВРег(Лев(ЧастьЗаголовка, 1)) + Сред(ЧастьЗаголовка, 2);
КонецЦикла;
УИД = Новый УникальныйИдентификатор();
СтрокаУИД = СтрЗаменить(Строка(УИД), "-", "");
НовыйЭлемент.Имя = НовыйЭлемент.Имя + "_" + СтрокаУИД;
КонецЕсли;
НовыйЭлемент.ТипЗначения = Новый ОписаниеТипов(ОписаниеТипов);
Попытка
НовыйЭлемент.Записать();
Если ЗначенияСвойствОбъектов <> Неопределено
И НовыйЭлементСсылка = Неопределено
Тогда
Для Каждого ОписаниеСвойства Из ЗначенияСвойствОбъектов Цикл
Если ПустаяСтрока(ОписаниеСвойства[Заголовок]) Тогда
Продолжить;
КонецЕсли;
НовоеСвойство = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
НовоеСвойство.Владелец = НовыйЭлемент.Ссылка;
НовоеСвойство.Наименование = ОписаниеСвойства[Заголовок];
НовоеСвойство.ПолноеНаименование = ОписаниеСвойства[Заголовок];
НовоеСвойство.Записать();
КонецЦикла;
КонецЕсли;
Если ТекущийНаборСвойств.ДополнительныеРеквизиты.Найти(НовыйЭлемент.Ссылка, "Свойство") = Неопределено Тогда
СтрокаСвойства = ТекущийНаборСвойств.ДополнительныеРеквизиты.Добавить();
СтрокаСвойства.Свойство = НовыйЭлемент.Ссылка;
ТекущийНаборСвойств.Записать();
КонецЕсли;
Исключение
Возврат Ложь;
КонецПопытки;
Возврат НовыйЭлемент.Ссылка;
КонецФункции
Процедура ЗагрузитьОбновитьНоменклатуруАУВИКСПоНомеруКатегории(НомерКатегории, Брэнды = Неопределено) Экспорт
Токен = Токен();
Если Брэнды = Неопределено Тогда
Брэнды = БрэндыАУВИКС();
КонецЕсли;
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "7708651718");
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
ВидНоменклатурыСсылка = Б_ОбменССайтомСервер.ПолучениеОбъектаПоКоду(Формат(НомерКатегории, "ЧГ=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();
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "9718140096");
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
Для Сч = 1 По СтрЧислоСтрок(ТекстКаталога) Цикл
ТекущаяСтрока = СтрПолучитьСтроку(ТекстКаталога, Сч);
МассивКатегорий = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, Символы.Таб);
МассивДляГрупп = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, "|");
Если МассивДляГрупп.Количество() = 3 Тогда
Позиция = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(МассивДляГрупп[0], Символы.Таб);
НовыйВидНоменклатурыСсылка = Справочники.ВидыНоменклатуры.НайтиПоРеквизиту("Б_Идентификатор", Позиция[1], КорневойЭлемент);
Если НовыйВидНоменклатурыСсылка = Справочники.ВидыНоменклатуры.ПустаяСсылка() Тогда
НовыйВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
Иначе
НовыйВидНоменклатуры = НовыйВидНоменклатурыСсылка.ПолучитьОбъект();
КонецЕсли;
ЗаполнитьЗначенияСвойств(НовыйВидНоменклатуры, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
НовыйВидНоменклатуры.Родитель = КорневойЭлемент;
НовыйВидНоменклатуры.Наименование = Позиция[2];
НовыйВидНоменклатуры.Б_Идентификатор = Позиция[1];
НовыйВидНоменклатуры.Записать();
КонецЕсли;
Если ЗначениеЗаполнено(МассивКатегорий[5]) Тогда
ВидНоменклатурыСсылка = НовыйВидНоменклатуры.Ссылка;
ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(ВидНоменклатурыСсылка.Наименование);
Если ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда
ЦеноваяГруппа = Справочники.ЦеновыеГруппы.СоздатьЭлемент();
ЦеноваяГруппа.Наименование = ВидНоменклатурыСсылка.Наименование;
ЦеноваяГруппа.Записать();
ЦеноваяГруппаСсылка = ЦеноваяГруппа.Ссылка;
КонецЕсли;
НоменклатураСсылка = НоменклатураСтроникумПоАртикулу(МассивКатегорий[1]);
НоваяПозиция = Ложь;
МассивАртикуловПоставщика.Добавить(МассивКатегорий[1]);
Если НоменклатураСсылка = Неопределено Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяПозиция = Истина;
ЗагружатьКартинку = Истина;
Иначе
//Продолжить;
ЗагружатьКартинку = Ложь;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
//
// ЗагружатьКартинку = Истина;
//
Номенклатура.Наименование = МассивКатегорий[2] + " " + МассивКатегорий[1];
Номенклатура.Б_Идентификатор = МассивКатегорий[1];
Номенклатура.ЦеноваяГруппа = ЦеноваяГруппаСсылка;
Номенклатура.НаименованиеПолное = Номенклатура.Наименование;
Если Не ПустаяСтрока(СтруктураКаталога.СоответствиеОписание[МассивКатегорий[1]]) Тогда
Номенклатура.Описание = СтруктураКаталога.СоответствиеОписание[МассивКатегорий[1]];
КонецЕсли;
Номенклатура.ПроизводительИмпортерКонтрагент = КонтрагентАУВИКС;
Номенклатура.Артикул = Номенклатура.Б_Идентификатор;
Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
//Вес
//Номенклатура.ВесИспользовать = Истина;
//Номенклатура.ВесЕдиницаИзмерения = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию("Вес");
//Номенклатура.ВесЧислитель = Запись["product_weight"];
//Номенклатура.ВесЗнаменатель = 1;
Номенклатура.ВидНоменклатуры = ВидНоменклатурыСсылка;
Номенклатура.ТипНоменклатуры = ВидНоменклатурыСсылка.ТипНоменклатуры;
Номенклатура.ИспользованиеХарактеристик = ВидНоменклатурыСсылка.ИспользованиеХарактеристик;
Номенклатура.ИспользоватьУпаковки = ВидНоменклатурыСсылка.ИспользоватьУпаковки;
Номенклатура.НаборУпаковок = ВидНоменклатурыСсылка.НаборУпаковок;
Номенклатура.ВариантОформленияПродажи = ВидНоменклатурыСсылка.ВариантОформленияПродажи;
Номенклатура.ГруппаДоступа = ВидНоменклатурыСсылка.ГруппаДоступа;
Номенклатура.ЕдиницаИзмерения = ВидНоменклатурыСсылка.ЕдиницаИзмерения;
Номенклатура.Записать();
Если НЕ ПустаяСтрока(СтруктураКаталога.СоответствиеКартинка[МассивКатегорий[1]]) И ЗагружатьКартинку Тогда
УстановитьКартинку(Номенклатура, СтруктураКаталога.СоответствиеКартинка[МассивКатегорий[1]]);
КонецЕсли;
Номенклатура.Записать();
Если НоваяПозиция Тогда
МассивДобавленныхПозиций.Добавить(Номенклатура.Ссылка);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&Корень)
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Запрос.УстановитьПараметр("Корень", КорневойЭлемент);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(КонтрагентАУВИКС);
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
ПозицииВБазе = Запрос.Выполнить().Выгрузить();
МассивВыбывшихПозиций = Новый Массив;
Для Каждого ПозицияБаза Из ПозицииВБазе ЦИкл
Если МассивАртикуловПоставщика.Найти(ПозицияБаза.Артикул) = Неопределено Тогда
МассивВыбывшихПозиций.Добавить(ПозицияБаза.Ссылка);
КонецЕсли;
КонецЦикла;
ЗаписатьНаборИстории(КонтрагентАУВИКС, МассивВыбывшихПозиций, МассивДобавленныхПозиций);
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("Успешно обновлена номенклатура СТРОНИКУМ", УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Номенклатура, "");
КонецПроцедуры
Процедура СоздатьПозиции(Позиции, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
Если Не УстановкаЦен Тогда
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("ПРОМЕТ", Истина);
ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(РодительВид.Наименование);
Если ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда
ЦеноваяГруппа = Справочники.ЦеновыеГруппы.СоздатьЭлемент();
ЦеноваяГруппа.Наименование = РодительВид.Наименование;
ЦеноваяГруппа.Записать();
ЦеноваяГруппаСсылка = ЦеноваяГруппа.Ссылка;
КонецЕсли;
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "7751009218");
КонецЕсли;
Для Каждого Категория Из Позиции Цикл
НоменклатураСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "pos", РодительНоменклатура);
Если НоменклатураСсылка = Неопределено Тогда
Продолжить;
КонецЕсли;
Если УстановкаЦен Тогда
Для Каждого ВидЦен Из ДокЦена.ВидыЦен Цикл
НоваяСтрока=ДокЦена.Товары.Добавить();
НоваяСтрока.Номенклатура = НоменклатураСсылка;
НоваяСтрока.ВидЦены = ВидЦен.ВидЦены;
Если ВидЦен.ВидЦены.Идентификатор = "ВходПромет" Тогда
НоваяСтрока.Цена= Категория.price7 * 0.7;
Иначе
НоваяСтрока.Цена= Категория.price7;
КонецЕсли;;
КонецЦикла;
Продолжить;
КонецЕсли;
МассивАртикуловПоставщика.Добавить(Категория.id + "pos");
Если НоменклатураСсылка = Неопределено Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяПозиция = Истина;
ЗагружатьКартинку = Истина;
Иначе
ЗагружатьКартинку = Ложь;
НоваяПозиция = Ложь;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
Номенклатура.Наименование = Категория.name + " " + Категория.id;
Номенклатура.Б_Идентификатор = Категория.id + "pos";
Номенклатура.ЦеноваяГруппа = ЦеноваяГруппаСсылка;
Номенклатура.НаименованиеПолное = Номенклатура.Наименование;
Если Не ПустаяСтрока(Категория.preview_text) Тогда
Номенклатура.Описание = Категория.preview_text;
КонецЕсли;
Номенклатура.ПроизводительИмпортерКонтрагент = КонтрагентАУВИКС;
Номенклатура.Артикул = Номенклатура.Б_Идентификатор;
Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
// Вес
Номенклатура.ВесИспользовать = Истина;
Номенклатура.ВесЕдиницаИзмерения = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию("Вес");
Номенклатура.ВесЧислитель = Категория["weight"];
Номенклатура.ВесЗнаменатель = 1;
Номенклатура.ВидНоменклатуры = РодительВид;
Номенклатура.Родитель = РодительНоменклатура;
Номенклатура.ТипНоменклатуры = РодительВид.ТипНоменклатуры;
Номенклатура.ИспользованиеХарактеристик = РодительВид.ИспользованиеХарактеристик;
Номенклатура.ИспользоватьУпаковки = РодительВид.ИспользоватьУпаковки;
Номенклатура.НаборУпаковок = РодительВид.НаборУпаковок;
Номенклатура.ВариантОформленияПродажи = РодительВид.ВариантОформленияПродажи;
Номенклатура.ГруппаДоступа = РодительВид.ГруппаДоступа;
Номенклатура.ЕдиницаИзмерения = РодительВид.ЕдиницаИзмерения;
Номенклатура.Записать();
Если НЕ ПустаяСтрока(Категория.preview_picture) И ЗагружатьКартинку Тогда
УстановитьКартинку(Номенклатура, Категория.preview_picture);
Номенклатура.Записать();
КонецЕсли;
Если НоваяПозиция Тогда
МассивДобавленныхПозиций.Добавить(Номенклатура.Ссылка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ЗначенияСвойствКатегории(Свойство, ИдКатегории, ТаблицаПараметров)
ТаблицаПараметров.Свернуть("categoryId, " + Свойство);
Возврат ТаблицаПараметров.НайтиСтроки(Новый Структура("categoryId", ИдКатегории))
КонецФункции
Функция ЗначениеСвойстваПозиции(Свойство, ИдПозиции, ТаблицаПараметров)
Возврат ТаблицаПараметров.Найти(ИдПозиции, "id")[Свойство];
КонецФункции
Процедура СоздатьПозицииБоллМаркет(Позиции, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Мебель для библиотек", Истина).ПолучитьОбъект();
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("BallMarket", Истина);
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "7719434930");
ТаблицаПараметров = СтруктураПараметровБоллМаркет(Позиции);
ТекстДопРеквизитов= ПолучитьОбщийМакет("BallMarket");
МассивДопРеквизитов = Новый Массив;
МассивОбработанныхКатегорий = Новый Массив;
Для Сч = 1 По ТекстДопРеквизитов.КоличествоСтрок() Цикл
МассивДопРеквизитов.Добавить(ТекстДопРеквизитов.ПолучитьСтроку(Сч));
КонецЦикла;
Для Каждого Категория Из Позиции Цикл
Если ТипЗнч(Категория.categoryId) <> Тип("СписокXDTO") Тогда
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.categoryId + "cat_bl", КорневойЭлемент);
categoryId = Категория.categoryId;
Иначе
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.categoryId[0] + "cat_bl", КорневойЭлемент);
categoryId = Категория.categoryId[0];
КонецЕсли;
Если ТекущийРодительВид = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ТекущийРодительВид.ЭтоГруппа Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(ВидОбъект, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
ВидОбъект.Наименование = ТекущийРодительВид.Наименование;
ВидОбъект.Родитель = ТекущийРодительВид.Родитель;
ВидОбъект.Б_Идентификатор = ТекущийРодительВид.Б_Идентификатор;
ТекущийРодительВидОбъект = ТекущийРодительВид.ПолучитьОбъект();
ТекущийРодительВидОбъект.Удалить();
ВидОбъект.Записать();
РодительВид = ВидОбъект.Ссылка;
Иначе
РодительВид = ТекущийРодительВид;
КонецЕсли;
НовыйВидНоменклатуры = РодительВид.ПолучитьОбъект();
НовыйВидНоменклатуры.РеквизитыБыстрогоОтбораНоменклатуры.Очистить();
НовыйВидНоменклатуры.РеквизитыДляКонтроляНоменклатуры.Очистить();
Если МассивОбработанныхКатегорий.Найти(categoryId) = Неопределено Тогда
Для Каждого ДопРеквизит Из МассивДопРеквизитов ЦИкл
ТабПараметры = ТаблицаПараметров.Скопировать();
МассивЗначенийДопРеквизита = ЗначенияСвойствКатегории(ДопРеквизит, categoryId, ТабПараметры);
Если МассивЗначенийДопРеквизита.Количество() > 1 Тогда
ДопРеквизитСсылка = СоздатьЕслиНетДополнительныйРеквизитИлиСведение(categoryId + "par_bl", categoryId + "param_bl" + Строка(МассивДопРеквизитов.Найти(ДопРеквизит)), ДопРеквизит, Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"),
НовыйВидНоменклатуры.Наименование, , , МассивЗначенийДопРеквизита, , Истина);
Если ДопРеквизитСсылка <> Ложь Тогда
ДобавитьОтборы(НовыйВидНоменклатуры, ДопРеквизитСсылка);
НовыйВидНоменклатуры.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
МассивОбработанныхКатегорий.Добавить(categoryId);
Артикул = ЗначениеСвойстваПозиции("Артикул", Категория.id, ТаблицаПараметров);
// НоменклатураСсылка = НоменклатураБМПоАртикулу(Артикул);
// Если НоменклатураСсылка = Неопределено Тогда
НоменклатураСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "pos_bl", РодительНоменклатура);
// КонецЕсли;
ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(РодительВид.Наименование);
Если ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда
ЦеноваяГруппа = Справочники.ЦеновыеГруппы.СоздатьЭлемент();
ЦеноваяГруппа.Наименование = РодительВид.Наименование;
ЦеноваяГруппа.Записать();
ЦеноваяГруппаСсылка = ЦеноваяГруппа.Ссылка;
КонецЕсли;
МассивАртикуловПоставщика.Добавить(Категория.id + "pos_bl");
Если НоменклатураСсылка = Неопределено Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяПозиция = Истина;
ЗагружатьКартинку = Истина;
Иначе
ЗагружатьКартинку = Ложь;
НоваяПозиция = Ложь;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
Номенклатура.Наименование = Категория.name + " " + Категория.id;
Номенклатура.Б_Идентификатор = Категория.id + "pos_bl";
Номенклатура.ЦеноваяГруппа = ЦеноваяГруппаСсылка;
Номенклатура.НаименованиеПолное = Номенклатура.Наименование;
Если Не ПустаяСтрока(Категория.description) Тогда
Номенклатура.Описание = Категория.description;
КонецЕсли;
Номенклатура.ПроизводительИмпортерКонтрагент = КонтрагентАУВИКС;
Номенклатура.Артикул = Артикул;
// Номенклатура.ПрослеживаемыйТовар = Булево(Число(СтрЗаменить(ЗначениеСвойстваПозиции("Маркировка", Категория.id, ТаблицаПараметров),"""", "")));
// Номенклатура.КодТНВЭД = ЗначениеСвойстваПозиции("КодТНВЭД", Категория.id, ТаблицаПараметров);
Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.НайтиПоНаименованию("20%");
// Марка номенклатуры
Бренд = ЗначениеСвойстваПозиции("Бренд", Категория.id, ТаблицаПараметров);
МаркаСсылка = Справочники.Марки.НайтиПоНаименованию(Бренд);
Если МаркаСсылка = Справочники.Марки.ПустаяСсылка() Тогда
МаркаОбъект = Справочники.Марки.СоздатьЭлемент();
МаркаОбъект.Наименование = Бренд;
МаркаОбъект.Записать();
МаркаСсылка = МаркаОбъект.Ссылка;
КонецЕсли;
Номенклатура.Марка = МаркаСсылка;
Страна = ЗначениеСвойстваПозиции("Страна_производитель", Категория.id, ТаблицаПараметров);
СтранаСсылка = Справочники.СтраныМира.НайтиПоНаименованию(ВРЕГ(Страна));
Номенклатура.СтранаПроисхождения = СтранаСсылка;
// Вес
Вес = ЗначениеСвойстваПозиции("Вес", Категория.id, ТаблицаПараметров);
Если Не ПустаяСтрока(Вес) Тогда
Если СтрНайти(Вес, "кг") > 0 Тогда
Вес = СтрЗаменить(Вес, "кг", "");
Множитель = 1;
Вес = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Вес);
ИначеЕсли СтрНайти(Вес, "г") > 0 Тогда
Вес = СтрЗаменить(Вес, "г", "");
Множитель = 0.001;
Вес = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Вес);
Иначе
Множитель = 0.001;
Вес = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Вес);
КонецЕсли;
Номенклатура.ВесИспользовать = Истина;
Номенклатура.ВесЕдиницаИзмерения = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию("Вес");
Номенклатура.ВесЧислитель = Число(Вес) * Множитель;
Номенклатура.ВесЗнаменатель = 1;
КонецЕсли;
Номенклатура.ВидНоменклатуры = РодительВид;
Номенклатура.Родитель = РодительНоменклатура;
Номенклатура.ТипНоменклатуры = РодительВид.ТипНоменклатуры;
Номенклатура.ИспользованиеХарактеристик = РодительВид.ИспользованиеХарактеристик;
Номенклатура.ИспользоватьУпаковки = РодительВид.ИспользоватьУпаковки;
Номенклатура.НаборУпаковок = РодительВид.НаборУпаковок;
Номенклатура.ВариантОформленияПродажи = РодительВид.ВариантОформленияПродажи;
Номенклатура.ГруппаДоступа = РодительВид.ГруппаДоступа;
Номенклатура.ЕдиницаИзмерения = РодительВид.ЕдиницаИзмерения;
// Спецификация
Номенклатура.Спецификация.Очистить();
Для Каждого ДопРеквизит Из МассивДопРеквизитов Цикл
ЗначениеСпецификации = ЗначениеСвойстваПозиции(ДопРеквизит ,Категория.id, ТаблицаПараметров);
Если Не ПустаяСтрока(ЗначениеСпецификации) Тогда
СтрокаСпецификации = Номенклатура.Спецификация.Добавить();
СтрокаСпецификации.Свойство = ДопРеквизит;
СтрокаСпецификации.Значение = ЗначениеСпецификации;
КонецЕсли;
КонецЦикла;
// Дополнительные реквизиты
Номенклатура.ДополнительныеРеквизиты.Очистить();
Для Каждого СтрокаДопРеквизитов Из РодительВид.НаборСвойств.ДополнительныеРеквизиты Цикл
СтрокаНоменклатуры = Номенклатура.ДополнительныеРеквизиты.Добавить();
СтрокаНоменклатуры.Свойство = СтрокаДопРеквизитов.Свойство;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Свойство", СтрокаНоменклатуры.Свойство);
ИдКолонки = СтрокаНоменклатуры.Свойство.Б_Идентификатор;
ИндексКолонки = Число(ПРАВ(ИдКолонки, СтрДлина(ИдКолонки) - СтрНайти(ИдКолонки, "param_bl") - 7));
ИмяКолонки = МассивДопРеквизитов[ИндексКолонки];
Запрос.УстановитьПараметр("Наименование", ЗначениеСвойстваПозиции(ИмяКолонки ,Категория.id, ТаблицаПараметров));
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ЗначенияСвойствОбъектов.Ссылка КАК Ссылка
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Владелец = &Свойство
| И ЗначенияСвойствОбъектов.Наименование = &Наименование";
Если ПустаяСтрока(ЗначениеСвойстваПозиции(ИмяКолонки ,Категория.id, ТаблицаПараметров)) Тогда
СтрокаНоменклатуры.Значение = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка();
Продолжить;
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
СтрокаНоменклатуры.Значение = Выборка.Ссылка;
КонецЦикла;
Номенклатура.Записать();
Если НЕ ПустаяСтрока(Категория.picture) И ЗагружатьКартинку Тогда
Если ТипЗнч(Категория.picture) <> Тип("СписокXDTO") Тогда
УстановитьКартинку(Номенклатура, Категория.picture);
Иначе
УстановитьКартинку(Номенклатура, Категория.picture[0]);
КонецЕсли;
Номенклатура.Записать();
КонецЕсли;
Если НоваяПозиция Тогда
МассивДобавленныхПозиций.Добавить(Номенклатура.Ссылка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СоздатьПозицииАналитика(Позиции, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Мебель для библиотек", Истина).ПолучитьОбъект();
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Аналитика", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("Аналитика", Истина);
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "6330082683");
Для Каждого Категория Из Позиции Цикл
Если ТипЗнч(Категория.categoryId) <> Тип("СписокXDTO") Тогда
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.categoryId + "cat_an", КорневойЭлемент);
categoryId = Категория.categoryId;
Иначе
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.categoryId[0] + "cat_an", КорневойЭлемент);
categoryId = Категория.categoryId[0];
КонецЕсли;
Если ТекущийРодительВид = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ТекущийРодительВид.ЭтоГруппа Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(ВидОбъект, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
ВидОбъект.Наименование = ТекущийРодительВид.Наименование;
ВидОбъект.Родитель = ТекущийРодительВид.Родитель;
ВидОбъект.Б_Идентификатор = ТекущийРодительВид.Б_Идентификатор;
ТекущийРодительВидОбъект = ТекущийРодительВид.ПолучитьОбъект();
ТекущийРодительВидОбъект.Удалить();
ВидОбъект.Записать();
РодительВид = ВидОбъект.Ссылка;
Иначе
РодительВид = ТекущийРодительВид;
КонецЕсли;
НовыйВидНоменклатуры = РодительВид.ПолучитьОбъект();
//Если Категория.Свойства().Получить("vendorCode") <> Неопределено Тогда
//
// НоменклатураСсылка = НоменклатураБМПоАртикулу(Категория.vendorCode);
//
//КонецЕсли;
//
//Если НоменклатураСсылка = Неопределено Тогда
НоменклатураСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "pos_an", КорневойЭлементНоменклатуры);
//КонецЕсли;
ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(РодительВид.Наименование);
Если ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда
ЦеноваяГруппа = Справочники.ЦеновыеГруппы.СоздатьЭлемент();
ЦеноваяГруппа.Наименование = РодительВид.Наименование;
ЦеноваяГруппа.Записать();
ЦеноваяГруппаСсылка = ЦеноваяГруппа.Ссылка;
КонецЕсли;
МассивАртикуловПоставщика.Добавить(Категория.id + "pos_an");
Если НоменклатураСсылка = Неопределено Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяПозиция = Истина;
ЗагружатьКартинку = Истина;
Иначе
ЗагружатьКартинку = Ложь;
НоваяПозиция = Ложь;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
// ЗагружатьКартинку = Истина;
Номенклатура.Наименование = Категория.name + " " + Категория.id;
Номенклатура.НаименованиеПолное = Номенклатура.Наименование;
Номенклатура.Б_Идентификатор = Категория.id + "pos_an";
Номенклатура.ЦеноваяГруппа = ЦеноваяГруппаСсылка;
Если Категория.Свойства().Получить("description") <> Неопределено Тогда
Если Не ПустаяСтрока(Категория.description) Тогда
Номенклатура.Описание = Категория.description;
КонецЕсли;
КонецЕсли;
Номенклатура.ПроизводительИмпортерКонтрагент = КонтрагентАУВИКС;
Если Категория.Свойства().Получить("vendorCode") <> Неопределено Тогда
Номенклатура.Артикул = Категория.vendorCode;
КонецЕсли;
Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.НайтиПоНаименованию("20%");
// Вес
Если Категория.Свойства().Получить("weight") <> Неопределено Тогда
Вес = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Категория.weight);
Номенклатура.ВесИспользовать = Истина;
Номенклатура.ВесЕдиницаИзмерения = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию("Вес");
Номенклатура.ВесЧислитель = Вес;
Номенклатура.ВесЗнаменатель = 1;
КонецЕсли;
Номенклатура.ВидНоменклатуры = РодительВид;
Номенклатура.Родитель = РодительНоменклатура;
Номенклатура.ТипНоменклатуры = РодительВид.ТипНоменклатуры;
Номенклатура.ИспользованиеХарактеристик = РодительВид.ИспользованиеХарактеристик;
Номенклатура.ИспользоватьУпаковки = РодительВид.ИспользоватьУпаковки;
Номенклатура.НаборУпаковок = РодительВид.НаборУпаковок;
Номенклатура.ВариантОформленияПродажи = РодительВид.ВариантОформленияПродажи;
Номенклатура.ГруппаДоступа = РодительВид.ГруппаДоступа;
Номенклатура.ЕдиницаИзмерения = РодительВид.ЕдиницаИзмерения;
Попытка
Номенклатура.Записать();
Исключение
Продолжить;
КонецПопытки;
Если Категория.Свойства().Получить("picture") <> Неопределено Тогда
Если НЕ ПустаяСтрока(Категория.picture) И ЗагружатьКартинку Тогда
Если ТипЗнч(Категория.picture) <> Тип("СписокXDTO") Тогда
УстановитьКартинку(Номенклатура, Категория.picture);
Иначе
УстановитьКартинку(Номенклатура, Категория.picture[0]);
КонецЕсли;
Номенклатура.Записать();
КонецЕсли;
КонецЕсли;
Если НоваяПозиция Тогда
МассивДобавленныхПозиций.Добавить(Номенклатура.Ссылка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СоздатьВидыГруппыНоменклатуры(Категории, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Шкафы", Истина).ПолучитьОбъект();
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("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, ВидОбъект.Ссылка, ГруппаОбъект.Ссылка, Неопределено, Ложь, МассивДобавленныхПозиций, МассивАртикуловПоставщика);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СоздатьВидыГруппыНоменклатурыБоллМаркет(Категории, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Мебель для библиотек", Истина).ПолучитьОбъект();
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("BallMarket", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("BallMarket", Истина);
МассивСтопСлов = Новый Массив;
МассивСтопСлов.Добавить("экипировка");
МассивСтопСлов.Добавить("новинки");
МассивСтопСлов.Добавить("распродажа");
МассивСтопСлов.Добавить("обувь");
МассивСтопИд = Новый Массив;
Для Каждого Категория Из Категории.categories.category Цикл
Отказ = Ложь;
Наименование = Категория.Последовательность().ПолучитьТекст(0);
Для Каждого СтопСлово Из МассивСтопСлов Цикл
Если СтрНайти(ВРЕГ(Наименование), ВРЕГ(СтопСлово)) > 0 Тогда
МассивСтопИд.Добавить(Категория.id);
Отказ = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Отказ Тогда
Продолжить;
КонецЕсли;
Если Категория.Свойства().Получить("parentId") <> Неопределено Тогда
Если МассивСтопИд.Найти(Категория.parentId) <> Неопределено Тогда
МассивСтопИд.Добавить(Категория.id);
Продолжить;
КонецЕсли;
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.parentId + "cat_bl", КорневойЭлемент);
Если Не ТекущийРодительВид.ЭтоГруппа Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьГруппу();
ВидОбъект.Наименование = ТекущийРодительВид.Наименование;
ВидОбъект.Родитель = ТекущийРодительВид.Родитель;
ВидОбъект.Б_Идентификатор = ТекущийРодительВид.Б_Идентификатор;
ТекущийРодительВидОбъект = ТекущийРодительВид.ПолучитьОбъект();
ТекущийРодительВидОбъект.Удалить();
ВидОбъект.Записать();
ТекущийРодительВид = ВидОбъект.Ссылка;
КонецЕсли;
Иначе
ТекущийРодительВид = КорневойЭлемент;
КонецЕсли;
ВидСсылка = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.id + "cat_bl", ТекущийРодительВид);
ГруппаСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "cat_bl", КорневойЭлементНоменклатуры);
Если ТекущийРодительВид.Уровень() < 3 Тогда
Если ВидСсылка = Неопределено Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьГруппу();
Иначе
ВидОбъект = ВидСсылка.ПолучитьОбъект();
КонецЕсли;
Иначе // Это элемент
Если ВидСсылка = Неопределено Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
Иначе
ВидОбъект = ВидСсылка.ПолучитьОбъект();
КонецЕсли;
ЗаполнитьЗначенияСвойств(ВидОбъект, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
КонецЕсли;
Если ГруппаСсылка = Неопределено Тогда
ГруппаОбъект = Справочники.Номенклатура.СоздатьГруппу();
Иначе
ГруппаОбъект = ГруппаСсылка.ПолучитьОбъект();
КонецЕсли;
ВидОбъект.Родитель = ТекущийРодительВид;
ГруппаОбъект.Родитель = КорневойЭлементНоменклатуры;
ВидОбъект.Б_Идентификатор = Категория.id + "cat_bl";
ВидОбъект.Наименование = Наименование + " BallMarket";
ВидОбъект.Записать();
ГруппаОбъект.Б_Идентификатор = Категория.id + "cat_bl";
ГруппаОбъект.Наименование = Наименование + " " + XMLСтрока(Категория.id);
ГруппаОбъект.Записать();
КонецЦикла;
КонецПроцедуры
Процедура СоздатьВидыГруппыНоменклатурыАналитика(Категории, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Аналитика", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("Аналитика", Истина);
Для Каждого Категория Из Категории.categories.category Цикл
Если Категория.id = "531" Тогда
Продолжить;
КонецЕсли;
Наименование = Категория.Последовательность().ПолучитьТекст(0);
Если Категория.Свойства().Получить("parentId") <> Неопределено Тогда
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.parentId + "cat_an", КорневойЭлемент);
Если Не ТекущийРодительВид.ЭтоГруппа Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьГруппу();
ВидОбъект.Наименование = ТекущийРодительВид.Наименование;
ВидОбъект.Родитель = ТекущийРодительВид.Родитель;
ВидОбъект.Б_Идентификатор = ТекущийРодительВид.Б_Идентификатор;
ТекущийРодительВидОбъект = ТекущийРодительВид.ПолучитьОбъект();
ТекущийРодительВидОбъект.Удалить();
ВидОбъект.Записать();
ТекущийРодительВид = ВидОбъект.Ссылка;
КонецЕсли;
Иначе
ТекущийРодительВид = КорневойЭлемент;
КонецЕсли;
ВидСсылка = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.id + "cat_an", ТекущийРодительВид);
ГруппаСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "cat_an", КорневойЭлементНоменклатуры);
Если ВидСсылка = Неопределено Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьГруппу();
Иначе
ВидОбъект = ВидСсылка.ПолучитьОбъект();
КонецЕсли;
Если ГруппаСсылка = Неопределено Тогда
ГруппаОбъект = Справочники.Номенклатура.СоздатьГруппу();
Иначе
ГруппаОбъект = ГруппаСсылка.ПолучитьОбъект();
КонецЕсли;
ВидОбъект.Родитель = ТекущийРодительВид;
ГруппаОбъект.Родитель = КорневойЭлементНоменклатуры;
ВидОбъект.Б_Идентификатор = Категория.id + "cat_an";
ВидОбъект.Наименование = Наименование + " Аналитика";
ВидОбъект.Записать();
ГруппаОбъект.Б_Идентификатор = Категория.id + "cat_an";
ГруппаОбъект.Наименование = Наименование + " " + XMLСтрока(Категория.id);
ГруппаОбъект.Записать();
КонецЦикла;
КонецПроцедуры
Процедура СоздатьВидыГруппыНоменклатурыПищевыеТехнологии(Категории, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Весы", Истина).ПолучитьОбъект();
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Пищевые Технологии", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("Пищевые Технологии", Истина);
МассивСтопСлов = Новый Массив;
МассивСтопСлов.Добавить("н0000030461");
МассивСтопСлов.Добавить("н0000116794");
МассивСтопИд = Новый Массив;
Для Каждого Категория Из Категории.categories.category Цикл
Отказ = Истина;
Если Категория.Свойства().Получить("parentId") <> Неопределено Тогда
Если МассивСтопСлов.Найти(Категория.parentId) <> Неопределено Тогда
МассивСтопСлов.Добавить(Категория.id);
Отказ = Ложь;
КонецЕсли;
Если МассивСтопСлов.Найти(Категория.id) <> Неопределено Тогда
Отказ = Ложь;
КонецЕсли;
КонецЕсли;
Если Отказ Тогда
Продолжить;
КонецЕсли;
Попытка
Наименование = Категория.Последовательность().ПолучитьТекст(0);
Исключение
Продолжить;
КонецПопытки;
ВидСсылка = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.id + "cat_pt", КорневойЭлемент);
ГруппаСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "cat_pt", КорневойЭлементНоменклатуры);
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.parentId + "cat_pt", КорневойЭлемент);
Если ТекущийРодительВид = Неопределено Тогда
ТекущийРодительВид = КорневойЭлемент;
КонецЕсли;
Если ВидСсылка = Неопределено Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьГруппу();
Иначе
ВидОбъект = ВидСсылка.ПолучитьОбъект();
КонецЕсли;
Если ГруппаСсылка = Неопределено Тогда
ГруппаОбъект = Справочники.Номенклатура.СоздатьГруппу();
Иначе
ГруппаОбъект = ГруппаСсылка.ПолучитьОбъект();
КонецЕсли;
Если Не ТекущийРодительВид.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
ВидОбъект.Родитель = ТекущийРодительВид;
ГруппаОбъект.Родитель = КорневойЭлементНоменклатуры;
ВидОбъект.Б_Идентификатор = Категория.id + "cat_pt";
ВидОбъект.Наименование = Наименование + " Пищевые Технологии";
ВидОбъект.Записать();
ГруппаОбъект.Б_Идентификатор = Категория.id + "cat_pt";
ГруппаОбъект.Наименование = Наименование + " " + XMLСтрока(Категория.id);
ГруппаОбъект.Записать();
КонецЦикла;
КонецПроцедуры
Процедура СоздатьПозицииПищевыеТехнологии(Позиции, РодительВид = Неопределено, РодительНоменклатура = Неопределено, ДокЦена = Неопределено, УстановкаЦен = Ложь, МассивДобавленныхПозиций = Неопределено, МассивАртикуловПоставщика = Неопределено);
ТипичныйВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Мебель для библиотек", Истина).ПолучитьОбъект();
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Пищевые Технологии", Истина);
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "2309081489");
МассивОбработанныхВидовНоменклатуры = Новый Массив;
Для Каждого Категория Из Позиции Цикл
Если ТипЗнч(Категория.categoryId) <> Тип("СписокXDTO") Тогда
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.categoryId + "cat_pt", КорневойЭлемент);
categoryId = Категория.categoryId;
Иначе
ТекущийРодительВид = ВидНоменклатурыПРОМЕТПоАртикулу(Категория.categoryId[0] + "cat_pt", КорневойЭлемент);
categoryId = Категория.categoryId[0];
КонецЕсли;
Если ТекущийРодительВид = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ТекущийРодительВид.ЭтоГруппа Тогда
ВидОбъект = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(ВидОбъект, ТипичныйВидНоменклатуры, , "Владелец, Ссылка, НаборСвойств, НаборСвойствСерий");
ВидОбъект.Наименование = ТекущийРодительВид.Наименование;
ВидОбъект.Родитель = ТекущийРодительВид.Родитель;
ВидОбъект.Б_Идентификатор = ТекущийРодительВид.Б_Идентификатор;
ТекущийРодительВидОбъект = ТекущийРодительВид.ПолучитьОбъект();
ТекущийРодительВидОбъект.Удалить();
ВидОбъект.Записать();
РодительВид = ВидОбъект.Ссылка;
Иначе
РодительВид = ТекущийРодительВид;
КонецЕсли;
Если МассивОбработанныхВидовНоменклатуры.Найти(РодительВид) = Неопределено Тогда
НовыйВидНоменклатуры = РодительВид.ПолучитьОбъект();
НовыйВидНоменклатуры.РеквизитыБыстрогоОтбораНоменклатуры.Очистить();
БыстрыйОтбор = НовыйВидНоменклатуры.РеквизитыБыстрогоОтбораНоменклатуры.Добавить();
БыстрыйОтбор.ИмяРеквизита = "Марка";
БыстрыйОтбор.ПредставлениеРеквизита ="Марка (бренд)";
БыстрыйОтбор.Используется = Истина;
БыстрыйОтбор.ЭтоДопРеквизит = Ложь;
БыстрыйОтбор = НовыйВидНоменклатуры.РеквизитыБыстрогоОтбораНоменклатуры.Добавить();
БыстрыйОтбор.ИмяРеквизита = "СтранаПроисхождения";
БыстрыйОтбор.ПредставлениеРеквизита ="Страна происхождения";
БыстрыйОтбор.Используется = Истина;
БыстрыйОтбор.ЭтоДопРеквизит = Ложь;
НовыйВидНоменклатуры.Записать();
РодительВид = НовыйВидНоменклатуры.Ссылка;
МассивОбработанныхВидовНоменклатуры.Добавить(РодительВид);
КонецЕсли;
НоменклатураСсылка = Неопределено;
Артикул = Категория.vendorCode;
Если ТипЗнч(Артикул) = Тип("Строка") Тогда
НоменклатураСсылка = НоменклатураПТПоАртикулу(Артикул);
КонецЕсли;
Если НоменклатураСсылка = Неопределено Тогда
НоменклатураСсылка = НоменклатураПРОМЕТПоАртикулу(Категория.id + "pos_pt", РодительНоменклатура);
КонецЕсли;
ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.НайтиПоНаименованию(РодительВид.Наименование);
Если ЦеноваяГруппаСсылка = Справочники.ЦеновыеГруппы.ПустаяСсылка() Тогда
ЦеноваяГруппа = Справочники.ЦеновыеГруппы.СоздатьЭлемент();
ЦеноваяГруппа.Наименование = РодительВид.Наименование;
ЦеноваяГруппа.Записать();
ЦеноваяГруппаСсылка = ЦеноваяГруппа.Ссылка;
КонецЕсли;
МассивАртикуловПоставщика.Добавить(Категория.id + "pos_pt");
Если НоменклатураСсылка = Неопределено Тогда
Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяПозиция = Истина;
ЗагружатьКартинку = Истина;
Иначе
ЗагружатьКартинку = Ложь;
НоваяПозиция = Ложь;
Номенклатура = НоменклатураСсылка.ПолучитьОбъект();
КонецЕсли;
Номенклатура.Наименование = Категория.name + " " + Категория.id;
Номенклатура.Б_Идентификатор = Категория.id + "pos_pt";
Номенклатура.ЦеноваяГруппа = ЦеноваяГруппаСсылка;
Номенклатура.НаименованиеПолное = Номенклатура.Наименование;
Попытка
Если Не ПустаяСтрока(Категория.description) Тогда
Номенклатура.Описание = Категория.description;
КонецЕсли;
Исключение
Конецпопытки;
Номенклатура.ПроизводительИмпортерКонтрагент = КонтрагентАУВИКС;
Номенклатура.Артикул = Артикул;
// Номенклатура.ПрослеживаемыйТовар = Булево(Число(СтрЗаменить(ЗначениеСвойстваПозиции("Маркировка", Категория.id, ТаблицаПараметров),"""", "")));
// Номенклатура.КодТНВЭД = ЗначениеСвойстваПозиции("КодТНВЭД", Категория.id, ТаблицаПараметров);
Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.НайтиПоНаименованию("20%");
// Марка номенклатуры
Если Категория.Свойства().Получить("vendor") <> Неопределено Тогда
Бренд = Категория.vendor;
Если ТипЗнч(Бренд) = Тип("Строка") Тогда
МаркаСсылка = Справочники.Марки.НайтиПоНаименованию(Бренд);
Если МаркаСсылка = Справочники.Марки.ПустаяСсылка() Тогда
МаркаОбъект = Справочники.Марки.СоздатьЭлемент();
МаркаОбъект.Наименование = Бренд;
МаркаОбъект.Записать();
МаркаСсылка = МаркаОбъект.Ссылка;
КонецЕсли;
Номенклатура.Марка = МаркаСсылка;
КонецЕсли;
КонецЕсли;
Если Категория.Свойства().Получить("country_of_origin") <> Неопределено Тогда
Страна = Категория.country_of_origin;
СтранаСсылка = Справочники.СтраныМира.НайтиПоНаименованию(ВРЕГ(Страна));
Номенклатура.СтранаПроисхождения = СтранаСсылка;
КонецЕсли;
// Вес
Попытка
Если Категория.Свойства().Получить("weight") <> Неопределено Тогда
Вес = Категория.weight;
Номенклатура.ВесИспользовать = Истина;
Номенклатура.ВесЕдиницаИзмерения = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию("Вес");
Номенклатура.ВесЧислитель = Число(Вес);
Номенклатура.ВесМожноУказыватьВДокументах = Истина;
Номенклатура.ВесЗнаменатель = 1;
КонецЕсли;
Исключение
КонецПопытки;
Номенклатура.ВидНоменклатуры = РодительВид;
Номенклатура.Родитель = РодительНоменклатура;
Номенклатура.ТипНоменклатуры = РодительВид.ТипНоменклатуры;
Номенклатура.ИспользованиеХарактеристик = РодительВид.ИспользованиеХарактеристик;
Номенклатура.ИспользоватьУпаковки = РодительВид.ИспользоватьУпаковки;
Номенклатура.НаборУпаковок = РодительВид.НаборУпаковок;
Номенклатура.ВариантОформленияПродажи = РодительВид.ВариантОформленияПродажи;
Номенклатура.ГруппаДоступа = РодительВид.ГруппаДоступа;
Номенклатура.ЕдиницаИзмерения = РодительВид.ЕдиницаИзмерения;
// Спецификация
Номенклатура.Спецификация.Очистить();
Номенклатура.Записать();
Попытка
Если НЕ ПустаяСтрока(Категория.picture) И ЗагружатьКартинку Тогда
Если ТипЗнч(Категория.picture) <> Тип("СписокXDTO") Тогда
УстановитьКартинку(Номенклатура, Категория.picture);
Иначе
УстановитьКартинку(Номенклатура, Категория.picture[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();
ТаблицаПараметров = СтруктураПараметровБоллМаркет(СтруктураКаталога.shop.offers.offer);
ДокЦена=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ДокЦена.Дата=ТекущаяДата();
ДокЦена.Согласован = Истина;
ДокЦена.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
ДокЦена.Ответственный = Пользователи.ТекущийПользователь();
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоРеквизиту("Идентификатор", "BallMarketВход");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоРеквизиту("Идентификатор", "BallMarketЦенаОптоваяПродажная");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
Для Каждого Запись ИЗ СтруктураКаталога.shop.offers.offer Цикл
Артикул = ЗначениеСвойстваПозиции("Артикул", Запись.id, ТаблицаПараметров);
НоменклатураСсылка = НоменклатураБМПоАртикулу(Артикул);
Если НоменклатураСсылка = Неопределено Тогда
Продолжить;
КонецЕсли;
Цена = Число(ЗначениеСвойстваПозиции("Оптовая__руб_", Запись.id, ТаблицаПараметров));
Для Каждого ВидЦен Из ДокЦена.ВидыЦен Цикл
НоваяСтрока=ДокЦена.Товары.Добавить();
НоваяСтрока.Номенклатура = НоменклатураСсылка;
НоваяСтрока.ВидЦены=ВидЦен.ВидЦены;
НоваяСтрока.Цена= Цена;
Если ВидЦен.ВидЦены.Идентификатор = "BallMarketВход" Тогда
НоваяСтрока.Цена= Цена;
КонецЕсли;
Если ВидЦен.ВидЦены.Идентификатор = "BallMarketЦенаОптоваяПродажная" Тогда
НоваяСтрока.Цена= Цена * 1.5;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТаблицаСвернуть = ДокЦена.Товары.Выгрузить();
ТаблицаСвернуть.Свернуть("Номенклатура, ВидЦены", "Цена");
ДокЦена.Товары.Загрузить(ТаблицаСвернуть);
ДокЦена.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
Процедура ЗагрузитьОбновитьЦеныАналитика(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
СтруктураКаталога = СтруктураКаталогаАналитикаXML();
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("12 Спортивное снаряжение и оборудование", Истина);
ДокЦена=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ДокЦена.Дата=ТекущаяДата();
ДокЦена.Согласован = Истина;
ДокЦена.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
ДокЦена.Ответственный = Пользователи.ТекущийПользователь();
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоРеквизиту("Идентификатор", "АналитикаВход");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоРеквизиту("Идентификатор", "АналитикаЦенаОптоваяПродажная");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
Для Каждого Запись ИЗ СтруктураКаталога.shop.offers.offer Цикл
НоменклатураСсылка = НоменклатураПРОМЕТПоАртикулу(Запись.id + "pos_an", КорневойЭлементНоменклатуры);
Если НоменклатураСсылка = Неопределено Тогда
Продолжить;
КонецЕсли;
Цена = Число(Запись.price);
Для Каждого ВидЦен Из ДокЦена.ВидыЦен Цикл
НоваяСтрока=ДокЦена.Товары.Добавить();
НоваяСтрока.Номенклатура = НоменклатураСсылка;
НоваяСтрока.ВидЦены=ВидЦен.ВидЦены;
НоваяСтрока.Цена= Цена;
Если ВидЦен.ВидЦены.Идентификатор = "АналитикаВход" Тогда
НоваяСтрока.Цена= Цена;
КонецЕсли;
Если ВидЦен.ВидЦены.Идентификатор = "АнилитикаЦенаОптоваяПродажная" Тогда
НоваяСтрока.Цена= Цена * 1.5;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТаблицаСвернуть = ДокЦена.Товары.Выгрузить();
ТаблицаСвернуть.Свернуть("Номенклатура, ВидЦены", "Цена");
ДокЦена.Товары.Загрузить(ТаблицаСвернуть);
ДокЦена.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
Процедура ЗагрузитьОбновитьЦеныПищевыеТехнологии(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
СтруктураКаталога = СтруктураКаталогаПищевыеТехнологииXML();
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("Пищевые технологии", Истина);
ДокЦена=Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
ДокЦена.Дата=ТекущаяДата();
ДокЦена.Согласован = Истина;
ДокЦена.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
ДокЦена.Ответственный = Пользователи.ТекущийПользователь();
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоРеквизиту("Идентификатор", "ПищевыеТехнологииВход");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
ВидЦеныЗак = Справочники.ВидыЦен.НайтиПоРеквизиту("Идентификатор", "ПищевыеТехнологииОптоваяПродажная");
ТабЧастьВидЦены = ДокЦена.ВидыЦен.Добавить();
ТабЧастьВидЦены.ВидЦены=ВидЦеныЗак;
Для Каждого Запись ИЗ СтруктураКаталога.shop.offers.offer Цикл
НоменклатураСсылка = НоменклатураПРОМЕТПоАртикулу(Запись.id + "pos_pt", КорневойЭлементНоменклатуры);
Если НоменклатураСсылка = Неопределено Тогда
Продолжить;
КонецЕсли;
Цена = Число(Запись.price);
Для Каждого ВидЦен Из ДокЦена.ВидыЦен Цикл
НоваяСтрока=ДокЦена.Товары.Добавить();
НоваяСтрока.Номенклатура = НоменклатураСсылка;
НоваяСтрока.ВидЦены=ВидЦен.ВидЦены;
НоваяСтрока.Цена= Цена;
Если ВидЦен.ВидЦены.Идентификатор = "ПищевыеТехнологииВход" Тогда
НоваяСтрока.Цена= Цена;
КонецЕсли;
Если ВидЦен.ВидЦены.Идентификатор = "ПищевыеТехнологииОптоваяПродажная" Тогда
НоваяСтрока.Цена= Цена * 1.4;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТаблицаСвернуть = ДокЦена.Товары.Выгрузить();
ТаблицаСвернуть.Свернуть("Номенклатура, ВидЦены", "Цена");
ДокЦена.Товары.Загрузить(ТаблицаСвернуть);
ДокЦена.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
#КонецОбласти
#Область Роботы
Процедура ЗагрузитьОбновитьНоменклатуруСтроникумРобот(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
ЗагрузитьОбновитьНоменклатуруСтроникум();
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруПромет(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
СтруктураКаталога = СтруктураКаталогаПрометXML();
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "7751009218");
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("06 Металлическая мебель", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("ПРОМЕТ", Истина);
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
СоздатьВидыГруппыНоменклатуры(СтруктураКаталога.section, КорневойЭлемент, КорневойЭлементНоменклатуры, Неопределено, Ложь, МассивДобавленныхПозиций, МассивАртикуловПоставщика);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&Корень)
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Запрос.УстановитьПараметр("Корень", КорневойЭлемент);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(КонтрагентАУВИКС);
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
ПозицииВБазе = Запрос.Выполнить().Выгрузить();
МассивВыбывшихПозиций = Новый Массив;
Для Каждого ПозицияБаза Из ПозицииВБазе ЦИкл
Если МассивАртикуловПоставщика.Найти(ПозицияБаза.Артикул) = Неопределено Тогда
МассивВыбывшихПозиций.Добавить(ПозицияБаза.Ссылка);
КонецЕсли;
КонецЦикла;
ЗаписатьНаборИстории(КонтрагентАУВИКС, МассивВыбывшихПозиций, МассивДобавленныхПозиций);
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("Успешно обновлена номенклатура ПРОМЕТ", УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Номенклатура, "");
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруАУВИКС(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
Брэнды = БрэндыАУВИКС();
МассивКатегорий = МассивКатегорийАУВИКС();
Для Каждого Категория Из МассивКатегорий Цикл
ЗагрузитьСоздатьВидНоменклатурыПоКатегорииАУВИКС(Категория, Брэнды);
ВызватьПаузу(60000);
ЗагрузитьОбновитьНоменклатуруАУВИКСПоНомеруКатегории(Категория, Брэнды);
ВызватьПаузу(60000);
КонецЦикла;
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруБоллМаркет(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
СтруктураКаталога = СтруктураКаталогаБоллМаркетXML();
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "7719434930");
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("BallMarket", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("BallMarket", Истина);
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
// СоздатьВидыГруппыНоменклатурыБоллМаркет(СтруктураКаталога.shop, КорневойЭлемент, КорневойЭлементНоменклатуры);
СоздатьПозицииБоллМаркет(СтруктураКаталога.shop.offers.offer, , КорневойЭлементНоменклатуры, , , МассивДобавленныхПозиций, МассивАртикуловПоставщика);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Б_Идентификатор КАК Б_Идентификатор
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&Корень)
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Запрос.УстановитьПараметр("Корень", КорневойЭлемент);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(КонтрагентАУВИКС);
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
ПозицииВБазе = Запрос.Выполнить().Выгрузить();
МассивВыбывшихПозиций = Новый Массив;
Для Каждого ПозицияБаза Из ПозицииВБазе ЦИкл
Если МассивАртикуловПоставщика.Найти(ПозицияБаза.Б_Идентификатор) = Неопределено Тогда
МассивВыбывшихПозиций.Добавить(ПозицияБаза.Ссылка);
КонецЕсли;
КонецЦикла;
ЗаписатьНаборИстории(КонтрагентАУВИКС, МассивВыбывшихПозиций, МассивДобавленныхПозиций);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КорневойЭлемент", КорневойЭлемент);
Запрос.Текст = "ВЫБРАТЬ
| ВидыНоменклатуры.Ссылка КАК Ссылка,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК КоличествоПозиций
|ИЗ
| Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ВидыНоменклатуры.Ссылка = Номенклатура.ВидНоменклатуры
|ГДЕ
| ВидыНоменклатуры.Ссылка В ИЕРАРХИИ(&КорневойЭлемент)
| И ВидыНоменклатуры.ЭтоГруппа = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| ВидыНоменклатуры.Ссылка
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) = 0";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Ссылка.Наименование = "Архив" Тогда
Продолжить;
КонецЕсли;
обВид = Выборка.Ссылка.ПолучитьОбъект();
обВид.Удалить();
КонецЦикла;
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("Успешно обновлена номенклатура BallMarket", УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Номенклатура, "");
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруАналитика(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
СтруктураКаталога = СтруктураКаталогаАналитикаXML();
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "6330082683");
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Аналитика", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("Аналитика", Истина);
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
// СоздатьВидыГруппыНоменклатурыАналитика(СтруктураКаталога.shop, КорневойЭлемент, КорневойЭлементНоменклатуры);
СоздатьПозицииАналитика(СтруктураКаталога.shop.offers.offer, , КорневойЭлементНоменклатуры, , , МассивДобавленныхПозиций, МассивАртикуловПоставщика);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Б_Идентификатор КАК Б_Идентификатор
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&Корень)
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Запрос.УстановитьПараметр("Корень", КорневойЭлемент);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(КонтрагентАУВИКС);
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
ПозицииВБазе = Запрос.Выполнить().Выгрузить();
МассивВыбывшихПозиций = Новый Массив;
Для Каждого ПозицияБаза Из ПозицииВБазе ЦИкл
Если МассивАртикуловПоставщика.Найти(ПозицияБаза.Б_Идентификатор) = Неопределено Тогда
МассивВыбывшихПозиций.Добавить(ПозицияБаза.Ссылка);
КонецЕсли;
КонецЦикла;
ЗаписатьНаборИстории(КонтрагентАУВИКС, МассивВыбывшихПозиций, МассивДобавленныхПозиций);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КорневойЭлемент", КорневойЭлемент);
Запрос.Текст = "ВЫБРАТЬ
| ВидыНоменклатуры.Ссылка КАК Ссылка,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК КоличествоПозиций
|ИЗ
| Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ВидыНоменклатуры.Ссылка = Номенклатура.ВидНоменклатуры
|ГДЕ
| ВидыНоменклатуры.Ссылка В ИЕРАРХИИ(&КорневойЭлемент)
| И ВидыНоменклатуры.ЭтоГруппа = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| ВидыНоменклатуры.Ссылка
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) = 0";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Ссылка.Наименование = "Архив" Тогда
Продолжить;
КонецЕсли;
обВид = Выборка.Ссылка.ПолучитьОбъект();
обВид.Удалить();
КонецЦикла;
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("Успешно обновлена номенклатура Аналитика", УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Номенклатура, "");
КонецПроцедуры
Процедура ЗагрузитьОбновитьНоменклатуруПищевыеТехнологии(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
СтруктураКаталога = СтруктураКаталогаПищевыеТехнологииXML();
КонтрагентАУВИКС = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "2309081489");
КорневойЭлемент = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Пищевые Технологии", Истина);
КорневойЭлементНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию("Пищевые Технологии", Истина);
МассивДобавленныхПозиций = Новый Массив;
МассивАртикуловПоставщика = Новый Массив;
СоздатьВидыГруппыНоменклатурыПищевыеТехнологии(СтруктураКаталога.shop, КорневойЭлемент, КорневойЭлементНоменклатуры);
СоздатьПозицииПищевыеТехнологии(СтруктураКаталога.shop.offers.offer, , КорневойЭлементНоменклатуры, , , МассивДобавленныхПозиций, МассивАртикуловПоставщика);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Б_Идентификатор КАК Б_Идентификатор
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ВидНоменклатуры В ИЕРАРХИИ(&Корень)
| И Номенклатура.ПроизводительИмпортерКонтрагент В(&МассивКонтрагентов)";
Запрос.УстановитьПараметр("Корень", КорневойЭлемент);
МассивКонтрагентов = Новый Массив;
МассивКонтрагентов.Добавить(КонтрагентАУВИКС);
Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
ПозицииВБазе = Запрос.Выполнить().Выгрузить();
МассивВыбывшихПозиций = Новый Массив;
Для Каждого ПозицияБаза Из ПозицииВБазе ЦИкл
Если МассивАртикуловПоставщика.Найти(ПозицияБаза.Б_Идентификатор) = Неопределено Тогда
МассивВыбывшихПозиций.Добавить(ПозицияБаза.Ссылка);
КонецЕсли;
КонецЦикла;
ЗаписатьНаборИстории(КонтрагентАУВИКС, МассивВыбывшихПозиций, МассивДобавленныхПозиций);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КорневойЭлемент", КорневойЭлемент);
Запрос.Текст = "ВЫБРАТЬ
| ВидыНоменклатуры.Ссылка КАК Ссылка,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК КоличествоПозиций
|ИЗ
| Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО ВидыНоменклатуры.Ссылка = Номенклатура.ВидНоменклатуры
|ГДЕ
| ВидыНоменклатуры.Ссылка В ИЕРАРХИИ(&КорневойЭлемент)
| И ВидыНоменклатуры.ЭтоГруппа = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| ВидыНоменклатуры.Ссылка
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) = 0";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Ссылка.Наименование = "Архив" Тогда
Продолжить;
КонецЕсли;
обВид = Выборка.Ссылка.ПолучитьОбъект();
обВид.Удалить();
КонецЦикла;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КорневойЭлемент", КорневойЭлемент);
Запрос.Текст =
"ВЫБРАТЬ
| ВидыНоменклатуры.Ссылка КАК Ссылка,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВидыНоменклатуры1.Ссылка) КАК Ссылка1
|ИЗ
| Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры1
| ПО ВидыНоменклатуры.Ссылка = ВидыНоменклатуры1.Родитель
|ГДЕ
| ВидыНоменклатуры.ЭтоГруппа
| И ВидыНоменклатуры.Ссылка В ИЕРАРХИИ (&КорневойЭлемент)
|СГРУППИРОВАТЬ ПО
| ВидыНоменклатуры.Ссылка
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВидыНоменклатуры1.Ссылка) = 0";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Ссылка.Наименование = "Архив" Тогда
Продолжить;
КонецЕсли;
обВид = Выборка.Ссылка.ПолучитьОбъект();
обВид.Удалить();
КонецЦикла;
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации("Успешно обновлена номенклатура Пищевые Технологии", УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.Номенклатура, "");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.441
- 1С:Комплексная автоматизация 2, релизы 2.5.21.102, 2.5.21.99