Поиск по блогу

четверг, 30 июля 2015 г.

Выгрузка отчета в таблицу/дерево значений

Использование нескольких схем компоновки данных в одном отчете
СКД. Вывод информации табличной части в одну ячейку.

Недавно появилась задачка, необходимо создать отчет, который требуется выгружать в Excel. Написал запрос, создал схему компоновки данных и отчет готов, результат компоновки выводится в табличный документ. Приступил к реализации вывода отчетных данных в Excel и призадумался, а как же это лучше сделать?

Оказывается, результат компоновки данных можно выводить в таблицу значений или дерево значений для последующей программной обработки. Для этого предназначен объект языка программирования ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений. У этого объекта имеется метод УстановитьОбъект(), который является аналогом метода УстановитьДокумент() объекта ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.

Привожу пример вывода результата компоновки в таблицу значений:

Функция СкомпоноватьРезультатВКоллекциюЗначений() Экспорт

тзКомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
тзМакетКомпоновкиДанных = тзКомпоновщикМакет.Выполнить(
СхемаКомпоновкиДанных,
КомпоновщикНастроек.ПолучитьНастройки(),
,
,
Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

тзПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
тзПроцессорКомпоновкиДанных.Инициализировать(тзМакетКомпоновкиДанных);

тзРезультат = Новый ТаблицаЗначений;

четверг, 2 июля 2015 г.

Загадочное свойство БлокироватьДляИзменения

Что это за свойство?


Это свойство позволяет устанавливать режим, при котором в процессе записи набора будет установлена управляемая блокировка для всех комбинаций измерений в соответствии с записями набора записей.

Для чего используется?


Это свойство актуально для регистров, у которых разрешено разделение итогов (Разрешить разделение итогов равно Истина). поэтому данное свойство имеет смысл использовать, если проверка итогов регистра выполняется после записи и заблокировать нужно именно те комбинации, по которым записываются записи.

На что стоит обратить внимание?


Блокировка итогов регистра по набору значений измерений выполняется в момент записи набора записей.

Контроль итогов регистра можно выполнять без применений опции "ДЛЯ ИЗМЕНЕНИЙ" (в случае использования автоматического режима) или явной установки управляемой блокировки (в случае использования управляемого режима).

Если записать пустой набор данных, то блокировка итогов выполняется по "очищаемым" записям, и, соответственно, записи очищаются.
Движения.ОстаткиТоваров.Очистить();
Движения.ОстаткиТоваров.БлокироватьДляИзменения = Истина;
// Будут заблокированы записи, которые могли существовать
// у документа до его перепроведения.
Движения.ОстаткиТоваров.Записать();