|
не получаются горизонтальные группировки в отчете | ☑ | ||
---|---|---|---|---|
0
svchernova
19.06.15
✎
16:17
|
Здравствуйте все,
У меня проблема - не получаются вертикальные группировки. Отчет заполняется, присоединяются нужные области, а группировок нет. Горизонтальные группировки выходят нормально.В чем может быть причина? Уже всяко перепробовала.. |
|||
1
svchernova
19.06.15
✎
16:25
|
Черт, горизонтальные не получаются. С вертикальными всё нормально
|
|||
2
Nuobu
19.06.15
✎
16:28
|
Что в горизонтальных группировках?
|
|||
3
svchernova
19.06.15
✎
16:30
|
(2) там колонки, из таблицы значений
|
|||
4
svchernova
19.06.15
✎
16:30
|
мне нужно свернуть колонки. Пользуюсь методом присоединить()
|
|||
5
svchernova
19.06.15
✎
16:35
|
Примерно так:
ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьСтрокаОбщий = Макет.ПолучитьОбласть("Строка|Общий"); ОбластьСтрокаЗадолженностьВсего = Макет.ПолучитьОбласть("Строка|ЗадолженностьВсего"); ОбластьСтрокаЗадолженностьПоМесяцам = Макет.ПолучитьОбласть("Строка|ЗадолженностьПоМесяцам"); .......... .......... .......... ТабДок.Вывести(ОбластьСтрокаОбщий,0); ТабДок.Присоединить(ОбластьСтрокаЗадолженностьВсего,0); ТабДок.Присоединить(ОбластьСтрокаЗадолженностьПоМесяцам,0); |
|||
6
Nuobu
19.06.15
✎
16:39
|
(5) На каждой итэрации?
|
|||
7
svchernova
19.06.15
✎
16:43
|
(6) не поняла тебя.. у меня три горизонтальные области. Общая и две, которые должны сворачиваться. ЗадолженностьВсего(там две колонки) и Задолженность по месяцам (там 60 колонок) Я хочу их свернуть, чтобы эти 60 не маячили, так как отчет слишком широкий
|
|||
8
Serg_0691
19.06.15
✎
16:44
|
Если озвучить скрины макета (с именованными областями), алгоритм заполнения и результат - то, наверное, станетболее понятно что именно "не получается" у автора.
Извини, но я ничего не понял. Таблицу что ли нужно по ширине листа растянуть, независимо от того, сколько колонок в ней? |
|||
9
svchernova
19.06.15
✎
16:45
|
я сейчас выложу скрины
Не уходи, пож |
|||
10
Serg_0691
19.06.15
✎
16:49
|
И кстати: колонки не "сворачиваются". Из макета получают области, а потом по условию или присоединяются, или не присоединяются.
И ещё: если речь о колонках таблицы - то это вертикальные области. Строки в этой таблице - вот что "горизонтально" :) |
|||
11
svchernova
19.06.15
✎
16:49
|
||||
12
svchernova
19.06.15
✎
16:50
|
(10), да это колонки, мне нужно свернуть именно колонки
Строки у меня сворачиваются нормально |
|||
13
svchernova
19.06.15
✎
16:51
|
сейчас немного упрощу код и выложу тоже
|
|||
14
svchernova
19.06.15
✎
16:55
|
http://s018.radikal.ru/i503/1506/a1/a9c4d22976e1.jpg
http://i056.radikal.ru/1506/ea/a692e2e91caa.jpg Это картинки результата. Здесь видно, что скобочек группировок над колонками нет |
|||
15
svchernova
19.06.15
✎
16:56
|
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаСтр = Макет.ПолучитьОбласть("ШапкаСтр"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьИтог = Макет.ПолучитьОбласть("Итог"); ОбластьРегистратор = Макет.ПолучитьОбласть("Регистратор"); ОбластьСтрокаОбщий = Макет.ПолучитьОбласть("Строка|Общий"); ОбластьСтрокаЗадолженностьВсего = Макет.ПолучитьОбласть("Строка|ЗадолженностьВсего"); ОбластьСтрокаЗадолженностьПоМесяцам = Макет.ПолучитьОбласть("Строка|ЗадолженностьПоМесяцам"); ОбластьШапкаСтрОбщий = Макет.ПолучитьОбласть("ШапкаСтр|Общий"); ОбластьШапкаСтрЗадолженностьВсего = Макет.ПолучитьОбласть("ШапкаСтр|ЗадолженностьВсего"); ОбластьШапкаСтрЗадолженностьПоМесяцам = Макет.ПолучитьОбласть("ШапкаСтр|ЗадолженностьПоМесяцам"); ОбластьСтрокаОбщий = Макет.ПолучитьОбласть("Строка|Общий"); ОбластьСтрокаЗадолженностьВсего = Макет.ПолучитьОбласть("Строка|ЗадолженностьВсего"); ОбластьСтрокаЗадолженностьПоМесяцам = Макет.ПолучитьОбласть("Строка|ЗадолженностьПоМесяцам"); ОбластьИтогОбщий = Макет.ПолучитьОбласть("Итог|Общий"); ОбластьИтогЗадолженностьВсего = Макет.ПолучитьОбласть("Итог|ЗадолженностьВсего"); ОбластьИтогЗадолженностьПоМесяцам = Макет.ПолучитьОбласть("Итог|ЗадолженностьПоМесяцам"); ОбластьРегистраторОбщий = Макет.ПолучитьОбласть("Регистратор|Общий"); ТабДок.Очистить(); ОбластьШапка.Параметры.Период = "за период: "+ ПредставлениеПериода(НачалоДня(ДатаНач), КонецДня(ДатаКон), "ФП = Истина"); ТабДок.Вывести(ОбластьШапка); ТабДок.Вывести(ОбластьШапкаСтрОбщий); ТабДок.Присоединить(ОбластьШапкаСтрЗадолженностьВсего); ТабДок.Присоединить(ОбластьШапкаСтрЗадолженностьПоМесяцам); ТабДок.НачатьАвтогруппировкуСтрок(); ИтогоОстатокНаНачалоФакт = 0; ИтогоОстатокНаНачалоПровизия = 0; ИтогоПриходСчФактура = 0; ИтогоПриходПровизия = 0; ИтогоВыбытие = 0; ИтогоАванс = 0; ИтогоВзаиморасчет = 0; ИтогоОстатокНаКонецФакт = 0; ИтогоОстатокНаКонецПровизия = 0; СоответствиеИтогиВыбытие = Новый Соответствие(); СоответствиеИтогиПриходСчФактура = Новый Соответствие(); Для i = 1 по 31 Цикл СоответствиеИтогиВыбытие.Вставить(i, 0); СоответствиеИтогиПриходСчФактура [i] = 0; КонецЦикла; Для Каждого СтрокаТЗ из ТзИтоги Цикл СоответствиеВыбытие = Новый Соответствие(); СоответствиеПриходСчФактура = Новый Соответствие(); Для i = 1 по 31 Цикл СоответствиеВыбытие.Вставить(i, 0); СоответствиеПриходСчФактура [i] = 0; НомерКолонки = "С" + СокрЛП(i); ОбластьСтрокаЗадолженностьПоМесяцам.Параметры[НомерКолонки] = ""; НомерКолонки = "О" + СокрЛП(i); ОбластьСтрокаЗадолженностьПоМесяцам.Параметры[НомерКолонки] = ""; КонецЦикла; ОбластьСтрокаОбщий.Параметры.Заполнить(СтрокаТЗ); ОбластьСтрокаОбщий.Параметры.ПредметДоговора = СтрокаТЗ.Договор.ПредметДоговора; ОбластьСтрокаОбщий.Параметры.НомерВходящегоДокумента = СтрокаТЗ.НомерВходящегоДокумента; ОбластьСтрокаОбщий.Параметры.ДатаВходящегоДокумента = Формат(СтрокаТЗ.ДатаВходящегоДокумента,"ДЛФ=Д"); ОбластьСтрокаОбщий.Параметры.СрокОплаты = ?(СтрокаТЗ.СрокОплаты = Дата('00010101'), "",СтрокаТЗ.СрокОплаты); СчетФактура = СтрокаТЗ.СчетФактура; Если СокрЛП(СчетФактура) = "" Тогда ОстатокНаНачалоФакт = 0; ОстатокНаНачалоПровизия = СтрокаТЗ.ОстатокНаНачалоФакт; ПриходСчФактура = 0; ПриходПровизия = СтрокаТЗ.ПриходСчФактура; Выбытие = 0; Аванс = СтрокаТЗ.Выбытие; Взаиморасчет = 0; Иначе ОстатокНаНачалоФакт = СтрокаТЗ.ОстатокНаНачалоФакт; ОстатокНаНачалоПровизия = 0; ПриходСчФактура = СтрокаТЗ.ПриходСчФактура; ПриходПровизия = 0; Выбытие = СтрокаТЗ.Выбытие; Аванс = 0; Взаиморасчет = 0; КонецЕсли; ОстатокНаКонецФакт = 0; ОстатокНаКонецПровизия = 0; ОстатокНаКонец = ОстатокНаНачалоФакт + ОстатокНаНачалоПровизия + ПриходСчФактура + ПриходПровизия - Выбытие - Аванс - Взаиморасчет; Если СокрЛП(СчетФактура) = "" Тогда ОстатокНаКонецПровизия = ОстатокНаКонец; Иначе ОстатокНаКонецФакт = ОстатокНаКонец; КонецЕсли; ОбластьСтрокаОбщий.Параметры.ОстатокНаНачалоФакт = ОстатокНаНачалоФакт; ОбластьСтрокаОбщий.Параметры.ОстатокНаНачалоПровизия = ОстатокНаНачалоПровизия; ОбластьСтрокаОбщий.Параметры.ПриходСчФактура = ПриходСчФактура; ОбластьСтрокаОбщий.Параметры.ПриходПровизия = ПриходПровизия; ОбластьСтрокаОбщий.Параметры.Выбытие = Выбытие; ОбластьСтрокаОбщий.Параметры.Аванс = Аванс; ОбластьСтрокаОбщий.Параметры.Взаиморасчет = Взаиморасчет; ОбластьСтрокаЗадолженностьВсего.Параметры.ОстатокНаКонецФакт = ОстатокНаКонецФакт; ОбластьСтрокаЗадолженностьВсего.Параметры.ОстатокНаКонецПровизия = ОстатокНаКонецПровизия; ИтогоОстатокНаНачалоФакт = ИтогоОстатокНаНачалоФакт + ОстатокНаНачалоФакт; ИтогоОстатокНаНачалоПровизия = ИтогоОстатокНаНачалоПровизия + ОстатокНаНачалоПровизия; ИтогоПриходСчФактура = ИтогоПриходСчФактура + ПриходСчФактура; ИтогоПриходПровизия = ИтогоПриходПровизия + ПриходПровизия; ИтогоВыбытие = ИтогоВыбытие + Выбытие; ИтогоАванс = ИтогоАванс + Аванс; ИтогоВзаиморасчет = ИтогоВзаиморасчет + Взаиморасчет; ИтогоОстатокНаКонецФакт = ИтогоОстатокНаКонецФакт + ОстатокНаКонецФакт; ИтогоОстатокНаКонецПровизия = ИтогоОстатокНаКонецПровизия + ОстатокНаКонецПровизия; ОбластьСтрокаОбщий.Параметры.СрокОплатыПоДоговору = СтрокаТЗ.Договор.СрокОплаты; ОбластьСтрокаОбщий.Параметры.СуммаПоДоговору = СтрокаТЗ.Договор.СуммаДоговора; //Заполнить документы ТЗРегистратор = Результат.Скопировать(Результат.НайтиСтроки(Новый Структура("Контрагент, Договор, ДокументПоступление", СтрокаТЗ.Контрагент, СтрокаТЗ.Договор, СтрокаТЗ.ДокументПоступление))); ТЗРегистратор.Сортировать("Период"); Для Каждого СтрокаРегистратор из ТЗРегистратор Цикл Попытка i= День(СтрокаРегистратор.Период) ; Исключение i= 0; КонецПопытки; если i > 0 Тогда СоответствиеВыбытие[i] = СоответствиеВыбытие[i] + ?(СокрЛП(СтрокаРегистратор.Выбытие) = "", 0 , СтрокаРегистратор.Выбытие); СоответствиеПриходСчФактура[i] = СоответствиеПриходСчФактура[i] + ?(СокрЛП(СтрокаРегистратор.ПриходСчФактура) = "", 0 , СтрокаРегистратор.ПриходСчФактура); СоответствиеИтогиВыбытие[i] = СоответствиеИтогиВыбытие[i] + СоответствиеВыбытие[i]; СоответствиеИтогиПриходСчФактура[i] = СоответствиеИтогиПриходСчФактура[i] + СоответствиеПриходСчФактура[i]; НомерКолонки_О = "О" + СокрЛП(i); НомерКолонки_С = "С" + СокрЛП(i); ОбластьСтрокаЗадолженностьПоМесяцам.Параметры[НомерКолонки_О] = СоответствиеВыбытие[i]; ОбластьСтрокаЗадолженностьПоМесяцам.Параметры[НомерКолонки_С] = СоответствиеПриходСчФактура[i]; КонецЕсли; КонецЦикла; //ТабДок.Вывести(ОбластьСтрока,0); ТабДок.Вывести(ОбластьСтрокаОбщий,0); ТабДок.Присоединить(ОбластьСтрокаЗадолженностьВсего,0); ТабДок.Присоединить(ОбластьСтрокаЗадолженностьПоМесяцам,0); Для Каждого СтрокаРегистратор из ТЗРегистратор Цикл Если не СокрЛП(СтрокаРегистратор.Регистратор) = "" Тогда ОбластьРегистраторОбщий.Параметры.Регистратор = СокрЛП(СтрокаРегистратор.Регистратор); ОбластьРегистраторОбщий.Параметры.РасшифровкаРегистратор = СтрокаРегистратор.Регистратор; Если СокрЛП(СтрокаРегистратор.Период) = "" Тогда ОбластьРегистраторОбщий.Параметры.Период = "На начало: " Иначе ОбластьРегистраторОбщий.Параметры.Период = Формат(СтрокаРегистратор.Период,"ДЛФ=Д"); КонецЕсли; ТабДок.Вывести(ОбластьРегистраторОбщий,1); КонецЕсли; КонецЦикла; КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ОбластьИтогОбщий.Параметры.ОстатокНаНачалоФакт = ИтогоОстатокНаНачалоФакт; ОбластьИтогОбщий.Параметры.ОстатокНаНачалоПровизия = ИтогоОстатокНаНачалоПровизия; ОбластьИтогОбщий.Параметры.ПриходСчФактура = ИтогоПриходСчФактура; ОбластьИтогОбщий.Параметры.ПриходПровизия = ИтогоПриходПровизия; ОбластьИтогОбщий.Параметры.Выбытие = ИтогоВыбытие; ОбластьИтогОбщий.Параметры.Аванс = ИтогоАванс; ОбластьИтогОбщий.Параметры.Взаиморасчет = ИтогоВзаиморасчет;; ОбластьИтогЗадолженностьВсего.Параметры.ОстатокНаКонецФакт = ИтогоОстатокНаКонецФакт; ОбластьИтогЗадолженностьВсего.Параметры.ОстатокНаКонецПровизия = ИтогоОстатокНаКонецПровизия; Для i = 1 по 31 Цикл НомерКолонки = "О" + СокрЛП(i); ОбластьИтогЗадолженностьПоМесяцам.Параметры[НомерКолонки] = СоответствиеИтогиВыбытие[i]; НомерКолонки = "С" + СокрЛП(i); ОбластьИтогЗадолженностьПоМесяцам.Параметры[НомерКолонки] = СоответствиеИтогиПриходСчФактура[i]; КонецЦикла; ТабДок.Вывести(ОбластьИтогОбщий,2); ТабДок.Присоединить(ОбластьИтогЗадолженностьВсего,2); ТабДок.Присоединить(ОбластьИтогЗадолженностьПоМесяцам,2); |
|||
16
ДенисЧ
19.06.15
✎
16:57
|
Не вижу в коде НачатьГруппировкуКолонок()...
|
|||
17
svchernova
19.06.15
✎
16:57
|
(16) ВАУУУУУУУУУУУУУУУУУУУУУУУУ
|
|||
18
svchernova
19.06.15
✎
16:59
|
(16) Сроду не знала!!
Это после ТабДок.НачатьАвтогруппировкуСтрок(); или перед этим? |
|||
19
ДенисЧ
19.06.15
✎
16:59
|
(18) А как думаешь?
Даю три минуты. Потом предложу пойти варить борщ )) |
|||
20
svchernova
19.06.15
✎
17:02
|
думаю, до
Сейчас проверю :) |
|||
21
svchernova
19.06.15
✎
17:03
|
(19) ТабДок.НачатьГруппировкуКолонок();
Метод объекта не обнаружен.. |
|||
22
Serg_0691
19.06.15
✎
17:03
|
Я почему-то так и думал что мы о разных вещах говорим...
Посмотри в СП (синтак-помощнике) НачатьАвтогруппировкуКолонок() Присоеденить() Вывести() ЗакончитьАвтогруппировкуКолонок() |
|||
23
Serg_0691
19.06.15
✎
17:05
|
(21) Срочно, в Синтакс-Помощник, бегом :) Там и примеры есть.
|
|||
24
svchernova
19.06.15
✎
17:07
|
(23) Сейчас пойду.. подожди пожалуйста
|
|||
25
ДенисЧ
19.06.15
✎
17:10
|
(22) Причем тут "авто"??
(21) Бегом борщ варить!! |
|||
26
svchernova
19.06.15
✎
17:11
|
(25) Так я же сделала без "авто"! а там ругачка - метод объекта не обнаружен!
|
|||
27
ДенисЧ
19.06.15
✎
17:12
|
(26) ТабличныйДокумент.НачатьГруппуКолонок (SpreadsheetDocument.StartColumnGroup)
ТабличныйДокумент (SpreadsheetDocument) НачатьГруппуКолонок (StartColumnGroup) Синтаксис: НачатьГруппуКолонок(<ИмяГруппы>, <ОткрытаЛиГруппа>) Параметры: <ИмяГруппы> (необязательный) Тип: Строка. Имя группы колонок. <ОткрытаЛиГруппа> (необязательный) Тип: Булево. Определяет необходимость открытия группы. Истина - выведенная группа будет открыта; Ложь - группа будет выведена в свернутом виде. Значение по умолчанию: Истина. Описание: Начинает новую группу колонок. Можно создавать вложенные группы колонок. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Пример: ТабДок.НачатьГруппуКолонок("По всем складам", Истина); См. также: ТабличныйДокумент, метод ЗакончитьГруппуКолонок -------------------------------------------------------------------------------- Методическая информация Так что - всё-таки марш борщь варить! |
|||
28
svchernova
19.06.15
✎
17:15
|
(27) сейчас... щаааааааааас.. дай пару минут
|
|||
29
ДенисЧ
19.06.15
✎
17:21
|
За пару минут борщ правильный не сварить...
|
|||
30
Serg_0691
19.06.15
✎
17:25
|
(25) Так проще. Начал автогруппировку и присоединяй колонки уровнем управляя кого куда. А для просто Группировки нужно их открывать/закрывать всё время. Поправь если не прав.
|
|||
31
svchernova
19.06.15
✎
17:27
|
(29) проблема в том, что у меня есть атогруппировка строк. то есть я указываю уровень в ТабДок.Вывести(). и этот уровень для группировки строк, а не колонок. И тут же надо указать уровень колонок, то есть как бы одно другое исключает, у меня в голове каша.
|
|||
32
ДенисЧ
19.06.15
✎
17:29
|
" у меня в голове каша"
А должен быть брощ!!!! )))))) |
|||
33
ДенисЧ
19.06.15
✎
17:29
|
(31) ТабличныйДокумент (SpreadsheetDocument)
Присоединить (Join) Синтаксис: Присоединить(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>) |
|||
34
Serg_0691
19.06.15
✎
17:30
|
+(30) и, кстати, ТС ничего не говорили про желание поименовать сворачиваемые группы.
(31) Группировка строк и группировка колонок- это различные и не зависимые друг от друга "свойства" отчета. |
|||
35
zak555
19.06.15
✎
17:30
|
а где скд ?
|
|||
36
svchernova
19.06.15
✎
17:32
|
(35) На СКД делала раньше отчеты с простенькими запросами
|
|||
37
svchernova
19.06.15
✎
17:33
|
(33) и (30) что-то начало получаться, кажись.. сейчас поправлю номера групп. отпишусь, как получилось
|
|||
38
ДенисЧ
19.06.15
✎
17:33
|
(35) Чем похожи 1с и институт Беркли?
И те, и другие придумали по два слова из трёх букв... |
|||
39
svchernova
19.06.15
✎
17:36
|
Ну вот такая у меня каша:
ТабДок.НачатьГруппуКолонок(); ТабДок.Вывести(ОбластьСтрокаОбщий,0); ТабДок.Присоединить(ОбластьСтрокаЗадолженностьВсего,0); ТабДок.Присоединить(ОбластьСтрокаЗадолженностьПоМесяцам,0); ТабДок.ЗакончитьГруппуКолонок(); Этот "0" - это номер группировки строки. Как мне указать номер группировки колонок? |
|||
40
Serg_0691
19.06.15
✎
17:37
|
(35) Избалуется и обленится :) Сначала всё ручками, ручками... чтобы всё правильно уложилось в голове. А, потом уж СКД. И, кстати, СКД тоже нужно изучать... что где нажать и куда что вписать. И ещё не известно что проще для освоения :)
|
|||
41
Serg_0691
19.06.15
✎
17:46
|
(39) Борщ не получился, а каша знатная у Вас :)
Когда Вывести() - указывается группировка строк, а когда Присоединить() - группировка колонок. В Присоединить() аж целых два параметра для группировки. Догадайся сама зачем их два :) |
|||
42
Serg_0691
19.06.15
✎
17:49
|
Упс, сорри, меня из кабинета охрана попросила :(
Бай, успехов :) Ушёл |
|||
43
svchernova
19.06.15
✎
17:50
|
(41) Не стебайся.. :(
|
|||
44
svchernova
19.06.15
✎
17:50
|
(41) спасибо!
|
|||
45
svchernova
19.06.15
✎
17:59
|
(42) Получилось!!!!!!!!!!!!!!!!!!!!! Ура!!!! всех целую, всем спасибо!
Правда, спасибо большое :) |
|||
46
Serg_0691
19.06.15
✎
21:08
|
Я рад за Вас.
И, кстати: сорри, без обид, плиз. Пятница/тяпница/ - день юмора на Мисте. Это же Миста - заповедник зловредных, жадных и прочая 1С-программистов. Какие мистяне - такой и юмор у них :) |
|||
47
ДенисЧ
19.06.15
✎
21:10
|
Я так, понЯлЮ с борщом нас прокатили(((
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |