Имя: Пароль:
1C
1С v8
Поле объекта недоступно для записи
,
0 lampa241186
 
12.12.17
17:01
Доброго дня коллеги. добавил реквизит тип булево, потом добавил колонку с помощью размещения данных тоже тип булево на форму списка документов.
Потом выделю строку с документом и нажимаю на кнопку в которой следующий код:

ТекСтрока = ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока;
Если ЗначениеЗаполнено(ТекСтрока.Ссылка) Тогда
ТекСтрока.СтатусКнопки = Истина;

Хочу что-бы при нажатии на кнопку ставился признак Истина.
я ей уже и режим редактирования - "Непосредственно" поставил.

И всё равно при нажатии на кнопку пишет:

{Документ.ЗаказПокупателя.Форма.ФормаСписка.Форма(223)}: Поле объекта недоступно для записи (СтатусКнопки)
ТекСтрока.СтатусКнопки = Истина;
1 Fish
 
12.12.17
17:02
(0) А что СП по этому поводу говорит?
2 vicof
 
12.12.17
17:08
ЭлементыФормы.Список.ТекущиеДанные
3 lampa241186
 
12.12.17
17:20
Не помогло, пишет ту же ошибку
4 hhhh
 
12.12.17
17:27
(3) документы нельзя редактировать "Непосредственно". Это вообще нигден не предусмотрен такой изврат.
5 lampa241186
 
12.12.17
17:28
(4) я не редактирую документ, у меня этого реквизита нет в документе. я его вывел на форму списка и при нажатии кнопки по выделенной строке должна проставляться галочка.
6 Волшебник
 
модератор
12.12.17
17:29
не вижу ПолучитьОбъект()
7 hhhh
 
12.12.17
17:29
(3) что-то типа

Док = ТекСтрока.Ссылка.ПолучитьОбъект();

меняете нужные вам реквизиты документа

Док.Записать();
8 Cyberhawk
 
12.12.17
17:29
Изменяй данные
9 lampa241186
 
12.12.17
17:33
Повторяюсь у меня просто колонка добавлена на форму списка  - тип булево. выбираем в списке документ нажимаем на кнопку и и должна проставиться галка в этом списке. я не добовлял реквизит на форму документа, вроде всё просто а с такой ошибкой впервые сталкиваюсь. Зачем обращаться к документу, если есть "ТекСтрока" и если пройтись отладчиком то там есть "СтатусКнопки" она содержит тип булево
10 Волшебник
 
модератор
12.12.17
17:35
(9) Чувак, оно недоступно для записи.

Все изменения только через ДокументОбъект
11 3achem
 
12.12.17
17:35
(9) Ну значит продолжай делать так как ТЫ считаешь правильным, однажды у тебя получится добиться необходимого результата. Удачи.
12 Cyberhawk
 
12.12.17
17:36
Путь к данным какой у столбика?
13 hhhh
 
12.12.17
17:37
(9) ты наверно не привязал эту клетку ни к каким данным, к документу она не привязана.

значит у тебя при перерисовке формы и при листании списка всё равно будет пустое поле выводиться.
14 lampa241186
 
12.12.17
17:41
ТекСтрока    = ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока;
    Если ЗначениеЗаполнено(ТекСтрока.Ссылка) Тогда
        Док = ТекСтрока.Ссылка.ПолучитьОбъект();
    Док.СтатусКнопки = Истина;

не помогло, но ошибка пропала.

Я СтатусКнопки  добавил в реквизиты, тип у неё булево.

ДанныеФлажка стоит -  СтатусКнопки
15 Волшебник
 
модератор
12.12.17
17:42
(14) Не вижу Док.Записать();
16 lampa241186
 
12.12.17
17:43
Поясните, зачем записать?
17 Волшебник
 
модератор
12.12.17
17:44
(16) Чтобы в базу записалось
18 Новиков
 
12.12.17
17:45
(17) он очевидно в таблице хочет галками что-то выделить, а не объект сам модифировать, у него и реквизита то нет такого. Типа пометил что-то там и дальше согласно музыке в его голове.

Так тс?
19 lampa241186
 
12.12.17
17:46
(17) Всё)) вечер туплю, извините, что потревожил. Всем огромное спасибо, особенно волшебнику и вправду волшебник.

Нужно же любое изменение записывать)))

ТекСтрока    = ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока;
    Если ЗначениеЗаполнено(ТекСтрока.Ссылка) Тогда
        Док = ТекСтрока.Ссылка.ПолучитьОбъект();
    Док.СтатусКнопки = Истина;
       Док.Записать();
20 lampa241186
 
12.12.17
17:46
(18) Реквизит есть но на форме документа нет
21 Новиков
 
12.12.17
17:48
Ну раз тебе реквизит документа надо менять, ты хотя бы в попытку оберни Док.Записать(); - иначе может звиздец когда-то к тебе постучаться снизу
22 lampa241186
 
12.12.17
17:52
(21) Спасибо.
23 lampa241186
 
12.12.17
18:03
Если вдруг кому, вот рабочий код.

Если ЗначениеЗаполнено(ТекСтрока.Ссылка) Тогда
        
             Док = ТекСтрока.Ссылка.ПолучитьОбъект();
    Док.ГотовКОтгрузке = Истина;
       Попытка
        Док.Записать();
        
    Исключение
       ОбщегоНазначения.СообщитьОбОшибке("Не удалось установить статус: "+ОписаниеОшибки());
   КонецПопытки;
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой