Имя: Пароль:
1C
1С v8
Програмное изменение СКД в управляемом интерфейсе
0 SergeyFirst
 
02.10.11
00:05
Доброго времени суток, коллеги!!!

Пытаюсь при открытии отчёта модифицировать запрос СКД, но он ни в какую не хочет меняться. Поиски в интернете и по сайту не дали ни каких результатов. Кто-нибудь может помочь?

Код примерно следующий:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   лкОтчет = РеквизитФормыВЗначение("Отчет");
   
   лкОтчет.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных.Запрос = "ВЫБРАТЬ Организация, &Аналитика КАК Аналитика ИЗ Справочник.Аналитика";
   
   лкПоле = лкОтчет.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
   лкПоле.Поле = "Аналитика";
   лкПоле.ПутьКДанным = "Аналитика";
   
   ЗначениеВРеквизитФормы(лкОтчет,"Отчет");
   
   Сообщить(РеквизитФормыВЗначение("Отчет").СхемаКомпоновкиДанных.НаборыДанных.НаборДанных.Запрос);
   
КонецПроцедуры

В последней строчке возвращается текст запроса такой как он был до изменения.
1 ll13
 
02.10.11
00:30
Изменить текст запроса можно только в модуле объекта (не вызвав процедуру модуля !!! а именно в модуле при начальной инициализации объекта, что с прикладной точки зрения практически бесполезно)
Конечно же назревает вопрос фирме 1с, зачем вся эта бадяга с программной работой с СКД, если нельзя выполнить элементарных действий по модификации СКД...
Я делал свой компоновщик, связывал с ним свою СКД и соответственно все остальную работу по настройке и компоновке реализовал программно, получилось весьма объемно, не совсем красиво, но тем не менее работоспособно...
2 SergeyFirst
 
02.10.11
01:08
Да, залёт с точки зрения 1С

Не понятно чем отличается код прописанный в модуле объекта и в обработчике при создании на сервере... но в общем мне совет помог. Большое спасибо!!!