Имя: Пароль:
1C
 
СКД
0 Hipocrisy2013
 
19.01.15
11:54
Как на СКД сделать отчет такого вида?
       заявка          |     заявка бонус     |
сумма    |   наценка   | сумма     | наценка  |
1 ИС-2
 
naïve
19.01.15
11:59
надо объединить одинаковые заголовки?

Процедура ДействияФормыСформировать(Кнопка)
    ЭлементыФормы.Результат.Очистить();
    
    СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки);
    
    ОбработатьЗаголовки(ЭлементыФормы.Результат);
КонецПроцедуры

// Проверка двух смежных ячеек на идентичночность
Функция ОбъединятьЯчейки(ТабДок, индСтр, индКол)

    Ячейка = ТабДок.Область(индСтр, индКол);
    ЯчейкаСлед = ТабДок.Область(индСтр, индКол+1);
    Если ПустаяСтрока(Ячейка.Текст) Тогда

        Возврат ложь

    ИначеЕсли
        //Проверяем на соответствие заголовка
        СокрЛП(Ячейка.Текст) = СокрЛП(ЯчейкаСлед.Текст)
        // Проверяем на соответствие имени (отсеиваем уже объединенные ячейки)
        и Ячейка.Имя = "R"+индСтр+"C"+индКол Тогда

        Возврат Истина;

    Иначе

        Возврат ложь

    КонецЕсли;

КонецФункции

// Обработка заголовков таблицы
//
// Параметры
//  Табл  - < Тип.ТабличныйДокумент> - Табличный документ формы
Процедура ОбработатьЗаголовки(ТабДок)

    ОбъединяемаяОбласть = Неопределено;

    //Для оптимизации здесь нужно будет ограничить высоту таблицы
    Для индСтр=1 По ТабДок.ВысотаТаблицы Цикл

        НачальнаяКолонка = 0;
        Для индКол=1 По ТабДок.ШиринаТаблицы Цикл

            // определяем начало объединения
            Если ОбъединятьЯчейки(ТабДок, индСтр, индКол) Тогда

                Если не НачальнаяКолонка Тогда

                    НачальнаяКолонка = индКол;

                КонецЕсли;

            ИначеЕсли НачальнаяКолонка Тогда
                // завершаем объединение

                ТекстЗаголовка = ТабДок.Область(индСтр, индКол).Текст;
                ОбъединяемаяОбласть = ТабДок.Область(индСтр, НачальнаяКолонка, индСтр, индКол);
                ОбъединяемаяОбласть.Объединить();
                ОбъединяемаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
                ОбъединяемаяОбласть.Текст = ТекстЗаголовка;
                НачальнаяКолонка = 0;

            Иначе

                НачальнаяКолонка = 0;

            КонецЕсли;

        КонецЦикла;

        // Если нашли в строке области для объединения, то прекращаем дальнейшие поиски
        Если не ОбъединяемаяОбласть = Неопределено Тогда

            возврат;

        КонецЕсли;

    КонецЦикла;

КонецПроцедуры
2 zhig75
 
19.01.15
12:04
Заголовки в группы объединить.
3 Hipocrisy2013
 
19.01.15
12:09
вот фотка как надо чтобы понятнее было https://yadi.sk/i/b8recpRRe5mo4
4 polosov
 
19.01.15
12:20
(0) Надо правильно настроить вариант отчета.
5 Hipocrisy2013
 
19.01.15
12:27
(4) это понятное дело, но как? в первую группировку кидаю поля Заявка и заявка бонус, во вторую кидаю показатели, в итоге получается что под заявкой встаёт 1 показатель, а под заявкой бонус все остальные (мне так не нужно), как регулировать вторую группировку?
6 Peltzer
 
19.01.15
12:28
Выбрать
Заявка.Номер,
ЗаявкаБонус.Номер КАК НомерБонуса,
Заявка.Сумма1,
Заявка.Сумма2,
Заявка.Сумма3,
Заявка.Сумма4,
ЗаявкаБонус.Сумма КАК СуммаБонуса
ИЗ Документы.Заявка КАК Заявка
ЛЕВОЕ СОЕДИНЕНИЕ () КАК ЗаявкаБонус

В СКД Группировка Номер, НомерБонуса
И потом детальные записи
7 Peltzer
 
19.01.15
12:29
Сделай макет для группировки Заявка, объединённые четыре ячейки
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший