&НаКлиенте
Процедура ВыбратьФайлы(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.МножественныйВыбор=Истина;
Если Диалог.Выбрать() Тогда
Для Каждого ИмяФайла Из Диалог.ВыбранныеФайлы Цикл
ФайлыЗагрузки.Добавить(ИмяФайла);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВсе(Команда)
Для каждого стр из Объект.Товары Цикл
стр.Флаг=Истина;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СнятьВсе(Команда)
Для каждого стр из Объект.Товары Цикл
стр.Флаг=Ложь;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайлов(Команда)
Массив=Новый Массив;
Для каждого Файл из ФайлыЗагрузки Цикл
Архив=Новый ЧтениеZipФайла(Файл.Значение);
Для каждого Эл из Архив Цикл
ФайлCSV=КаталогВременныхФайлов()+Эл.Имя;
Если НайтиФайлы(ФайлCSV).Количество()=0 Тогда
Попытка
Архив.Извлечь(Эл,КаталогВременныхФайлов(),РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
Исключение
КонецПопытки;
КонецЕсли;
Текст = Новый ЧтениеТекста(ФайлCSV, КодировкаТекста.UTF8);
Массив.Добавить(Текст.Прочитать());
КонецЦикла;
КонецЦикла;
Если Массив.Количество()>0 Тогда
Объект.Товары.Очистить();
ЗагрузитьДанныеНаСервере(Массив);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьДанныеНаСервере(Массив)
ТЗ=Объект.Товары.Выгрузить();
Для каждого Эл из Массив Цикл
Для каждого Строка из СтрРазделить(Эл,Символы.ПС) Цикл
Строка=""","+Строка;
Строка=СтрЗаменить(Строка,""",""",
Символы.Таб);
Строка=СтрЗаменить(Строка,""",,""",
Символы.Таб+Символы.Таб);
Строка=СтрЗаменить(Строка,""",,,""",
Символы.Таб+Символы.Таб+Символы.Таб);
Строка=СтрЗаменить(Строка,""",,,,""",
Символы.Таб+Символы.Таб+Символы.Таб+Символы.Таб);
Строка=СтрЗаменить(Строка,""",,,,,""",
Символы.Таб+Символы.Таб+Символы.Таб+Символы.Таб+Символы.Таб);
Данные=СтрРазделить(Строка,Символы.Таб,Истина);
Если Данные.Количество()>10 Тогда
НовСтр=ТЗ.Добавить();
НовСтр.GTIN=Данные[2];
НовСтр.Наименование=Данные[10];
НовСтр.Количество=1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТЗ.Свернуть("GTIN,Наименование","Количество");
ШК=Новый Массив;
Для каждого стр из ТЗ Цикл
Штрихкод=Сред(стр.GTIN,2);
Если СтрДлина(Штрихкод)>6 Тогда
НовСтр=Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр,стр);
НовСтр.Штрихкод=Штрихкод;
ШК.Добавить(Штрихкод);
КонецЕсли;
КонецЦикла;
Запрос=Новый Запрос;
Запрос.УстановитьПараметр("ШК",ШК);
Запрос.Текст="ВЫБРАТЬ
| Штрихкоды.Штрихкод КАК Штрихкод,
| Штрихкоды.Владелец КАК Владелец
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Штрихкод В(&ШК)";
Выборка=Запрос.Выполнить().Выбрать();
Соответствие=Новый Соответствие;
Пока Выборка.Следующий() Цикл
Соответствие.Вставить(Выборка.Штрихкод,Выборка.Владелец);
КонецЦикла;
Для каждого стр из Объект.Товары Цикл
стр.Номенклатура=Соответствие.Получить(стр.Штрихкод);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьНоменклатуру(Команда)
ЭлементыИндикации=Новый Массив;
ЭлементыИндикации.Добавить(Элементы.Инфо);
ЭлементыИндикации.Добавить(Элементы.Индикатор);
ВсегоСтрок=Объект.Товары.Количество();
ПараметрыНоменклатуры=Новый Структура;
ЗаполнитьПараметрыНоменклатуры(ПараметрыНоменклатуры);
Для каждого стр из Объект.Товары Цикл
Если стр.Флаг И НЕ ЗначениеЗаполнено(стр.Номенклатура) Тогда
СоздатьНоменклатуру(ПараметрыНоменклатуры,стр.Наименование,стр.Штрихкод,стр.GTIN,
стр.Номенклатура);
КонецЕсли;
Индикатор=Цел(стр.НомерСтроки/ВсегоСтрок*100);
Инфо=""+xmlстрока(стр.НомерСтроки)+"/"+xmlстрока(ВсегоСтрок)+" "+
стр.Наименование+" "+стр.Штрихкод;
ОбновитьОтображениеДанных(ЭлементыИндикации);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПараметрыНоменклатуры(ПараметрыНоменклатуры)
ПараметрыНоменклатуры.Вставить("ВидНоменклатуры",ВидНоменклатуры);
ПараметрыНоменклатуры.Вставить("ОсобенностьУчета",ВидНоменклатуры.ОсобенностьУчета);
ПараметрыНоменклатуры.Вставить("СтавкаНДС",ВидНоменклатуры.СтавкаНДС);
ПараметрыНоменклатуры.Вставить("ЕдиницаИзмерения",ВидНоменклатуры.ЕдиницаИзмерения);
ПараметрыНоменклатуры.Вставить("Родитель",Группа);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура СоздатьНоменклатуру(ПараметрыНоменклатуры,Наименование,Штрихкод,GTIN,Номенклатура)
Эл=Справочники.Номенклатура.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(Эл,ПараметрыНоменклатуры);
Эл.Наименование=Наименование;
Эл.НаименованиеПолное=Наименование;
Эл.Записать();
Номенклатура=Эл.Ссылка;
Рег=РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
Рег.Владелец=Номенклатура;
Рег.Штрихкод=Штрихкод;
ТипЕАН="Code39";
Если СтрДлина(Штрихкод)=13 Тогда
ТипЕАН="EAN13";
ИначеЕсли СтрДлина(Штрихкод)=8 Тогда
ТипЕАН="EAN8";
КонецЕсли;
Рег.ТипШтрихкода=ПланыВидовХарактеристик.ТипыШтрихкодов[ТипЕАН];
Рег.Записать();
Рег=РегистрыСведений.ОписаниеGTINИС.СоздатьМенеджерЗаписи();
Рег.GTIN=GTIN;
Рег.ВидУпаковки=Перечисления.ВидыУпаковокИС.Потребительская;
Рег.КоличествоПотребительскихУпаковок=1;
Рег.Записать();
КонецПроцедуры