8.х Свернуть таблицу значений

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

  1. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    200
    Симпатии:
    0
    Баллы:
    26
    Добрый день как мне свернуть таблицу значений вот такую..
    МНЕ нужно как то сначало объединить
    ОбъединенаяНоменклатура=краткое наимен+ объем

    а потом свернуть по ОбъединенаяНоменклатура
    наименование -справочник номенклатура
    объем -строка
    краткоенаим -строка
    признакгруппы -булево
    признак3 -строка



    [​IMG]
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.579
    Симпатии:
    717
    Баллы:
    204
    Конкатенировать можно только строковые значения, сворачивать тз с уникальными элементами не имеет смысла.
  3. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    Добавляете еще одну колонку например "НаименованиеОбъем". В цикле проходите обе и соединяете две ваши колонки в одну эту. Далее этой процедурой объединяете, а затем методом Свернуть уже группируете.
    Код:
    // Объединить 2 таблицы значения
    // тзОсновная - таблица к которой будут изменяться данные
    // тзПрисоединяемая - таблица из которой будут браться данные
    // стОтборОдинаковых - стурктура со списком полей по которым определяеться одинаковость записи
    // ДобавлятьНеНайденное  - ИСТИНА => не сущесвующие записи в тзОсновная будут браться из тзПрисоединяемая
    Процедура ОбъединитьТаблицыЗначений(тзОсновная,тзПрисоединяемая, стОтборОдинаковых, ДобавлятьНеНайденное = Ложь) Экспорт
        Для каждого текПрисоединяемаяЗапись из тзПрисоединяемая цикл
            ЗаполнитьЗначенияСвойств(стОтборОдинаковых,текПрисоединяемаяЗапись);
            НайденыеСтроки = тзОсновная.НайтиСтроки(стОтборОдинаковых);
            Если НайденыеСтроки.Количество() > 0 тогда
                Для каждого текНайденная из НайденыеСтроки цикл
                    ЗаполнитьЗначенияСвойств(текНайденная,текПрисоединяемаяЗапись);
                КонецЦикла;
            ИначеЕсли ДобавлятьНеНайденное тогда
                НовСтрокаОсновном = тзОсновная.Добавить();
                ЗаполнитьЗначенияСвойств(НовСтрокаОсновном,текПрисоединяемаяЗапись);
            КонецЕсли;
        КонецЦикла;
    КонецПроцедуры
  4. TopicStarter Overlay
    Raideres
    Offline

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    200
    Симпатии:
    0
    Баллы:
    26
    А в запросе провернуть можно как то?
  5. bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    можно сделать группировку по номенклатуре и объему, а потом левыми соединениями добавить всё остальное, что хочется, либо как крайний случай делать на СКД и передавать в запрос сгруппированную таблица как набор данных - объект
  6. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.989
    Симпатии:
    399
    Баллы:
    104
    В запросе сложнее. Зависит от исходных данных. От типов данных. Конкатенация в запросе возможно лишь методов Выразить (**** как Строка) Но значения ссылочного типа не преобразуются. Чисто наименования, то в принципе можно. Что мешает попробовать?

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