По теме из базы знаний
- Универсальный конструктор отчетов СКД (управляемые формы, тонкий клиент)
- Группировка измерений в заголовках СКД
- Примеры использования функций СКД Массив (Array) и СоединитьСтроки (JoinStrings) в отчётах 1С 8
- СКД: пример нумерации столбцов
- Объединение ячеек по вертикали и горизонтали в отчете на СКД (объединение заголовков родительских группировок)
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6)тогда нужно понимание структуры отчета. Это таблица или набор группировок?
Колонки постоянное количество или переменное?
и т.д. и т.п.
Что мне видится из вариантов, это в самом запросе определять номер группировки и выводить в отчет, еще можно попробовать позвращаться с системными полями НомерПоПорядкуВГруппировке, НомерПоПорядку.
Колонки постоянное количество или переменное?
и т.д. и т.п.
Что мне видится из вариантов, это в самом запросе определять номер группировки и выводить в отчет, еще можно попробовать позвращаться с системными полями НомерПоПорядкуВГруппировке, НомерПоПорядку.
Это таблица.
Определять номер запросе не покатит. У нас же в запросе один порядок колонок, в макете другой. Они могут вообще скрыть какие-то колонки или добавить пользовательские.
Эти колонки не в запросе рисуются, а в процессоре вывода
Определять номер запросе не покатит. У нас же в запросе один порядок колонок, в макете другой. Они могут вообще скрыть какие-то колонки или добавить пользовательские.
Эти колонки не в запросе рисуются, а в процессоре вывода
Всё просто! Стандартную Кнопку отчета Сформировать (меню действие сформировать) заменяете на свою,
пишите программный запуск отчета. На форме у вас табличный документ "Результат".
Компоновка данных вам выдает как результат некий табличный документ - он формируется изходя из настроек пользователя: КомпоновщикНастроек.настройки. После Заголовка вставляете в табличный документ строчку с номерами
- это несложно. И пишите: "ЭлементыФормы.Результат = МойТабличныйДокумент;". Пользователь будет думать, что он запускает обычный отчет 1с, в котором можно менять настройки. На самом деле так и есть. Только при программном выводе табличного документа не забудьте расшифровку данных сделать.
пишите программный запуск отчета. На форме у вас табличный документ "Результат".
Компоновка данных вам выдает как результат некий табличный документ - он формируется изходя из настроек пользователя: КомпоновщикНастроек.настройки. После Заголовка вставляете в табличный документ строчку с номерами
- это несложно. И пишите: "ЭлементыФормы.Результат = МойТабличныйДокумент;". Пользователь будет думать, что он запускает обычный отчет 1с, в котором можно менять настройки. На самом деле так и есть. Только при программном выводе табличного документа не забудьте расшифровку данных сделать.
// Вот такой код нужно вставить в форму отчета
// для обработчика кнопки, которую вы поместите на форму отчета,
// и назовёте, например, сформировать
Процедура ДействияФормыСформировать(Кнопка)
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
КонецПроцедуры
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ТабДокумент = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДокумент.ФиксацияСверху;
КоличествоКолонок = ТабДокумент.ШиринаТаблицы;
ИсходнаяОбласть = ТабДокумент.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДокумент.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);
ТабДокумент.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали,Ложь);
Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДокумент.Область(КоличествоСтрокШапки+1,Ном);
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветаСтиля.ЦветФонаШапкиОтчета;
Шрифт = Новый Шрифт("Arial",10,Ложь,Ложь,Ложь,Ложь);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.ЦветТекста = Новый Цвет;
ТекОбласть.ЦветРамки = ЦветаСтиля.ЦветЛинииОтчета;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;
// для обработчика кнопки, которую вы поместите на форму отчета,
// и назовёте, например, сформировать
Процедура ДействияФормыСформировать(Кнопка)
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
КонецПроцедуры
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ТабДокумент = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДокумент.ФиксацияСверху;
КоличествоКолонок = ТабДокумент.ШиринаТаблицы;
ИсходнаяОбласть = ТабДокумент.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДокумент.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);
ТабДокумент.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали,Ложь);
Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДокумент.Область(КоличествоСтрокШапки+1,Ном);
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветаСтиля.ЦветФонаШапкиОтчета;
Шрифт = Новый Шрифт("Arial",10,Ложь,Ложь,Ложь,Ложь);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.ЦветТекста = Новый Цвет;
ТекОбласть.ЦветРамки = ЦветаСтиля.ЦветЛинииОтчета;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;
//Добавил расшифровку,о которой писал
Процедура ДействияФормыСформировать(Кнопка)
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ТабДокумент = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДокумент.ФиксацияСверху;
КоличествоКолонок = ТабДокумент.ШиринаТаблицы;
ИсходнаяОбласть = ТабДокумент.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДокумент.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);
ТабДокумент.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали,Ложь);
Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДокумент.Область(КоличествоСтрокШапки+1,Ном);
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветаСтиля.ЦветФонаШапкиОтчета;
Шрифт = Новый Шрифт("Arial",10,Ложь,Ложь,Ложь,Ложь);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.ЦветТекста = Новый Цвет;
ТекОбласть.ЦветРамки = ЦветаСтиля.ЦветЛинииОтчета;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;
КонецПроцедуры()
Процедура ДействияФормыСформировать(Кнопка)
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ТабДокумент = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДокумент.ФиксацияСверху;
КоличествоКолонок = ТабДокумент.ШиринаТаблицы;
ИсходнаяОбласть = ТабДокумент.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДокумент.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);
ТабДокумент.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали,Ложь);
Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДокумент.Область(КоличествоСтрокШапки+1,Ном);
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветаСтиля.ЦветФонаШапкиОтчета;
Шрифт = Новый Шрифт("Arial",10,Ложь,Ложь,Ложь,Ложь);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.ЦветТекста = Новый Цвет;
ТекОбласть.ЦветРамки = ЦветаСтиля.ЦветЛинииОтчета;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;
КонецПроцедуры()
Если хотите поиграться с цветам,
то можно так
ТекОбласть.ЦветФона = Новый Цвет(192,192,192);
ТекОбласть.ЦветТекста = Новый Цвет(255,255,255);
ТекОбласть.ЦветРамки = Новый Цвет(0,0,0);
Это соответствует картинке "Выборпериода.png"
Хотя лично мне, больше нравятся стилизованные цвета.
В вышеупомянутом примере они как раз и используются. Отчет выглядит в компоновке данных очень красиво!
то можно так
ТекОбласть.ЦветФона = Новый Цвет(192,192,192);
ТекОбласть.ЦветТекста = Новый Цвет(255,255,255);
ТекОбласть.ЦветРамки = Новый Цвет(0,0,0);
Это соответствует картинке "Выборпериода.png"
Хотя лично мне, больше нравятся стилизованные цвета.
В вышеупомянутом примере они как раз и используются. Отчет выглядит в компоновке данных очень красиво!
//Если вы вдруг захотите использовать экзотические макеты оформления схемы компоновки данных, тогда
//нужно немного модифицировать код обработки
Процедура ДействияФормыСформировать(Кнопка)
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Проверяем, установлен ли пользовательский макет оформления компоновки данных
// и, если он установлен, то берем значения элементов оформления из него,
// иначе - из основного.
МакетОформления = Новый МакетОформленияКомпоновкиДанных;
ПараметрМакетаОформления = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МакетОформления"));
Если ПараметрМакетаОформления.Использование Тогда
МакетОформления = БиблиотекаМакетовОформленияКомпоновкиДанных[ПараметрМакетаОформления.Значение].ПолучитьМакет();
Иначе
МакетОформления = БиблиотекаМакетовОформленияКомпоновкиДанных["Основной"].ПолучитьМакет();
КонецЕсли;
ОформлениеЗаголовкаТаблицы = МакетОформления.Элементы.Найти("ЗаголовокТаблицы").Значение[0].Оформление;
ЦветФона = ОформлениеЗаголовкаТаблицы.Элементы.Найти("ЦветФона").Значение;
ЦветРамки = ОформлениеЗаголовкаТаблицы.Элементы.Найти("ЦветГраницы").Значение;
ЦветТекста = ОформлениеЗаголовкаТаблицы.Элементы.Найти("ЦветТекста").Значение;
Шрифт = ОформлениеЗаголовкаТаблицы.Элементы.Найти("Шрифт").Значение;
Линия = ОформлениеЗаголовкаТаблицы.Элементы.Найти("СтильГраницы").Значение;
// Вставляем область нумерации колонок и выводим результат
ТабДокумент = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДокумент.ФиксацияСверху;
КоличествоКолонок = ТабДокумент.ШиринаТаблицы;
ИсходнаяОбласть = ТабДокумент.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДокумент.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);
ТабДокумент.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали,Ложь);
Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДокумент.Область(КоличествоСтрокШапки+1,Ном);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветФона;
ТекОбласть.ЦветТекста = ЦветТекста;
ТекОбласть.ЦветРамки = ЦветРамки;
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;
КонецПроцедуры
//нужно немного модифицировать код обработки
Процедура ДействияФормыСформировать(Кнопка)
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Проверяем, установлен ли пользовательский макет оформления компоновки данных
// и, если он установлен, то берем значения элементов оформления из него,
// иначе - из основного.
МакетОформления = Новый МакетОформленияКомпоновкиДанных;
ПараметрМакетаОформления = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МакетОформления"));
Если ПараметрМакетаОформления.Использование Тогда
МакетОформления = БиблиотекаМакетовОформленияКомпоновкиДанных[ПараметрМакетаОформления.Значение].ПолучитьМакет();
Иначе
МакетОформления = БиблиотекаМакетовОформленияКомпоновкиДанных["Основной"].ПолучитьМакет();
КонецЕсли;
ОформлениеЗаголовкаТаблицы = МакетОформления.Элементы.Найти("ЗаголовокТаблицы").Значение[0].Оформление;
ЦветФона = ОформлениеЗаголовкаТаблицы.Элементы.Найти("ЦветФона").Значение;
ЦветРамки = ОформлениеЗаголовкаТаблицы.Элементы.Найти("ЦветГраницы").Значение;
ЦветТекста = ОформлениеЗаголовкаТаблицы.Элементы.Найти("ЦветТекста").Значение;
Шрифт = ОформлениеЗаголовкаТаблицы.Элементы.Найти("Шрифт").Значение;
Линия = ОформлениеЗаголовкаТаблицы.Элементы.Найти("СтильГраницы").Значение;
// Вставляем область нумерации колонок и выводим результат
ТабДокумент = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДокумент.ФиксацияСверху;
КоличествоКолонок = ТабДокумент.ШиринаТаблицы;
ИсходнаяОбласть = ТабДокумент.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДокумент.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);
ТабДокумент.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали,Ложь);
Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДокумент.Область(КоличествоСтрокШапки+1,Ном);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветФона;
ТекОбласть.ЦветТекста = ЦветТекста;
ТекОбласть.ЦветРамки = ЦветРамки;
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;
КонецПроцедуры
// Протестировал самый неэкзотический случай, когда макет оформления "Безоформления", нашёл небольшую ошибку,
// теперь со всеми макетами работает
Процедура ДействияФормыСформировать(Кнопка)
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Проверяем, установлен ли пользовательский макет оформления компоновки данных
// и, если он установлен, то берем значения элементов оформления из него,
// иначе - из основного.
МакетОформления = Новый МакетОформленияКомпоновкиДанных;
ПараметрМакетаОформления = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МакетОформления"));
Если ПараметрМакетаОформления.Использование Тогда
МакетОформления = БиблиотекаМакетовОформленияКомпоновкиДанных[ПараметрМакетаОформления.Значение].ПолучитьМакет();
Иначе
МакетОформления = БиблиотекаМакетовОформленияКомпоновкиДанных["Основной"].ПолучитьМакет();
КонецЕсли;
ОформлениеЗаголовкаТаблицы = МакетОформления.Элементы.Найти("ЗаголовокТаблицы").Значение;
Если ОформлениеЗаголовкаТаблицы = Неопределено Тогда
ЦветФона = Новый Цвет(255,255,255);
ЦветРамки = Новый Цвет(0,0,0);
ЦветТекста = Новый Цвет(0,0,0);
Шрифт = Новый Шрифт("Arial",10,Ложь,Ложь,Ложь,Ложь);
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,0);
Иначе
ЦветФона = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("ЦветФона").Значение;
ЦветРамки = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("ЦветГраницы").Значение;
ЦветТекста = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("ЦветТекста").Значение;
Шрифт = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("Шрифт").Значение;
Линия = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("СтильГраницы").Значение;
КонецЕсли;
// Вставляем область нумерации колонок и выводим результат
ТабДокумент = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДокумент.ФиксацияСверху;
КоличествоКолонок = ТабДокумент.ШиринаТаблицы;
ИсходнаяОбласть = ТабДокумент.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДокумент.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);
ТабДокумент.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали,Ложь);
Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДокумент.Область(КоличествоСтрокШапки+1,Ном);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветФона;
ТекОбласть.ЦветТекста = ЦветТекста;
ТекОбласть.ЦветРамки = ЦветРамки;
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;
КонецПроцедуры
// теперь со всеми макетами работает
Процедура ДействияФормыСформировать(Кнопка)
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.Настройки,ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки,Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Проверяем, установлен ли пользовательский макет оформления компоновки данных
// и, если он установлен, то берем значения элементов оформления из него,
// иначе - из основного.
МакетОформления = Новый МакетОформленияКомпоновкиДанных;
ПараметрМакетаОформления = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МакетОформления"));
Если ПараметрМакетаОформления.Использование Тогда
МакетОформления = БиблиотекаМакетовОформленияКомпоновкиДанных[ПараметрМакетаОформления.Значение].ПолучитьМакет();
Иначе
МакетОформления = БиблиотекаМакетовОформленияКомпоновкиДанных["Основной"].ПолучитьМакет();
КонецЕсли;
ОформлениеЗаголовкаТаблицы = МакетОформления.Элементы.Найти("ЗаголовокТаблицы").Значение;
Если ОформлениеЗаголовкаТаблицы = Неопределено Тогда
ЦветФона = Новый Цвет(255,255,255);
ЦветРамки = Новый Цвет(0,0,0);
ЦветТекста = Новый Цвет(0,0,0);
Шрифт = Новый Шрифт("Arial",10,Ложь,Ложь,Ложь,Ложь);
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,0);
Иначе
ЦветФона = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("ЦветФона").Значение;
ЦветРамки = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("ЦветГраницы").Значение;
ЦветТекста = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("ЦветТекста").Значение;
Шрифт = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("Шрифт").Значение;
Линия = ОформлениеЗаголовкаТаблицы[0].Оформление.Элементы.Найти("СтильГраницы").Значение;
КонецЕсли;
// Вставляем область нумерации колонок и выводим результат
ТабДокумент = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДокумент.ФиксацияСверху;
КоличествоКолонок = ТабДокумент.ШиринаТаблицы;
ИсходнаяОбласть = ТабДокумент.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДокумент.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);
ТабДокумент.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали,Ложь);
Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДокумент.Область(КоличествоСтрокШапки+1,Ном);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветФона;
ТекОбласть.ЦветТекста = ЦветТекста;
ТекОбласть.ЦветРамки = ЦветРамки;
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;
КонецПроцедуры
Согласен, для меня важно, чтобы не было ошибок.
Что касается количества когда, то это немного, по сравнени с тем, что используется в зарпосе ЗУП для
получения табеля учета рабочего времени (около 20 стр текста или 50 страниц в ворде).
В данном примере, максимум 50. Это не о чём.
Что касается количества когда, то это немного, по сравнени с тем, что используется в зарпосе ЗУП для
получения табеля учета рабочего времени (около 20 стр текста или 50 страниц в ворде).
В данном примере, максимум 50. Это не о чём.
Предложенный вам вариант универсальный, он подстраиватеся под отчет, учитывет ширину колонок, шрифт, цвет текста, цвет фона, формат границы. Если брать внешний макет с заголовком и пытаться его наложить имеющийся отчет, то он может не "срастись"!
_СоСтрокиЧитать=0;
_ОбщЧисло = 0;
Для с=1 По 20 Цикл
_СоСтрокиЧитать=_СоСтрокиЧитать+1;
_ТекстПоля = ЭлементыФормы.Результат.Область(с,1).Текст;
Попытка
_ЧислоНомерПП = Число(_ТекстПоля);
_ОбщЧисло = _ОбщЧисло + _ЧислоНомерПП;
Исключение КонецПОпытки;
Если _ОбщЧисло=3 Тогда
_СоСтрокиЧитать = _СоСтрокиЧитать - 1;
Прервать;
КонецЕсли;
КонецЦикла;
СтрокаНомераКолонок=ЭлементыФормы.Результат.Область("R"+_СоСтрокиЧитать);
ЭлементыФормы.Результат.ВставитьОбласть(СтрокаНомераКолонок,СтрокаНомераКолонок,ТипСмещенияТабличногоДокумента.ПоВертикали);
номСтроки=1;
Пока Истина Цикл
ОбработкаПрерыванияПользователя();
печ_номСтроки=Формат(номСтроки,"ЧГ=0");
_Область=ЭлементыФормы.Результат.Область("R"+_СоСтрокиЧитать+"C"+печ_номСтроки);
Если СокрЛП(_Область.ЦветРамки)="Авто" Тогда
Прервать;
КонецЕсли;
_Область.Текст = номСтроки;
_Область.ГоризонтальноеПоложение=ГоризонтальноеПоложение.Центр;
//_Область.Шрифт=Новый Шрифт(_Область.Шрифт,,,Истина);//Это если хочется шрифт полужирный
_Область.ЦветФона=ЦветаСтиля.ЦветФонаШапкиОтчета;//Если используете стандартный макет, а так можно вписать свой цвет
номСтроки=номСтроки+1;
Если номСтроки>30 Тогда
Прервать;
КонецЕсли;
КонецЦикла; Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот