Подскажите пожалуйста как происходит добавление поля параметра на форму отчёта сделанного с помощью СКД? (в конфигураторе данного поля нет).
Я знаю что установил галочку возле "Включать в пользовательские настройки", но вот интересует на каком этапе эта галочка при открытии формы проверяется...Надеюсь суть вопроса понятна :)
(2) Да, именно.
Допустим у меня есть параметр строковый (он представляется стандартно в форме отчёта как галочка и поле ввода строки). Я нашел что при открытии, к примеру, строка вписывается в элемент формы:
(7) Если они сразу ссылаются на Компоновщик настроек, то почему в процедуре "ПриКомпоновкеРезультата" в "КомпоновщикНастроек.ПараметрыДанных.Элементы" значение возле параметра пустое, хотя в форме оно задано?
Где искать значение параметра в процедуре "ПриКомпоновкеРезультата"?
(11) Я хочу разобраться с тем, как работают параметры в СКД. Сейчас я изучаю набор данных "Объект" и столкнулся с тем что у в процедуре "ПриКомпоновкеРезультата" я делаю свой запрос, после передавая его в СКД - все работает, но запрос без параметров.
Теперь я хочу добавить параметр в СКД (период к примеру) - после чего у меня добавиться в форму Отчёта поле ввода периода - Я нажму сформировать и в процедуре "ПриКомпоновкеРезультата" мне нужно получить параметры с компоновки данных что бы передать в свой запрос, написанный вне СКД.
Если я вообще не понятно объяснил - то пишите об этом. Буду думать как изложить грамотнее, просто когда не особо понимаешь механизм, то тяжело донести свою цель и как ты к ней идешь...
Вместо
Настройки=КомпоновщикНастроек.Настройки
напиши
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
Потому что ты получаешь настройки как раз без пользовательских настроек.
Двигаешься в верную сторону.
Если конфигурация типовая на БСП то привыкай использовать общие модули КомпоновкаДанныхСервер и КомпоновкаДанныхКлиентСервер. Там есть все нужное для работы с настройками( отборами, параметрами, структурой) и самой СКД.
Почему "Настройки=КомпоновщикНастроек.Настройки" - пустые данные, а "КомпоновщикНастроек.ПолучитьНастройки()" - данные заполнены.
Получается в свойстве "Настройки" хранится просто шаблон настроек, а метод ПолучитьНастройки() отображает значения в данный шаблон?
Спасибо за ссылку. Опять регистрироваться на 7 дней :)
(17) Вот тут вам присылал http://prntscr.com/np832y.
Если по простому, то КомпоновщикНастроек.Настройки еще не получил настройки из КомпоновщикНастроек.ПользовательскиеНастройки.
В СтандартнаяОбработка = истина это произойдет само собой. Если вы программно это делаете, то нужно выполнить КомпоновщикНастроек.ПолучитьНастройки(), чтобы пользовательские настройки сопоставились с настройками.
ще не получил настройки из КомпоновщикНастроек.ПользовательскиеНастройки.
В СтандартнаяОбработка = истина это произойдет само собой. Если вы программно это делаете, то нужно выполнить КомпоновщикНастроек.ПолучитьНастройки(), чтобы пользовательские настройки сопоставились с настройками.
То есть пользовательские настройки уже как бы есть в компоновке, но к ним напрямую я "заглянуть" не могу и для этого что бы посмотреть на них мне нужно сделать себе копию настроек с помощью метода ПолучитьНастройки(), а потом если я наделаю делов в этой копии, то загрузить их обратно в настройки методом ЗагрузитьНастройки(). http://prntscr.com/np8kj7
Теперь ближе к тому что я хочу сделать проясню. А именно задача моя:
есть справочник "ИменаСотрудников" с ревизитами "Дата" и "Имя" в котором присутствуют данные и мне необходимо в СКД с помощью набора данных объект вывести имена сотрудников из справочника за период указанный пользователем.
Для решения данной задачи я напишу запрос, в который нужно передать дату начала и дату окончания. Получается данные параметры мне нужно, как я понимаю, вручную добавить в форму отчёта, а не прописать в СКД или мне лучше задать их в СКД, а после они автоматически отобразятся в форме и я методом ПолучитьНастрокйки() вытяну значения, которые ввел пользователь и подсуну в свой запрос?
(не обращайте внимание на то что я работаю со справочником и настолько тупо все звучит, делаю просто понятный-простой пример для себя).
PS: хорошая программа для скриншотов - сам пользуюсь :)
(20) Заглянуть можно, но как по мне - неудобно.
Если использовать СКД, то на форму вручную ничего добавлять не нужно. Просто параметры. Та же параметры можно добавлять производные, которые никак не относятся к запросу http://prntscr.com/np8wcu
ЗагрузитьНастройки() - необязательно. Настройки вы передаете Компоновщику макета
ЗагрузитьНастройки можно использовать для модификации настроек в самом компоновщике (если нужно программно заполнить и чтобы на форме параметры тоже изменились)
например:
СобственныеНастройкиКомпоновкиДанных= Новый НастройкиКомпоновкиДанных;
НовыйПериод = СобственныеНастройкиКомпоновкиДанных.ПараметрыДанных.Элементы.Добавить();
НовыйПериод .Параметр = Новый ПараметрКомпоновкиДанных("Период");
НовыйПериод .Использование = истина;
НовыйПериод .Значение = Новый СтандартныйПериод;
КомпоновщикНастроек.ЗагрузитьНастройки(СобственныеНастройкиКомпоновкиДанных);
ЗагрузитьНастройки можно использовать для модификации настроек в самом компоновщике (если нужно программно заполнить и чтобы на форме параметры тоже изменились)
То есть я могу с другого документа, к примеру перед открытием формы отчёта таким образом загрузить в отчёт другие настройки и после открытия формы тем самым поменяются поля параметров из СКД?
В остальном все понял, спасибо. Уже написал примерчик для себя даже рабочий.
(22) Для этого используют опять же ПолучитьНастройки(). Эти настройки заполняются и передаются в КомпоновщикМакета. Не нужно ничего загружать.
Если есть желание открывать форму отчета из документа, то можно в параметры формы передать заполненные ФиксированныеНастройки или ПользовательскиеНастройки. Различие в том, что фиксированные настройки пользователь не изменит, а пользовательские настройки использовать опять же неудобно на мой взгляд, но иногда приходится.
И те и другие настройки автоматически заполнят компановщик своими настройками, и не нужно будет прописывать в модуле отчета обработку заполнения настроек(кроме случаев, когда это реально нужно, например внешний источник заполнить).
Полезно еще использовать параметр СформироватьПриОткрытии
ФиксированныеНастройки = Новый НастройкиКомпоновкиДанных;
Отбор = ФиксированныеНастройки.Отбор.Элементы.добавить();
..........................................
Параметр = ФиксированныеНастройки.ПараметрыДанных.Элементы.добавить();
..............................
УО = ФиксированныеНастройки.УсловноеОформление.Элементы.добавить();
..............................
ПараметрыФормы = Новый Структура("ФиксированныеНастройки, СформироватьПриОткрытии", ФиксированныеНастройки, Истина);
ОткрытьФорму("Отчет.МойОтчет.Форма.Форма", ПараметрыФормы, ЭтаФорма);
Показать
или если нужен простой отбор, то
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка, Номенклатура", Документ, МассивЭлементов));
//ссылка - поле по которому добавиться отбор Ссылка Равно Документ
//номенклатура - поле по которому добавиться отбор Номенклатура В Списке МассивЭлементов
ОткрытьФорму("Отчет.МойОтчет.Форма.Форма", ПараметрыФормы, ЭтаФорма);
(5) Я не совсем понимаю, что вам хотите узнать. Я могу на пальцах объяснить как работает механизм Настройки СКД и Пользовательские настройки СКД. Могу ссылку на документацию дать, где в картинках описан механизм.