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

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

Автор Дмитрий357, 12 сен 2022, 11:34

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

Дмитрий357

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

КонецЕсли;
НоваяСтрокаТЧ.Количество=Количество;
Если НовыйДок.Валюта=Справочники.Валюты.РоссийскийРубль Тогда
НоваяСтрокаТЧ.Цена=Цена;
НоваяСтрокаТЧ.Стоимость=Стоимость;
Иначе
НоваяСтрокаТЧ.Цена=Цена/РаботаСВалютамиСервер.РассчитатьПоКурсу(НовыйДок.Валюта, НовыйДок.Дата);
НоваяСтрокаТЧ.Стоимость=Стоимость/РаботаСВалютамиСервер.РассчитатьПоКурсу(НовыйДок.Валюта, НовыйДок.Дата);
КонецЕсли;
КонецЦикла;
НовыйДок.Записать ();
Сообщить("Файл загружен");
КонецПроцедуры
Как создать новый элемент справочника? что прописать в теле условия Если?

LexaK

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

Дмитрий357

LexaK, О да спасибо помогло. Окончательный вариант
Если НоваяСтрокаТЧ.Номенклатура.Пустая() Тогда
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = Наименование;
НовыйЭлемент.Записать();
НоваяСтрокаТЧ.Номенклатура=НовыйЭлемент.Ссылка;
КонецЕсли;

Теги:

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

Рейтинг@Mail.ru

Поиск