Имя: Пароль:
1C
1С v8
Управляемые формы Поле объекта недоступно для записи (Отбор)
0 flyy
 
19.09.11
17:37
Динамический список журнала документов.При попытке установить отбор выдает такое сообщение.Вызов установки стандартный ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Ответственный", Пользователь,,, ЗначениеЗаполнено(Пользователь));Помогите разобраться.
1 Grusswelle
 
19.09.11
17:38
Там новый тип - ОтборКомпоновкиДанных, он по-другому работает.
2 flyy
 
19.09.11
17:42
// Добавление элемента компоновки в контейнер элементов компоновки
// Параметры:
//  ОбластьДобавления - контейнер с элементами и группами отбора, например
//                  Список.Отбор или группа в отборе
//  ИмяПоля - строка - имя для поля компоновки данных
//  ВидСравнения - ВидСравненияКомпоновкиДанных - вид сравнения
//  ПравоеЗначение - произвольный
//  Представление - представление элемента компоновки данных
//  Использование - булево - использование элемента
//
Функция ДобавитьЭлементКомпоновки(ОбластьДобавления,
                                   знач ИмяПоля,
                                   знач ВидСравнения,
                                   знач ПравоеЗначение = Неопределено,
                                   знач Представление  = Неопределено,
                                   знач Использование  = Неопределено) Экспорт
   
   Элемент = ОбластьДобавления.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
   Элемент.ВидСравнения = ВидСравнения;
   Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
   
   Если ПравоеЗначение <> Неопределено Тогда
       Элемент.ПравоеЗначение = ПравоеЗначение;
   КонецЕсли;
   
   Если Представление <> Неопределено Тогда
       Элемент.Представление = Представление;
   КонецЕсли;
   
   Если Использование <> Неопределено Тогда
       Элемент.Использование = Использование;
   КонецЕсли;
   
   Возврат Элемент;
   
КонецФункции
// Изменение элементов отбора
// Параметры
//  ИмяПоля - строка - имя поля компоновки
//  ВидСравнения - ВидСравненияКомпоновкиДанных - вид сравнения
//  ПравоеЗначение - произвольный
//  Представление - строка - представление элемента компоновки данных
//
Функция ИзменитьЭлементыОтбора(ОбластьПоиска,
                               знач ИмяПоля = Неопределено,
                               знач Представление = Неопределено,
                               знач ПравоеЗначение = Неопределено,
                               знач ВидСравнения = Неопределено,
                               знач Использование = Неопределено) Экспорт
   
   Если ЗначениеЗаполнено(ИмяПоля) Тогда
       ЗначениеПоиска = Новый ПолеКомпоновкиДанных(ИмяПоля);
       СпособПоиска = 1;
   Иначе
       СпособПоиска = 2;
       ЗначениеПоиска = Представление;
   КонецЕсли;
   
   МассивЭлементов = Новый Массив;
   
   НайтиРекурсивно(ОбластьПоиска.Элементы, МассивЭлементов, СпособПоиска, ЗначениеПоиска);
   
   Для Каждого Элемент Из МассивЭлементов Цикл
       Если ИмяПоля <> Неопределено Тогда
           Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
       КонецЕсли;
       Если Представление <> Неопределено Тогда
           Элемент.Представление = Представление;
       КонецЕсли;
       Если Использование <> Неопределено Тогда
           Элемент.Использование = Использование;
       КонецЕсли;
       Если ВидСравнения <> Неопределено Тогда
           Элемент.ВидСравнения = ВидСравнения;
       КонецЕсли;
       Если ПравоеЗначение <> Неопределено Тогда
           Элемент.ПравоеЗначение = ПравоеЗначение;
       КонецЕсли;
   КонецЦикла;
   
   Возврат МассивЭлементов.Количество();
   
КонецФункции


// Используется для создания элемента отбора или, если таковой не найден,
// установления существующим элементам свойств
// Параметры
//{{MRG[ <-> ]
//  ОбластьПоискаДобавления - контейнер с элементами и группами отбора, например
//                  Список.Отбор или группа в отборе
//  ИмяПоля - строка - имя для поля компоновки данных (заполняется всегда)
//}}MRG[ <-> ]
//{{MRG[ <-> ]
//// ОбластьПоискаДобавления - контейнер с элементами и группами отбора, например
////                    Список.Отбор
////                    или группа в отборе
//}}MRG[ <-> ]
//{{MRG[ <-> ]
//// ИмяПоля - строка - имя для поля компоновки данных (заполняется всегда)
//}}MRG[ <-> ]
// Устанавливаемые поля:
//{{MRG[ <-> ]
//  ВидСравнения - ВидСравненияКомпоновкиДанных - вид сравнения
//  ПравоеЗначение - произвольный
//  Представление - представление элемента компоновки данных
//  Использование - булево - использование элемента
//}}MRG[ <-> ]
//{{MRG[ <-> ]
//// ВидСравнения - ВидСравненияКомпоновкиДанных - вид сравнения
//// ПравоеЗначение - произвольный
//// Представление - представление элемента компоновки данных
//// Использование - булево - использование элемента
//}}MRG[ <-> ]
//
Процедура УстановитьЭлементОтбора(ОбластьПоискаДобавления,
                               знач ИмяПоля,
                               знач ПравоеЗначение = Неопределено,
                               знач ВидСравнения = Неопределено,
                               знач Представление = Неопределено,
                               знач Использование = Неопределено) Экспорт
   
   ЧислоИзмененных = ИзменитьЭлементыОтбора(ОбластьПоискаДобавления, ИмяПоля, Представление,
                           ПравоеЗначение, ВидСравнения, Использование);
   
   Если ЧислоИзмененных = 0 Тогда
       Если ВидСравнения = Неопределено Тогда
           ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
       КонецЕсли;
       ДобавитьЭлементКомпоновки(ОбластьПоискаДобавления, ИмяПоля, ВидСравнения,
                               ПравоеЗначение, Представление, Использование);
   КонецЕсли;
   
КонецПроцедуры
3 flyy
 
19.09.11
17:42
Вот процедуры из общего модуля ,все вроде правильно
4 shuhard
 
19.09.11
17:46
(3) добавь  отбор в лоб,
через ОтборКомпоновкиДанных
5 flyy
 
19.09.11
17:51
если в лоб ...то все получается..но хотелось использовать встроенную установкуОна вроде во ут 11 работает, например в журнале взаимодействия
6 flyy
 
19.09.11
17:51
Хотелось бы узнть что я не так делаю
7 flyy
 
19.09.11
17:53
Причем при открытии журнала,отбор устанавливаеися,не ругается.Ругается именно при смене на форме пользователя,или режима
8 shuhard
 
19.09.11
17:54
(5) дык отладчик в зубы + останов по ошибке
9 flyy
 
19.09.11
17:56
все отладчиком и смотрю ,в самих общих модулях не ругается,Отбор прописывается,ругается я так понимаю при установки отбора
...
10 shuhard
 
19.09.11
17:58
(9) чудно,
а падает по ошибке то в какой строке ?
11 hhhh
 
19.09.11
18:02
(9) наверно, два раза один и тот же элемент записываешь, вот он и говорит, что не может записать.
12 flyy
 
19.09.11
18:10
получается когда открываем журнал срабатывает ДобавитьЭлементКомпоновки...все нормально,а когда там уже установлен какой нибудь отбор и мы меняем,т.е. работает ИзменитьЭлементыОтбора() вылетает ошибка.ЖурналДокументов.Взаимодействия.Форма.ФормаСписка(416)}: Поле объекта недоступно для записи (Отбор)
   ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Ответственный", Пользователь,,, ЗначениеЗаполнено(Пользователь));
13 jump if zero
 
19.09.11
18:11
у меня почему то получилось

создал ЖурналДокументовПользователя ут11

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Менеджер",ПараметрыСеанса.ТекущийПользователь,ВидСравненияКомпоновкиДанных.Равно,,Истина);
           
КонецПроцедуры
14 flyy
 
19.09.11
18:13
у меня вызывается при смене пользователя на форме

&НаКлиенте
Процедура ПользовательПриИзменении(Элемент)
   
   ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Список.Отбор, "Ответственный", Пользователь,,, ЗначениеЗаполнено(Пользователь));
   
КонецПроцедуры
15 flyy
 
19.09.11
18:14
причем ошибка именно при смене Ответственного на форме
16 shuhard
 
19.09.11
18:19
(15) а удалить отбор перед сменой не пробовал ?

что нибудь ОбщегоНазначенияКлиентСервер.УдалитьЭлементОтбора
17 flyy
 
19.09.11
18:22
там кроме отвественного есть еще отбор по режиму ...там удаляется потом устанавливается...так вот тоже вылетает
18 flyy
 
19.09.11
18:34
Вопрос снят...нашла в чем косяк ...почему-то в модуле ОбщегоНазначенияКлиентСервер не стояла галочка "Клиент(упр.приложение)"
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.