8.х Как выдернуть данные из табл. части справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Boyd_Rice, 26 янв 2010.

  1. TopicStarter Overlay
    Boyd_Rice
    Offline

    Boyd_Rice

    Регистрация:
    24 янв 2010
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Задача такова - есть справочник "Модели" (одежды), у каждого элемента есть табл. часть (в ней указываются необходимые материалы).
    Есть соответственно документ "Заказ", который продает элементы этого справочника. И в форме документа выбирается элемент справочника (модель) и в табличную часть должны выводиться данные табличной части справочника для этого элемента(материалы), чтобы потом можно было их подкорректировать и провести документ. Собсно, нужно однократно загрузить эти данные при выборе модели. Направьте пожалуйста на путь истинный, есть ли в 1с 8.1 какой-то типовой прием для такой операции?

    Прикладываю базу есличо
    http://ifolder.ru/16107952
  2. TopicStarter Overlay
    Boyd_Rice
    Offline

    Boyd_Rice

    Регистрация:
    24 янв 2010
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Закройте тему, пожалуйста, сам догадался. Для будущих поколений первопроходцев привожу решение, эффективное при необходимости одностороннего однократного выгруза данных:
    Т.к. мы можем получить доступ к содержимому справочника программно, находим нужный элемент по коду и перебираем его табличную часть. Соответственно, в каждом шаге перебора создаем новую строку и поочереди копируем в нее реквизиты. Для табличных частей с очень большим количеством реквизитов это будет не слишком эффективно, но для маленьких сойдет, за неимением времени другого способа искать не стал.

    Код:
    Для Каждого СтрокаТабличнойЧасти Из Справочники.Модели.НайтиПоКоду(ЭлементыФормы.Модель.Значение.Код).Материалы Цикл
    НоваяСтрока = Материалы.Добавить();
    НоваяСтрока.Деталь = СтрокаТабличнойЧасти.Деталь;
    НоваяСтрока.Количество = СтрокаТабличнойЧасти.Количество;
    НоваяСтрока.Материал = СтрокаТабличнойЧасти.Материал;
    НоваяСтрока.Количество_материала = СтрокаТабличнойЧасти.Количество_материала;
    НоваяСтрока.Цена = СтрокаТабличнойЧасти.Цена;
    НоваяСтрока.Сумма = СтрокаТабличнойЧасти.Сумма;
    КонецЦикла;
    
    
    + если ваша табличная часть - приемник была не пуста перед выгрузкой, то перед циклом не забудте ее очистить :)
  3. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Из спаравочнка

    табл = ВашаСсылкаНаМодель.ТабличнаяЧасть.Выгрузить();

    Документ.Товары.Очистить();
    Документ.Товары.Загрузить(Табл);

Поделиться этой страницей