TGViewer
Журнал инженера-программиста Журнал инженера-программиста @software_engineer_notes · 247 subscribers
Post #385 262
При работе с платформой 1С есть три типа ошибок: 1) ошибки пользователей, 2) ошибки платформы и 3) ошибки обстоятельств 🧐

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

===

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

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

Смотрю процедуру - группу там не трогают, но видимость самого элемента явно устанавливается в зависимости от типа договора (если тип Прочие Взаиморасчеты, то большинство реквизитов скрываются), но значение устанавливаемой видимости было Истина. Прохожу внимательно отладкой процедуру - элемент как был видим, так и остался видимым после установки видимости; группа тоже остается видимой вплоть до выхода из процедуры - т.е. на шаге КонецПроцедуры все еще Видимость=Истина, а на следующем шаге уже Видимость=Ложь.

Подобное поведение очень похоже на работу расширения, но расширений в базе не было. Хотя может кеш? На всякий случай для промежутка вызова проблемной процедуры запустил "Замер производительности", но в отчете были только шаги внутри процедуры с явной установкой видимости в Истина. Т.е. некая сверхъестественная сила решила менять видимость у элемента, но только при условии, что Объект.Ссылка указывает на пустую ссылку, а иначе не мешает 👻

Аналитик напомнила, что все работало до принятия на GitHub последних правок с добавлением одного специфического поля, которое практически всегда скрыто. К слову, как раз тот случай, когда для формы нужно работающее условное оформление, но оно управляет видимостью только для элементов таблиц. Для этого нового поля видимость включала/выключала все та же общая процедура видимости/доступности и значением для новых элементов всегда было Ложь.

Открываю XML формы, нахожу новый элемент, смотрю его айдишник, делаю поиск по форме и БИНГО - это тот же айдишник, что и у группы, которая внезапно начала терять видимость. Истинной причиной паранормального поведения формы было, что при тестировании фичевых пулл-реквестов образовалась небольшая очередь, в результате которой было паралельно создано два пулл, в первом из которых добавлена новая группа, а во втором с тем же айдишником добавлено новое поле. Каждая из двух веток сама по себе работала верно, но их мерж в основной проект испортил форму (не в первый раз). После исправления задублированного айдишника все заработало 👍

===

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

#1С #полтергейст #баги
  • 👻 4
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 →