15.03.2023 Александр Суворов 44753
Нельзя изменять поле содержащее объект данных...

Содержание:

1. Что такое реквизиты формы в конфигурации системы 1С

2. Ошибка «Нельзя изменять поле содержащее объект данных формы» и два способа ее решения

 

1.  Что такое реквизиты формы в конфигурации системы 1С

 

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


         Реквизиты формы 1С являются списком типизированных значений ДанныеФормыКоллекция 1С. Для того, чтобы оптимизировать передачу данных 1С между клиентом и сервером, в 1С используется особая передача объектов базы данных формы. Можно менять свойства и выполнять различные метода, но нельзя напрямую изменять само значение элемента данных формы.


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

   

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

&НаКлиенте

Процедура КонтрагентПриИзменении(Элемент)

         КонтрагентПриИзмененииНаСервере(Контрагент);

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

&НаСервере

Процедура КонтрагентПриИзмененииНаСервере(ВыбранныйКонтрагент)

         // Вставить содержимое обработчика.

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


2. Ошибка «Нельзя изменять поле содержащее объект данных формы» и два способа ее решения

 

         В описанном выше варианте реализации проставления договора вылетит ошибка «Нельзя изменять поле содержащее объект данных формы».    


         Так как мы передаем элемент коллекции данных формы как параметр процедуры, то система считает, что данный переданный параметр будет изменяться, а изменять элемент нельзя, поэтому выходит ошибка.


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

&НаКлиенте

Процедура КонтрагентПриИзменении(Элемент)

         ПеременнаяКонтрагент = Контрагент;

         КонтрагентПриИзмененииНаСервере(ПеременнаяКонтрагент);

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

&НаСервере

Процедура КонтрагентПриИзмененииНаСервере(ВыбранныйКонтрагент)

         // Вставить содержимое обработчика.

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

         Второй вариант, способный помочь избежать ошибки – использовать возможность передачи элемента по значению, т.е. не сам элемент формы, а только его значение.

&НаКлиенте

Процедура КонтрагентПриИзменении(Элемент)

         КонтрагентПриИзмененииНаСервере(Контрагент);

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

&НаСервере

Процедура КонтрагентПриИзмененииНаСервере(Знач ВыбранныйКонтрагент)

         // Вставить содержимое обработчика.

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

         Описанными выше способами можно избежать ошибок.

 

Специалист компании "Кодерлайн"

Александр Суворов

Наши проекты

АО "Нижегородский водоканал"
АО "Нижегородский водоканал"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

-Кадровый учет
-Расчет зарплаты
-Регламентированная отчетность
-Подбор ...

Внедрение «1С:Зарплата и управление персоналом 8 КОРП» в компании «ПБК»
ООО «Партнер Бухгалтер Консультант»

Отрасль:
Бухгалтерские услуги

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Интеграция продукта с базой данных оперативного учета Axapta;
- Доработка фу...

ПЭК
ПЭК

Отрасль:
Грузоперевозки

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Перевод зарплатных баз с версии ЗУП 2.5 на версию ЗУП 3.1.
- Сопровождение в п...

ПАО «АрселорМиттал Кривой Рог»
ПАО «АрселорМиттал Кривой Рог»

Отрасль:
Металлургическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием для Украины

- Кадровый учет
- Расчет зарплаты
- Регламентированная отчетность
- Уч...

Автоматизация торгового учета на базе "1С:Управление торговлей"
ООО «ТЕЛЕВЕС РУСС»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

- Управление складскими запасами;
- Оформление заказов покупателей;
- Пла...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

Внедренное типовое решение:
1С:Управление холдингом

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

ООО "СЖД"
ООО "СЖД"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Расчет зарплаты
Подбор кадров
Кадровый учет
Анализ кадрового состава...

Установка программного продукта БИТ.Финанс для 1С:Бухгалтерия 8
ООО «Джи Эй Си Шиппинг энд Лоджистикс»

Отрасль:
Транспорт

Внедренное типовое решение:
БИТ.Финанс

Построение единого информационного пространства финансовой службы;
Учет ...

ООО "ОМЗ"
ООО "ОМЗ"

Отрасль:
Металлургическая промышленность, металлообработка

Внедренное типовое решение:
1С:Управление производственным предприятием

Автоматизация бизнес-процессов...

ООО «ПКП КАБЭЛЕКТРОСНАБ»
ООО «ПКП КАБЭЛЕКТРОСНАБ»

Отрасль:
Производство кабельной продукции

Внедренное типовое решение:
1С:Управление небольшой фирмой 1.6

- Оформление заказов покупателей;
- Управление складскими запасами;
- Ана...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:ТОИР Управление ремонтами и обслуживанием оборудования

Мониторинг и анализ ключевых показателей деятельности предприятия Управле...

Автоматизация документооборота в компании ООО "Ликард"
ООО «Ликард» (ОАО ЛУКОЙЛ)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:Документооборот КОРП

- Отказ от бумажного документооборота, от громоздких систем на базе офисного...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение