Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как открыть программно отчет со своим периодом?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
Vofka
Привет!

Есть отчет, на СКД. В его детали не вдаемся, ибо не о том речь. В отчете есть параметры период, НачальнаяДата и КонечнаяДата. Период имеет тип СтандартныйПериод. НачальнаяДата и КонечнаяДата заполняются из него. Поле период выведено на форму через свойство "Быстрый выбор". Хочу вызвать этот отчет за текущую дату (из управляемой формы):

ПараметрыФормы = Новый Структура("СформироватьПриОткрытии, Отбор");

ПараметрыФормы.СформироватьПриОткрытии = Истина;
    
Отбор = Новый Структура("Период");
Отбор.Период = Новый СтандартныйПериод(НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()));

ПараметрыФормы.Отбор = Отбор;
    
ОткрытьФорму("Отчет.Продажи.ФормаОбъекта", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);


На первый взгляд всё замечательно - отчет открывается и формируется за текущую дату. Есть небольшое "но". Параметр Период на форме не отмечен галкой и там ничего не выбрано. Ну да отчет формируется и ладно.

А вот теперь внимание. Запускаю отчет Продажи руками, указываю там период ЭтаНеделя, например. Отчет формируется за неделю. После этого запускаю программно этот отчет кодом, который указа выше - мне выдается ошибка:

Цитата
Отчет не может быть выполнен, т.к. некоторые отборы или параметры уже установлены в дополнительном отборе. Измените настройки отчета или выберите другой вариант отчета.
по причине:
Невозможно применить фиксированные настройки. Совпадают значения параметра.


Пробовал я по всякому: и так, и добавлял в отбор НачальнаяДата и КонечнаяДата, пробовал через КомпоновщикНастроек - но нифига не вышло.

Если кто в подскажет как это побороть - буду благодарен.
Vofka
Ап
DartRomanius
Форма - Отчет - КомпоновщикНастроек - Элементы.

Насчет передачи параметров, думаю объяснять не надо.
Далее скорее всего в "ПриСозданииНаСервере" проработать вариант установки параметров, и потом сформировать отчет через "СкомпоноватьРезультат();".
Vofka
Я писал выше, что пробовал и через компоновщик.

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


Но ситуация не меняется.
DartRomanius
Цитата(Vofka @ 09.07.12, 12:48) необходимо зарегистрироваться для просмотра ссылки
Я писал выше, что пробовал и через компоновщик.

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


Но ситуация не меняется.


Не, передать при открытии формы параметры, а изменение настроек делать уже в модуле формы, в процедуре при создании.
ЗЫ: Просто компоновщик может быть не доступен до открытия (созднания?) формы. И ошибки не будет, а результат нулевой.
Vofka
Цитата(DartRomanius @ 09.07.12, 13:00) необходимо зарегистрироваться для просмотра ссылки
Не, передать при открытии формы параметры, а изменение настроек делать уже в модуле формы, в процедуре при создании.

Не, ну это ж не то пальто smile.gif . А как-то внешне на него вздействовать всётаки нельзя?
DartRomanius
Цитата(Vofka @ 09.07.12, 16:51) необходимо зарегистрироваться для просмотра ссылки
Не, ну это ж не то пальто smile.gif . А как-то внешне на него вздействовать всётаки нельзя?


Попробую на досуге потренироваться, так пока не скажу.
Vofka
Цитата(DartRomanius @ 09.07.12, 16:55) необходимо зарегистрироваться для просмотра ссылки
Попробую на досуге потренироваться, так пока не скажу.

Буду ждать smile.gif . Только имейте ввиду то, что я в первом посте написал. Т.е. вариант тот на первый взгял работает. Но работает он только до тех пор, пока я в этом отчете руками какие-то настройки не поставлю. Короче говоря, надо чтобы отчет формировался с заданными параметрами (в данном случае периодом) независимо не от чего.
Harun
Цитата(Vofka @ 10.07.12, 2:43) необходимо зарегистрироваться для просмотра ссылки
Буду ждать smile.gif . Только имейте ввиду то, что я в первом посте написал. Т.е. вариант тот на первый взгял работает. Но работает он только до тех пор, пока я в этом отчете руками какие-то настройки не поставлю. Короче говоря, надо чтобы отчет формировался с заданными параметрами (в данном случае периодом) независимо не от чего.


Привет!

Через отбор устанавливаются параметры в фиксированных настройках.
Если в настройках варианта отчета выведен параметр, и он обязателен, при формировании отчета будет возникать такая ошибка.
Для обхода нужно или убрать "использование" с параметра в настройках варианта, либо задавать параметр не через отбор, а кодом типа:
    
ПараметрПериода = НастройкиСКД.ПараметрыДанных.Элементы.Найти("СтандартныйПериод");

ПараметрПериода.Значение = Новый СтандартныйПериод;
ПараметрПериода.Использование = Истина;


Мог где то ошибиться, ну суть верна
Vofka
Я освежу в памяти для себя о чем шла речь и попробую воспользоваться вашим советом smile.gif . За ответ спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.