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

Выгрузка данных из файла 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 Rambler's Top100

Поиск