Добавление дополнительных отчетов и обработок в тонком клиенте БП 3.0, ЗУП 3.0, УТ 11 Любой отчет и обработку можно подключить пользователям как дополнительные отчеты или обработки, вот например пункт в БП - Банк:
Добавление происходит через
далее Дополнительные отчеты и обработки , в списке нажмите Создать и Выберите Файл отчета/обработки:
Перед добавлением файл нужно подготовить, дописать в модуль объекта код подключения:
Для обработок код:
Код 1C v 8.3 Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации. Вставить( "Вид" , "ДополнительнаяОбработка" ) ;
ПараметрыРегистрации. Вставить( "Назначение" , Новый СписокЗначений) ;
ПараметрыРегистрации. Вставить( "Наименование" , "Сравнение документов БУХ и УТ" ) ;
ПараметрыРегистрации. Вставить( "Версия" , "1.0" ) ;
ПараметрыРегистрации. Вставить( "БезопасныйРежим" , Истина ) ;
ПараметрыРегистрации. Вставить( "Информация" , "" ) ;
ПараметрыРегистрации. Вставить( "Команды" , Новый СписокЗначений) ;
ТаблицаКоманд = ПолучитьТаблицу_Команд( ) ;
ДобавитьКоманду( ТаблицаКоманд,
"Сравнение документов БУХ и УТ" ,
"Сравнение документов БУХ и УТ" ,
"ОткрытиеФормы" ,
Ложь ,
"" ) ;
ПараметрыРегистрации. Вставить( "Команды" , ТаблицаКоманд) ;
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицу_Команд()
Команды = Новый ТаблицаЗначений;
Команды. Колонки. Добавить( "Представление" , Новый ОписаниеТипов( "Строка" ) ) ;
Команды. Колонки. Добавить( "Идентификатор" , Новый ОписаниеТипов( "Строка" ) ) ;
Команды. Колонки. Добавить( "Использование" , Новый ОписаниеТипов( "Строка" ) ) ;
Команды. Колонки. Добавить( "ПоказыватьОповещение" , Новый ОписаниеТипов( "Булево" ) ) ;
Команды. Колонки. Добавить( "Модификатор" , Новый ОписаниеТипов( "Строка" ) ) ;
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "" )
НоваяКоманда = ТаблицаКоманд. Добавить( ) ;
НоваяКоманда. Представление = Представление;
НоваяКоманда. Идентификатор = Идентификатор;
НоваяКоманда. Использование = Использование;
НоваяКоманда. ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда. Модификатор = Модификатор;
КонецПроцедуры
Для отчетов и печатных форм меняйте параметр Вид :
Код 1C v 8.3
ПараметрыРегистрации. Вставить( "Вид" , "ДополнительнаяОбработка" ) ;
Возможные значения этого поля приведу в виде таблицы
Значение поля "Вид" Расположение команды
Расширение
файла
ПечатнаяФорма В меню "Печать" на форме объекта или списка epf ЗаполнениеОбъекта В меню "Заполнить" на форме объекта или списка epf СозданиеСвязанныхОбъектов В меню "Создать на основании" - "Создание связанных объектов.." на форме объекта или списка epf Отчет В меню "Отчеты" на форме объекта или списка erf ДополнительнаяОбработка В списке соответствующих подсистем в меню "Сервис" - "Дополнительные обработки" epf ДополнительныйОтчет В списке соответствующих подсистем в меню "Сервис" - "Дополнительные отчеты" erf
Это поле может принимать одно из значений, возвращаемых функциями в типовых конфигурациях:
ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<Вид>(). Например, для вида "ПечатнаяФорма" есть функция ВидОбработкиПечатнаяФорма().
Категория:
Внешние печатные формы, отчеты и обработк�… Как в СКД вывести дату и время формирования отчета? Есть несколько вариантов вывода информации перед основным отчетом,какой лучше?! - зависит от задачи:
Допустим нам нужно вывести дату и время формирования отчета и свою шапку отчета, например так:
Варианты решения:
1. Использование группировки и макета заголовка: 1. Создаем в схеме новую группировку (без поля) и установим имя группировке Шапка отчета.
2. Удалим у данной группировки из выбранных полей автополе
В других настройках выберем макет оформления "Без оформления" (иначе на наш макет будет накладываться стандартный макет и вокруг всех ячеек будет рамка)
На вкладке макеты добавляем макет заголовка группировки (при добавлении указываем наше имя группировки (Шапка отчета) и указываем область с нашими данными), справа в табличном документе пишем необходимый текст и параметр
Сохраняем, формируем и видим результат как выше
2. Программное изменение текста заголовка Код нужно установить в процедуре модуля отчета ПриКомпоновкеРезультата()
Код 1C v 8.2 УП ЗначениеПараметра = КомпоновщикНастроек. Настройки. ПараметрыВывода.
НайтиЗначениеПараметра( Новый ПараметрКомпоновкиДанных( "Title" ) ) ;
ЗначениеПараметра. Значение= "Отчет сформирован " + Формат( ТекущаяДата( ) , "ДЛФ=DDT" ) ;
ЗначениеПараметра. Использование = Истина ;
еще пример:
Код 1C v 8.3 Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
КомпоновщикНастроек. Настройки. ПараметрыВывода. Элементы. Найти( "ВыводитьЗаголовок" ) . Использование = Истина ;
КомпоновщикНастроек. Настройки. ПараметрыВывода. Элементы. Найти( "ВыводитьЗаголовок" ) . Значение = ТипВыводаТекстаКомпоновкиДанных. Выводить;
КомпоновщикНастроек. Настройки. ПараметрыВывода. Элементы. Найти( "Заголовок" ) . Использование = Истина ;
КомпоновщикНастроек. Настройки. ПараметрыВывода. Элементы. Найти( "Заголовок" ) . Значение = "Пример вывода своего заголовка," + Символы. ПС
+ "Отчет сформирован " + Формат( ТекущаяДата( ) , "ДЛФ=DDT" ) ;
КонецПроцедуры
3. Вывод табличного макета с параметром перед формированием отчета Создаем макет ВыводСформирован , в нем создаем параметр Сформирован и назначаем имя области Заголовок
В модуле перед
Код 1C v 8.х МакетКомпоновкиДанных = КомпоновщикМакета. Выполнить( СхемаКомпоновкиДанных, КомпоновщикНастроек. Настройки, ДанныеРасшифровки) ;
Пишем:
Код 1C v 8.х
МакетЗаголовка = ПолучитьМакет( "ВыводСформирован" ) ;
ОбластьЗаголовка = МакетЗаголовка. ПолучитьОбласть( "Заголовок" ) ;
ОбластьЗаголовка. Параметры. Сформирован = "Сформирован: " + Формат( ТекущаяДата( ) , "ДЛФ=DDT" ) ;
ТабличныйДокумент. Вывести( ОбластьЗаголовка) ;
в результате:
Категория:
Схема Компоновки Данных Добавить штрихкод Здравствуйте! Такой вопрос: Как в Отчет с помощью построительОтчета засунуть штрихкод?!
ПолучитьМакетПостротеляОтчета() вот из за него начинаются проблемы. Выдаёт только КоличествоНачальныйОстаток и КоличествоКонечныйОстаток. Я так понял в отчет выводится первая картинка тогда как мне надо третью.
ШТРИХКОД ДОБАВЛЯЮ ТАК
Код 1C v 8.3 ТЗ = ПостроительОтчета. Результат. Выгрузить( ) ;
ТЗ. Колонки. Добавить( "Штрихкод" , , "Штрихкод" ) ;
ПакетДляОтчета = ТЗ;
ОбработкаШК = ВыбираемШК( ТЗ) ;
ПомещаемШКВПакет( ОбработкаШК) ;
ПостроительОтчета. ИсточникДанных = Новый ОписаниеИсточникаДанных( ПакетДляОтчета) ;
ОтборПериодичность = ДобавитьОтборПериодичность( ) ;
ПостроительОтчета. Макет = ПолучитьМакетПостротеляОтчета( ) ;
ПостроительОтчета. МакетОформления = _ПолучитьМакетОформления( ) ;
ПостроительОтчета. ОформитьМакет( ) ;
ПостроительОтчета. Параметры. Вставить( "ДатаНач" , ? ( ДатаНач = Дата( '00010101000000 ') , ДатаНач, Новый Граница( НачалоДня( ДатаНач) , ВидГраницы. Включая) ) ) ;
ПостроительОтчета. Параметры. Вставить( "ДатаКон" , ? ( ДатаКон = Дата( '00010101000000 ') , ДатаКон, Новый Граница( КонецДня( ДатаКон) , ВидГраницы. Включая) ) ) ;
ПостроительОтчета. Параметры. Вставить( "ДатаНачала" , ? ( ДатаНач = Дата( '00010101000000 ') , ДатаНач, НачалоДня( ДатаНач) ) ) ;
ПостроительОтчета. Параметры. Вставить( "ДатаКонца" , ? ( ДатаКон = Дата( '00010101000000 ') , Дата( "39991231" ) , КонецДня( ДатаКон) ) ) ;
ПостроительОтчета. Выполнить( ) ;
ПостроительОтчета. Вывести( ТабличныйДокумент) ;
< br>
Категория:
1С Управление производственным предприят�… Как программно сформировать отчет СКД указав параметры и на выходе получить таблице значений? В одном документе для расчета потребовалось получать данные из отчета на СКД, реализовал следующим образом:
Код 1C v 8.х
СхемаОст = Отчеты. ТоннажПоЭкспедиторам. ПолучитьМакет( "ОсновнаяСхемаКомпоновкиДанных" ) ;
КомпоновщикНастроекНастройки = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроекНастройки. Инициализировать( Новый ИсточникДоступныхНастроекКомпоновкиДанных( СхемаОст) ) ;
КомпоновщикНастроекНастройки. ЗагрузитьНастройки( СхемаОст. НастройкиПоУмолчанию) ;
КомпоновщикНастроекНастройки. Настройки. ПараметрыДанных. УстановитьЗначениеПараметра( "НачалоПериода" , НачалоМесяца( МесяцРасчета) ) ;
КомпоновщикНастроекНастройки. Настройки. ПараметрыДанных. УстановитьЗначениеПараметра( "КонецПериода" , КонецМесяца( МесяцРасчета) ) ;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета. Выполнить( СхемаОст, КомпоновщикНастроекНастройки. Настройки, , , Тип( "ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений" ) ) ;
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных. Инициализировать( МакетКомпоновкиДанных) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДанныеТЗ = Новый ТаблицаЗначений;
ПроцессорВывода. УстановитьОбъект( ДанныеТЗ) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновкиДанных) ;
ТоннажПоЭкспедиторам. Очистить( ) ;
Для каждого СтрокаТЗ Из ДанныеТЗ Цикл
Если ЗначениеЗаполнено( СтрокаТЗ. Экспедитор) и СтрокаТЗ. Доставка= Неопределено Тогда
нСтр = ТоннажПоЭкспедиторам. Добавить( ) ;
ЗаполнитьЗначенияСвойств( нСтр, СтрокаТЗ) ;
нСтр. Сотрудник= СтрокаТЗ. Экспедитор;
Иначе
Продолжить;
КонецЕсли ;
КонецЦикла ;
Категория:
Схема Компоновки Данных Как вывести список на печать с учетом установленных отборов? Этот код аналог функции Вывести список - вывод списка элементов справочника или списка документов:
Код 1C v 8.х Процедура ДействияФормыПечать(Кнопка)
Список = ЭтаФорма. ТабличноеПолеДокументов;
ТабДок = Новый ТабличныйДокумент;
ТабДок. АвтоМасштаб = Истина ;
ТабДок. ТолькоПросмотр = Ложь ;
ТабДок. ОтображатьСетку = Ложь ;
Макет = Документы. Заказ. ПолучитьМакет( "МакетСписок" ) ;
ОбластьШапка = Макет. ПолучитьОбласть( "Шапка" ) ;
ОбластьСтрока = Макет. ПолучитьОбласть( "Строка" ) ;
ТабДок. Вывести( ОбластьШапка) ;
Построитель = Новый ПостроительОтчета;
Построитель. ИсточникДанных = Новый ОписаниеИсточникаДанных( Список) ;
Выборка = Построитель. Результат. Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
ОбработкаПрерыванияПользователя( ) ;
ОбластьСтрока. Параметры. Заполнить( Выборка) ;
ТабДок. Вывести( ОбластьСтрока) ;
КонецЦикла ;
ТабДок. Показать( ) ;
КонецПроцедуры
Категория:
Список Справочника, Документов, Регистров Как в СКД повторять шапку на каждой странице при печати и вывести колонтитулы? Нужно выводить на каждой странице отчета, шапку. Отчет сделан через СКД (Схема компоновки данных). В схеме есть макет, в нем есть ячейки шапки.
Для этого используется метод - ПовторятьПриПечатиСтроки, о нем я уже писал: Как при печати выводить шапку на каждой странице (ПовторятьПриПечатиСтроки)?
Код кнопки формирования отчета:
Код 1C v 8.3 СводнаяКартаРезультат = Новый ТабличныйДокумент;
ПечатьСводнойКартыНаСервере( СводнаяКартаРезультат) ;
СводнаяКартаРезультат. Показать( "СводнаяКарта" ) ;
Процедура вывода отчета:
Код 1C v 8.3 &НаСервере
Процедура ПечатьСводнойКартыНаСервере(СводнаяКартаРезультат)
СхемаКомпоновкиДанных = Справочники. Номенклатура. ПолучитьМакет( "МакетСводнаяКарта" ) ;
СводнаяКартаРезультат. ПовторятьПриПечатиСтроки = СводнаяКартаРезультат. Область( 7 , , 7 ) ;
Настройки = СхемаКомпоновкиДанных. НастройкиПоУмолчанию;
НомеклатураСсылка = Настройки. ПараметрыДанных. Элементы. Найти( "НоменклатураСсылка" ) ;
НомеклатураСсылка. Значение = Объект. Ссылка;
НомеклатураСсылка. Использование = Истина ;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета. Выполнить( СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки) ;
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных. Инициализировать( МакетКомпоновки, , ДанныеРасшифровки) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( СводнаяКартаРезультат) ;
ПроцессорВывода. НачатьВывод( ) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновкиДанных, Истина ) ;
ПроцессорВывода. ЗакончитьВывод( ) ;
КонецПроцедуры
Если дополнительно нужно вывести колонтитулы,
тогда:
Код 1C v 8.3
ТабДок. ВерхнийКолонтитул. Выводить = Истина ;
ТабДок. ВерхнийКолонтитул. НачальнаяСтраница = 2 ;
ТабДок. ВерхнийКолонтитул. Шрифт = Новый Шрифт( Результат. ВерхнийКолонтитул. Шрифт, , , , Истина ) ;
ТабДок. ВерхнийКолонтитул. ТекстСлева = "Заголовок отчета" ;
ТабДок. ВерхнийКолонтитул. ТекстВЦентре = "Стр. [&НомерСтраницы] из [&СтраницВсего]" ;
ТабДок. ВерхнийКолонтитул. ТекстСправа = "Дата/время печати: [&Дата]/[&Время]" ;
ТабДок. НижнийКолонтитул. Выводить = Истина ;
ТабДок. НижнийКолонтитул. Шрифт = Новый Шрифт( Результат. ВерхнийКолонтитул. Шрифт, , , , Истина ) ;
ТабДок. НижнийКолонтитул. ТекстВЦентре = "Заголовок отчета" ;
Категория:
Схема Компоновки Данных Динамический отчет на СКД с разными вариантами На днях делал несколько однотипных отчетов на СКД.
Общий принцип: формируются все варианты отчета, указанные в настройках схемы и каждый вариант выводится на отдельной вкладке.
Потом возникла мысль попробовать объединить все схемы в один отчет, чтобы не плодить лишних объектов в конфигурации. При этом количество вариантов в этих схемах заранее неизвестно. Ok, challenge accepted.
В тестовой конфигурации создаю для отчета две схемы компоновки, "Склад" и "Заявки".
Запросы наборов данных приводить не буду, для каждой схемы в настройках добавляю несколько вариантов отчетов.
Теперь переходим к созданию формы. Практически все реквизиты формы будут создаваться при выборе необходимого макета отчета.
Код 1C v 8.2 УП &НаСервере
Процедура СоздатьПереченьОтчетов()
Для Каждого Макет Из РеквизитФормыВЗначение( "Отчет" ) . Метаданные( ) . Макеты Цикл
Элементы. МакетОтчета. СписокВыбора. Добавить( Макет. Имя, Макет. Синоним) ;
КонецЦикла ;
КонецПроцедуры
&НаСервере
Процедура ОбработатьВыборМакета()
Макет = РеквизитФормыВЗначение( "Отчет" ) . ПолучитьМакет( МакетОтчета) ;
мУдалить = ? ( ПустаяСтрока( РеквизитыКУдалению) , Новый Массив, ПолучитьИзВременногоХранилища( РеквизитыКУдалению) ) ;
мДобавить = Новый Массив;
кУдалению = Новый Массив;
Для Каждого Вариант Из Макет. ВариантыНастроек Цикл
ИмяРеквизита = "ТабДок_" + Вариант. Имя;
тРеквизит = Новый РеквизитФормы( ИмяРеквизита, Новый ОписаниеТипов( "ТабличныйДокумент" ) ) ;
мДобавить. Добавить( тРеквизит) ;
кУдалению. Добавить( ИмяРеквизита) ;
КонецЦикла ;
ИзменитьРеквизиты( мДобавить, мУдалить) ;
Пока Элементы. СтраницыОтчета. ПодчиненныеЭлементы. Количество( ) Цикл
Элементы. Удалить( Элементы. СтраницыОтчета. ПодчиненныеЭлементы[0 ]) ;
КонецЦикла ;
Для Каждого Вариант Из Макет. ВариантыНастроек Цикл
Страница = Элементы. Добавить( "Страница_" + Вариант. Имя, Тип( "ГруппаФормы" ) , Элементы. СтраницыОтчета) ;
Страница. Вид = ВидГруппыФормы. Страница;
Страница. Заголовок = Вариант. Представление;
ИмяРеквизита = "ТабДок_" + Вариант. Имя;
ТабДок = Элементы. Добавить( ИмяРеквизита, Тип( "ПолеФормы" ) , Страница) ;
ТабДок. Вид = ВидПоляФормы. ПолеТабличногоДокумента;
ТабДок. ПутьКДанным = ИмяРеквизита;
ТабДок. ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы. Нет;
ЭтаФорма[ИмяРеквизита]. Очистить( ) ;
КонецЦикла ;
РеквизитыКУдалению = ПоместитьВоВременноеХранилище( кУдалению, УникальныйИдентификатор) ;
КонецПроцедуры
&НаСервере
Процедура СформироватьОтчеты()
Схема = РеквизитФормыВЗначение( "Отчет" ) . ПолучитьМакет( МакетОтчета) ;
Для Каждого Вариант Из Схема. ВариантыНастроек Цикл
Отчет. КомпоновщикНастроек. ЗагрузитьНастройки( Вариант. Настройки) ;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета. Выполнить( Схема, Отчет. КомпоновщикНастроек. ПолучитьНастройки( ) ) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( ЭтаФорма["ТабДок_" + Вариант. Имя]) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновки) ;
КонецЦикла ;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СоздатьПереченьОтчетов( ) ;
КонецПроцедуры
&НаКлиенте
Процедура МакетОтчетаПриИзменении(Элемент)
ОбработатьВыборМакета( ) ;
КонецПроцедуры
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьОтчеты( ) ;
КонецПроцедуры
Смотрим, что получилось.
Выгрузка базы 1Cv8skd.rar
Источник
Категория:
Схема Компоновки Данных Как сформировать отчет СКД без проверки прав (в привилегированном режиме)? Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав!
Особенно если настроен RLS
Есть несколько способов как это сделать: 1. Установить привилегированный режим в модуле отчета
Форма отчета должна быть Управляемой, далее в модуле отчета процедура обработчика «При компоновке результата»:
Код 1C v 8.3
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь ;
УстановитьПривилегированныйРежим( Истина ) ;
СформироватьОтчет( ДокументРезультат, ДанныеРасшифровки) ;
УстановитьПривилегированныйРежим( Ложь ) ;
КонецПроцедуры
2. Формирование в п ривилегированном режиме через Общий модуль с галкой Привелигерованный
Создаем общий модуль
так же как в пункте 1 в обработчике «При компоновке результата» пишем:
Код 1C v 8.3
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь ;
МЕ_ДляОтчетаСКД_ПривелРежим. СформироватьОтчетПривРеж( ДокументРезультат, СхемаКомпоновкиДанных, ДанныеРасшифровки, КомпоновщикНастроек) ;
КонецПроцедуры
В общем модуле МЕ_ДляОтчетаСКД_ПривелРежим код:
Код 1C v 8.3 Процедура СформироватьОтчетПривРеж(ТабличныйДокумент, СхемаКомпоновкиДанных, ДанныеРасшифровки, КомпоновщикНастроек) Экспорт
ТабличныйДокумент. Очистить( ) ;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета. Выполнить( СхемаКомпоновкиДанных, КомпоновщикНастроек. Настройки, ДанныеРасшифровки, , , Ложь ) ;
ВнешниеНаборыДанных = Новый Структура;
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных. Инициализировать( МакетКомпоновкиДанных, ВнешниеНаборыДанных, ДанныеРасшифровки) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( ТабличныйДокумент) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновкиДанных) ;
КонецПроцедуры
3. Если включен режим Использовать ограничение на уровне прав доступа - RLS
Часто используется в типовых. Тут в модуле для текущего пользователя можно на время формирования отчету установить параметр сеанса ИспользоватьОграниченияПравДоступаНаУровнеЗаписей в Ложь и RLS не сработает.
Код 1C v 8.3 ПараметрыСеанса. ИспользоватьОграниченияПравДоступаНаУровнеЗаписей= Ложь ;
После завершения формирования, не забудьте включить rls обратно установив = Истина
4. Если в запросе используется конструкция вида регистратор.дата и это поле не отображается в полях отчета СКД
Допустим Вы сделали запрос по регистру накоплений и через регистратор обратились к дате или сумме документа и при формировании отчета СКД, эти поля недоступны !? как же быть?
Проблема в том - что у регистратором может выступать несколько документов и видимо права чтение/просмотр есть не на все - поэтому через скд эта таблица целиком недоступна, решение:
1. открыть доступ на все регистраторы регистра
2. в запросе четко обозначить тип
Код 1C v 8.3
ВЫРАЗИТЬ( ДокументыОплаты. Регистратор КАК Документ. ПлатежноеПоручениеВходящее) . СуммаДокумента
ВЫБОР
КОГДА РАЗНОСТЬДАТ( ВЫРАЗИТЬ( ВзаиморасчетыПоДокументам. ДокументРасчетовСКонтрагентом КАК Документ. ПоступлениеТоваровУслуг) . Дата, КонецПериода, ДЕНЬ) > ВзаиморасчетыПоДокументам. ДоговорКонтрагента. ДопустимоеЧислоДнейЗадолженности
ТОГДА ДОБАВИТЬКДАТЕ( ВЫРАЗИТЬ( ВзаиморасчетыПоДокументам. ДокументРасчетовСКонтрагентом КАК Документ. ПоступлениеТоваровУслуг) . Дата, ДЕНЬ, ВзаиморасчетыПоДокументам. ДоговорКонтрагента. ДопустимоеЧислоДнейЗадолженности)
ИНАЧЕ ДАТАВРЕМЯ( 1 , 1 , 1 )
КОНЕЦ КАК ДеньВозникновенияЗадолженности
В дополнении у пункту 1, код процедуры сформировать отчет(). Для вывода отчета я использую шаблон All4CF.ru_Template_SKD_v4.1 в нем уже реализованы почти все необходимые функции и работает в Обычных и УП формах:
Код 1C v 8.3
Процедура СформироватьОтчет(ТабличныйДокумент, ДанныеРасшифровки)
УстановитьПривилегированныйРежим( Истина ) ;
ВосстановитьНастройкиВыводаЗаголовка( ) ;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ТабличныйДокумент. Очистить( ) ;
УстановитьПараметрыОтчета( ) ;
СохранитьНастройкиВыводаЗаголовка( ) ;
ВыводитьЗаголовок = ВыводитьЗаголовокОтчета( ) ;
Если ВыводитьЗаголовок Тогда
ПрисоединитьЗаголовокОтчетаКТабличномуДокументу( ТабличныйДокумент, ПолучитьТекстЗаголовкаОтчета( ) ) ;
НайденнаяНастройкаВыводаЗаголовка = КомпоновщикНастроек. Настройки. ПараметрыВывода. Элементы. Найти( "ВыводитьЗаголовок" ) ;
НайденнаяНастройкаВыводаЗаголовка. Значение = ТипВыводаТекстаКомпоновкиДанных. НеВыводить;
НайденнаяНастройкаВыводаЗаголовка. Использование = Истина ;
КонецЕсли ;
КопияДополнительныхНастроек = УстановитьДополнительныеНастройкиДляРасшифровки( ) ;
МакетКомпоновкиДанных = КомпоновщикМакета. Выполнить( СхемаКомпоновкиДанных, КомпоновщикНастроек. Настройки, ДанныеРасшифровки) ;
ВнешниеНаборыДанных = Новый Структура;
ТаблицаВнешнегоНабораДанных = ПолучитьТаблицуВнешнегоНабораДанных( ) ;
ВнешниеНаборыДанных. Вставить( "ТаблицаВнешнегоНабораДанных" , ТаблицаВнешнегоНабораДанных) ;
ПроцессорКомпоновкиДанных. Инициализировать( МакетКомпоновкиДанных, ВнешниеНаборыДанных, ДанныеРасшифровки) ;
ВывестиРезультатКомпоновкиСАвтофиксациейСтрок( ТабличныйДокумент, ПроцессорКомпоновкиДанных, ДанныеРасшифровки. Элементы, , , КоличествоФиксируемыхСтолбцов) ;
ДополнительнаяОбработкаРезультатаОтчета( ТабличныйДокумент) ;
Если ВыводитьЗаголовок Тогда
ВосстановитьНастройкиВыводаЗаголовка( ) ;
КонецЕсли ;
Для Каждого ЭлементСтруктуры Из КопияДополнительныхНастроек Цикл
КомпоновщикНастроек. Настройки. ДополнительныеСвойства. Вставить( ЭлементСтруктуры. Ключ, ЭлементСтруктуры. Значение) ;
КонецЦикла ;
ОчиститьСохраненныеНастройкиВыводаЗаголовка( ) ;
УстановитьВидимостьЗаголовкаОтчета( ТабличныйДокумент) ;
УстановитьВидимостьПараметровОтчета( ТабличныйДокумент) ;
УстановитьПривилегированныйРежим( Ложь ) ;
КонецПроцедуры
Категория:
Схема Компоновки Данных СКД Внешний источник данных, грузим из ТЗ и далее получаем остатки на каждый документ Очень часто бывают ситуации, когда необходимо сделать отчет СКД на сложном запросе, который используюет в себе вложенные запросы и объединения внутренние и полные и т.д. - в результате в консоли этот запрос формируется верно, а в скд половина полей пустые! Связано это с особенностью СКД в объединении внутренних данных, а так же не стоит забывать что в СКД наборы данных связываются как левое соединение...
Решения возможны следующие:
Изменить запрос в СКД Сформировать запрос обычным способом и подставить эти данные в СКД как внешние Рассмотрим последний вариант:
Внешний источник данных, грузим из ТЗ Для вывода отчета я использую шаблон All4CF.ru_Template_SKD_v4.1 в нем уже реализованы почти все необходимые функции и работает в Обычных и УП формах.
В модуле объекта уже есть функция
Код 1C v 8.2 УП Функция ПолучитьТаблицуВнешнегоНабораДанных()
Возврат Новый ТаблицаЗначений;
КонецФункции
установим в ней наш запрос, получается примерно так:
Код 1C v 8.2 УП
Функция ПолучитьТаблицуВнешнегоНабораДанных()
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ВложенныйЗапрос.Регистратор КАК ДокРеал,
| ВложенныйЗапрос.Регистратор.Доставка КАК ДокДоставка
|ПОМЕСТИТЬ ОплаченнаяРеализация
|ИЗ
| (ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор КАК Регистратор
/////// Огромный запрос .......
| СГРУППИРОВАТЬ ПО
| ДоставкаПромежуточнаяНакладная.Ссылка,
| ДоставкаПромежуточнаяНакладная.Ссылка.Счет,
| ДоставкаПромежуточнаяНакладная.Ссылка.ВыставленоКлиенту,
| ИздержкиРаспределенныеНеНаОП.РаспределеннаяИздержка,
| ДоставкаПромежуточнаяНакладная.Ссылка.СтоимостьПрайс + ДоставкаПромежуточнаяНакладная.Ссылка.ЗатратыПриДоставке) КАК ДанныеПоДоставкам
| ПО ДанныеПоРеализации.ДокументПродажи.Доставка = ДанныеПоДоставкам.ДокДоставка" ;
Запрос. УстановитьПараметр( "КонецПериода" , НастройкаПериода. ДатаОкончания) ;
Запрос. УстановитьПараметр( "НачалоПериода" , НастройкаПериода. ДатаНачала) ;
Запрос. УстановитьПараметр( "НачалоПериодаМинусГод" , НастройкаПериода. ДатаНачала- ( 86400 * 365 ) ) ;
Результат = Запрос. Выполнить( ) ;
Выборка = Результат. Выгрузить( ) ;
Возврат Выборка;
КонецФункции
Ниже в коде происходит установка внешних данных из нашей ТЗ с именем ТаблицаВнешнегоНабораДанных
Код 1C v 8.2 УП
ВнешниеНаборыДанных = Новый Структура;
ТаблицаВнешнегоНабораДанных = ПолучитьТаблицуВнешнегоНабораДанных( ) ;
ВнешниеНаборыДанных. Вставить( "ТаблицаВнешнегоНабораДанных" , ТаблицаВнешнегоНабораДанных) ;
ПроцессорКомпоновкиДанных. Инициализировать( МакетКомпоновкиДанных, ВнешниеНаборыДанных, ДанныеРасшифровки) ;
ВывестиРезультатКомпоновкиСАвтофиксациейСтрок( ТабличныйДокумент, ПроцессорКомпоновкиДанных, ДанныеРасшифровки. Элементы, , , КоличествоФиксируемыхСтолбцов) ;
В самой компоновке добавляем набор Объект с именем ТаблицаВнешнегоНабораДанных и перечисляем поля, которые будут использоваться в отчете:
Как я уже говорил выше, далее нам необходимо получить остатки взаиморасчетов на дату документа:
Получение остатков на документ в СКД Набор данных Запрос - назвали его Остатки:
Теперь установим связи Запроса и Объекта
Остатки нужно получать на дату документа и по контрагенту
Далее, если нужно, задайте вычисляемые поля, ресурсы, параметры и Настройте Список вывода...
Пример результата отчета:
Категория:
Схема Компоновки Данных Как сделать Расшифровку в табличном документе Вопрос: Подскажите пожалуйста, каким образом можно сделать следующее.
У меня есть выводимый в табличный документ результат запроса, к ячейке есть расшифровка.
Я хочу чтобы при двойном клике на ячейку выполнялась процедура которая к примеру запускает отчет по расшифровке ячейки.
Ответ: Расшифровки бывают стандартные и нестандартные.
I) Стандартные:
может использоваться как непосредственно в табличном документе, так и в объекте ПолеТабличногоДокумента (т.е.табличный документ, размещенный не в отдельном окне, а непосредственно на форме).
Чтобы Расшифровка сработала, должны выполняться 3 условия:
1) Для ячейки табличного документа, из которой мы хотим вызвать Расшифровку, должно быть установлено свойство ПараметрРасшифровки. Например, мы хотим, чтобы по двойному щелчку на ячейке с названием контрагента открывалась форма элемента справочника Контрагента, чтобы можно было уточнить какие-то данные, которые в отчет не выводятся. Задаем свойству ПараметрРасшифровки какое-нибудь значение, например, РасшифровкаКонтрагента.
2)В процессе вывода областей макета в результирующий табличный документ нужно ОБЯЗАТЕЛЬНО ПРИСВОИТЬ параметру расшифровки значение нужного типа, например:
Код 1C v 8.х ТабДок = Новый ТабличныйДокумент;
Выборка = Справочники. Контрагенты. Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
Область = Макет. ПолучитьОбласть( "Строка" ) ;
Область. Параметры. Контрагент = Выборка. Наименование;
Область. Параметры. РасшифровкаКонтрагента = Выборка. Ссылка;
ТабДок. Вывести( Область) ;
КонецЦикла ;
3)Должен быть обеспечен запрет редактирования ячейки с расшифровкой, т.е. нужно указать
ТабДок.ТолькоПросмотр = Истина;
иначе, несмотря на многообещающий вид курсура при наведении на ячейку можно щелкать по ней сколько угодно, но ничего происходить не будет.
II) Нестандартные:
по двойному щелчку на ячейке с расшифровкой можно вызвать свою процедуру. Для реализации этого следует выполнить несколько условий:
1)Вывод табличного документа должен осуществляться в объект ПолеТабличногоДокумента;
2)Должно быть присвоено значение свойству ячейки ПараметрРасшифровки, например, РасшифровкаКонтрагента.
3)Параметру расшифровки РасшифровкаКонтрагента присваивается заполненный при формировании табличного документа нужными значениями СписокЗначений или чаще Структура. В частности, может передаваться имя стандартного отчета конфигурации и параметров, которые нужно задать в форме отчета, например, период дат, номер счета и т.д. А потом этот отчет вызывается как процедура.
4)Для объекта ПолеТабличногоДокумента свойство ТолькоПросмотр нужно установить в значение Истина.
5)Код пользовательской процедуры помещается в процедуру
Код 1C v 8.х ПолеТабличногоДокумента1 ОбработкаРасшифровки( Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь ;
Приведу небольшой пример, открывающий для "щелкнутого" контрагента подчиненный справочник.
Код 1C v 8.х Процедура КнопкаСформироватьНажатие(Кнопка)
Контрагенты = Справочники. Контрагенты;
Выборка = Контрагенты. Выбрать( ) ;
Таб = ЭлементыФормы. ПолеТабличногоДокумента1 ;
Макет = ПолучитьМакет( "Макет" ) ;
Пока Выборка. Следующий( ) Цикл
Если Выборка. ЭтоГруппа = Ложь Тогда
Область = Макет. ПолучитьОбласть( "Строка" ) ;
Область. Параметры. Контрагент = Выборка. Наименование;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
СтруктураРасшифровки = Новый Структура;
СтруктураРасшифровки. Вставить( "Контрагент" , Выборка. Ссылка) ;
СтруктураРасшифровки. Вставить( "......." , . . . . . . . . . ) ;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Область. Параметры. РасшифровкаКонтрагента = СтруктураРасшифровки;
ЭлементыФормы. ПолеТабличногоДокумента1 . Вывести( Область) ;
Иначе
Продолжить;
КонецЕсли ;
КонецЦикла ;
ЭлементыФормы. ПолеТабличногоДокумента1 . ТолькоПросмотр = Истина ;
КонецПроцедуры
Процедура ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь ;
Договоры = Справочники. Договоры. ПолучитьФормуСписка( ) ;
Договоры. ПараметрОтборПоВладельцу = Расшифровка. Контрагент;
Договоры. Открыть( ) ;
КонецПроцедуры
Категория:
Табличный документ Как программно свернуть группировки в СКД (система компоновки данных)? При формировании отчетов на СКД по умолчанию все группировки развернуты, но бывает что необходимо сразу после формирования показать отчет со свернутыми группировками!
Данный код в модуле отчета позволяет свернуть группировки до необходимого уровня (0,1,2....):
Код 1C v 8.2 УП Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь ;
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакет. Выполнить( СхемаКомпоновкиДанных, КомпоновщикНастроек. Настройки, ДанныеРасшифровки) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет, , ДанныеРасшифровки) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( ДокументРезультат) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновки) ;
ДокументРезультат. ПоказатьУровеньГруппировокСтрок( 0 ) ;
КонецПроцедуры
Категория:
Схема Компоновки Данных Как свернуть группировки в СКД (система компоновки данных) По умолчанию в СКД группировки развернуты,
данный код в модуле отчета позволяет свернуть группировки до необходимого уровня YYYYY(0,1,2....)
Код 1C v 8.х
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь ;
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакет. Выполнить( СхемаКомпоновкиДанных, КомпоновщикНастроек. Настройки, ДанныеРасшифровки) ;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки. Инициализировать( Макет, , ДанныеРасшифровки) ;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( ДокументРезультат) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновки) ;
ДокументРезультат. ПоказатьУровеньГруппировокСтрок( 0 ) ;
КонецПроцедуры
Категория: Нет
Как добавить подписи в отчет СКД? Во многих организациях сформированные отчеты заверяют подписями.
В данном примере я покажу как можно вывести подписи для типового отчета ЗУП Свод начислений.
Для начала создадим макет в котором и разместим подписи, макет я создам общий, т.к. он будет использоваться и в других отчетах.
Макет такой:
Открываем Отчет СводНачисленнойЗарплатыОрганизаций, открываем Форму и ищем процедуру
ОбновитьОтчет()
После
Код 1C v 8.х СформироватьОтчет( ЭлементыФормы. Результат, ДанныеРасшифровки) ;
добавляем вывод подписей
Код 1C v 8.х Макет = ПолучитьОбщийМакет( "МакетПодписи" ) ;
ОбластьВывести = Макет. ПолучитьОбласть( "Подпись" ) ;
ЭлементыФормы. Результат. Вывести( ОбластьВывести) ;
Полный код процедуры ОбновитьОтчет()
Код 1C v 8.х Процедура ОбновитьОтчет() Экспорт
СостояниеМодифицированности = Модифицированность;
Если ПанельНастроекНарисована < > Истина Тогда
ОбновлениеОтображения( ) ;
КонецЕсли ;
ТиповыеОтчеты. ЗагрузитьВРеквизитЗначенияНастроекПанелиПользователя( ЭтотОбъект, ЭтаФорма) ;
ПараметрыПанели = ТиповыеОтчеты. ПолучитьПараметрыПанелиПользователяОбъекта( ОтчетОбъект) ;
ЗначенияНастроек = ТиповыеОтчеты. ПолучитьЗначенияНастроекПанелиПользователяОбъекта( ОтчетОбъект) ;
Отказ = ложь ;
ТиповыеОтчеты. ПроверитьЗначенияПараметров( ЗначенияНастроек, ПараметрыПанели, Отказ) ;
Если Отказ тогда
Возврат ;
КонецЕсли ;
РежимформированияОтчета = НЕ ЭтоОтработкаРасшифровки;
СформироватьОтчет( ЭлементыФормы. Результат, ДанныеРасшифровки) ;
Макет = ПолучитьОбщийМакет( "МакетПодписи" ) ;
ОбластьВывести = Макет. ПолучитьОбласть( "Подпись" ) ;
ЭлементыФормы. Результат. Вывести( ОбластьВывести) ;
УправлениеОтчетами. УстановитьКолонтитулыПоУмолчанию( ЭлементыФормы. Результат, Заголовок, Строка( ПараметрыСеанса. ТекущийПользователь) ) ;
Модифицированность = СостояниеМодифицированности;
КонецПроцедуры
Категория:
Схема Компоновки Данных Пример программного вызова СКД отчета Пример использования СКД отчета для заполнения табличного документа.
Вызываем отчет “Маркетинговый план” сделаного на основе СКД.
Установка параметр “Вероятность”. И отбора по ключу “Основание.МВЗ.СПО”
Код 1C v 8.х Отчет = Отчеты. МаркетинговыйПлан. Создать( ) ;
Схема = Отчет. ПолучитьМакет( "ОсновнаяСхемаКомпоновкиДанных" ) ;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ТабДок = Новый ТабличныйДокумент;
ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных( Схема) ;
КомпоновщикНастроек. Инициализировать( ИсточникДоступныхНастроек) ;
Настройки = Схема. НастройкиПоУмолчанию;
насВероятнось = Настройки. ПараметрыДанных. Элементы. Найти( "Вероятность" ) ;
насВероятнось. Использование = Истина ;
насВероятнось. Значение = Веротяность;
Если ЗначениеЗаполнено( СПО) тогда
ПолеОтбораСПО = Новый ПолеКомпоновкиДанных( "Основание.МВЗ.СПО" ) ;
ОтборПоСПО = Настройки. Отбор. Элементы. Добавить( Тип( "ЭлементОтбораКомпоновкиДанных" ) ) ;
ОтборПоСПО. ЛевоеЗначение = ПолеОтбораСПО;
ОтборПоСПО. ВидСравнения = ВидСравненияКомпоновкиДанных. Равно;
ОтборПоСПО. ПравоеЗначение = СПО;
ОтборПоСПО. Использование = Истина ;
КонецЕсли ;
Макет = КомпоновщикМакета. Выполнить( Схема, Настройки) ;
ПроцессорКомпоновки. Инициализировать( Макет, , , Истина ) ;
ПроцессорВывода. УстановитьДокумент( ТабДок) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновки) ;
Категория:
Схема Компоновки Данных Как результат СКД в виде Табличного Документа разобрать и вывести в Таблицу Значений В отчете должна быть настроена и указана
основная схема компоновки данных
Когда идет конвертирование в ТЗ, то ищется в первом столбце пустая строка, как только она найдена - конвертация считается завершенной.
Поэтому для сложных отчетов - выводите первым столбцом Системное поле № п/п.
Код 1C v 8.х
&НаКлиенте
Процедура СформироватьБезСКД(Команда)
СформироватьСервер( ) ;
КонецПроцедуры
&НаСервере
Функция СформироватьСервер()
мОтчет = РеквизитФормыВЗначение( "Отчет" ) ;
Результат = мОтчет. СформироватьПечатнуюФорму( ) ;
КонецФункции
Функция СформироватьПечатнуюФорму() Экспорт
рзДанные = ПолучитьДанныеДляОтчета( ) ;
Возврат рзДанные;
КонецФункции
Функция ТДВТаблицуЗначений(ТабДок, КолонкаИндекса = 1)
ТаблицаДанных = Новый ТаблицаЗначений;
НомерКолонки = 0 ;
Пока Истина Цикл
НомерКолонки = НомерКолонки + 1 ;
ИмяКолонки = ТабДок. Область( 1 , НомерКолонки) . Текст;
Если ПустаяСтрока( ИмяКолонки) Тогда
Прервать ;
КонецЕсли ;
ТаблицаДанных. Колонки. Добавить( СтрЗаменить( ИмяКолонки, " " , "_" ) ) ;
КонецЦикла ;
СчетчикКолонок = НомерКолонки - 1 ;
НомерСтроки = 1 ; ФлагПрерывания = Ложь ;
Пока Истина Цикл
НомерСтроки = НомерСтроки + 1 ;
Стр = ТаблицаДанных. Добавить( ) ;
Для А = 1 ПО СчетчикКолонок Цикл
ТекстКолонки = ТабДок. Область( НомерСтроки, А) . Текст;
Если ПустаяСтрока( ТекстКолонки) Тогда
Если А = КолонкаИндекса Тогда
Флагпрерывания = Истина ;
ТаблицаДанных. Удалить( Стр) ;
КонецЕсли ;
Иначе
Стр[А - 1 ] = ТекстКолонки
КонецЕсли ;
Если Флагпрерывания Тогда
Прервать
КонецЕсли ;
КонецЦикла ;
Если Флагпрерывания Тогда
Прервать
КонецЕсли ;
КонецЦикла ;
Возврат ТаблицаДанных
КонецФункции
Функция ПолучитьДанныеДляОтчета()
КомпоновщикНастроек. Настройки. ПараметрыДанных. УстановитьЗначениеПараметра( "НачалоПериода" , НачалоПериода) ;
КомпоновщикНастроек. Настройки. ПараметрыДанных. УстановитьЗначениеПараметра( "КонецПериода" , КонецДня( КонецПериода) ) ;
КомпоновщикНастроек. Настройки. ПараметрыДанных. УстановитьЗначениеПараметра( "Организация" , Организация) ;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета. Выполнить( СхемаКомпоновкиДанных, КомпоновщикНастроек. Настройки, ДанныеРасшифровки, , Тип( "ГенераторМакетаКомпоновкиДанных" ) ) ;
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных. Инициализировать( МакетКомпоновки, , ДанныеРасшифровки) ;
ТабличныйДокумент = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода. УстановитьДокумент( ТабличныйДокумент) ;
ПроцессорВывода. Вывести( ПроцессорКомпоновкиДанных, Истина ) ;
тзДанные = ТДВТаблицуЗначений( ТабличныйДокумент) ;
Возврат тзДанные;
КонецФункции
Категория:
Схема Компоновки Данных