Загрузка данных
&НаСервере
Процедура СоздатьGTINs()
ВыгрузитьРегистрВCSV();
ТестовыйРежим = Истина; // ← поменяйте на Ложь для реальной записи
// 1. Загружаем все существующие GTIN из регистра в массив
ЗапросСущ = Новый Запрос;
ЗапросСущ.Текст = "ВЫБРАТЬ ОписаниеGTINИС.GTIN ИЗ РегистрСведений.ОписаниеGTINИС КАК ОписаниеGTINИС";
РезультатСущ = ЗапросСущ.Выполнить();
СуществующиеGTIN = Новый Массив;
Если РезультатСущ.Пустой() = Ложь Тогда
ВыборкаСущ = РезультатСущ.Выбрать();
Пока ВыборкаСущ.Следующий() Цикл
СуществующиеGTIN.Добавить(ВыборкаСущ.GTIN);
КонецЦикла;
КонецЕсли;
// 2. Запрос: уникальные пары (Владелец, Штрихкод) для EAN13
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Штрихкоды.Владелец КАК Номенклатура,
| Штрихкоды.Штрихкод КАК Штрихкод
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Штрихкод <> """"
| И Штрихкоды.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("Нет штрихкодов, привязанных к характеристикам.");
Возврат;
КонецЕсли;
Выборка = Результат.Выбрать();
НаборЗаписей = РегистрыСведений.ОписаниеGTINИС.СоздатьНаборЗаписей();
КоличествоДобавленных = 0;
СписокДобавляемых = Новый Массив;
ДобавленныеGTIN = Новый Массив; // ← вернули
Пока Выборка.Следующий() Цикл
Штрихкод = СокрЛП(Выборка.Штрихкод);
Если СтрДлина(Штрихкод) <> 13 Тогда
Продолжить;
КонецЕсли;
GTIN = "0" + Штрихкод;
// Проверяем существование в регистре или в текущем наборе
Если СуществующиеGTIN.Найти(GTIN) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Если ДобавленныеGTIN.Найти(GTIN) <> Неопределено Тогда
Продолжить;
КонецЕсли;
// Добавляем запись
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.GTIN = GTIN;
НоваяЗапись.ВидУпаковки = Перечисления.ВидыУпаковокИС.Потребительская;
НоваяЗапись.КоличествоПотребительскихУпаковок = 1;
КоличествоДобавленных = КоличествоДобавленных + 1;
ДобавленныеGTIN.Добавить(GTIN);
// Для CSV-списка
Структура = Новый Структура;
Структура.Вставить("Номенклатура", Выборка.Номенклатура.Наименование);
Структура.Вставить("GTIN", GTIN);
СписокДобавляемых.Добавить(Структура);
КонецЦикла;
// Сохранение списка добавляемых
Если СписокДобавляемых.Количество() > 0 Тогда
СохранитьСписокВCSV(СписокДобавляемых);
КонецЕсли;
// Запись или тест
Если НаборЗаписей.Количество() > 0 Тогда
Если ТестовыйРежим Тогда
Сообщить("*** ТЕСТ: запись отключена. Будет добавлено записей: " + НаборЗаписей.Количество());
Иначе
НаборЗаписей.Записать();
Сообщить("Данные записаны. Добавлено записей: " + НаборЗаписей.Количество());
КонецЕсли;
Иначе
Сообщить("Нет новых записей для добавления.");
КонецЕсли;
Сообщить("========== СТАТИСТИКА ==========");
Сообщить("Добавлено новых записей: " + КоличествоДобавленных);
Сообщить("=================================");
ЗаписьЖурналаРегистрации("Заполнение GTIN", УровеньЖурналаРегистрации.Информация,,
"Тест: " + ?(ТестовыйРежим, "да", "нет") + " | Добавлено: " + КоличествоДобавленных);
КонецПроцедуры
// Остальные процедуры (ВыгрузитьРегистрВCSV, СохранитьСписокВCSV, ВыполнитьНаКлиенте) остаются без изменений.