Посты с тэгами "Программно"

Установка заголовка отчета программно

1 отзывFavoriteLoadingВ закладки

Иногда в качестве заголовка отчета требуется задать что-нибудь сложное, вроде:
“Отчет за период с ” + ДатаНачала + по ” + ДатаКонца

Задать его таким образом в настройках не получится. Придется сделать это программно следующим образом:

ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыВывода.
НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Title"));

ЗначениеПараметра.Значение="Отчет за период с "+ДатаНачала+" по "+ДатаКонца;
ЗначениеПараметра.Использование = Истина;
Иногда в качестве заголовка отчета требуется задать что-нибудь сложное, вроде: “Отчет за период с ” + ДатаНачала + “ по ” + ДатаКонца Задать его таким образом в настройках не получится. Придется сделать это программно следующим образом: ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыВывода. НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Title")); ЗначениеПараметра.Значение="Отчет за период с "+ДатаНачала+" по "+ДатаКонца; ЗначениеПараметра.Использование = Истина; Перейти к...

Далее

Как программно установить схему их XML

Ваш отзывFavoriteLoadingВ закладки

Для того, чтобы программно установить схему их XML файла, необходимо выполнить следующее:

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Фильтр = "Файлы XML (*.xml) |*.xml";
Если НЕ Диалог.Выбрать() Тогда
   Возврат;
КонецЕсли;

ЧтениеXML = Новый ЧтениеXML;

Попытка
   ЧтениеXML.ОткрытьФайл(Диалог.ПолноеИмяФайла);
Исключение
   Сообщить("Невозможно открыть xml-файл");
   Возврат;
КонецПопытки;

СхемаКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML,
                                      ,Тип("СхемаКомпоновкиДанных"));

ЧтениеXML.Закрыть();

Теперь в переменной СхемаКомпоновкиДанных содержится схема, с которой можно делать что угодно. Например сформировать отчет по примеру отсюда.

Для того, чтобы программно установить схему их XML файла, необходимо выполнить следующее: Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Фильтр = "Файлы XML (*.xml) |*.xml"; Если НЕ Диалог.Выбрать() Тогда Возврат; КонецЕсли; ЧтениеXML = Новый ЧтениеXML; Попытка ЧтениеXML.ОткрытьФайл(Диалог.ПолноеИмяФайла); Исключение Сообщить("Невозможно открыть xml-файл"); Возврат; КонецПопытки; СхемаКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, ,Тип("СхемаКомпоновкиДанных")); ЧтениеXML.Закрыть(); Теперь в переменной СхемаКомпоновкиДанных содержится схема, с которой можно делать что угодно. Например сформировать отчет по примеру отсюда. Перейти к...

Далее

Программный вывод отчета

Отзывов (9)FavoriteLoadingВ закладки

Несмотря на то, изучающие СКД встречаются с этим на первый или второй день, это должно быть в разделе FAQ. Простой пример программного вывода отчета на компоновке, использующий настройки по умолчанию.

//Получаем схему из макета
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
                                        Настройки, ДанныеРасшифровки);

//Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,
                                                   ДанныеРасшифровки);

//Очищаем поле табличного документа
Результат = ЭлементыФормы.Результат;
Результат.Очистить();

//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанных
                                                  ВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);

ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

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

Далее

Как программно сохранить схему в XML

Ваш отзывFavoriteLoadingВ закладки

Как программно сохранить схему в XML, аналогично тому как это делается по кнопке “Сохранить схему в файл”?

ЗаписьXML = Новый ЗаписьXML;

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = "Файлы XML (*.xml) |*.xml";
Если НЕ Диалог.Выбрать() Тогда
    Возврат;
КонецЕсли;

Путь = Диалог.ПолноеИмяФайла;
ЗаписьXML.ОткрытьФайл(Путь);

СериализаторXDTO.ЗаписатьXML(ЗаписьXML,
ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"), 
"dataComposition",
"http://v8.1c.ru/8.1/data-composition-system/composition-template");
Как программно сохранить схему в XML, аналогично тому как это делается по кнопке “Сохранить схему в файл”? ЗаписьXML = Новый ЗаписьXML; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Фильтр = "Файлы XML (*.xml) |*.xml"; Если НЕ Диалог.Выбрать() Тогда Возврат; КонецЕсли; Путь = Диалог.ПолноеИмяФайла; ЗаписьXML.ОткрытьФайл(Путь); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"), "dataComposition", "http://v8.1c.ru/8.1/data-composition-system/composition-template"); Перейти к...

Далее

Как изменить отбор программно

Ваш отзывFavoriteLoadingВ закладки

Эта тема тоже достаточна распространена. Нюанс программного изменения отбора заключается в том, что коллекция:

КомпоновщикНастроек.Настройки.Отбор.Элементы

в отличие от аналогичной коллекции параметров, не имеет метода Найти(). Можно конечно изменять отбор “в лоб”, т.е. по индексу, но это не есть хорошо. Самый оптимальный вариант, обходить все поля отбора в цикле.

