8.х ОБМЕН Конвертация данных. Загрузка табличной части из запроса

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем nbIpKuH_BaH9I, 19 сен 2013.

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    397
    Баллы:
    104
    Всем привет. Пишу правила. Есть необходимость сделать следующее. Есть документ1 с табличной частью "Производство". (Источник). И документ2 с табличной частью "Материалы" (Приемник). Нужно чтобы в приемник попадала информация из запроса. Как это сделать?
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    в обработчике ПередВыгрузкой в ПВД формируется таблица значений как табличная часть, делается структура, в которой в поле с наименованием табличной части записывается полученная таблица значений, структура записывается в переменную ИсходящиеДанные

    в ПКО на табличной части и на ее реквизитах ставится галка "Получить из входящих данных"
  3. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    397
    Баллы:
    104
    Спасибо. Обязательно сегодня вечером попробую.
  4. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    397
    Баллы:
    104
    В ПКО нужного документа, в процедуре перед выгрузкой прописал этот код
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ХозрасчетныйОбороты.Счет КАК Счет,
    | ХозрасчетныйОбороты.Субконто1 КАК Номенклатура,
    | ХозрасчетныйОбороты.СуммаОборотКт КАК Себестоимость,
    | ХозрасчетныйОбороты.КоличествоОборотКт КАК Количество
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет = &Счет_10_12, , , , ) КАК ХозрасчетныйОбороты
    |ГДЕ
    | ХозрасчетныйОбороты.Регистратор = &Регистратор";
    Запрос.УстановитьПараметр("НачалоПериода", Источник.Дата);
    Запрос.УстановитьПараметр("КонецПериода" , КонецДня(Источник.Дата));
    Запрос.УстановитьПараметр("Счет_10_12"   , ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.12"));
    Запрос.УстановитьПараметр("Регистратор"  , Источник.Ссылка);
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда
    Выгрузка = Результат.Выгрузить();
    ВходящиеДанные = Новый Структура("Материалы");
    ВходящиеДанные.Материалы = Новый ТаблицаЗначений;
    ВходящиеДанные.Материалы.Колонки.Добавить("Счет");
    ВходящиеДанные.Материалы.Колонки.Добавить("Номенклатура");
    ВходящиеДанные.Материалы.Колонки.Добавить("Себестоимость");
    ВходящиеДанные.Материалы.Колонки.Добавить("Количество");
    Для каждого ТекСтрока Из Выгрузка Цикл
    Сообщить("Счет "		  + ТекСтрока.Счет);
    Сообщить("Номенклатура "  + ТекСтрока.Номенклатура);
    Сообщить("Себестоимость " + ТекСтрока.Себестоимость);
    Сообщить("Количество "	+ ТекСтрока.Количество);
    НовСтрока			   = ВходящиеДанные.Материалы.Добавить();
    НовСтрока.Счет		  = ТекСтрока.Счет;
    НовСтрока.Номенклатура  = ТекСтрока.Номенклатура;
    НовСтрока.Себестоимость = ТекСтрока.Себестоимость;
    НовСтрока.Количество	= ТекСтрока.Количество;
    КонецЦикла;
    КонецЕсли;
    Сообщить сдела специально, чтобы проверить, есть там значения или нет. Внизу, когда уже выгрузка идет видно, что значения есть. В консоле запросов, номенклатура "Огурцы консервированные" реально последняя. Т.е. дальше ничего нет. Тогда почему вылезает эта ошибка?
    Zyama_18 нравится это.
  5. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    потому что не в ПКО, а в ПВД надо, в этом проблема. Если документ выгружается по ссылкам из других ПКС, то заполнять переменную ИсходящиеДанные надо в этих ПКС. Можно сделать алгоритм, который будет вызываться из таких ПКС, чтобы не писать везде одно и то же

    Ну или пойти тернистым путем и в ПКО выгонять данные табличной части в узел xml и при загрузке читать их из узла
  6. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    397
    Баллы:
    104
    Надо было галочки с реквизитов табличной части снять (Получить входящие данные)

    Все нормально загрузилось и выгрузилось как я делал. Спасибо.
    Zyama_18 нравится это.

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