• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Как выгрузить данные из таблицы значений в табличную часть документа?

  • Автор темы Автор темы Karambol
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
K

Karambol

Как можно выгрузить данные из таблицы значений в табличную часть документа? Есть какая-нибудь ф-я или вручную придется обрабатывать? Заранее спасибо! :)
 
Стормозил.... ЗагрузитьТабличнуюЧасть()
 
Делаю внешнюю обработку для загрузки из XML в Табличную часть документа ТребованиеНакладная
Вот модуль
Файл = Новый ЧтениеXML;
Файл.ОткрытьФайл(пвИмяФайла);
Файл.Прочитать();
Тип = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
//Создаем Таблицу Значений
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Номенклатура",Тип,"Номенклатура");
ТаблицаЗначений.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число"),"Количество");
Пока Файл.Прочитать() Цикл
Если Файл.Имя = "Mat" Тогда
Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента И Файл.ЗначениеАтрибута(4) <> "Deleted" Тогда
Номенклатура = Файл.ЗначениеАтрибута(0);
Количество = Файл.ЗначениеАтрибута(3);
НайденнаяСсылка = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура);
Если Не НайденнаяСсылка = Справочники.Номенклатура.ПустаяСсылка() Тогда
СтрокаТабЗначений = ТаблицаЗначений.Добавить();
СтрокаТабЗначений.Номенклатура = НайденнаяСсылка;
СтрокаТабЗначений.Количество = Количество;
Иначе
Сообщить(Номенклатура + " Нет в справочнике");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Файл.Закрыть();
ТаблицаЗначений.Свернуть("Номенклатура","Количество");
СсылкаНаОбъект.Материалы.Загрузить(ТаблицаЗначений);​
Где СсылкаНаОбъект это реквизит ДокументСсылка.ТребованиеНакладная
Но из ТаблицыЗначений данные не загружаются в Табличную часть документа. Подскажите, что сделал не так?
 
Отладчик!!
"Файл.ЗначениеАтрибута(0);" возвращает то, что вам надо?
 
Может быть вместо:
СсылкаНаОбъект.Материалы.Загрузить(ТаблицаЗначений);

Сделать это:
СтрокаДока = СсылкаНаОбъект.Материалы.Добавить();
Номенклатура = СтрокаТабЗначений.Номенклатура;
Количество = СтрокаТабЗначений.Количество;
СсылкаНаОбъект.Записать();
 
Может быть вместо:
СсылкаНаОбъект.Материалы.Загрузить(ТаблицаЗначений);

Сделать это:
СтрокаДока = СсылкаНаОбъект.Материалы.Добавить();
Номенклатура = СтрокаТабЗначений.Номенклатура;
Количество = СтрокаТабЗначений.Количество;
СсылкаНаОбъект.Записать();

Во-первых, если СсылкаНаОбъект - это ссылка, а не сам объект, то её нельзя записать... И грузить в таб часть по ссылке тоже нет никакого смысла. Ведь прежде чем модифицировать объект его нужно получить. Если грузиться всё равно не будет, то, возможно, не совпадают имена колонок таблиц загружаемой и той, в которую загружают
Объект = СсылкаНаОбъект.ПолучитьОбъект();
И уже дальше работать с табличной частью Материалы ОБЪЕКТА, а не ССЫЛКИ на объект.

P.S. Опять же, всё это если СсылкаНаОбъект - действительно ссылка, а не сам объект. Решать проблему я бы начал с этого момента...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab