Имя: Пароль:
1C
1С v8
УФ не получается переопределить СхемуКомпоновкиДанных.
,
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. "они еще борются за звание дома высокой культуры и быта (с)"
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс