Переменная ЭтотОбъект в 8.3

12.03.14

Разработка - Механизмы платформы 1С

Мое наблюдение, которое может помочь вам сэкономить время

Недавно я обновлял Бухгалтерию на управляемых формах с 3.0.25.9 на 3.0.30.12 версию. И все мои внешние обработки перестали работать. Ругались они все одинаково:

{Форма.Форма.Форма(14)}: Поле объекта недоступно для записи (ЭтотОбъект)
ЭтотОбъект = РеквизитФормыВЗначение("Объект");

Открываю модуль формы. Ошибка происходит в следующей процедуре:

&НаСервере 
Процедура СформироватьНаСервере() ЭтотОбъект = РеквизитФормыВЗначение("Объект"); ЭтотОбъект.Сформировать(); ЗначениеВРеквизитФормы(ЭтотОбъект, "Объект"); КонецПроцедуры

Это стандартный способ вызвать процедуру модуля объекта из модуля формы. Работал везде и всегда. При более подробном рассмотрении в отладчике оказывается, что в переменной "ЭтотОбъект" хранится объект типа УправляемаяФорма. Та же самая управляемая форма, что и в реквизите формы "ЭтаФорма". При выполнении обработок в старой конфигурации все работает корректно. Платформа 8.3.4.389.

В ходе расследования выяснилось, что в новой версии конфигурации убрана совместимость с 8.2. А реквизит управляемой формы "ЭтотОбъект" появился как раз в 8.3. Так что советую все переменные "ЭтотОбъект" в модулях форм своих обработок переименовать, например, в "ДанныйОбъект". И надеяться, что разработчики платформы 1С хотя бы еще несколько лет не будут заводить реквизит формы с таким названием)

ЭтотОбъект

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4506    dsdred    53    

71

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    5286    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6408    dsdred    36    

111

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18470    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12086    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8813    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

20.08.2023    6277    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15980    SeiOkami    31    

103
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ZOMI 444 07.03.14 18:27 Сейчас в теме
Заведи бложек и пости там в разделе
"Любимые новости из пресс-релизов 1С с опозданием на полгода" .
Luksez; vardeg; ojiojiowka; BigB; DrAku1a; integragirl; _also; Vladuha; rayastar; +9 9 Ответить
12. rus128 2 12.03.14 11:52 Сейчас в теме
плюсую, но не хотелось бы, чтобы в жизни пришлось на такие грабли наступить.
а как тут голосовать теперь?
(1) ZOMI, изменения зарезервированных (предопределенных) имен объектов теперь в пресс-релизах описывают?
14. ZOMI 444 12.03.14 13:05 Сейчас в теме
(12) rus128, не поверите... в V8Update.htm в описании изменений 8.3.3 про "ЭтотОбъект" было сообщено. Читайте иногда/// А то у Вас как у ТС, наверное, столько новостей с которыми хотелось бы поделиться.
15. nick-max 249 12.03.14 16:15 Сейчас в теме
(12) rus128,

В файле V8Update правда написано про добавление метода в 8.3.3. Понятно, что дотуда никто не дочитывал (кроме zomi), но ctrl+F ом найти можно. Другое дело, что при возникновении аналогичной ошибки эту тему можно будет найти в гугле, а вот фрагмент файла спецификации - нет.

Хотя тему топика и правда можно переименовать в свете высказанных замечаний)
2. IvanAlekseev 77 07.03.14 19:15 Сейчас в теме
Чтобы не создавать объектов, используйте модуль менеджера, а данные передавайте в качестве параметра.
3. pumbaE 07.03.14 19:31 Сейчас в теме
(2) IvanAlekseev, фокусник? Попробуйте найти во внешней обработке модуль менеджера.
4. mkalimulin 1148 07.03.14 20:57 Сейчас в теме
А я всегда "об=" пишу. Лень - полезное качество!
5. Bukaska 140 07.03.14 21:33 Сейчас в теме
Я что-то слышала что в БСП2.2 как раз уюерут с обработчиков понятие: ЭтаФорма, и ей на замену придет понятие: ЭтотОбъект)))
6. TrinitronOTV 14 08.03.14 11:03 Сейчас в теме
спасибо автору за замечания, описанные в данной публикации
myinfostat; +1 Ответить
7. zna.miass 11.03.14 00:20 Сейчас в теме
Спасибо друг! Выручил.
8. Vladuha 11.03.14 10:20 Сейчас в теме
В файл V8Update.htm все-таки надо иногда заглядывать, тогда подобных сюрпризов будет меньше ;)
9. Yashazz 4709 11.03.14 19:04 Сейчас в теме
А нефиг называть свои переменные служебными именами.
yufan; 127.0.0.0; Ovrfox; uncle_Vasya; Bukaska; NittenRenegade; BigB; 1c-kt; AlexanderKai; Nuuq; GATTUSO; amon_ra; artfa; artbear; DrAku1a; bulpi; 3762515; МимохожийОднако; +18 Ответить
16. amon_ra 54 13.03.14 17:22 Сейчас в теме
(9) Yashazz, Вот как-то трудно не согласиться! Я вот считаю, что если обзываешь переменную, то и обозначь ее что это переменная каким-нить символом (например добавь спереди буковку "п") потом же самому легче будет с переменной работать.
10. wolfsoft 2421 12.03.14 09:15 Сейчас в теме
Так что советую все переменные "ЭтотОбъект" в модулях форм своих обработок переименовать, например, в "ДанныйОбъект". И надеяться, что разработчики платформы 1С хотя бы еще несколько лет не будут заводить реквизит формы с таким названием

Советую переименовать в ТекОбъект и забыть об опасениях навсегда :)
niko75; GATTUSO; higs; nick-max; theshadowco; +5 Ответить
11. Timur_Bagautdinov 12.03.14 10:39 Сейчас в теме
А если бы переменным присваивались содержательные имена, а не всякие ЭтотОбъект, ДанныйОбъект, ТекущийОбъект и т.п., то таких бы проблем совсем бы не возникало. В умных книжках много про это пишут.
Ovrfox; uncle_Vasya; +2 Ответить
13. mkalimulin 1148 12.03.14 12:07 Сейчас в теме
(11) Timur_Bagautdinov, Какие например?
АЭтаПеременнаяНамНужнаДляДоступаКТекущемуОбъекту - годится?
17. Эсти 7 03.09.14 09:53 Сейчас в теме
18. dusha0020 1103 26.01.15 18:20 Сейчас в теме
ЭтотОбъект использовался в модулях объектов фиг знает с каких времен и обозначал собственно Объект в модуле которого это употреблялось. Логично было ожидать, что рано или поздно 1С введет ЭтотОбъект в форму где он по аналогии будет означать собственно форму в модуле которой употребилось...
Хотя с другой стороны удобно в модуле формы и объекта использовать один и тот же псевдоним для собственно объекта... И здесь логику автора не оспорить, но чтобы в очередной раз не попасть впросак нужно учитывать логику разработчиков платформы:)
19. Bukaska 140 27.01.15 13:24 Сейчас в теме
(18) dusha0020, Я тоже что-то слышала, что в БСП 2.2 так и сделают, что везде вместо: ЭтаФорма будет: ЭтотОбъект.
Так а вместо ЭтотОбъект - какой псевдоним тогда будет? Просто Объект? Нельзя же две разные переменные одним именем, иначе программа не так поймёт...
20. SeiOkami 3423 12.03.15 09:57 Сейчас в теме
У уже везде есть СейОбъект. Такое одинэсники точно не будут использовать
21. telenkovaolga 04.08.15 08:26 Сейчас в теме
22. vasyalisk88 3 08.09.15 14:10 Сейчас в теме
Из оперы -
ТаблицаЗначений = Новый ТаблицаЗначений;
...
Для каждого Строка Из ТаблицаЗначений Цикл 

КонецЦикла

))))
23. rustamakhmetov 27 21.12.15 12:53 Сейчас в теме
См. "Таблица 1. Переименования методов и свойств в версии 8.3" на ИТС здесь
Прикрепленные файлы:
user726666; dj_serega; +2 Ответить
24. Xershi 1474 07.07.16 13:03 Сейчас в теме
В конфигурации на обычных формах платформа 8.3.5 пока режим совместимости 8.2.13
Пришлось написать такое
//УстановитьОтборыДинамическихСписков(ЭтотОбъект, Отборы);
УстановитьОтборыДинамическихСписков(РеквизитФормыВЗначение("Объект"), Отборы);
УстановитьОтборыДинамическихСписков(ЭтаФорма, Отборы);

Обработка портировалась с управляемых форм. Хотя это не вариант, "ЭтаФорма" похоже требовалось вставить, пока полностью переход не сделаю.
25. Светлый ум 406 01.09.16 22:34 Сейчас в теме
накинулись дружно...а мне вот в 3 часа ночи пригодилось (чужую заготовку реанимировал) за это +1
:P
26. MADCRABIK 22.10.20 21:51 Сейчас в теме
Как же повезло вовремя найти эту статью. Спасибо, что поделился. Сидел недоумевал)
nick-max; +1 Ответить
Оставьте свое сообщение