Имя: Пароль:
1C
1С v8
v8: Объект не доступен для изменения. Как так?
,
0 batmansoft
 
17.07.14
11:36
Добрый день. Делаю так (на сервере):
&НаСервере
Процедура ОбработкаМоделейНаСервере()
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    |    Номенклатура.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    |        ПО Номенклатура.Ссылка = НоменклатураДополнительныеРеквизиты.Ссылка
    |            И (НоменклатураДополнительныеРеквизиты.Свойство = &Свойство)
    |ГДЕ
    |    НоменклатураДополнительныеРеквизиты.Значение ЕСТЬ NULL "
    ;
    лСвойство=Константы.шапСвойствоМодель.Получить();
    Запрос.УстановитьПараметр("Свойство",лСвойство);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        лОбъект=Выборка.Ссылка.ПолучитьОбъект();
        Пробел=Найти(лОбъект.Наименование," ");
        Модель=лев(лОбъект.Наименование,Пробел-1);
        стр=ЛОбъект.ДополнительныеРеквизиты.Добавить();
        стр.Свойство=лСвойство;
        стр.Значение=Модель;
        стр.ТекстоваяСтрока=Модель;
        лОбъект.Записать();
        сообщить(лОбъект);
    КонецЦикла;
КонецПроцедуры
и говорит:
{Форма.Форма.Форма(123)}: Ошибка при вызове метода контекста (Добавить)
        стр=ЛОбъект.ДополнительныеРеквизиты.Добавить();
по причине:
Объект недоступен для изменения.
Подскажите пожалуйста, как лечить?
1 mikecool
 
17.07.14
11:40
что такое ЛОбъект.ДополнительныеРеквизиты в отладчике?
2 drcrasher
 
17.07.14
11:50
(1) в ут11 - табчасть
(0) права есть на тч?
3 mikecool
 
17.07.14
11:52
(2) телепат? )
4 drcrasher
 
17.07.14
11:52
(3) погодь, пусть тс чонить скажет =)
5 jsmith82
 
17.07.14
11:58
Дополнительные реквизиты вроде доступны только в предопределенных процедурах модуля
6 jsmith82
 
17.07.14
11:58
а не произвольных методах формы
7 jsmith82
 
17.07.14
11:59
а, хотя там же дополнительные свойства
8 drcrasher
 
17.07.14
12:00
(7) угу. свойства. у объекта
9 batmansoft
 
17.07.14
12:04
(1) В отладчике это вот:
"Выражение    Значение    Тип
ЛОбъект.ДополнительныеРеквизиты    СправочникТабличнаяЧасть.Номенклатура.ДополнительныеРеквизиты    СправочникТабличнаяЧасть.Номенклатура.ДополнительныеРеквизиты"
(2) Да, это УТ 11, тч номенклатуры. Работаю под полными правами.
10 drcrasher
 
17.07.14
12:24
(9) вот фиг знает, но попробуй убрать спр. номеклатура и соединение в запросе. и используй тч.ссылка для выборки
11 zva
 
17.07.14
12:33
на форме случайно нет реквизитов стр или лОбъект?
12 drcrasher
 
17.07.14
12:39
(11) &НаСервере
Процедур....
13 batmansoft
 
17.07.14
12:58
(10) Что то странно:
если делать вот так:
&НаСервере
Процедура Команда1НаСервере()
    лСвойство=Константы.шапСвойствоМодель.Получить();
    спр=Объект.Проба.ПолучитьОбъект();
    стр=спр.ДополнительныеРеквизиты.Добавить();
    стр.Свойство=лСвойство;
    стр.Значение="12312";
    стр.ТекстоваяСтрока="12312";
    спр.Записать();
КонецПроцедуры

то работает.
Но почему тогда в выборке не прокатывает эта фигня? Как мне тогда все элементы справочника перебрать и обработать?
14 batmansoft
 
17.07.14
12:59
нет, таких реквизитов нету. но пробую переименовать
15 batmansoft
 
17.07.14
13:01
Воообще странно. Попробовал так:
&НаСервере
Процедура ОбработкаМоделейНаСервере()
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    |    Номенклатура.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    |        ПО Номенклатура.Ссылка = НоменклатураДополнительныеРеквизиты.Ссылка
    |            И (НоменклатураДополнительныеРеквизиты.Свойство = &Свойство)
    |ГДЕ
    |    НоменклатураДополнительныеРеквизиты.Значение ЕСТЬ NULL
    |    И НЕ Номенклатура.ЭтоГруппа"
    ;
    лСвойство=Константы.шапСвойствоМодель.Получить();
    Запрос.УстановитьПараметр("Свойство",лСвойство);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        лОбъект1=Выборка.Ссылка.ПолучитьОбъект();
        Пробел=Найти(лОбъект1.Наименование," ");
        Модель=лев(лОбъект1.Наименование,Пробел-1);
        стр1=ЛОбъект1.ДополнительныеРеквизиты.Добавить();
        стр1.Свойство=лСвойство;
        стр1.Значение=Модель;
        стр1.ТекстоваяСтрока=Модель;
        лОбъект1.Записать();
        сообщить(лОбъект1);
    КонецЦикла;
КонецПроцедуры
Кто нибудь может объяснить, что это за НЕХ происходила?
16 batmansoft
 
17.07.14
13:02
так вот как в (15) сработало
17 SUA
 
17.07.14
13:04
лобъект это реквизит формы который уже где-то определен, как вариант
18 batmansoft
 
17.07.14
13:19
(17) смотрел, нет у формы таких реквизитов, стр. тоже нет
19 sirsp
 
17.07.14
13:37
(15) Пытался изменить для группы?
    |    И НЕ Номенклатура.ЭтоГруппа"
20 batmansoft
 
17.07.14
13:50
(19) ХЗ, может быть, кажется, я эту шнягу вставил и забыл...