|
УФ не получается переопределить СхемуКомпоновкиДанных. | ☑ | ||
---|---|---|---|---|
0
ОператорПК
23.06.13
✎
01:14
|
Ситуация следующая:
Есть отчет ОсновнаяСхемаКомпоновкиДанных не определена зато есть два макета с соответствующим типом. Так вот при определенных условиях хочется использовать первый макет а при других условиях второй макет. Условия определяются при открытии (например наличие роли у пользователя должно определять какой макет использовать - не суть) важно что при открытии хочется присвоить нужный макет СКД. Пишу так: &НаКлиенте Процедура ПриОткрытии(Отказ) ОпределитьМакет(); КонецПроцедуры &НаСервере Процедура ВидимостьПанелиНастроек() НашОтчет = РеквизитФормыВЗначение("Отчет"); НашОтчет.СхемаКомпоновкиДанных=НашОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); ХранилищеСхемы = ПоместитьВоВременноеХранилище(НашОтчет.СхемаКомпоновкиДанных, УникальныйИдентификатор); НашОтчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ХранилищеСхемы)); НашОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(НашОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1").НастройкиПоУмолчанию); КонецПроцедуры В итоге настройки "заглатываются" (например структура группировок) а вот все остальное нет. т.е. нет доступных полей группировок, отборов и т.д.. Писал еще так: НашОтчет = РеквизитФормыВЗначение("Отчет"); НашОтчет.СхемаКомпоновкиДанных=НашОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); НашОтчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(НашОтчет.СхемаКомпоновкиДанных)); НашОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(НашОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1").НастройкиПоУмолчанию); Все равно не работает... Есть мысли как починить? |
|||
1
Поросенок Петр
23.06.13
✎
04:04
|
Ну получил ты на сервере объект отчет.
Ну назначил ты ему чего-то. А когда процесс вернулся на клиента... Всем пацанам, которые на клиенте сидят, им пох чо ты там делал. У них свои семки, ты понял? |
|||
2
Dionis Sergeevich
23.06.13
✎
05:15
|
Ну а если проще?
Если Условие Тогда СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("СхемаКомпоновкиДанных1") Иначе СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет("СхемаКомпоновкиДанных2") КонецЕсли; Если параметры схемы разные - то там же при условии их можно установить. |
|||
3
ОператорПК
23.06.13
✎
08:31
|
(1) т.е. нужно все делать на клиенте? пробую так (на сервере только схему готовлю т.к на клиенте ее нет)
&НаКлиенте Процедура ПриОткрытии(Отказ) ХранилищеСхемы = ВернитеСхему(); ХранилищеСхемы =ПолучитьИзВременногоХранилища(ХранилищеСхемы); Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ХранилищеСхемы)); Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ХранилищеСхемы.НастройкиПоУмолчанию); КонецПроцедуры &НаСервере Функция ВернитеСхему() НашОтчет=РеквизитФормыВЗначение("Отчет"); СхемаКомпоновкиДанных=НашОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); Адрес=ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор); Возврат Адрес; КонецФункции выдает ошибку: {Отчет.ОСВ.Форма.ФормаОтчета.Форма(110)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища) ХранилищеСхемы =ПолучитьИзВременногоХранилища(ХранилищеСхемы); по причине: Ошибка получения значение из временного хранилища по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {http://v8.1c.ru/8.2/mngsrv/ws}response Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {http://v8.1c.ru/8.1/data-composition-system/schema}dataSource Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType (2) речь про УФ так слово "проще" не используется в принципе |
|||
4
slin-dev
23.06.13
✎
09:51
|
(0) НашОтчет = РеквизитФормыВЗначение("Отчет");
а где обратная операция? |
|||
5
ОператорПК
23.06.13
✎
10:09
|
(4) переписал вот так:
&НаСервере Функция ВернитеСхему() НашОтчет=РеквизитФормыВЗначение("Отчет"); СхемаКомпоновкиДанных=НашОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); Адрес=ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор); ЗначениеВРеквизитФормы(НашОтчет,"Отчет"); Возврат Адрес; КонецФункции ошибка та-же самая. |
|||
6
К_Дач
23.06.13
✎
10:46
|
&НаСервере
//получение схемы компоновки для детальной расшифровки СКД = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Компоновщик = ЭтаФорма.КомпоновщикДетальный; ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД); Компоновщик.Инициализировать(ИсточникНастроек); Компоновщик.ЗагрузитьНастройки(СКД.ВариантыНастроек.Расшифровка.Настройки); Компоновщик.Восстановить(); //вывод расшифрованного отчета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; НовыеДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Компоновщик.Настройки,НовыеДанныеРасшифровки,, Тип("ГенераторМакетаКомпоновкиДанных")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ,НовыеДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭтаФорма[ИмяРеквизита]); ЭтаФорма.Элементы.Результаты.ТекущаяСтраница = ЭтаФорма.Элементы.Результаты.ПодчиненныеЭлементы[ИмяВкладки]; ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
7
К_Дач
23.06.13
✎
10:48
|
Ты почитай в СП описание СКД и найдешь, что она доступна только на сервере. Соответсвенно, не надо на клиенте пытаться ее получить. Получай на сервере, загружай настройки в компоновщик и формируй нужный вариант
|
|||
8
ОператорПК
23.06.13
✎
10:51
|
(7) так я в (0) так и делал (там имя процедуры напутал). вот все делается на сервере:
&НаКлиенте Процедура ПриОткрытии(Отказ) ОпределитьМакет(); КонецПроцедуры &НаСервере Процедура ОпределитьМакет() НашОтчет = РеквизитФормыВЗначение("Отчет"); НашОтчет.СхемаКомпоновкиДанных=НашОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); ХранилищеСхемы = ПоместитьВоВременноеХранилище(НашОтчет.СхемаКомпоновкиДанных, УникальныйИдентификатор); НашОтчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ХранилищеСхемы)); НашОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(НашОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1").НастройкиПоУмолчанию); КонецПроцедуры ошибки кода нету - но не работает (см (0)) |
|||
9
ОператорПК
23.06.13
✎
10:54
|
+(8) мне исполнять не нужно - нужно чтобы пользователи внесли свои корректировки а потом уже формировать отчет.
|
|||
10
К_Дач
23.06.13
✎
10:57
|
НашОтчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ХранилищеСхемы));
Перепиши как у меня: СКД = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Компоновщик = ЭтаФорма.КомпоновщикДетальный; ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД); Компоновщик.Инициализировать(ИсточникНастроек); Ну только переменную Компоновщик определи правильно |
|||
11
ОператорПК
23.06.13
✎
11:02
|
Переписал вот так -результат как у меня в (0)
&НаКлиенте Процедура ПриОткрытии(Отказ) ОпределитьМакет(); КонецПроцедуры &НаСервере Процедура ОпределитьМакет() СКД = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Компоновщик = Отчет.КомпоновщикНастроек; ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД); Компоновщик.Инициализировать(ИсточникНастроек); КонецПроцедуры |
|||
12
ОператорПК
23.06.13
✎
11:04
|
+(11) кстати не смотря на то что нет строки про загрузку настроек - они все таки загружаются......... а инициализация полей не происходит.....
|
|||
13
К_Дач
23.06.13
✎
11:04
|
Сделай еще Загрузить и Восстановить. Если поля отбора будут недоступны и после этого - значит что-то ты в схеме накосячил
|
|||
14
ОператорПК
23.06.13
✎
11:06
|
+ (12) так и не понял на что намекал "Поросенок Петр"...
|
|||
15
ОператорПК
23.06.13
✎
11:07
|
(13) Что куда Загружать и Восстанавливать? + Как можно в схеме накосячить так чтобы настройки загружались а все поля схемы нет?
|
|||
16
К_Дач
23.06.13
✎
11:09
|
&НаКлиенте
Процедура ПриОткрытии(Отказ) ОпределитьМакет(); КонецПроцедуры &НаСервере Процедура ОпределитьМакет() СКД = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Компоновщик = Отчет.КомпоновщикНастроек; ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД); Компоновщик.Инициализировать(ИсточникНастроек); Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию); Компоновщик.Восстановить(); КонецПроцедуры |
|||
17
К_Дач
23.06.13
✎
11:11
|
Попробуй просто сформировать отчет по своей схеме, создай внешний и вставь туда схему, все ли там нормально? Все ли поля доступны для отбора и проч?
|
|||
18
ОператорПК
23.06.13
✎
11:16
|
(16) Восстановить -не помогает (все то же самое)
(17) только что назначил в качестве основной схемы компоновки данных нужный мне макет + закоментил процедуру ОпределитьМакет() - все распрекрастно определилось и поля и отборы и все остальное |
|||
19
ОператорПК
23.06.13
✎
11:18
|
+(18) в обычных формах код инициализации отрабатывал на 100% и проблем ни когда не было.
|
|||
20
ОператорПК
23.06.13
✎
11:21
|
+ Все-таки проблема с взаимоотношениями сервер-клиент если отладчиком посмотреть то инициализация проходит. но сука все пропадает (кроме настроек) когда возвращаемся на сервер... Поросенок Петр - прав... только что делать х.з.
|
|||
21
ОператорПК
23.06.13
✎
11:23
|
(17) у тебя по ходу все работает т.к. ты на клиент не возвращаешься... а я возвращаюсь...
|
|||
22
К_Дач
23.06.13
✎
11:27
|
Если есть варианты настроек - либо используй варианты в схеме для одной и той же схемы, либо вложенные схемы для разных схем. Формируй отчет полностью программно
|
|||
23
К_Дач
23.06.13
✎
11:33
|
Кароч все делай на сервере и будет тебе щастье
|
|||
24
ОператорПК
23.06.13
✎
11:35
|
Переписал вот так (тут кажись все на сервере - один хрен не работает):
&НаКлиенте Процедура ПриОткрытии(Отказ) //ОпределитьМакет(); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОпределитьМакет(); КонецПроцедуры &НаСервере Процедура ОпределитьМакет() СКД = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); Компоновщик = Отчет.КомпоновщикНастроек; ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД); Компоновщик.Инициализировать(ИсточникНастроек); Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию); Компоновщик.Восстановить(); КонецПроцедуры |
|||
25
Любопытная
23.06.13
✎
11:38
|
"Только что делать х.з." вернуть отчет клиенту. РеквизитФормыВЗначение делаешь, а потом надо сделать обратно ЗначениеВРеквизит
|
|||
26
К_Дач
23.06.13
✎
11:40
|
СтандартнаяОбработка = Ложь; забыл
Вообще, я кажется понял чего ты хочешь. Юзер на форме выбирает вариант отчета - в зависимости от выбранного варианта ты хочешь загружать ту или иную СКД и получать на форме ее настройки? Я бы сделал так - выбор варианта отчета повесил на форму, по щелчку на чекбокс загружал бы нужную СКД, на форме разместил бы заранее нужные реквезиты для отбора, управлял бы их видимостью в зависимости от выбора варианта, а на реквезиты повесил бы процедуры уставновки отборов. Отчет формировал бы программно |
|||
27
ОператорПК
23.06.13
✎
11:42
|
(25) переписал (см ниже) - не работает
&НаКлиенте Процедура ПриОткрытии(Отказ) //ОпределитьМакет(); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОпределитьМакет(); КонецПроцедуры &НаСервере Процедура ОпределитьМакет() Отчетик = РеквизитФормыВЗначение("Отчет"); СКД = Отчетик.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); Компоновщик = Отчет.КомпоновщикНастроек; ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД); Компоновщик.Инициализировать(ИсточникНастроек); Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию); Компоновщик.Восстановить(); ЗначениеВРеквизитФормы(Отчетик,"Отчет"); КонецПроцедуры |
|||
28
ОператорПК
23.06.13
✎
11:46
|
(26) немного не так но похоже...
При открытии формы я сам по некоторому признаку определяю какую схему нужно загружать - пытаюсь загрузить собственно не выходит... на форме нет ни каких доп полей и с видимостью мне работать не нужно - нужно чтобы загрузилась мной определенная схема (в зависимости от схемы сама компоновка должна содержать новые разные поля - по этому на форме делать ничего не нужно). |
|||
29
ОператорПК
23.06.13
✎
11:46
|
(26) а СтандартнаяОбработка = Ложь; это куда?
|
|||
30
К_Дач
23.06.13
✎
11:48
|
(27) Ты пойми, у тебя на клиенте уже создана форма отчета с главным реквизитом Отчет, у которого загружена СКД, указанная в качестве основной. Делай как написано в (26) - рабочий вариант вполне.
(29) Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) сюда |
|||
31
ОператорПК
23.06.13
✎
11:50
|
(30) дак я рад бы использовать... даже кнопку на форму вешал "Установить схему ОсновнаяСхемаКомпоновкиДанных1" с соответствующим кодом (кодом из процедуры ОпределитьМакет) не работает......
|
|||
32
К_Дач
23.06.13
✎
11:51
|
в отчете сними свойство основная СКД: твоя СКД. И попробуй згрузить при создании отчета
|
|||
33
banco
23.06.13
✎
12:19
|
(0) у меня так все работает
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Схема1 = ОтчетОбъект.ПолучитьМакет("Макет1"); АдресСхемы = ПоместитьВоВременноеХранилище(Схема1, УникальныйИдентификатор); ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы); ОтчетОбъект.КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек); НастройкиКомпоновкиДанных = Схема1.НастройкиПоУмолчанию; ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); КонецПроцедуры &НаКлиенте Процедура Сформировать(Команда) СформироватьНаСервере(); КонецПроцедуры &НаСервере Процедура СформироватьНаСервере() Результат.Очистить(); Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); СхемаОтчета = ПолучитьИзВременногоХранилища(АдресСхемы); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаОтчета, Настройки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,, Истина); ПроцессорВыводаВТабличныйДокумент = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВыводаВТабличныйДокумент.УстановитьДокумент(Результат); ПроцессорВыводаВТабличныйДокумент.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
34
ОператорПК
23.06.13
✎
14:17
|
(33) толи лыжи не едут толи... Сделал так: (заменил только название макета) - не работает......
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //ОпределитьМакет(); ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Схема1 = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); АдресСхемы = ПоместитьВоВременноеХранилище(Схема1, УникальныйИдентификатор); ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы); ОтчетОбъект.КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек); НастройкиКомпоновкиДанных = Схема1.НастройкиПоУмолчанию; ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); КонецПроцедуры |
|||
35
ОператорПК
23.06.13
✎
14:26
|
(32) а как АдресСхемы передается в СформироватьНаСервере?
|
|||
36
ОператорПК
23.06.13
✎
14:35
|
(32) писец какой-то.... убрал свойство, написал быдло код (см ниже) отчет сформировался ... но пользователи ни до ни после формирования не видят ни каких полей в настройках... как сделать чтобы пользователи могли настраивать отчет?
&НаСервере Процедура ВывестиРезультат() ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Схема1 = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); АдресСхемы = ПоместитьВоВременноеХранилище(Схема1, УникальныйИдентификатор); ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы); ОтчетОбъект.КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек); НастройкиКомпоновкиДанных = Схема1.НастройкиПоУмолчанию; ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); ТЗ=СверхМодульСервер.СформироватьНаСервереОСВ(Отчет,ЭтаФорма.ПредставлениеТекущегоВарианта); Результат.Очистить(); Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); ВнешниеНаборыДанных=Новый Структура; ВнешниеНаборыДанных.Вставить("ТабличкаИсходная",ТЗ); СхемаОтчета = ПолучитьИзВременногоХранилища(АдресСхемы); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаОтчета, Настройки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,, Истина); ПроцессорВыводаВТабличныйДокумент = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВыводаВТабличныйДокумент.УстановитьДокумент(Результат); ПроцессорВыводаВТабличныйДокумент.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
37
ОператорПК
23.06.13
✎
14:41
|
получается что быдло код на сервере исполняется но на клиенте остается все в исходном виде (я об этом еще в (20) писал)... как обновить клиент? дописывание вот этого:ЗначениеВРеквизитФормы(ОтчетОбъект,"Отчет");
не помогает - клиент не обновляется. |
|||
38
ОператорПК
23.06.13
✎
15:01
|
на всякий случай платформа 8.2.18.102
|
|||
39
ОператорПК
23.06.13
✎
15:08
|
на платформе 8.2.16.362 работает точно так же...
|
|||
40
ОператорПК
24.06.13
✎
13:22
|
Отвал башки...
Написал так: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Схема1 = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); АдресСхемы = ПоместитьВоВременноеХранилище(Схема1, УникальныйИдентификатор); ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы); ОтчетОбъект.КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек); НастройкиКомпоновкиДанных = Схема1.НастройкиПоУмолчанию; ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); ОтчетОбъект.КомпоновщикНастроек.Восстановить(); ЗначениеВРеквизитФормы(ОтчетОбъект,"Отчет"); КонецПроцедуры при этом пользователь не видит полей для настройки отчета как и ранее НО..... на форме помести новую кнопку с пустой процедурой после открытия кликаю на кнопку проваливаюсь в процедуру и по отладчику смотрю :Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы ВСЕ ПОЛЯ НА МЕСТЕ....... получается новая схема таки загружена только вот почему пользователь не может решительно ничего настроить т.к. не видит в буквальном смысле ни одного поля? |
|||
41
Любопытная
24.06.13
✎
17:08
|
Кинь отчет на мыло [email protected] уже даже интересно, что с этим делать
|
|||
42
ОператорПК
24.06.13
✎
22:38
|
(41) Ушло. Спасибо за проявленный интерес к проблеме.
|
|||
43
Любопытная
25.06.13
✎
06:11
|
В общем, так. Насколько я понимаю, проблема с недоступностью настроек возникает из-за того, что у формы неопределен вариант отчета. Отсюда вся эта котовасия и происходит. Заметила тенденцию: если установить одну из схем схемой по умолчанию, то все замечательно работает и при смене схем тоже.
Попыталась установить вариант настроек программно через ЭтаФорма.УстановитьТекущийВариант(Схема.ВариантыНастроек[0]); После этого при попытке открыть форму настроек варианта, 1С валится с дампом памяти. Возможно, это только у меня такие проблемы, я на прошлой неделе подсистему БТО с трудом прикрутила к малюсенькой конфе. Так что мож у ТС получится что-то более вменяемое) |
|||
44
ОператорПК
25.06.13
✎
07:40
|
(43) Если установить одну из схем схемой по умолчанию, то.... - ничего не работает, попробуй по умолчанию установить Схему ОсновнаяСхемаКомпоновкиДанных а код в процедуре ПриСозданииНаСервере тставь как есть (т.е. пытаемся назначить схему ОсновнаяСхемаКомпоновкиДанных1) и открой отчет попробуй найти в настройказ проверочное поле "Гипербола" (которое есть только в ОсновнаяСхемаКомпоновкиДанных1) - нету его... следовательно переопределение не отработало... К кого есть такое переопределение работающее на УФ? (еще раз повторюсь - в обычных формах такое отрабатывает без танцев и бубнов на ура). Вот мыло [email protected] кому не жалко бросьте пжл.
|
|||
45
Любопытная
25.06.13
✎
07:48
|
(44) Я вчера вечером дома находила ветку на devtrainingforum на твою тему, на сколько смогла понять - решения не нашли. Сейчас ветку найти не могу, дома историю подниму, скину ссылку.
Я пробовала определить основную схему, а потом в кнопку на форме прописала код для переопределения схемы. Отработало нормально |
|||
46
ОператорПК
25.06.13
✎
08:07
|
(45) ок процедуру ПриСозданииНаСервере закоментил. написал вот так:
&НаКлиенте Процедура Команда1(Команда) Команда1НаСервере(); КонецПроцедуры &НаСервере Процедура Команда1НаСервере() ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Схема1 = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных1"); АдресСхемы = ПоместитьВоВременноеХранилище(Схема1, УникальныйИдентификатор); ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы); ОтчетОбъект.КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек); НастройкиКомпоновкиДанных = Схема1.НастройкиПоУмолчанию; ОтчетОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); ОтчетОбъект.КомпоновщикНастроек.Восстановить(); ЗначениеВРеквизитФормы(ОтчетОбъект,"Отчет"); КонецПроцедуры отрабатывает не нормально. Вариант основной из схемы ОсновнаяСхемаКомпоновкиДанных1 берется но поле "Гипербола" по прежнему не определено (оно с красным крестом). |
|||
47
Любопытная
25.06.13
✎
09:04
|
Облазила уже все форумы... Я так понимаю, что интерактивно этот фокус не пройдет.
|
|||
48
ОператорПК
25.06.13
✎
11:53
|
(47) я тоже уже склоняюсь к такому мнению... Еще раз спасибо за участие.
Ну что сказать: УФ на марше, мало того что код стало писать в два раза сложней относительно обычных форм так он еще и не работает, а меж тем УФ скоро лет пять будет... p.s. "они еще борются за звание дома высокой культуры и быта (с)" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |