Глюки расширений на платформе 1С: Предприятие 8.3
Разработка - Механизмы платформы 1С
Поскольку глюк оказался очень устойчивым (воспроизводится с вероятностью 100%), я решил подробно описать, как он себя проявляет и как мне его удалось победить.
Платформа 1С Предприятие 8.3.22.2283. Серверная база (и не одна). Одинаково глючат сразу несколько баз.
В глючном расширении расширены модули объектов одного документа и двух обработок.
Глючит только модуль документа, причём глюк выглядит так.
При попытке в пользовательском режиме открыть обычную форму документа одной из первых интерпретатором платформы 1С вызывается функция его модуля, данная функция является первой в списке модуля объекта.
Вот в момент вызова этой функции и происходит странный глюк, который без труда воспроизводится в отладчике (я сделал замер производительности, подтверждающий мои слова). Вызов этой функции (не исправленной в расширении!), переадресуется в расширение в тело процедуры, которая замещает другую процедуру (даже не функцию!) модуля документа.
В результате получается сбой открытия формы документа. Так как после выполнения процедуры в расширении ничего не возвращается (точнее, возвращается Неопределено), а выполняемый интерпретатором код ждёт значение типа Булево из выполняемой функции (которая вдруг стала процедурой).
Если расширение удалить из базы, то всё работает как часы (разумеется, за исключением удаленного функционала, который нужен его заказчику).
Откуда взялось проблемное расширение.
Его изготовил и установил в рабочие базы мой коллега (сотрудник моего отдела). Он и понятия не имел, что в расширении есть такая проблема.
Как ни странно, мне удалось победить данный глюк следующим способом.
Я удалил документ из расширения и создал новое расширение, в котором способ исправления процедуры модуля документа в расширении выбрал не "Вместо", а "Изменение и контроль". Таким образом, глючное расширение было успешно декомпозировано на 2 части, каждая из которых работает нормально.
Первая часть - это исходное проблемное расширение, в котором удалён проблемный документ.
Вторая часть - это изготовленное мной расширение с куском нового кода (всего три строчки), который был взят мной из предыдущего расширения.
Эксперименты с проблемным расширением.
Прежде чем я декомпозировал проблемное расширение на 2 части, я пытался его "починить". Например, я добавил в расширение реквизиты документа и табличную часть документа, на которые была ссылка в коде расширения, с целью добиться корректного результата синтакс-контроля модулей расширения.
В итоге - синтакс-контроль не выдал ошибок, но расширение по-прежнему оставалось "битым". Так как результат применения его отредактированной мной версии был тот же самым, что и до моих вмешательств.
Вступайте в нашу телеграмм-группу Инфостарт
расширение ошибка платформа 1С 8.3.22
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Механизмы платформы 1С Разработчик Бесплатно (free)
Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?
16.07.2025 45725 TitanLuchs 109
Работа с интерфейсом WEB-интеграция Механизмы платформы 1С Бесплатно (free)
Веб-интерфейсы повышают качество внешнего вида приложений 1С, предсказуемы с точки зрения верстки, позволяют организовать удобные и высокопроизводительные рабочие места для пользователей. Расскажем об особенностях разработки веб-интерфейсов на React внутри 1С, двустороннем взаимодействии 1С и JavaScript, а также сборке веб-приложения в одностраничный файл.
19.06.2025 18731 zeegin 15
Механизмы платформы 1С Работа с интерфейсом Разработчик Стажер 1С:Предприятие 8 Бесплатно (free)
Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).
03.02.2025 26067 bayselonarrend 127
Механизмы платформы 1С Разработчик 1С:Предприятие 8 Бесплатно (free)
В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.
30.01.2025 33359 user2122906 10
Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Разработчик 1С:Предприятие 8 Бесплатно (free)
Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.
17.01.2025 55918 user2122906 13
Механизмы платформы 1С WEB-интеграция Разработчик 1С:Предприятие 8 Бесплатно (free)
В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.
14.01.2025 46888 dsdred 110
Механизмы платформы 1С Разработчик 1С:Предприятие 8 Бесплатно (free)
Особенности "Знач" и разбор документации к нему.
10.01.2025 26497 VAAngelov 60
Механизмы платформы 1С Разработчик Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)
Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.
23.06.2024 40508 bayselonarrend 24
Вот я открыл проблемное расширение. В нём переопределено всего три метода. Перечисляю их заголовки.
Документ Первый
модуль объекта
&Вместо("РассчитатьНДС")
Процедура Расш111_РассчитатьНДС(прСтрокаПлатеж = Неопределено) Экспорт
Обработка Первая
модуль объекта
&Вместо("ДействияЗагрузкаПКО")
Процедура Расш111_ДействияЗагрузкаПКО(ТЗДанные, Форма = Неопределено) Экспорт
Обработка Вторая
модуль объекта
&Вместо("ЗаполнитьТаблицу")
Функция Расш111_ЗаполнитьТаблицу(лкТаблица) Экспорт
Так понятнее стало, что внутри?
ВВызов этой функции (не исправленной в расширении!), переадресуется в расширение в тело процедуры, которая замещает другую процедуру (даже не функцию!) модуля документа.
Так может эта функция вызывает процедуру "РассчитатьНДС"? Поэтому и попадает в расширение в процедуру "Расш111_РассчитатьНДС", которая была некорректно реализована и приводила к сбою?
НИКАК.
Кроме формирования замера производительности, указывающего на глюк, я ещё пошагово отлаживал каждую строку кода, которая приводила к ошибке. Там вместо перехода в модуль объекта на функцию (не-расширенную в расширениях) происходил прыжок в расширение на процедуру.
НИКАК.
Это ваши слова) Мы, как сторонние наблюдатели, не видим ни стек вызовов, ни демонстрацию - соответственно, не можем это воспроизвести, каким-либо образом подтвердить и использовать на практике.
К тому же я уже запутался: в расширении переопределена процедура или функция?
Что хоть за конфигурация? Что там за функция первая в модуле объекта? Что там по стеку вызов было перед "ошибочным" переходом в модифицированную в расширении процедуру?
Ладно, раз не хотите нам реальные доказательства/демонстрацию приводить - вытаскивать по крупице тоже нет желания.
З.Ы. минус не от меня, не подумайте ничего плохого)
Самописная. Режим совместимости = "Не использовать". CF-файл весит 90 Мбайт.
(13)
Функция ПередОткрытиемФормыОбъекта.
(13)
Вызов проблемной функции происходит из предопределенного обработчика обычной формы документа
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
После очистки модуля и ввода текста кода с нуля обычно всё проходит. Ну и релиз давно нужно поднять. Типовые на таком релизе уже не работают.
А раз у вас несколько разработчиков, есть ещё баг работы с хранилищем, который к сожалению даже опытные разработчики игнорируют. Работают не корректно с точки зрения работы с хранилищем. И там опять тот же самый кеш))
Поэтому все предсказуемо.
А по делу нужно писать в ТП и подтверждать баг!
Писать в ТП не стал, так как ошибка была исправлена моими силами (хотя в ТП я иногда пишу письма, которые потом вносят в списки ошибок платформы).
Подъём релиза запланирован.
Кэши я не чистил. Почему-то не было причин подозревать, что это кэш (по причине массовости явления, в том числе). Может, и зря.
Попробую воспроизвести ситуацию на базе с очищенным кэшем и напишу, что получится.
Что если закомментить все изменения в расширении из вызываемых функций? Будет ли проявляться ошибка?
Судя по комментам автор все на расширениях делает на &Вместо, что уже говорит о его высоком опыте в 28 лет (думаю все поняли о чем я).
Да и опыт опыту рознь. Можно 20 лет тыкать унылую ут и сидеть на низком уровне, а можно 1-2 года потыкать условную erp и будешь значительно выше чем вот этот чел с торговлей и 20 летним стажем
Единственные глюки которые я ловил с расширениями это баги идентификаторов расширяемых форм, когда при попытке добавить\открыть измененую форму в расшерении вылетает конфигуратор.
То что Процедура основного модуля Процедура_Х заменяется на расш_Процедура_У даже звучит как дичь. Разве что если автор не указал или в таком духе
&Вместо("Процедура_Х")
Процедура Процедура_У()
КонецПроцедурыПонятия не имею почему. Не было времени и интереса копать глубже.
У кого-то из пользователей по слухам ошибка проявлялась не только при копировании, а наоборот при открытии существующих документов. Но у меня лично она проявлялась только при копировании. Я описал в статье только то, что видел сам, а не то, что мне говорили другие.
(19)
Вот это я не делал, может потом как-нибудь изучу поведение и напишу ответ на этот вопрос.
(19)
&Вместо("Процедура_Х")
Процедура Процедура_У()
КонецПроцедуры
Нет, такого нет. Всё в расширении было сделано как нужно - имя процедуры в заголовке соответствует инструкции &Вместо.
(19)
Верно. Отсюда и родилась эта статья, что такого поведения я никак не ожидал увидеть.
У кого-то из пользователей по слухам ошибка проявлялась не только при копировании, а наоборот при открытии существующих документов. Но у меня лично она проявлялась только при копировании. Я описал в статье только то, что видел сам, а не то, что мне говорили другие.
Пользователи какой только дичи не несут. Именно поэтому они как минимум не админы.
(22)
верю (нет). Оно не может совпадать как минимум потому что наличие одинаковых названий у процедур в форме и в расширении формы тебе сразу даст ошибку компиляции.
(22)
Тут на слово не верят. А то " и тут у меня карта и поперла" (с)
Не знаю, про какого чела с торговлей тут речь, но конфигурация в статье ничуть не "торговая", а скорее это самописный (отраслевой) аналог конфигурации "Управление холдингом", правда, на обычных формах. И соответствующее холдингу количество пользователей в базах этой системы.
да и стоит понимать, что всякие ERP и УХ разрабатывают большие команды. А в конторах обычно максимум 4 прогера разного уровня. Они даже в теории не родят продукт такого уровня. ну разве что лет за 10 с функционалом типового аналога 15 летней давности. Тем более на обычных формах в 26 году. Это уже говорит об уровне и качестве
Ядро системы развивалось эволюционным путём с 2007 года. Сейчас начат проект перевода этой системы на коробочную систему 1С. Тем не менее, сама система достаточно живучая и не сказать, что медленная.
Могу с уверенностью сказать, что бюджет этого поделия полюбому перевалил за бюджет типовой ERP от самой 1с. По функционалу там не выше какой-нибудь ут 10.3 и это все в 26 году.
А если по коду посмотреть, то там полюбому забито на все правила написания кода. И еще повезет если там нет приколов с зари отраслевых конфигураций
Ничего личного, просто по фактам. Если проблема встречается только у тебя за кучу лет существования чего либо, то 100% дело именно в тебе
Я как автор статьи просто высветил проблему, которая существует как факт безотносительно аспектов моего существования.
Рейтинг: 132
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 2593484
Создание 29.01.26 16:00
Обновление 29.01.26 16:00
Просмотры 2796
Загрузки 0
Рейтинг
1
Комментарии 35
Код открыт Да
Рубрики Механизмы платформы 1С
Кому Разработчик
Тип файла Нет файла
Платформа 1С 8.3
Конфигурация Универсальные
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)