|
Расшифровка в СКД | ☑ | ||
---|---|---|---|---|
0
antotti
05.02.15
✎
18:37
|
Добрый вечер, есть внешний отчет на скд + самописная расшифровка. Проблема в том, что когда вызываю расшифровку - отчет почему сам очищается....( Подскажете, с чем может быть связанно?
|
1 |
||
1
PR
05.02.15
✎
18:39
|
(0) Что-то не так запрограммировано.
|
|||
2
antotti
05.02.15
✎
18:40
|
Вот код:
&НаСервере Функция ПолучитьURLСхема() ОсновнаяСхемаКомпоновкиДанных = ПолучитьМакетНаСервере(); //Отчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); URLСхемы = ПоместитьВоВременноеХранилище(ОсновнаяСхемаКомпоновкиДанных); Возврат URLСхемы; КонецФункции &НаКлиенте Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) Перем ВыполненноеДействие; //Поля = ПолучитьИзВременногоХранилища(ДанныеРасшифровки).Элементы[Расшифровка].ПолучитьПоля(); СтандартнаяОбработка = Ложь; ЗначениеРасшифровки = ПолучитьЗначениеРасшифровки(Расшифровка); URLСхемы=ПолучитьURLСхема(); ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемы); Обработка = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки,ИсточникДоступныхНастроек); Результат = Неопределено; Параметр = Неопределено; ДоступныеДействия = Новый Массив; ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение); Обработка.ВыбратьДействие(Расшифровка,Результат,Параметр,ДоступныеДействия,); // Модель = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение; ЭлементыОтбора = Новый Структура("Склад,Модель", Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].Значение, ЗначениеРасшифровки); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора); Форма = ОткрытьФорму("Обработка.АнализМодели.Форма.ОсновнаяФорма",ПараметрыФормы); ПриОткрытии(ложь); КонецПроцедуры &НаСервере Функция ПолучитьЗначениеРасшифровки(Расшифровка) КоллекцияРасшифровки = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); КоллекцияПолей = КоллекцияРасшифровки.Элементы[Расшифровка].ПолучитьПоля(); //Если КоллекцияПолей.Количество() > 0 Тогда // Возврат КоллекцияПолей[0].Значение; //КонецЕсли; Массив_Родителей=новый массив; ВывестиЗначениеГруппировки(Расшифровка,Массив_Родителей); //Род1=КоллекцияРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0]; //ччч=ДобавитьРодителей(Род1, Отчет, МассивПолейРасшифровки, Ложь) ; Для Каждого ЭлементМассива Из Массив_Родителей Цикл Если ТипЗнч(ЭлементМассива) = Тип("СправочникСсылка.Модели") Тогда Возврат ЭлементМассива; КонецЕсли; КонецЦикла; КонецФункции &НаСервере Процедура ВывестиЗначениеГруппировки(ТекРасшифровка,Массив_Родителей) КоллекцияРасшифровки = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); МассивРодителей = КоллекцияРасшифровки.Элементы[ТекРасшифровка].ПолучитьРодителей(); Для Сч = 1 По МассивРодителей.Количество() Цикл ПолеРодитель = МассивРодителей[Сч-1]; Если ТипЗнч(ПолеРодитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда //Выведем значения текущей расшифровки Поле = ПолеРодитель.ПолучитьПоля()[0]; Массив_Родителей.Добавить(Поле.Значение); //Сообщить("Поле: " + Поле.Поле + ", значение: " + Поле.Значение); // //Рекурсивный вызов процедуры. РасшифровкиВыше = ПолеРодитель.ПолучитьРодителей()[0].Идентификатор; ВывестиЗначениеГруппировки(РасшифровкиВыше,Массив_Родителей); ИначеЕсли ТипЗнч(ПолеРодитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") тогда Попытка Поле = ПолеРодитель.ПолучитьРодителей()[0].ПолучитьПоля()[0] ; Массив_Родителей.Добавить(Поле.Значение); //Сообщить("Поле: " + Поле.Поле + ", значение: " + Поле.Значение); //Рекурсивный вызов процедуры. РасшифровкиВыше = ПолеРодитель.ПолучитьРодителей()[0].Идентификатор; ВывестиЗначениеГруппировки(РасшифровкиВыше,Массив_Родителей); Исключение КонецПопытки; КонецЕсли; КонецЦикла; КонецПроцедуры Функция ПолучитьДоступноеПолеПоПолюКомпоновкиДанных(ПолеКомпоновкиДанных, ОбластьПоиска) Экспорт Если ТипЗнч(ПолеКомпоновкиДанных) = Тип("Строка") Тогда ПолеПоиска = Новый ПолеКомпоновкиДанных(ПолеКомпоновкиДанных); Иначе ПолеПоиска = ПолеКомпоновкиДанных; КонецЕсли; Если ТипЗнч(ОбластьПоиска) = Тип("КомпоновщикНастроекКомпоновкиДанных") ИЛИ ТипЗнч(ОбластьПоиска) = Тип("ДанныеРасшифровкиКомпоновкиДанных") ИЛИ ТипЗнч(ОбластьПоиска) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда Возврат ОбластьПоиска.Настройки.ДоступныеПоляВыбора.НайтиПоле(ПолеПоиска); Иначе Возврат ОбластьПоиска.НайтиПоле(ПолеПоиска); КонецЕсли; КонецФункции &НаСервере Функция ПолучитьМакетНаСервере() ОтчетОбъект= РеквизитФормыВЗначение("Отчет"); Макет = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Возврат Макет; КонецФункции |
4 |
||
3
antotti
05.02.15
✎
18:42
|
Можно ли как-то указать программно, чтобы отчет не очищался.... ? Я так понимаю это в функции "РезультатОбработкаРасшифровки" нужно что- то дописать.???
Так все работает как надо. PS: (УФ) |
5 |
||
4
Crush
05.02.15
✎
18:47
|
(2) Безобразие! Код почитай или найми программиста для этих целелей.
|
|||
5
Classic
05.02.15
✎
18:53
|
(3)
Не совсем. Нужно что-то убрать. Например всю расшифровку |
|||
6
antotti
06.02.15
✎
13:06
|
Блин, ну в стандартной же расшифровки, не пропадает отчет после раскрытия элемента.....Мне нужно обязательно делать расшифровку, но только чтобы отчет не сворачивался после этого.... Не ужели нельзя это сделать?
|
|||
7
romanoff
22.02.15
✎
19:01
|
Друзья, мне одному очевидно что вопрос только вот в этой строчке ??
Результат = Неопределено; Если на скд просто создать упр.форму, то реквизит формы табличного документа имеет имя "Результат" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |