Имя: Пароль:
1C
 
Самопроизвольная очистка доступных полей компоновщика настроек
0 maxp77
 
23.04.10
16:16
Почему доступные поля КомпоновщикНастроек очищаются (КомпоновщикНастроек - реквизит формы типа КомпоновщикНастроекКомпоновкиДанных) при возвращении в процедуру ПриОткрытии?

Код:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   
   Иниц();    
       
КонецПроцедуры

&НаСервере
Процедура Иниц()
   
   мСхемаКомпоновки = Новый СхемаКомпоновкиДанных;
   ИсточникДанных = мСхемаКомпоновки.ИсточникиДанных.Добавить();
   ИсточникДанных.Имя = "ИсточникДанных1";
   ИсточникДанных.ТипИсточникаДанных = "Local";
   
   мНаборДанных = мСхемаКомпоновки.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
   мНаборДанных.Имя = "НаборДанных1";
   мНаборДанных.ИсточникДанных = ИсточникДанных.Имя;
   мНаборДанных.Запрос = "ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура ГДЕ Ложь";
   
   КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(мСхемаКомпоновки));
   КомпоновщикНастроек.Восстановить();    

   Для Каждого Элемент из КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы Цикл
       НовыйЭлемент = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       НовыйЭлемент.Использование  = Истина;
       НовыйЭлемент.ЛевоеЗначение  = Элемент.Поле;
   КонецЦикла;
       
КонецПроцедуры
1 maxp77
 
23.04.10
17:15
По-моему это косяк 8.2
2 maxp77
 
23.04.10
18:52
Так в чем же загвоздка?
3 maxp77
 
24.04.10
00:29
Вроде должно работать?
4 maxp77
 
24.04.10
15:36
здесь сама обработка: http://narod.ru/disk/20068253000/Обработка1.rar.html
5 maxp77
 
24.04.10
22:20
Подстава в том, что тип - СхемаКомпоновкиДанных доступен только на сервере; тип НаборДанныхЗапросСхемыКомпоновкиДанных доступен везде, но при попытке передачи данных этого типа между контекстами вылетает ошибка; тип КомпоновщикНастроекКомпоновкиДанных доступен везде, но судя по моему примеру при передаче данных между контекстами часть их теряется без каких-либо ошибок.
6 EvgeniuXP
 
24.04.10
22:56
а из динамического списка можно схему настройки компоновки данных прочитать? если можно, то как?
7 maxp77
 
24.04.10
23:17
(6) если я тебя правильно понял, то можно
8 maxp77
 
25.04.10
13:28
не теряю надежды все-таки получить какой-нибудь вразумительный ответ
9 maxp77
 
26.04.10
12:28
отправил данное сообщение в техподдержку 1с.
вот и результат: Зарегистрирована ошибка 10052606.
10 maxp77
 
26.04.10
14:25
продолжаю разговор сам с собой:)
Разработчики сообщают, что в тонком клиенте отсутствует источник доступных настроек на основании схемы.
Его следует заменить на источник на основании адреса во временном хранилище.
Т.о. для работы в тонком клиенте вместо строки кода:

   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(мСхемаКомпоновки));
нужно будет писать что-то вроде этого:  

   Адрес = Новый УникальныйИдентификатор();
   URLСхемы = ПоместитьВоВременноеХранилище(мСхемаКомпоновки, Адрес);  
   ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемы);
   КомпоновщикНастроек.Инициализировать(ИсточникНастроек);

Проверил на своем примере - все заработало.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший