Имя: Пароль:
1C
1C 7.7
v7: Сводная таблица
0 Cyr
 
06.07.22
13:47
Есть ТЗ с колонками
Сектор, Дата, Количество.
Нужно вывести отчёт Таблицу
----------------------------
Сектор|Дата1|Дата2|...|ДатаN
----------------------------
каким образом это можно сделать?
Проблема в заполнении колонок выходной таблицы.
может пример есть?
1 Kigo_Kigo
 
06.07.22
14:40
Ничего не понятно но очень интересно, дай пример данных в ТЗ
2 Злопчинский
 
06.07.22
14:41
все уже придумано до вас.
свою плоскую таблицу Сектор-ДатиаКоличество - подсовываешь вот сюда
https://infostart.ru/public/14794/
и выводишь хоть кросс-таблицей (пример https://infostart.ru/public/14381/), хоть по разным группировкам
будут вопросы - стучись в личку.
.
итого тебе в тою обработку надо вписать штук 5 строк кода (есть по ссылке)
3 Злопчинский
 
06.07.22
14:42
В личку или мыло из карточки здесь, или на инфострате
4 Cyr
 
06.07.22
16:36
(1) Ну я в принцип разобрался
Процедура Сформировать()
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Сектор");
    ТЗ.НоваяКолонка("СрокС");
    ТЗ.НоваяКолонка("СрокПо");
    ТЗ.НоваяКолонка("Количество");
    ТЗ.УдалитьСтроки();
    Договор = СоздатьОбъект("Документ.Договор");
    Договор.ВыбратьДокументы(НачДата-100, КонДата+15);
    Пока  Договор.ПолучитьДокумент()=1 Цикл
        Если Договор.СрокС >КонДата Тогда Продолжить КонецЕсли; //Ещё не действует
        Если Договор.СрокПо<НачДата Тогда Продолжить КонецЕсли; //Уже не действует
        ТЗ.НоваяСтрока();
        ТЗ.Сектор= Договор.Место.Родитель;
        ТЗ.СрокС = ?(Договор.СрокС<НачДата, НачДата, Договор.СрокС);
        ТЗ.СрокПо= ?(Договор.СрокПо>КонДата,КонДата, Договор.СрокПо);
        ТЗ.Количество=1;
    КонецЦикла;
    ТЗ.Свернуть("Сектор,СрокС,СрокПо","Количество");
    ТЗ.Сортировать("Сектор,СрокС,СрокПо");
        ТЗ2 = СоздатьОбъект("ТаблицаЗначений");
    ТЗ2.НоваяКолонка("Сектор");
    СтрокаСвертывания="";
    Для День = 0 по КонДата-НачДата Цикл
        ТЗ2.НоваяКолонка("Дата"+День, "Число");
        СтрокаСвертывания=СтрокаСвертывания+"Дата"+День+",";
    КонецЦикла;
    ТЗ2.УдалитьСтроки();
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Для ВыбрДата=ТЗ.СрокС По ТЗ.СрокПо Цикл
            ТЗ2.НоваяСтрока();
            ТЗ2.Сектор= ТЗ.Сектор;
            ТЗ2.УстановитьЗначение(ТЗ2.НомерСтроки,"Дата"+Строка(ВыбрДата-НачДата), ТЗ.Количество);
        КонецЦикла;
    КонецЦикла;
    ТЗ2.Свернуть("Сектор", СтрокаСвертывания);
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Заголовок");
    Сформировать_Колонки(Таб, "Шапка");
    Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
    ТЗ2.ВыбратьСтроки();
    Пока ТЗ2.ПолучитьСтроку()=1 Цикл
        Сектор=ТЗ2.Сектор;
        Таб.ВывестиСекцию("Строка_1|Начало");
           Для ВыбрДата= НачДата по КонДата Цикл
            Количество=ТЗ2.ПолучитьЗначение(ТЗ2.НомерСтроки,"Дата"+Строка(ВыбрДата-НачДата));
            Таб.ПрисоединитьСекцию("Строка_1|Колонка_1");
        КонецЦикла;
        Таб.ПрисоединитьСекцию("Строка_1|Конец");
    КонецЦикла;
    Сформировать_Колонки(Таб, "Подвал");
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Количество договоров по дням","");
КонецПроцедуры;
5 Злопчинский
 
06.07.22
17:46
(4) эта хрень у тебя частная. каждый раз придется переписывать.
а в сабж что выше - подсунул плоскую таблицу и все.
Основная теорема систематики: Новые системы плодят новые проблемы.