Недоступен реквизит обработки

 

Партнёрская программа 1С и Бланка

 

Почем-то недоступен реквизит обработки

Я
   snafu

14.12.12 — 10:27

В обработке на вкладке «Данные» добавляю реквизит типа «Документ.Объект». В модулях обработки он не доступен, то есть не выполняется подстановка при написании кода, синтаксический контроль говорит, что переменная не определена. Уже удалял реквизит, переименовывал — он по — прежнему недоступен.

При этом тут же создаю другую обработку, так же добавляю реквизит, и он доступен в модулях, и синтаксический контроль проходит успешно. В чем причина явления, описанного в первом абзаце?

   НЕА123

1 — 14.12.12 — 10:28

а жирный — кто?

   MadHead

2 — 14.12.12 — 10:29

Почему объект, а не ссылка? Как то никогда не доводилось объекты добавлять в реквизиты

   AlexeyAlexeyAlexey

3 — 14.12.12 — 10:31

Кинь мне обработку в мыло, хочу посмотреть

alexprog1c@gmail.com

   snafu

4 — 14.12.12 — 10:33

(1) Не понял.

   snafu

5 — 14.12.12 — 10:34

(2) Обработка вызывается из вновь созданного документа, документ не записан и не проведен, ссылки соответственно нет.

   НЕА123

6 — 14.12.12 — 10:39

(4)

главный реквизит формы. но, скорее всего, дело не в этом.

(0)

обычное или управляемое?

  

snafu

7 — 14.12.12 — 10:40

(6) Виноват, обычное приложение.

TurboConf — расширение возможностей Конфигуратора 1С

Почему реквизит не доступен для записи?

Автор Yamuna, 12 окт 2019, 16:47

0 Пользователей и 1 гость просматривают эту тему.

добрый день, при формировании списка документов на форме списка документа,хочу перезаписать реквизит СостояниеЗаявки и ДатаСостояния, которые были переопределены в регистре, при выполнении получаем ошибку:
{Документ.ИТС_ВходящаяЗаявкаНаТОР.Форма.ФормаСписка.Форма(36)}: Поле объекта недоступно для записи (СостояниеЗаявки)
         Строчка.СостояниеЗаявки = ВыборкаДетальныеЗаписи.СостояниеЗаявки;, и вопрос почему так , что не правильно?

&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)

МассивКлючей = Строки.ПолучитьКлючи();

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИТС_ПодпискиТОРСрезПоследних.СостояниеЗаявки КАК СостояниеЗаявки,
| ИТС_ПодпискиТОРСрезПоследних.ДатаСостояния КАК ДатаСостояния
|ИЗ
| РегистрСведений.ИТС_ПодпискиТОР.СрезПоследних КАК ИТС_ПодпискиТОРСрезПоследних
|ГДЕ
| ИТС_ПодпискиТОРСрезПоследних.Заявка В( &Ссылка)";


Запрос.УстановитьПараметр("ссылка",МассивКлючей) ;

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Для каждого Строчка Из МассивКлючей Цикл
Строчка.СостояниеЗаявки = ВыборкаДетальныеЗаписи.СостояниеЗаявки;
Строчка.ДатаСостояния = ВыборкаДетальныеЗаписи.ДатаСостояния;
КонецЦикла;
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;

КонецПроцедуры


Цитата: Yamuna от 12 окт 2019, 16:47
добрый день, при формировании списка документов на форме списка документа,хочу перезаписать реквизит СостояниеЗаявки и ДатаСостояния, которые были переопределены в регистре, при выполнении получаем ошибку:
{Документ.ИТС_ВходящаяЗаявкаНаТОР.Форма.ФормаСписка.Форма(36)}: Поле объекта недоступно для записи (СостояниеЗаявки)
         Строчка.СостояниеЗаявки = ВыборкаДетальныеЗаписи.СостояниеЗаявки;, и вопрос почему так , что не правильно?
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)

МассивКлючей = Строки.ПолучитьКлючи();

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИТС_ПодпискиТОРСрезПоследних.СостояниеЗаявки КАК СостояниеЗаявки,
| ИТС_ПодпискиТОРСрезПоследних.ДатаСостояния КАК ДатаСостояния
|ИЗ
| РегистрСведений.ИТС_ПодпискиТОР.СрезПоследних КАК ИТС_ПодпискиТОРСрезПоследних
|ГДЕ
| ИТС_ПодпискиТОРСрезПоследних.Заявка В( &Ссылка)";


Запрос.УстановитьПараметр("ссылка",МассивКлючей) ;

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Для каждого Строчка Из МассивКлючей Цикл
Строчка.СостояниеЗаявки = ВыборкаДетальныеЗаписи.СостояниеЗаявки;
Строчка.ДатаСостояния = ВыборкаДетальныеЗаписи.ДатаСостояния;
КонецЦикла;
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;

КонецПроцедуры

Вы пытаетесь изменить реквизит у ссылки, а нужно изменять у объекта.

                        СтрочкаОбъект=Строчка.ПолучитьОбъект();
СтрочкаОбъект.СостояниеЗаявки = ВыборкаДетальныеЗаписи.СостояниеЗаявки;


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Почему реквизит не доступен для записи?

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

Добрый день! У меня огромная проблема. Конфигурация Бухгалтерия 3.0, есть пользователь с неполными правами (роль создавала сама). Пользователь создает счет на оплату покупателю, нажимает на поле надписи, где написано «Документ без НДС». Открывается общая форма цены и валют. Хочет выбрать тип цен, а он у этого пользователя недоступен для выбора. У пользователя права на счет на оплату и справочник «тип цен номенклатуры» есть. Искала по коду по доступности и толькопросмотру — нет ничего подобного. Более того, при открытии общей формы у объекта Элементы.ТипЦен.Доступность = Истина, а Элементы.ТипЦен.ТолькоПросмотр = ложь. Где еще можно поискать ограничение? Такое ощущение, что на что-то не хватает прав, а на что именно — непонятно

«права на счет на оплату и справочник «тип цен номенклатуры» есть» — какие права?

Добавление, редактирование…короче все, кроме удаления

А на общую форму «ФормаЦеныиВалюта» есть право просмотра?

на общей форме «ФормаЦеныИВалюты» есть еще реквизит «Вариант расчета НДС» — вот он доступен для редактирования, а тип цен нет

там еще есть Если ДокументБезНДС ИЛИ НДСНеВыделять Тогда

как это влияет на доступность поля Тип цен?

может я не понимаю, что вы хотите сказать) но это же доступность поля НДСВключенВСтоимость, а не доступность поля типцен

Чет я на НДСВключенВСтоимость зациклился, извиняюсь)

да ничего, у меня под конец рабочего дня тоже крыша потихоньку съезжает))

право Просмотр на нужный вид данных есть?

Да, там не только просмотр, там и редактирование тоже

«Если установлена низкая скорость соединения и не указывается текущая строка, то кэшируется форма выбора.» Может кэш попробуешь?

Низкая скорость точно не стоит, а еще я базу на свой комп перенесла. Сначала проблема была на компе у клиента, теперь на моем. Почищу кэш, но боюсь, что дело не в этом

Свойство «Редактирование» реквизита «ТипЦен» формы «ФормаЦеныИВалюта». В открывшемся окне редактирования ищем нашу роль и ставим напротив неё галочку.

Aleksandr N, Вы супер!!! Все получилось!!!

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Поле объекта недоступно для записи в 1С

После обновления или доработки конфигурации пользователи иногда сталкиваются с ошибкой в 1С 8.3 «Поле объекта недоступно для записи». Разберем, с чем связана ошибка и как ее исправить на примерах в платформе 8.3.15.1747. Для самостоятельного решения задачи пользователю потребуются начальные знания в области 1С программирования.

Причины появления ошибки

При появлении ошибки после обновления конфигурации достаточно дождаться выхода исправленной версии. Разработчики 1С оперативно реагируют на возникшие проблемы и решают вопрос в короткие сроки. Но лучше подстраховаться заранее и либо предварительно устанавливать обновления на тестовую базу, либо иметь в запасе актуальную резервную копию.

Если конфигурация изменялась, редактировалась под нужды организации, то для устранения ошибки лучше обратиться к программисту 1С.

Сообщение «Поле объекта недоступно для записи (Имя_поля)» выдается пользователю, когда программа в процессе исполнения кода не может присвоить элементу требуемое значение.

Доступно только для чтения данных

