TGViewer
Журнал инженера-программиста Журнал инженера-программиста @software_engineer_notes · 250 subscribers
Post #75 207
Еще один факт про #1C из категории "это невозможно понять, с этим нужно смирится".

Все давно свыклись, что в компании 1С при разработке платформы очень вольно обходятся с обратной совместимостью:

♦️ то базовую строковую функцию поиска переименовали с Найти() на СтрНайти() при переходе с 8.3.5 на 8.3.6
♦️ то проверка доступа РольДоступна() начинает Исключение выдавать вместо Ложь при проверке на несуществующую роль (например, из расширения) при переходе с 8.3.3 на 8.3.4
♦️ то периодическая смена англоязычных наименований почти в каждой версии - самое свежее было с ОписаниеОповещения которая при переходе с 8.3.23 на 8.3.24 переименовалась с NotifyDescription на CallbackDescription

... и множество других подобных ситуаций, из-за которых иногда нужно тотально переписывать код модулей 🤦

Но есть коварное исключение!

В ранних версиях 8.3.1 и 8.3.2 для полей ввода был реализован метод НачалоВыбораИзСписка, чтобы иметь возможность до показа списка выбора заполнить значения согласно бизнес-логике. Но уже для версии 8.3.3 методологи 1С передумали. Цитата с ИТС:

В "1С:Предприятии 8.3" у поля ввода не вызывается НачалоВыбораИзСписка. Это связано с <оправдание>. Подробнее см. документацию "Руководство разработчика".

Для устранения несовместимости необходимо найти поля ввода с обработчиком НачалоВыбораИзСписка и перенести его код в другие обработчики согласно критериям:
🔸 код по добавлению элементов в список выбора следует разместить в обработчике формы ПриСозданииНаСервере. Кроме того, если состав списка выбора зависит от значений других полей, то код по изменению элементов списка выбора следует вызывать в обработчиках изменения соответствующих полей, например при помощи обработчиков ПриИзменении;
🔸 реализацию кода, не связанного с заполнением списка выбора, необходимо пересмотреть с использованием тех средств, которые предоставляет платформа "1С:Предприятие" версии 8.3.3.


Казалось бы один из многих случаев и событие не стоит внимания; тем более, что до версии 8.3.5 релиз обоснованно считался сырым и подавляющее большинство пользователей продолжали работать на 8.2. Но именно тут разработчики решили "пойти на встречу общественности" и с целью обратной совместимости оставили в палитре свойств неработающее событие НачалоВыбораИзСписка (BeginListSelection), которое доступно на абсолютно всех версиях 8.3.* в Конфигураторе и в ЕДТ.

Недавно мне нужно было как раз ограничивать список выбора согласно выбранного типа операции, вида договора и еще пары параметров (все проверки на клиенте без вызова сервера) - больше часа ушло на понимание, что это не у меня руки кривые, а это такая шутка от разработчиков платформы. Обсудил с коллегами - оказалось, что и они периодически наступают на эти же грабли 🤕
  • 👍 5
More from @software_engineer_notes
  1. Oct 3, 2026"Вы автоматизируете хаос" - этим страхом любят пугать своих бизнес-заказчиков консалтеры,…
  2. Sep 28, 2026Уже второй проект на работе делаю в методике "парного программирования" с Claude Code. И с…
  3. Sep 13, 2026За последний месяц произошло много событий, но наиболее интересным является использование…
  4. Sep 1, 2026Самая обычная бумажная книга учета - это пока лучший инструмент фиксации проектных изменен…
  5. Aug 31, 2026Очень показательная причина моей нелюбви реализации сравнения/объединения конфигураций в 1…
  6. Aug 29, 2026О концепции LLM-Wiki я впервые прочитал на X (Twitter). Чтобы позже ознакомится детальнее,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →