загрузка из 1с в excel help

1. Jimmik 17.01.20 08:26 Сейчас в теме
Здравствуйте
Нужна помощь
Программированию в 1с еще только учусь, так что не будьте строги
Делаю простую загрузку из excel в 1с в табличную часть
Загрузка работает, все хорошо, но столкнулся с проблемой -
я загружаю номенклатуру по артикул, а артикул может совпадать с разными номенклатурами и из-за этого при загрузке, она загружает первое попавшее (не совсем уверен что он загружает) и вот вопрос, у меня в excel файле есть наименование и артикул, не могу придумать, как мне сделать проверку, что после загрузке артикула, чтобы он еще проверял совпадение по наименованию
То есть загрузил артикул, и если совпадение одно, то он загружает, а если нашел 2 то уже идет в excel и берет наименование
Надеюсь все понятно описал
подтолкните на мысль как это реализовать, или сделать как то по другому

вод код который написал
        Excel = Новый COMОбъект("Excel.Application");
	Excel.WorkBooks.Open("D:\3.xlsx");
	Excel.Sheets(1).Select();
	a=2;
	Док = Документы.ИнвентаризацияТоваровНаСкладе.СоздатьДокумент();
	Пока a<2845 Цикл
		тч = док.Товары.Добавить();
		тчнайти = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Excel.Cells(a,3).Value());
		тч.Номенклатура =  тчнайти;
		тч.КоличествоУчет = Excel.Cells(a,8).Value();
		тч.Количество = Excel.Cells(a,6).Value();
		тч.Коэффициент = "1";
		тч.ЕдиницаИзмерения =  тчнайти.ЕдиницаХраненияОстатков;
		тч.Цена = Excel.Cells(a,5).Value();
		тч.Сумма = Excel.Cells(a,7).Value();
		тч.СуммаРегл = Excel.Cells(a,9).Value();
		тч.СуммаУчет = Excel.Cells(a,9).Value();
		a=a+1;
	КонецЦикла;
	Док.Дата = ТекущаяДата();
	Док.Записать();
	Excel.Quit();
	Сообщить("Всё готово");
Показать
По теме из базы знаний
Найденные решения
3. platonov.e 158 17.01.20 08:48 Сейчас в теме
ПРимерно так должно быть. Писал от руки поэтому могут быть ошибки


тч.Номенклатура =  НайтиНоменклатуру("ячейканаименования", Excel.Cells(a,3).Value());


Функция НайтиНоменклатуру(Наименование, Артикул);

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать Ссылка
Из Справочники.номенклатура
Где Артикул = &Артикул
И Наименование = &Наименование";
Запрос.установитьПараметры("Артикул",Артикул);
Запрос.установитьПараметры("Наименование",Наименование);

Выборка = Запрос.выполнить().выбрать();

Если Выборка.Следующий() Тогда
Возврат Выборка.ссылка;
Иначе
Возврат Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;

КонецФункции;
Показать
user1293011; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Vlan 36 17.01.20 08:43 Сейчас в теме
(1) делайте функцию с запросом поиска в Номенклатуре по артикулу и наименованию. Она вернет Вам нужный элемент в переменную тчнайти.
user1293011; +1 Ответить
3. platonov.e 158 17.01.20 08:48 Сейчас в теме
ПРимерно так должно быть. Писал от руки поэтому могут быть ошибки


тч.Номенклатура =  НайтиНоменклатуру("ячейканаименования", Excel.Cells(a,3).Value());


Функция НайтиНоменклатуру(Наименование, Артикул);

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать Ссылка
Из Справочники.номенклатура
Где Артикул = &Артикул
И Наименование = &Наименование";
Запрос.установитьПараметры("Артикул",Артикул);
Запрос.установитьПараметры("Наименование",Наименование);

Выборка = Запрос.выполнить().выбрать();

Если Выборка.Следующий() Тогда
Возврат Выборка.ссылка;
Иначе
Возврат Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;

КонецФункции;
Показать
user1293011; +1 Ответить
4. Vlan 36 17.01.20 08:54 Сейчас в теме
(3) Вариант с пустой ссылкой лучше бы обработать (создать новый элемент/предупредить/не вставлять в ТЧ), а не передавать сразу в табличную часть.
5. platonov.e 158 17.01.20 08:56 Сейчас в теме
(4) но это уже совсем другая история)
Конечно правильно было бы или создавать новую номенклатуру, или вообще в таком случае не добавлять строку в таблицу, а выдавать сообщение)
6. Vlan 36 17.01.20 08:59 Сейчас в теме
(5) Ну, по вопросу видно совсем уж новичка, поэтому и обратил его внимание, а то следующей темой будет "Как убрать пустые строки из ТЧ?" :-)
7. platonov.e 158 17.01.20 09:01 Сейчас в теме
(6) ну да я тоже начинал работать с экселем через ком)))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот