8.х Выгрузка из запроса в тз с добавлением строк

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

  1. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Добрый день!
    Подскажите пожалуйста.... Есть ТЗ "Таблица" я ее дозаполняю запросом из РН по инвентарному номеру. Но есть такая ситуация, что по одному инв номеру запросом можно получить 2 и более строки. Как сделать, что бы при обходе результата запроса, первый обход дозаполнял имеющую строку, а последующие обходы добавляли новую строку?
    Код:
    Процедура ЗаполнитьМестаХранения (ИнвентарныйНомер)   
       
              
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    СкладОстатки.МестоХранения.Тип КАК Тип,
            |    СкладОстатки.МестоХранения.Подразделение КАК Подразделение,
            |    СкладОстатки.МестоХранения.Подразделение.ОтветственноеЛицо КАК ОтветственноеЛицо,
            |    СкладОстатки.КарточкаНоменклатуры.ИнвентарныйНомер КАК ИнвентарныйНомер,
            |    СкладОстатки.КарточкаНоменклатуры.ДатаПоступления КАК ДатаПринятияКУчету,
            |    Штрихкоды.Штрихкод,
            |    СкладОстатки.КарточкаНоменклатуры КАК Номенклатура
            |ИЗ
            |    РегистрНакопления.Склад.Остатки КАК СкладОстатки
            |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
            |        ПО СкладОстатки.КарточкаНоменклатуры = Штрихкоды.Владелец
            |ГДЕ
            |    СкладОстатки.КарточкаНоменклатуры.ИнвентарныйНомер = &ИнвентарныйНомер";
       
        Запрос.УстановитьПараметр("ИнвентарныйНомер", ИнвентарныйНомер);
       
        Результат = Запрос.Выполнить().Выбрать();
       
    Пока Результат.Следующий() Цикл
            КолвоСтрок = Таблица.Количество();
    ПослСтрока = Таблица[КолвоСтрок-1];
    ПослСтрока.МестоХранения = Строка (Результат.Подразделение)+ "\" + Строка (Результат.Тип)+"\"+Строка(Результат.ОтветственноеЛицо)+"*"+Результат.Номенклатура;
    ПослСтрока.Штрихкод = Результат.Штрихкод;
    КонецЦикла;       
    
       
    КонецПроцедуры
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну поставить что то вроде тригера проверки на рег номер в цикл
    типа если предыдущий рег номер<> текущему тогда изменяем имеющийся, если равен - добавляем строчку
  3. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    А еще тогда вопрос как программно скопировать последнюю строчку в тз, чтобы я потом этим запросом дозаполнила?
  4. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    1) Перебираете в цикле результат Вашего запроса к РН.
    2) Есть метод НайтиСтроки у ТЗ. По нужной колонке ищите нужные строки.
    3) Получаете ее и меняете как надо
    4) Если такой не нашлось, то просто добавить в таблицу новое значение и все.
    --- Объединение сообщений, 26 янв 2016 ---
    Ну и если Вам так уж надо в первый проход, то поставить как выразился предыдущий оратор, тригер.
  5. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    что то типа

    Стр=ТЗ.Добавить();
    ЗаполнитьЗначениеСвойств(Стр,ТЗ[ТЗ.Количество()-1])

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