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

Проблема с табличной частью документа 1с 8.3

Автор damir-it, 09 июл 2019, 13:55

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

damir-it

Привет Всем, помогите разобраться с проблемой заполнения реквизита табличной части документа , Есть документ ПоступлениеТоваров, на форме ТабличнаяЧасть ТаблицаТоваров , есть реквизит табличной части "Товар" тип Справочник.Номенклатура,   разработал процедуру которая считывает файл ексель и выгружает данные в таблицу значений, потом из этой таблицы значений циклом идет поиск номенклатуры по наименованию , если нету то автоматом создается новый элемент справочника с наименование товара , до этого момента код отрабатывает нормально, потом по идее если найдется товар по наименованию то в ТаблицеТоваров на форме документа в реквизит Товар должно подставится найденное значение из таблицыЗначений, застрял на этом месте ни как не могу сообразить, помогите доработать код:

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Заголовок = "Выберите файл с данными";
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
ДиалогОткрытияФайла.Фильтр = "Все файлы (*.xls;*.xlsx;*.mxl;)|*.xls;*.xlsx;*.mxl|Формат EXCEL 2003 (*.xls)|*.xls|Формат EXCEL 2010 (*.xlsx)|*.xlsx|Формат Таблиц 1С  (*.mxl)|*.mxl|";

Если ДиалогОткрытияФайла.Выбрать() Тогда
ПолноеИмяФайла = ДиалогОткрытияФайла.ПолноеИмяФайла;
КаталогФайла = ДиалогОткрытияФайла.Каталог;
ИмяФайла = СтрЗаменить(ПолноеИмяФайла, КаталогФайла, "");   

Если Прав(ИмяФайла, 3) = "xls" Или Прав(ИмяФайла, 4) = "xlsx" Тогда 

Результат = ЗагрузкаИзExcel(ПолноеИмяФайла);
Результат.Удалить(0);

Если Результат.Количество() > 0 Тогда

для Каждого строка из Результат.Колонки цикл
НомерКолонки = Результат.Колонки.Индекс(строка);
Если НомерКолонки=0 тогда
Результат.Колонки.Удалить(строка);
КонецЕсли;
если НомерКолонки=4 тогда
Результат.Колонки.Удалить(строка);
КонецЕсли;
                КонецЦикла;
КонецЕсли;     

КонецЕсли;
СпрТовары = Справочники.Номенклатура;
КодГруппы = "1";
ПоискПоПолномуКоду = Ложь;
Группа = Справочники.Номенклатура.НайтиПоКоду(КодГруппы,ПоискПоПолномуКоду);
Для Каждого СтрокаТаблицы из Результат Цикл
ИмяТовара=СтрокаТаблицы.Получить(0);
ИзмТовара=СтрокаТаблицы.Получить(1);
ПоискТовара = СпрТовары.НайтиПоНаименованию(ИмяТовара);

Если ПоискТовара.Пустая() Тогда
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
                НовыйЭлемент.Наименование=ИмяТовара;
                НовыйЭлемент.ЕдиницаИзмерения=ИзмТовара;
НовыйЭлемент.Родитель=Группа.Ссылка;
НовыйЭлемент.Записать();
        Иначе

Объект = ПоискТовара.ПолучитьОбъект();
ТаблицаТоваров.Найти(Объект.Наименование);
КонецЕсли;
КонецЦикла;
КонецЕсли;


С Уважением Дамир




АлександрВладимирович

Для Каждого СтрокаТаблицы из Результат Цикл
ИмяТовара=СтрокаТаблицы.Получить(0);
ИзмТовара=СтрокаТаблицы.Получить(1);
ПоискТовара = СпрТовары.НайтиПоНаименованию(ИмяТовара);

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

//Объект = ПоискТовара.ПолучитьОбъект();
//ТаблицаТоваров.Найти(Объект.Наименование);

НоваяСтрокаТЧ = Объект.ТаблицаТоваров.Добавить();
НоваяСтрокаТЧ.Номенклатура = ПоискТовара;

   
КонецЦикла;

damir-it

Цитата: АлександрВладимирович от 09 июл 2019, 15:46
Для Каждого СтрокаТаблицы из Результат Цикл
ИмяТовара=СтрокаТаблицы.Получить(0);
ИзмТовара=СтрокаТаблицы.Получить(1);
ПоискТовара = СпрТовары.НайтиПоНаименованию(ИмяТовара);

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

//Объект = ПоискТовара.ПолучитьОбъект();
//ТаблицаТоваров.Найти(Объект.Наименование);

НоваяСтрокаТЧ = Объект.ТаблицаТоваров.Добавить();
НоваяСтрокаТЧ.Номенклатура = ПоискТовара;

   
КонецЦикла;
                        вот так;
                        НоваяСтрокаТЧ = ТаблицаТоваров.Добавить();
НоваяСтрокаТЧ.Товар = ПоискТовара;

спсаибо огромное все получилось



Теги:

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

Рейтинг@Mail.ru

Поиск