Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Загрузка из excell, как заполнить номенклатуру из справочника?

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.