Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:55

Выгрузка данных из файла CSV в табличную часть документа

Автор Дмитрий357, 25 окт 2021, 14:02

0 Пользователей и 1 гость просматривают эту тему.

Дмитрий357

Добрый день! Не могу разобраться с кодом, что нет так. Код написан в общем модуле. подскажите пжл. Необходимо загрузить в документ Поступление товаров данные из CVS файла, содержащий наименование товара, количество, цену и стоимость. 1с 8.3

Процедура ЗагрузитьНаСервере(ПутьКФайлу) Экспорт
// Вставить содержимое обработчика.
Док = Новый ТекстовыйДокумент ();
Док.Прочитать(ПутьКФайлу);
Для А=1 По Док.КоличествоСтрок() Цикл
Строка = Док.ПолучитьСтроку(А);
Массив = СтрРазделить (Строка, ";");
Наименование = Массив [0];
Количество = Массив [1];
Цена = Массив [2];
Стоимость = Массив [3];
НовыйДокПоступления=Документы.ПоступлениеТоваров.СоздатьДокумент();
НовыйДокПоступления.Дата=ТекущаяДата ();
НоваяСтрокаТЧ=НовыйДокПоступления.Товары.Добавить();
НоваяСтрокаТЧ.Номенклатура=Наименование;
    НоваяСтрокаТЧ.Количество=Количество;
НоваяСтрокаТЧ.Цена=Цена;
    НоваяСтрокаТЧ.Стоимость=Стоимость;
    НовыйДокПоступления.Записать();

КонецЦикла;
КонецПроцедуры

LexaK

Дмитрий357, на первый взгляд, вот что не так
        НоваяСтрокаТЧ.Номенклатура=Наименование;//здесь нужна ссылка на Номенклатуру
        НоваяСтрокаТЧ.Количество=Количество;//здесь у вас Количество это Строка, а нужно Число
        НоваяСтрокаТЧ.Цена=Цена;//то-же
        НоваяСтрокаТЧ.Стоимость=Стоимость;//то-же
        НовыйДокПоступления.Записать();//на ОДИН товар вы создаете ОДИН документ
да и шапку документа надо заполнять,
Организация, Контрагент, Склад, Менеджер,...  и что там еще у вас
если помогло нажмите: Спасибо!

Дмитрий357

LexaK, Количество, Цена и Стоимость нормально подставляются. Нет наименования и создается один документ с указанием последнего товара из файла cvs c количеством, ценой и стоимостью. Подставляю НоваяСтрокаТЧ.Номенклатура=Справочники.Номенклатура не работает. Все равно нет наименования товара

LexaK

Дмитрий357, дааа, попробуйте выполнять поиск Номенклатуры по наименованию, примерно так
НоваяСтрокаТЧ.Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(Наименование);//здесь нужна ссылка на Номенклатуру

и создание документа вынесите из цикла, примерно такая схема

//вынесено из цикла
НовыйДокПоступления=Документы.ПоступлениеТоваров.СоздатьДокумент();
НовыйДокПоступления.Дата=ТекущаяДата ();

    Для А=1 По Док.КоличествоСтрок() Цикл
       ...
       
    КонецЦикла;

НовыйДокПоступления.Записать();//вынесено из цикла

если помогло нажмите: Спасибо!

Дмитрий357

LexaK, Все норм работает, но тольео не подставляет номенклатуру. Пустые строки. Может файл csv не такой.

LexaK

Дмитрий357,
ЦитироватьМожет файл csv не такой.
здесь "тонкое" место, поиск Номенклатуры по наименованию, если они не совпадают, ни чего не найдется, соответственно ни чего не подставится.
обычно в такие файлы (csv), с наименование выгружают колонку Код или Артикул, и поиск ведут по ним (так более надежно).   
если помогло нажмите: Спасибо!

Дмитрий357


Дмитрий357

LexaK, Еще вопрос в этой же теме. Как мне связать поле поставщик, созданное на форме обработки, с реквизитом документа ПоступлениеТоваров? Необходимо, чтобы бы выбранный поставщик на форме обработки поставлялся в создаваемый этой обработкой документ ПоступлениеТоваров

LexaK

Дмитрий357, там где заполняете документ, просто присвоить
примерно так:

НовыйДокПоступления.Поставщик = Поставщик; //имена реквизитов правильно подставьте
если помогло нажмите: Спасибо!

Дмитрий357

LexaK, не получается. Этот код находится в общем модуле

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск