8.х Таблицу значений разделить на две по условию

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Pentыch, 16 июл 2014.

  1. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток. Уважаемые господа и дамы, очередной глупый вопрос, от начинающего.

    Поставлена задача, есть обработка которая создает задачи. В ней после запроса (по остаткам) формируется таблица значений результирующая.
    Из результирующей таблицы, нужно сделать 2 таблицы, в первой номенклатура основного производства, во второй экспериментальная номенклатура, и потом по ним сформировать задачи.Экспериментальные определяются по коду родителя в справочнике Номенклатура.
    Напишите, пожалуйста, примерно как должен выглядеть такое, именно выбор нужных мне значений, удаление их из одной таб (или создание первой таблицы), а затем создание 2-й таблицы с выбранными значениями.
    Структура ТЗ
    Код:
    РезТаблица = Новый ТаблицаЗначений;
        РезТаблица.Колонки.Добавить("Регион");
        РезТаблица.Колонки.Добавить("НомерЗаказаПоставщику");
        РезТаблица.Колонки.Добавить("ЗаказПокупателя");
        РезТаблица.Колонки.Добавить("Номенклатура");
        РезТаблица.Колонки.Добавить("ХарактеристикаНоменклатуры");
        РезТаблица.Колонки.Добавить("ЕдиницаИзмерения");
        РезТаблица.Колонки.Добавить("Количество");
        РезТаблица.Колонки.Добавить("ВесКг");
        РезТаблица.Колонки.Добавить("ОбъемМ3");
    
    P.S. Заранее, спасибо за ответы, а пока буду сам копать
    Последнее редактирование: 16 июл 2014
  2. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.748
    Симпатии:
    509
    Баллы:
    204
    Сверните, отфильтруйте и обработайте.
  3. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Откройте синтакс-помощник и посмотрите методы работы с таблицей значений. Мозг у всех по-разному устроен. Я сделаю так, Вы так, другой-третий способ найдет. Изучите их. Вам проще будет.
    Pentыch нравится это.
  4. TopicStarter Overlay
    Pentыch
    Offline

    Pentыch Опытный в 1С

    Регистрация:
    18 сен 2013
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Спасибо за ответы, но хотелось бы примерчик. Сталкиваюсь с форматированием ТЗ впервые.
  5. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.748
    Симпатии:
    509
    Баллы:
    204
    СП вам в помощь.
  6. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.431
    Симпатии:
    372
    Баллы:
    104
    запросом вы уже получили ТЗ с данными
    создайте ещё две ТЗ нужной вам структуры и обрабатывая ту что получили запросом данные из неё раскидайте по вашим условиям по этим двум
  7. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    ТаблицаОсновноеПроизводство = РезТаблица.СкопироватьКолонки();
    ТаблицаЭксперементальнаяНоменклатура = РезТаблица.СкопироватьКолонки();
    
    Для Каждого СтрокаТабличнойЧасти Из РезТаблица Цикл
    
      Если <нужное условие> Тогда
        НоваяСтрока = ТаблицаОсновноеПроизводство.Добавить();
      Иначе
        НоваяСтрока = ТаблицаЭксперементальнаяНоменклатура.Добавить();
      КонецЕсли;
    
      ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТабличнойЧасти);
    
    КонецЦикла;
    
    Pentыch нравится это.
  8. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а ведь можно и без цикла
  9. Yuriy_Alexandrovich
    Offline

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

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Доброго всем,
    Можно в запросе положить результат в временную таблицу, потом пакетом сформировать необходимые выборки и получить нужные таблицы.
    Плюс выполнения в запросе - возможность наложить боле гибкие условия, а не крутить таблицу циклом :)
    Код:
    ТекстЗапроса = "
        |///////////////* Таблица остатков*////////////////////////////////////
        |ВЫБРАТЬ
        |    РезТаблица.Регион,
        |    РезТаблица.НомерЗаказаПоставщику,
        |    РезТаблица.ЗаказПокупателя,
        |    РезТаблица.Номенклатура,
        |    РезТаблица.ХарактеристикаНоменклатуры,
        |    РезТаблица.ЕдиницаИзмерения,
        |    РезТаблица.Количество,
        |    РезТаблица.ВесКг,
        |    РезТаблица.ОбъемМ3
        |ПОМЕСТИТЬ ВТ_РезТаблица
        |ИЗ
        |    РегистрНакопления.<ИмяРегистраНакопления>.Остатки(
        |                        &ДатаПолученияОстатков,
        |                        //УсловиеНаВнутреннююТаблицу
        |    ) КАК РезТаблица
        |;
        |///////////////* Первый пакет *////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_РезТаблица.Регион,
        |    ВТ_РезТаблица.НомерЗаказаПоставщику,
        |    ВТ_РезТаблица.ЗаказПокупателя,
        |    ВТ_РезТаблица.Номенклатура,
        |    ВТ_РезТаблица.ХарактеристикаНоменклатуры,
        |    ВТ_РезТаблица.ЕдиницаИзмерения,
        |    ВТ_РезТаблица.Количество,
        |    ВТ_РезТаблица.ВесКг,
        |    ВТ_РезТаблица.ОбъемМ3
        |ИЗ
        |    ВТ_РезТаблица
        |//УсловиеФормированияПервогоПакета
        |;
        |///////////////* Второй пакет *////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_РезТаблица.Регион,
        |    ВТ_РезТаблица.НомерЗаказаПоставщику,
        |    ВТ_РезТаблица.ЗаказПокупателя,
        |    ВТ_РезТаблица.Номенклатура,
        |    ВТ_РезТаблица.ХарактеристикаНоменклатуры,
        |    ВТ_РезТаблица.ЕдиницаИзмерения,
        |    ВТ_РезТаблица.Количество,
        |    ВТ_РезТаблица.ВесКг,
        |    ВТ_РезТаблица.ОбъемМ3
        |ИЗ
        |    ВТ_РезТаблица
        |//УсловиеФормированияВторогоПакета
        |";
       
       
    // Доработаем текст запроса согласно условиям
    
    // Добавление, для примера, условий на внутреннюю таблицу по региону
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УсловиеНаВнутреннююТаблицу", "Регион = &Регион");
    
    // Добавление условий формирования первого пакета, например по Номенклатуре
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УсловиеФормированияПервогоПакета", "ГДЕ ВТ_РезТаблица.Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатурыОсновногоПроизводсва)");
    
    // Добавление условий формирования первого пакета, например по Номенклатуре
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УсловиеФормированияВторогоПакета", "ГДЕ ВТ_РезТаблица.Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатурыЭкспериментальная)");
    
    Запрос = Новый Запрос(ТекстЗапроса);
    
    Запрос.УстановитьПараметр("Регион", Регион);
    Запрос.УстановитьПараметр("ГруппаНоменклатурыОсновногоПроизводсва",    ГруппаНоменклатурыОсновногоПроизводсва);
    Запрос.УстановитьПараметр("ГруппаНоменклатурыЭкспериментальная",    ГруппаНоменклатурыЭкспериментальная);
    
    МассивРезультатов = Запрос.ВыполнитьПакет();
    
    // Тут получаем нужные нам таблицы, по индексу, не помню, IMHO индекс "0" будет занят временной таблицей ;)
    ПерваяТаблица = МассивРезультатов[1].Выгрузить();
    ВтораяТаблица = МассивРезультатов[2].Выгрузить();
    
    
    

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