Имя: Пароль:
1C
 
не получаются горизонтальные группировки в отчете
,
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
Я так, понЯлЮ с борщом нас прокатили(((
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший