Внешние функции – программное подключение

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

При программном запуске отчета (например, с другой схемой компоновки) могут не работать внешние функции.

По простой причине – возможность их подключения надо явно указать .

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

Синтаксис:
Инициализировать(<Макет>, <Внешние наборы данных>, <Данные расшифровки>, <Возможность использования внешних функций>)

Спасибо Garkin с Волшебного форума – http://www.forum.mista.ru/topic.php?id=428529, а также см. ИТС

При программном запуске отчета (например, с другой схемой компоновки) могут не работать внешние функции. По простой причине – возможность их подключения надо явно указать . ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,,Истина); Синтаксис: Инициализировать(<Макет>, <Внешние наборы данных>, <Данные расшифровки>, <Возможность использования внешних функций>) Спасибо Garkin с Волшебного форума – http://www.forum.mista.ru/topic.php?id=428529, а также см. ИТС Перейти к...

Далее

Стандартный параметр &Период и проблемы в использовании

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

Создадим отчет с одни набором данных запрос:

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад,
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&МояДата, )
                               КАК ТоварыНаСкладахОстатки
 
Создадим отчет с одни набором данных запрос: ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&МояДата, )  КАК ТоварыНаСкладахОстатки Теперь перейдем на вкладку параметры и увидим что система, помимо нашего параметра &МояДата создала еще и параметр &Период. Для того, чтобы наглядно наблюдать за периодами, создадим основную форму отчета и поместим на нее табличное поле с данными: КомпоновщикНастроек.Настройки.ПараметрыДанных Сохраним отчет и откроем его в предприятии. В табличном поле с параметры отображается только параметр &Период: Соответственно, любое изменение этого параметра не даст нужного результата. Почему недоступен параметр &МояДата? Конечно же потому что на вкладке параметры у него установлена галку Ограничение доступности. Снимаем галку. Теперь в доступных параметрах видим оба. Только при формировании отчета увидим, что отчет реагирует на параметр &Период, а не на &МояДата. В данном примере самое простое переименовать в запросе параметр &МояДата на &Период и добиться нужного результата. Но может быть у Вас запрос, в котором уже использовался параметр &Период, или Ваши религиозные взгляды не разрешают Вам использовать этот параметр, в любом случае можно решить проблему так: ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки({&МояДата}, ) КАК ТоварыНаСкладахОстатки UPD от пользователя Boo: Главная проблема при использовании «стандартных» (добавляемых системой) параметров в том что при использовании в отчете нескольких виртуальных таблиц, в случае определения этого параметра, его значение будет использоваться во всех остальных случаях взамен «собственных». Приведу пример: ВЫБРАТЬ РаботникиСП.Сотрудник, РаботникиСП.ПричинаИзмененияСостояния, РаботникиСП.Период, РаботникиСПДругаяДата.Период КАК Период2, РаботникиСПДругаяДата.ПричинаИзмененияСостояния КАК ПричинаИзмененияСостояния2 ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период, Сотрудник = &Сотрудник) КАК РаботникиСП ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДругаяДата, ) КАК РаботникиСПДругаяДата ПО РаботникиСП.Сотрудник = РаботникиСПДругаяДата.Сотрудник Во втором подзапросе, в качестве параметра даты среза будет использовано значение «стандартного» параметра ПЕРИОД, а не значение ДругаяДата. Данный «глюк» будет наблюдаться даже в том случае если второй подзапрос вывести во второй набор данных и связать уже средствами СКД. Вариант с использованием во втором запросе ваыражения типа «ДОБАВИТЬКДАТЕ(&Период, МЕСЯЦ, -1) » тоже не сработает, месяц не вычтется. А вот переименование в запросе параметра «Период» в, например, «ПерваяДата», решает эту проблему. Кстати, точно такая же проблема наблюдается с виртуальными таблицами регистров накопления и бухгалтерии, используемыми для получения, например, оборотов. Там система добавляет параметры «НачалоПериода» и «КонецПериода». Так что в случае запросов даже чуть повышенной сложности, есть смысл выключать доступность и использование «стандартных периодов»....

Далее

Использование нескольких схем компоновки данных в одном отчете

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

