//ТЗ=новый ТаблицаЗначений; Т1=новый ТаблицаЗначений; Т1.Колонки.Добавить("День"); //ТД=новый ТабличныйДокумент; ТабД=ЭлементыФормы.ПолеТабличногоДокумента1; Макет=ЭтотОбъект.ПолучитьМакет("Макет1"); мн=новый массив; Для м=0 по ТЗ.Колонки.Количество()-1 цикл мн.Добавить(ТЗ.Колонки[м].Имя); Конеццикла; Если мн.Найти("Аналитика1")=Неопределено и мн.Найти("Аналитика2")=Неопределено и мн.Найти("Аналитика3")=Неопределено и мн.Найти("Аналитика4")=Неопределено тогда Сообщить("Не указана аналитика!"); Возврат; Конецесли; ФС="ЧДЦ=2" ; мд=массив("День"); ур=0; ма=новый массив(5); Для н=1 по 4 цикл Если Не мн.Найти("Аналитика"+н)=Неопределено тогда ма[н]=массив("Аналитика"+н); ур=ур+1; ан=?(н=1,1,?(н=2,2,0)); Конецесли; Конеццикла; //ур=Уровень(); рез=новый ТаблицаЗначений; список=""; Для н=1 по 4 цикл имя="Аналитика"+н; Если Не мн.Найти(имя)=Неопределено тогда рез.Колонки.Добавить(имя); список=список+имя+","; Конецесли; конеццикла; список=Лев(список,СтрДлина(список)-1); рез=Тз.Скопировать(,список); рез.Свернуть(список); ТабД.Очистить(); обл=Макет.ПолучитьОбласть("шапка|Аналитика"); Если ур=1 тогда обл.Параметры.Аналитика="Аналитика"+ан; ТабД.Вывести(обл); Иначе обл.Параметры.Аналитика="Аналитика1"; ТабД.Вывести(обл); Для н=2 по ур цикл обл.Параметры.Аналитика="Аналитика"+н; ТабД.Присоединить(обл); Конеццикла; Конецесли; для н=0 по мд.ВГраница() цикл обл=Макет.ПолучитьОбласть("шапка|Данные"); Дата=ПолучитьД(мд[н]); обл.Параметры.Дата=Дата; ТабД.Присоединить(обл); Конеццикла; ВсегоУникальных = Рез.Количество(); Для каждого стр из рез цикл Отбор=Новый Структура; //И так создается новый отбор каждый раз, незачем его очищать //Добавил вывод состояния Сч = Рез.Индекс(Стр); Если Сч % 10 = 0 Тогда Состояние("Выведено групп: " + Сч + " из " + ВсегоУникальных); КонецЕсли; //Здесь переписать если ур=1 тогда Отбор.Вставить("Аналитика"+ан,стр[0]); Иначе Для н=1 по ур цикл Отбор.Вставить("Аналитика"+н,стр["Аналитика"+н]); Конеццикла; конецесли; обл=Макет.ПолучитьОбласть("строка|Аналитика"); обл.Параметры.ЗначениеА=стр[0]; //Почему нулевая позиция, ошибка! ТабД.Вывести(обл); если ур>1 тогда Для н=2 по ур цикл обл.Параметры.ЗначениеА=стр[н-1]; //Тоже переписать ТабД.Присоединить(обл); конеццикла; конецесли; для н=0 по мд.ВГраница() цикл Отбор.Вставить("День",мд[н]); Строки=ТЗ.НайтиСтроки(Отбор); для каждого стрм из Строки цикл обл=Макет.ПолучитьОбласть("строка|приход") ; если стрм.Приход1<>стрм._Приход1 тогда обл.Параметры.Прих=?(ПустаяСтрока(стрм.Приход1),0,Формат(Число(стрм.Приход1),ФС))+Символы.ПС+?(ПустаяСтрока(стрм._Приход1),0,Формат(Число(стрм._Приход1),ФС)); обл.Область(1,1).ЦветФона=WebЦвета.Розовый; иначе обл.Параметры.Прих=?(ПустаяСтрока(стрм.Приход1),0,Формат(Число(стрм.Приход1),ФС)); конецесли; ТабД.Присоединить(обл); обл=Макет.ПолучитьОбласть("строка|расход"); если стрм.Расход1<>стрм._Расход1 тогда обл.Параметры.Расх=?(ПустаяСтрока(стрм.Расход1),0,Формат(Число(стрм.Расход1),ФС))+Символы.ПС+?(ПустаяСтрока(стрм._Расход1),0,Формат(Число(стрм._Расход1),ФС)); обл.Область(1,1).ЦветФона=WebЦвета.Розовый; иначе обл.Параметры.Расх=?(ПустаяСтрока(стрм.Расход1),0,Формат(Число(стрм.Расход1),ФС)); конецесли; ТабД.Присоединить(обл); обл=Макет.ПолучитьОбласть("строка|остаток"); Если Не мн.Найти("Остаток")=Неопределено тогда обл.Параметры.Ост=?(ПустаяСтрока(стрм.Остаток),0,Формат(Число(стрм.Остаток),ФС)); конецесли; ТабД.Присоединить(обл); конеццикла; //Отбор.Удалить("День"); конеццикла; //Отбор.Очистить(); Конеццикла; ТабД.ФиксацияСверху=2; ТабД.ФиксацияСлева=ур;