Простые примеры работы с СКД (только программные средства)

Опубликовал Михаил (ZMGMSC) в раздел Программирование - Практика программирования

Обработка предназначена для облегчения программной работы с СКД. Т.к. содержит готовые примеры запуска и заполнения настроек отчета.
В дальнейшем обработка будет обновляться.

Фрагмент кода:

Процедура ЗаполнитьПараметры(НастрПольз, НастрОтч)
    Для Каждого Стр Из НастрПольз Цикл
        СтрОтч = НастрОтч.Найти(Стр.Параметр);
        Если СтрОтч = Неопределено Тогда
            УстановитьНовыйПараметр(НастрОтч, Стр.Параметр, Стр.Значение);
        Иначе
            ЗаполнитьЗначенияСвойств(СтрОтч, Стр);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Пример:

Процедура ВывестиРезультатВТаблицуЗначений(Результат, ДанныеРасшифровки, ИмяМакета)

СхемаКомпоновкиДанных = ПолучитьСхему(ИмяМакета);
// параметры, заданные для основной схемы, передаем в текущую схему
Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
ПараметрыОтчета = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.Элементы;
// заполним параметры схемы своими параметрами из настроек пользователя
ЗаполнитьПараметры(Параметры, ПараметрыОтчета);
// установим свой параметр
УстановитьПараметр(ПараметрыОтчета, "КонецПериода", ТекущаяДата());
//****************
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, СхемаКомпоновкиДанных.НастройкиПоУмолчанию,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

КонецПроцедуры
 
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка= Ложь;
ВыводВТабДок = Ложь;
ВыводВТЗ = Ложь;
ДокументРезультат.Очистить();
Если ВыводВТабДок Тогда
// программный запуск отчета. вместо стандартной обработки делаем свою.
// в один табличный документ выводим два разных отчета
СформироватьОтчет(ДокументРезультат, ДанныеРасшифровки, "ОсновнаяСхемаКомпоновкиДанных");
СформироватьОтчет(ДокументРезультат, ДанныеРасшифровки, "Макет");
// убираем автоматическую фиксацию СКД
ДокументРезультат.ФиксацияСверху = 0;
ДокументРезультат.ФиксацияСлева = 0;
ИначеЕсли ВыводВТЗ Тогда
// Рассмотрим вывод результата отчета в таблицу значений
тз = Новый ТаблицаЗначений;
ВывестиРезультатВТаблицуЗначений(тз, ДанныеРасшифровки, "Макет");
Колво = тз.Количество();

КонецЕсли;
КонецПроцедуры

 

Продолжение темы работы с СКД (практика) и более сложный материал : //infostart.ru/public/293252/

Скачать файлы

Наименование Файл Версия Размер
Примеры работы с СКД
.erf 12,91Kb
19.06.14
9
.erf 1.01 12,91Kb 9 Скачать
Примеры работы с СКД (добавлено: Программмное заполнение всех параметров в цикле, вывод в таблицу значений)
.erf 13,61Kb
19.06.14
15
.erf 1.02 13,61Kb 15 Скачать
Примеры работы с СКД (добавлено программное формирование схемы отчета)
.erf 16,46Kb
19.06.14
12
.erf 1.03 16,46Kb 12 Скачать

См. также

Комментарии
1. Дмитрий Бухалов (Re:аниматор) 388 19.06.14 16:32 Сейчас в теме
Функция ПолучитьСхему(ИмяМакета)
    Возврат ПолучитьМакет(ИмяМакета);
КонецФункции
...Показать Скрыть


Для чего нужно получать макет через функцию ПолучитьСхему()?
2. Дмитрий Чекунов (cdb) 24 19.06.14 18:55 Сейчас в теме
1. Данные примеры используют для для получения данных
РегистрНакопления ОстаткиНоменклатуры, РегистрНакопления Продажи
2. Во втором файле в тексте идет присвоение параметра значением Справочники.Номенклатура.НайтиПоНаименованию("Комплектующие").

Думаю стоит указать на какой конфигурации можно проверить данные примеры.
3. Михаил (ZMGMSC) 65 16.07.14 20:47 Сейчас в теме
Все примеры в дальнейшем будут под конфигурацию Бухгалтерия 3.0
По мере возможности и эти примеры перепишу
4. Марина Семёнова (SemenovaMarinaV) 13.08.14 08:28 Сейчас в теме
интереснее конечно под 3,0
5. Михаил (ZMGMSC) 65 13.08.14 09:49 Сейчас в теме
(4) SemenovaMarinaV, Эти примеры выполняются на сервере, поэтому неважно какая платформа 2.0 или 3.0
Оставьте свое сообщение