Приведу пример универсальной функции для изменения отбор компоновки данных:

Эта тема тоже достаточна распространена. Нюанс программного изменения отбора заключается в том, что коллекция: КомпоновщикНастроек.Настройки.Отбор.Элементы в отличие от аналогичной коллекции параметров, не имеет метода Найти(). Можно конечно изменять отбор “в лоб”, т.е. по индексу, но это не есть хорошо. Самый оптимальный вариант, обходить все поля отбора в цикле. Приведу пример универсальной функции для изменения отбор компоновки данных: //Ищет отбор в компоновщике настроек по параметрам, заданным через //"СоответствиеПоискаОтбора", и заменяет //на отбор с параметрами, указанными в "СоответствиеНовогоОтбора" Процедура ИзменитьОтбор(ЭлементСтруктуры, СоответствиеПоискаОтбора = Неопределено, СоответствиеНовогоОтбора) Экспорт Если ТипЗнч(ЭлементСтруктуры) = Тип("КомпоновщикНастроекКомпоновкиДанных")  Тогда Отбор = ЭлементСтруктуры.Настройки.Отбор; Иначе Отбор = ЭлементСтруктуры; КонецЕсли; Если ТипЗнч(СоответствиеНовогоОтбора["ЛевоеЗначение"]) = Тип("Строка") Тогда нПоле = Новый ПолеКомпоновкиДанных(СоответствиеНовогоОтбора.ЛевоеЗначение); Иначе нПоле = СоответствиеНовогоОтбора["ЛевоеЗначение"]; КонецЕсли; Если СоответствиеНовогоОтбора.Получить("ВидСравнения") = Неопределено Тогда нВидСравнения = ВидСравненияКомпоновкиДанных.Равно; Иначе нВидСравнения = СоответствиеНовогоОтбора["ВидСравнения"]; КонецЕсли; Если СоответствиеНовогоОтбора.Получить("Использование") = Неопределено Тогда нИспользование = Истина; Иначе нИспользование = СоответствиеНовогоОтбора["Использование"]; КонецЕсли; нЗначение = СоответствиеНовогоОтбора["Значение"]; ТолькоПоЛевомуЗначению = Ложь; Если СоответствиеПоискаОтбора = Неопределено Тогда ТолькоПоЛевомуЗначению = Истина; КонецЕсли; сЛевоеЗначение = СоответствиеПоискаОтбора.Получить("ЛевоеЗначение"); Если сЛевоеЗначение = Неопределено Тогда сЛевоеЗначение = нПоле; КонецЕсли; сВидСравнения = СоответствиеПоискаОтбора.Получить("ВидСравнения"); Если ВидСравнения = Неопределено Тогда сВидСравнения = ВидСравнения; КонецЕсли; сИспользование = СоответствиеПоискаОтбора.Получить("Использование"); Если сИспользование = Неопределено Тогда сИспользование = нИспользование; КонецЕсли; Для каждого ЭлементОтбора Из Отбор.Элементы Цикл Если ТолькоПоЛевомуЗначению Тогда НайденныйОтбор = ЭлементОтбора; Прервать; Иначе Если (ЭлементОтбора.ЛевоеЗначение = сЛевоеЗначение) И (ЭлементОтбора.ВидСравнения = сВидСравнения) И (ЭлементОтбора.Использование = сИспользование) Тогда НайденныйОтбор = ЭлементОтбора; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если НайденныйОтбор <> Неопределено Тогда НайденныйОтбор.ЛевоеЗначение = нПоле; НайденныйОтбор.Использование = нИспользование; НайденныйОтбор.ВидСравнения = нВидСравнения; НайденныйОтбор.ПравоеЗначение = нЗначение; КонецЕсли; КонецПроцедуры Пример вызова процедуры: СоответствиеПоискаОтбора = Новый Соответствие; СоответствиеПоискаОтбора.Вставить("ЛевоеЗначение",Новый ПолеКомпоновкиДанных("Наименование")); СоответствиеПоискаОтбора.Вставить("ВидСравнения",ВидСравненияКомпоновкиДанных.Содержит); СоответствиеПоискаОтбора.Вставить("Использование",Истина); СоответствиеНовогоОтбора = Новый Соответствие; СоответствиеНовогоОтбора.Вставить("ЛевоеЗначение",Новый ПолеКомпоновкиДанных("Наименование")); СоответствиеНовогоОтбора.Вставить("ВидСравнения",ВидСравненияКомпоновкиДанных.Содержит); СоответствиеНовогоОтбора.Вставить("Использование",Истина); СоответствиеНовогоОтбора.Вставить("Значение","бла-бла-бла"); ИзменитьОтбор(КомпоновщикНастроек,СоответствиеПоискаОтбора,СоответствиеНовогоОтбора);...

Далее
Страница 2 из 3123

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.