При работе с объектами 1С различают два способа обращения к данным:

  • ссылка — содержит только представление объекта, часто это код и наименование. Сам объект не загружается. Доступ к реквизитам получают разыменованием: обращением через точку. Ссылки читаются из базы, но не изменяются;
  • объект — включает данные в полном объеме, в т. ч. реквизиты, табличные части, которые можно создавать, удалять и редактировать.

Ссылочные данные программисты используют, когда не потребуется изменять объект. Программа обрабатывает ссылки быстрее, т. к. из базы загружается только информация об объекте — ссылка, а не сам объект целиком со всеми реквизитами и другими входящими в него данными. Для записи изменений из ссылки получают объект: например, с помощью метода ПолучитьОбъект(). Если это не сделано, и присвоение нового значения производится ссылочному полю, возникает ошибка «Поле объекта недоступно для записи».

Для перехода к месту ошибки:

  • запустите конфигурацию в режиме отладки через конфигуратор Отладка — Начать отладку;
  • повторите действия, приводящие к ошибке;
  • в окне предупреждения нажмите Подробно, затем Конфигуратор.

В открывшемся служебном окне в нижней части конфигуратора отразится информация о месте сбоя:

  • Поле объекта недоступно для записи (ВалютаДенежныхСредств) — тест ошибки и имя элемента, куда программа пытается сохранить данные;
  • Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(137) — путь до модуля, где расположена выполняемая строка кода, и порядковый номер строки с ошибкой;
  • НайденныйБанковскийСчет.ВалютаДенежныхСредств = БанковскийСчет.ВалютаДенежныхСредств — команда записи изменений, в которой возникает сбой.

Чтобы исправить ошибку:

1. Поставьте точку останова на строке кода из служебного сообщения.

2. Перейдите в режим отладки конфигурации по кнопке Начать отладку.

3. Выполните действия, приводящие к появлению ошибки, и исполнение программы остановится на отмеченной строке кода;

4. С помощью команды контекстного меню Вычислить выражение определите тип объекта, которому присваивается значение:

  • НайденныйБанковскийСчет — содержит ссылку на элемент справочника Банковские счета;

  • ВалютаДенежныхСредств — реквизит справочника Банковские счета, имеет ссылочный тип данных на справочник Валюта.

При определении типа выделяйте объект постепенно: сначала узнайте тип первой часть объекта до точки, далее увеличивайте количество выделенных частей. Если реквизит имеет ссылочный тип данных, результат в окне Выражение может быть неверно понят пользователем. Почти всегда в операциях присваивания последним указывается реквизит объекта.

5. Для получения объекта впишите строку кода с использованием соответствующего метода:

  • документы, справочники, планы счетов и др. — ПолучитьОбъект();
  • константы, перечисления, регистры и др. — Получить()Прочитать();
    Подробное описание методов смотрите в Синтакс-Помощнике.

6. В выражении замените ссылку на объект.

Объекты конфигурации делятся:

  • объекты (ДокументОбъект.[Имя] и др.) — можно найти в базе по ссылке. На вкладке Прочее в окне редактирования объекта конфигурации есть Модуль объекта;
  • набор записей — для изменения одной записи регистров, перечислений используют менеджер записи, для констант — менеджер значения.

Ошибку «Поле объекта недоступно для записи» 1С выдает при неправильной записи как объектных данных, так и наборов записей. Обращение с записями лучше не исправлять самостоятельно, а поручить программисту.

Попытка изменить системные поля

В 1С существуют специальные системные поля, которым программа присваивает значения по умолчанию:

  • порядковый номер строки;
  • номер группировки;
  • уровень группировки.

Системные поля доступны только для чтения. Создаются автоматически к элементам: например, номера строк табличных частей или уровень группировки в отчете. Повлиять на них пользователь не может. При попытке изменить значение будет выдано окно с предупреждением:

Один из вариантов решения:

1. Выключите отображение системного поля через свойство Видимость.

2. Добавьте свой реквизит в табличную часть кнопкой Добавить колонку реквизита.

3. Замените в строке кода, где возникает ошибка, системное поле на имя созданного реквизита.

Имя переменной совпадает с именем объекта

При использовании переменных в программном коде следует задавать им наименования, отличные от зарезервированных за объектами системы. В противном случае программа посчитает их не переменными, которым можно присваиваться любое значение, а элементами базы соответствующего типа с уже заданными значениями.

В примере в переменную Документы пытаются записать результат выборки документов. В процессе выполнения программы пользователю выдается сообщение «Поле объекта недоступно для записи (Документ)». Для решения проблемы измените имя переменной, но оно не должно начинаться с цифры и совпадать с другими переменными во избежание конфликтных ситуаций.

Кроме команды равенства логично предположить, что переменная используется в последующем коде, где после изменения имени начнут возникать различные сбои. Поэтому поменять наименование нужно во всем местах, в которых она упоминается.

Изменение элемента формы

Еще один пример кода, приводящий к ошибке «Поле объекта недоступно для записи», — неверное обращение к полям формы при попытке присвоить им новое значение.

Формы содержат коллекцию элементов формы, через разыменование (точку) получают доступ к полю, таблице и т. д. и управляют их свойствами. Элементы используются для графической визуализации информации на форме. Они не содержат данные, путь к ним прописан в свойстве Путь к данным.

Чтобы изменить значение элемента, используют:

  • реквизиты объекта;

  • реквизиты, созданные в форме;

  • свойство ТекущиеДанные при обращении к данным текущей строки табличной части.

Ошибку «Поле объекта недоступно для записи» сможет исправить пользователь самостоятельно, если он хоть немного разбирается в программном коде. Все изменения рекомендуется сначала произвести в тестовой базе. При возникновении затруднений передайте программисту 1С информацию об ошибке.

Вмешательство в программный код при отсутствии необходимых навыков может повлечь за собой другие сбои и повреждения в структуре базы данных.

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

Yulunga

1172 / 714 / 208

Регистрация: 22.04.2013

Сообщений: 5,269

Записей в блоге: 1

1

расширения и недоступные реквизиты

17.11.2017, 11:11. Показов 39691. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

добрый день.
был запрос в 8.2

1C
1
2
3
4
5
6
7
8
9
10
11
Запрос = Новый Запрос; 
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Контрагенты.Ссылка КАК Поставщик,
        |   Контрагенты.ОсновнойДоговорКонтрагента КАК Договор,
        |   Контрагенты.ОсновнойДоговорКонтрагента.ВалютаВзаиморасчетов КАК Валютадоговора
        |ИЗ
        |   Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |   Контрагенты.ИНН = &ИНН";   
    Запрос.УстановитьПараметр("ИНН", КонтрагентИНН);

теперь собираюсь его же забацать в 8.3 с расширением
но там нет договора контрагента
делаю так :

1C
1
2
3
4
5
6
7
8
9
10
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Ссылка,
    ДоговорыКонтрагентов.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
    Контрагенты.Ссылка КАК Ссылка1
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
        ПО (Контрагенты.Ссылка = ДоговорыКонтрагентов.Владелец.Ссылка)
ГДЕ
    Контрагенты.ИНН = &ИНН

в консоли запросов работает. в расширении — нет. говорит нет ничего . добавил реквизит валюта взаиморасчета. окей.
но владельца-то нет. и как мне теперь связать таблицы ?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

17.11.2017, 11:11

8

Эксперт 1С

476 / 413 / 93

Регистрация: 26.09.2012

Сообщений: 1,911

17.11.2017, 17:37

2

Идешь по справочниками и добавляешь нужные реквизиты. Думаю в случае владельца, нужно добавить и все справочники, что могут быть его владельцем.



0



1172 / 714 / 208

Регистрация: 22.04.2013

Сообщений: 5,269

Записей в блоге: 1

20.11.2017, 08:06

 [ТС]

3

Цитата
Сообщение от Joker_vad
Посмотреть сообщение

нужно добавить и все справочники, что могут быть его владельцем.

там родитель — справочник.контрагенты. а он добавлен. засада (

Миниатюры

расширения и недоступные реквизиты
 



0



1172 / 714 / 208

Регистрация: 22.04.2013

Сообщений: 5,269

Записей в блоге: 1

20.11.2017, 08:26

 [ТС]

4

прикольно. надо добавить форму списка в расширение. тогда всё появляется )
логики не вижу. прочитал в другом интернете. может кто пояснить, при чём тут ФОРМА ?



0



Joker_vad

Эксперт 1С

476 / 413 / 93

Регистрация: 26.09.2012

Сообщений: 1,911

20.11.2017, 17:32

5

На м..сте нашел что нужно получить поля через * т.е

1C
1
2
3
4
 ВЫБРАТЬ *
    
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов



0



1845 / 1259 / 450

Регистрация: 16.01.2015

Сообщений: 5,502

20.11.2017, 17:49

6

Цитата
Сообщение от Yulunga
Посмотреть сообщение

может кто пояснить, при чём тут ФОРМА ?

Yulunga, Еще как причем. Добавляя форму в расширение, автоматом добавляются все связанные с формой реквизиты, все Справочники документы перечисления, чей тип установлен для полей формы.
Но я вам подскажу одну фишку расширений, вернее запросов в ней. Делайте запрос в основной конфе и переносите ТЕКСТ запроса в модуль в расширении. Проверка синтаксиса в расширении даст ошибку, но запрос в режиме предприятия будет работать

Добавлено через 7 минут

Цитата
Сообщение от Yulunga
Посмотреть сообщение

там родитель — справочник.контрагенты. а он добавлен. засада (

А на скрине как раз реквизит Контрагент в справочнике ДоговорыКонтрагентов, в расширение не перенесен. Просто перенесите этот реквизит в расширение и все



1



1172 / 714 / 208

Регистрация: 22.04.2013

Сообщений: 5,269

Записей в блоге: 1

20.11.2017, 18:27

 [ТС]

7

Цитата
Сообщение от polax
Посмотреть сообщение

Проверка синтаксиса в расширении даст ошибку, но запрос в режиме предприятия будет работать

а, это слово-в-слово я где-то прочитал сегодня. но не вчитался. теперь понял.

Цитата
Сообщение от polax
Посмотреть сообщение

Добавляя форму в расширение, автоматом добавляются все связанные с формой реквизиты,…

теперь понятно, спасибо, вник.

Цитата
Сообщение от polax
Посмотреть сообщение

А на скрине как раз реквизит Контрагент в справочнике ДоговорыКонтрагентов, в расширение не перенесен. Просто перенесите этот реквизит в расширение и все

так в этом и был вопрос — как ?
потому что реквизита контрагент не было. переносить было нечего. это и есть родитель.



0



1845 / 1259 / 450

Регистрация: 16.01.2015

Сообщений: 5,502

20.11.2017, 19:13

8

Цитата
Сообщение от Yulunga
Посмотреть сообщение

а, это слово-в-слово я где-то прочитал сегодня. но не вчитался. теперь понял.

Чест слово не копипастил))) Но… для удобства работы, сам всегда переношу все что надо в расширение

Цитата
Сообщение от Yulunga
Посмотреть сообщение

теперь понятно, спасибо, вник.

И…. одна из задач после окончания написания расширения, удалить ВСЕ, что не задействовано в его работе (то что задействовано, не даст удалить. начинать надо с реквизитов форм и подниматься выше по иерархии)

Цитата
Сообщение от Yulunga
Посмотреть сообщение

потому что реквизита контрагент не было. переносить было нечего. это и есть родитель

Это в справочнике ДоговорыКонтрагентов НЕТ реквизита Контрагент?!!! Может вы не поняли? Надо реквизит справочника из основной конфигурации перенести в расширение. На реквизите в основной пр кн мыши — добавить в расширение



0



1172 / 714 / 208

Регистрация: 22.04.2013

Сообщений: 5,269

Записей в блоге: 1

21.11.2017, 07:24

 [ТС]

9

Цитата
Сообщение от polax
Посмотреть сообщение

Это в справочнике ДоговорыКонтрагентов НЕТ реквизита Контрагент?!!!

см. рисунок.

Цитата
Сообщение от polax
Посмотреть сообщение

Может вы не поняли?

я наверно плохо объясняю.
родитель — это и есть контрагент, естественно. но его нету.
ладно, с формой списка добавилось. теперь не могу сч/ф провести, пока с этим борюсь )

Миниатюры

расширения и недоступные реквизиты
 



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

21.11.2017, 07:24

9

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей нашего сайта:

  • Монгольские компании в москве
  • Мондиал бизнес консорциум ооо
  • Монетка реквизиты организации
  • Монополия на большую компанию
  • Монопольные компании в россии

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии