Имя: Пароль:
1C
1С v8
v8: Изменение владельца элемента справочника
0 vladimirpetrov11
 
07.02.13
10:13
Подскажите пожалуйста как изменить владельца в справочнике: ругается при попытке записи:
{Форма.Форма.Форма(14)}: Поле объекта недоступно для записи (Владелец)
           Выборка.Владелец=Помещение;

Вот код:


   Спр=Справочники.ркСчетчики;
   Выборка=Спр.Выбрать();
   Пока Выборка.Следующий() цикл
       Выборка.ПолучитьОбъект();
       Счетчик=Строка(Выборка.Ссылка);
       Дом=Справочники.ркДома.НайтиПоКоду("000000211");//Красная ул, дом 134.
       Если Выборка.Владелец.Владелец=Дом тогда
           Помещение=Выборка.Владелец; //типа хата
           Сообщить("Найден дом: "+Выборка.Владелец.Владелец+". Помещение: "+Помещение);
           Помещение=Справочники.ркПомещения.НайтиПоНаименованию(Строка(Помещение.Наименование),Истина,,Дом);
           //Выборка.Владелец.ПолучитьОбъект();
           Выборка.Владелец=Помещение;
           Сообщить("Заменён на дом: "+Выборка.Владелец.Владелец+". Помещение: "+Выборка.Владелец);
       КонецЕсли;        
   КонецЦикла;
1 НЕА123
 
07.02.13
10:15
прикольно.
что есть выборка?
2 vladimirpetrov11
 
07.02.13
10:16
Чуть-чуть поправил:


   Спр=Справочники.ркСчетчики;
   Выборка=Спр.Выбрать();
   Пока Выборка.Следующий() цикл
       Выборка.ПолучитьОбъект();
       Счетчик=Строка(Выборка.Ссылка);
       Дом=Справочники.ркДома.НайтиПоКоду("000000211");//Красная ул, дом 134.
       Дом2=Справочники.ркДома.НайтиПоКоду("000000210");//Красная ул, дом 134
       Если Выборка.Владелец.Владелец=Дом тогда
           Помещение=Выборка.Владелец;
           Сообщить("Найден дом: "+Выборка.Владелец.Владелец+". Помещение: "+Помещение);
           Помещение=Справочники.ркПомещения.НайтиПоНаименованию(Строка(Помещение.Наименование),Истина,,Дом2);
           //Выборка.Владелец.ПолучитьОбъект();
           Выборка.Владелец=Помещение;
           Сообщить("Заменён на дом: "+Выборка.Владелец.Владелец+". Помещение: "+Выборка.Владелец);
       КонецЕсли;        
   КонецЦикла;




(1) да есть
3 Галахад
 
гуру
07.02.13
10:17
Объект = Выборка.Ссылка.ПолучитьОбъект()
Объект.Владелец = Помедение;
Объект.Записать()
4 vladimirpetrov11
 
07.02.13
10:17
(1) Вообще через опу всё написал??
5 Идентификатор
 
07.02.13
10:18
(4) жесть какая то у тебя в (0) =) в (3) четко написано, получай объект, изменяй что нужно, записывай
6 vladimirpetrov11
 
07.02.13
10:24
(3), (5) Вот такую ошибку выдает если так делаю:

{Форма.Форма.Форма(6)}: Ошибка при установке значения атрибута контекста (Объект)
       Объект = Выборка.Ссылка.ПолучитьОбъект();
по причине:
Нельзя изменять поле, содержащее объект данных формы
7 НЕА123
 
07.02.13
10:27
(6)
может немножко поРТФМить?
8 Идентификатор
 
07.02.13
10:28
управляемые формы что ли ?
9 НЕА123
 
07.02.13
10:28
(8) очевидно, да.
10 vladimirpetrov11
 
07.02.13
10:28
(8) Да
11 Wobland
 
07.02.13
10:29
(6) хотим на клиенте сделать то, что положено делать на сервере?
12 vladimirpetrov11
 
07.02.13
10:30
(11) на сервере делаю
13 Wobland
 
07.02.13
10:30
(12) переменную переименуй
14 vladimirpetrov11
 
07.02.13
10:32
(13) Пошло!!!!))))
15 Wobland
 
07.02.13
10:32
на здоровье
16 НЕА123
 
07.02.13
10:35
Господа.
посмотрел повнимательнее (0)(2)...
я бы такое не рискнул запускать. смотреть-то страшно.
17 vladimirpetrov11
 
07.02.13
10:35
(3), (5), (7), (15) Спасибо!!
18 vladimirpetrov11
 
07.02.13
10:36
(16) Как правильнее будет, научи пожалуйста. Ещё не раз пригодится
19 Wobland
 
07.02.13
10:37
(18) выбираешь запросом то, что нужно, меняешь. не вчитывался
20 Идентификатор
 
07.02.13
10:38
(18) сдай права на отладчик :) хотя бы категорию Б )) половину вопросов снимет
21 vladimirpetrov11
 
07.02.13
10:39
(19) Я сначала через запрос делал, потом столкнулся с проблемой записи и перебором стал(((
22 Wobland
 
07.02.13
10:39
(20) в смысле права на стол и больше не подходи? ;)
23 Wobland
 
07.02.13
10:39
(21) двоечник
24 Идентификатор
 
07.02.13
10:40
(22) :)))
25 vladimirpetrov11
 
07.02.13
10:40
Всё равно спасибо))
26 vladimirpetrov11
 
07.02.13
10:41
Кстати уже всё получилось и ошибка в базе исправлена*)
27 НЕА123
 
07.02.13
10:41
1. из цикла долой
 Спр=Справочники.ркСчетчики;
       Дом=Справочники.ркДома.НайтиПоКоду("000000211");//Красная ул, дом 134.

       Дом2=Справочники.ркДома.НайтиПоКоду("000000210");//Красная ул, дом 134

2. Зачем?
       Выборка.ПолучитьОбъект();
       Счетчик=Строка(Выборка.Ссылка);

Помещение=Выборка.Владелец;

3. При ненайденном помещении будет ошибка выполнения.

4. Лучше запросом.
28 vladimirpetrov11
 
07.02.13
10:43
(27) Ok' В след. раз буду запросом вытаскивать и менять*)
29 vladimirpetrov11
 
07.02.13
12:50
(27)Через запросы всё просто летает)))