Одному отчету может принадлежать несколько схем компоновки данных. Но по какой из них тогда он будет формироваться?

Имеем отчет по продажам:

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

Далее

Фиксация шапки в СКД

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

Для того, чтобы зафиксировать шапку в скд, необходимо обрабатывать табличный документ.  В инструментах скд этот механизм отсутствует.

Код вывода с фиксацией шапки:

Результат = ЭлементыФормы.Результат;
Результат.Очистить();

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

ПроцессорВывода.НачатьВывод();

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

            ТаблицаЗафиксирована = Истина;
            Результат.ФиксацияСверху = Результат.ВысотаТаблицы - 1;

        КонецЕсли;
    КонецЕсли;
КонецЦикла;

ПроцессорВывода.ЗакончитьВывод();

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

Результат.ФиксацияСлева = 1;

UPD В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД.
По сути в модуле объекта можно прописать следующее:

Для того, чтобы зафиксировать шапку в скд, необходимо обрабатывать табличный документ.  В инструментах скд этот механизм отсутствует. Код вывода с фиксацией шапки: Результат = ЭлементыФормы.Результат; Результат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанных ВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.НачатьВывод(); ТаблицаЗафиксирована = Ложь; Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновкиДанных.Следующий(); Если ЭлементРезультата= Неопределено Тогда Прервать; Иначе ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); Если Не ТаблицаЗафиксирована И ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда ТаблицаЗафиксирована = Истина; Результат.ФиксацияСверху = Результат.ВысотаТаблицы - 1; КонецЕсли; КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); Для того, чтобы зафиксировать колонку по горизонтали, можно просто выполнить следующее: Результат.ФиксацияСлева = 1; UPD В 1с 8.2 в отчете у модуля объекта появился метод ПриКомпоновкеРезультата(), у которого есть параметр ДокументРезультат – табдок, который генерирует СКД. По сути в модуле объекта можно прописать следующее:...

Далее

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

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

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

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

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

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

Далее

Изменить слово “Итого” в общих итогах

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

Иногда возникает желание изменить само слово Итого в общих итогах.

Сделаем это следующим образом:

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

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

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

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

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

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

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

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

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

//Ищем в табличном документе "Итого" и заменяем
ТекОбласть = Результат.НайтиТекст("Итого", ТекОбласть, Результат.Область(),
                                             Истина, Истина, Истина, Ложь);

Если ТекОбласть <> Неопределено Тогда
    ТекОбласть.Текст = "МоёИтого";
КонецЕсли;

После этого общие итоги выглядят примерно так:

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

Далее

Использование стандартных периодов

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

Для удобства работы с параметрами типа дата, в системе компоновки данных существует возможность использовать Стандартные периоды.

Как же их использовать?

Мы имеем отчет, в котором 2 параметра: Начало периода и Конец периода. Добавим в параметры третий параметр, назовем его Стандартный период и установим ему тип СтандартныйПериод.

Для параметров Начало периода и Конец периода в Выражение запишем следующее:

&СтандартныйПериод.ДатаНачала

&СтандартныйПериод.ДатаОкончания

Также у этих параметров установим галку Ограничение доступности.

Все. Теперь можно пользоваться возможностями стандартного периода:

Кроме того, стандартная дата окончания содержит время 23:59:59 что избавляет от проблемы, описанной здесь.

Для удобства работы с параметрами типа дата, в системе компоновки данных существует возможность использовать Стандартные периоды. Как же их использовать? Мы имеем отчет, в котором 2 параметра: Начало периода и Конец периода. Добавим в параметры третий параметр, назовем его Стандартный период и установим ему тип СтандартныйПериод. Для параметров Начало периода и Конец периода в Выражение запишем следующее: &СтандартныйПериод.ДатаНачала &СтандартныйПериод.ДатаОкончания Также у этих параметров установим галку Ограничение доступности. Все. Теперь можно пользоваться возможностями стандартного периода: Кроме того, стандартная дата окончания содержит время 23:59:59 что избавляет от проблемы, описанной здесь. Перейти к...

Далее
Страница 48 из 52« Первая...102030...4647484950...Последняя »

Авторизация

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

Архивы

Закладки

  • Your favorites will be here.