|
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) эта хрень у тебя частная. каждый раз придется переписывать.
а в сабж что выше - подсунул плоскую таблицу и все. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |