Всем привет ! Во внешней обработке [Не отчете !] создал программно отчет в СКД, вывел его в табличный документ на форме. Как можно сделать кнопку по которой бы открывались настройки отчета [Такие же как если создавать отчет в СКД стандартным образом, настройки группировки, сортировки и т.д.] ?
(53) sky.xn, НастройкиДляКомпоновкиМакета.ПараметрыДанных.ДатаНачала = ДатаРучная ?
хотя скорее всего только для чтения. Тогда:
УстановитьЗначениеПараметра(<Параметр>, <Значение>)
(7) Swetlana, Посмотрел, это все не то. Мне бы хотя бы теоретически понять как можно открыть стандартную форму пользовательской настройки отчета на скд, который сформирован полностью программным способом
(9) spacecraft, указал во втором сообщении. Да, типовая Бух 3.0 на БСП ! Подскажите чуть подробнее про "ФормуНастроекОтчета", хотя бы на теоретическом уровне ?
Это "КомпановщикНастроекПользователскиеНастройки" имеется ввиду?
Он так и называется - в любом стандартном отчете в форме можно посмотреть как называется и на что ссылается
Если в отчете нет формы, то подключается общая форма "ФормаОтчета". и в ней настройки открывают общую форму "ФормаНастроекОтчета".
Там кода... мало не покажется.
А в СКД нужно внести выбранные поля и отбор, чтоб в настройках появилось.
На форме в обработке можно добавить реквизит с типом компоновщик настроек компоновки данных. И программно при создании прицеплять его к вашей компоновке.
На форме в обработке можно добавить реквизит с типом компоновщик настроек компоновки данных. И программно при создании прицеплять его к вашей компоновке.
А поподробнее можно чуть ? Я создал реквизит, выбрал тип - КомпоновщикНастроекКомпоновкиДанных. Как теперь его на форму вывести ?
просто добавить группу и определить настройки компоновки туда
Создаешь группу или страницу и туда выводишь Реквизит - Настройки
Только не забудь этот реквизит к своей СКД подключить.
Вот тут есть немного:
http://infostart.ru/public/255063/
(38) sky.xn, вот пример из типовой по подключению компоновщика:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
ЗакрыватьПриЗакрытииВладельца = Истина;
Заголовок = Параметры.Заголовок;
Если Параметры.Свойство("АдресКомпоновщикаНастроек", АдресКомпоновщикаНастроек) Тогда
// Хранилище приоритетнее
Данные = ПолучитьИзВременногоХранилища(АдресКомпоновщикаНастроек);
АдресСхемыКомпоновки = ПоместитьВоВременноеХранилище(Данные.СхемаКомпоновки, УникальныйИдентификатор);;
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыКомпоновки));
КомпоновщикНастроек.ЗагрузитьНастройки(Данные.Настройки);
Иначе
АдресСхемыКомпоновки = "";
КомпоновщикНастроек = Параметры.КомпоновщикНастроек;
КонецЕсли;
Параметры.Свойство("ПериодДанных", ПериодДанных);
Если Параметры.ВыборПериода Тогда
ВыгружатьЗаПериод = Истина;
Иначе
ВыгружатьЗаПериод = Ложь;
// Отключаем выбор периода совсем
Элементы.ПериодДанных.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
(37) spacecraft, Так, вру, кажется появляются, но на форме их вручную нужно вытягивать, т.е. щелкать правой кнопкой, нажимать "Добавить", выбирать параметр и только потом забивать ... Как сделать, чтобы они сразу выходили ?
(41) spacecraft, Вот я олух, точно, теперь появляются, но отчет почему то не формируется ... Вернее пустой получается, как будто настройки не влияют.
(42) orfos, Да, параметр, уже разобрался, осталось только понять как сделать чтоб эти параметры действовали
В управляемой форме источник доступных настроек для схемы компоновки данных на клиенте работать не может. Поэтому в управляемой форме нужно создавать источник доступных настроек для адреса схемы компоновки данных.
В качестве адреса схемы компоновки данных может выступать адрес во временном хранилище, в которое поместили схему компоновки данных, или адрес значения в записи базы данных.
Пример создания источника доступных настроек для схемы, помещенной во временное хранилище:
Копировать в буфер обмена
АдресСхемы = ПоместитьВоВременноеХранилище(Схема, УникальныйИдентификатор);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
В данном примере во временное хранилище помещается схема компоновки данных, находящаяся в переменной Схема.
Пример создания источника доступных настроек для схемы, расположенной в базе данных:
Копировать в буфер обмена
АдресСхемы = ПолучитьНавигационнуюСсылку(Ссылка, "СхемаКомпоновкиДанных");
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
В данном примере схема будет получаться базы данных, из реквизита с именем СхемаКомпоновкиДанных объекта со ссылкой Ссылка.
(40) sky.xn, они будут сразу выходить. там важно в разделе данные указать нужный тип данных. Для параметров вот такой: КомпоновщикНастроек.Настройки.ПараметрыДанных
Покажу пример как вывести настройки и отбор на ту же форму, где отображается результат, аналогично разделить это по разным формам не составит труда.
1)Добавляешь в обработку макет СКД
2)Создаешь у обработки реквизит Компоновщик типа КомпоновщикНастроекКомпоновкиДанных
3)В режиме редактирования формы выводишь КомпоновщикНастроекНастройкиОтбор и КомпоновщикНастроекНастройкиПараметрыДанных из реквизита Компоновщик (это его вложенные поля)
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СхемаСКД = РеквизитФормыВЗначение("Объект").ПолучитьСхемуСКД();
АдресСхемы = ПоместитьВоВременноеХранилище(СхемаСКД,Новый УникальныйИдентификатор);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию);
КонецПроцедуры
&НаСервере
Процедура СформироватьСКД()
СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ТЗ.Загрузить(ТаблицаЗначений);
КонецПроцедуры
//Функция в модуле обработки
Функция ПолучитьСхемуСКД () Экспорт
Схема = ПолучитьМакет("Макет");
Возврат Схема;
КонецФункции // ()
(26) Chameleon1980, А как книга точно называется ?
(24) bezplana, Что за необъявленный реквизит ТЗ ? Можете скинуть какую нибудь уже рабочую обработку откуда можно выдернуть код ? Не увидел также в коде реквизита "Компоновщик", хотя вы его описали, а вопрос у меня именно с ним и связан.
Добавь на форму "ТабличноеПоле" в качестве данных укажи тип "КомпоновщикНастроек.Настройки.ПараметрыДанных" или "КомпоновщикНастроек.Настройки.Отбор". Я так делал именно в обработке правда под 8.2. Мне кажется в 8.3 тоже самое можно сделать.
СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , ,);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ТаблицаЗначений = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Показать
Так вот в строке СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы); "АдресСхемы" это реквизит формы с типом "Произвольный", на какой тип его поменять или как сделать иначе, ума не приложу ...
(47) spacecraft, ага, поставил тип "Строка", но не помогает, дело похоже не в этом. Если убрать параметры в макете СКД то все формируется, если поставить то ничего не формируется ...
(52) spacecraft, А как в твоем примере передать вручную параметр ДатаНачала и ДатаОкончания в скд ? НастройкиДляКомпоновкиМакета.ДатаНачала = ДатаРучная, как то так ?
(53) sky.xn, НастройкиДляКомпоновкиМакета.ПараметрыДанных.ДатаНачала = ДатаРучная ?
хотя скорее всего только для чтения. Тогда:
УстановитьЗначениеПараметра(<Параметр>, <Значение>)
Все таки это не СКД дурацкий, а я олень. Камрады, все получилось, спасибо всем огромное !!! Остался только один маленький вопрос, как можно параметры заполнить программно ? Вот текущий код: