Имя: Пароль:
1C
1С v8
Загрузка из excell, как заполнить номенклатуру из справочника?
0 Snail
 
29.07.20
11:37
Так заполняет только реквизит ТЧ "Текстовый", а как сделать, чтобы заплнялось выбором из справочника? НайтиПоНаименованию?

&НаКлиенте
Процедура Загрузка(Команда)
    Ехсel = Новый COMObject("Excel.Application");
    Книга = Ехсel.Workbooks;
    Книга.Open(Объект.Файл);
    
    Версия = Лев(Ехсel.Version,Найти(Ехсel.Version,".")-1);
    Если Версия = "8" тогда
        ФайлСтрок = Ехсel.Cells.CurrentRegion.Rows.Count;
        ФайлКолонок = Макс(Ехсel.Cells.CurrentRegion.Columns.Count, 13);
    Иначе
        ФайлСтрок = Ехсel.Cells(1,1).SpecialCells(11).Row;
        ФайлКолонок = Ехсel.Cells(1,1).SpecialCells(11).Column;
    Конецесли;
    
        Для СчетчикЦикла = 2 По ФайлСтрок Цикл
        
        НоваяСтрока=Объект.ТЧ.Добавить();
        НоваяСтрока.Текстовый = СокрЛП(Ехсel.Cells(СчетчикЦикла,2).value);
        НоваяСтрока.Справочник = СокрЛП(Ехсel.Cells(СчетчикЦикла,2).value);
    КонецЦикла;
    
    Ехсel.Application.Quit();
КонецПроцедуры
1 Snail
 
29.07.20
11:38
НоваяСтрока.Справочник =  ???
2 del123
 
29.07.20
11:41
Да, найти по наименованию, но лучше хотя бы по Артикулу искать
3 Snail
 
29.07.20
11:42
НоваяСтрока.Справочник = <<?>>Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Ехсel.Cells(СчетчикЦикла,2).value));
4 del123
 
29.07.20
11:47
Можно второй к экселю не обращаться, а взять из поля Текстовый
5 Snail
 
29.07.20
11:50
Как это организовать?
6 del123
 
29.07.20
11:51
руками и головой
7 Snail
 
29.07.20
11:52
Спасибо )
8 Snail
 
29.07.20
12:24
.......
9 Случайный прохожий
 
29.07.20
12:26
(3) На клиенте так делать нельзя
10 Snail
 
29.07.20
12:27
Да я знаю, а как сделать? Через запрос на сервере?
11 Snail
 
29.07.20
12:30
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗагрузкаТЧ.Текстовый КАК Текстовый
        |ИЗ
        |    Документ.Загрузка.ТЧ КАК ЗагрузкаТЧ";
    
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    
    
    
    Пока РезультатЗапроса.Следующий() Цикл
        СтрокаТЧ = Объект.ТЧ.Добавить();
        СтрокаТЧ.Справочник = Справочники.Номенклатура.НайтиПоНаименованию(РезультатЗапроса.Текстовый);
    КонецЦикла;
12 Snail
 
29.07.20
12:30
СтрокаТЧ = Объект.ТЧ.Добавить();   ???
13 Случайный прохожий
 
29.07.20
12:34
(10) Как вам удобно. Главное что-бы на сервере. Если заполняете документ на клиенте, то можете написать функцию, которая в качестве входящего параметра получает массив текстовых значений, а выходящего - массив значений типа СправочникСсылка. Главное запрос в цикле не делайте :)
14 Случайный прохожий
 
29.07.20
12:35
(13) P.S: функция должна располагаться на сервере
15 Snail
 
29.07.20
12:45
Спасибо
16 Snail
 
29.07.20
13:02
Дааа.... Я дико извиняюсь, что парил вам мозги, все работало. Я просто справочник не забил номенклатурой.... Поэтому не заполнялось )
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс