В случае наличия в расширении экспортной функции без директивы, выполнение кода происходит неочевидно.
Подробнее.
Предварительная информация.
Из модуля объекта документа определенная функция (1) была перенесена в расширение с директивой &Вместо.
Внутри этой функции (1) находился вызов ещё одной функции (2), которая целиком была перенесена в расширение с удалением из основной конфигурации. У функции (2) был скопирован признак "Экспорт".
Проявление.
При работе с документом, как только происходило первое обращение к любой процедуре или функции модуля объекта документа в расширении, с выполнением кода начинали происходить "чудеса". В процедуры и функции модуля объекта документа начинали передаваться на вход непонятные данные, вызов процедур и функций в принципе происходил неочевидно.
Поиск.
Естественно, при появлении сообщений от пользователей начал пытаться повторить проблему. Выставил точку останова на строке с ошибкой. Запустил приложение. Выполнил действие. Остановился в отладчике на строке. Увидел, что переменные, которые были в коде "неожиданного" типа. Посмотрел в стеке последовательность вызова процедур и функций. Оказалось, что приход к ошибке "ошибочный", неявный. Последовала чистка кеша, ТИИ, выгрузка в dt, восстановление в файловую, chkdbfl и прочие специальные слова. Дальнейшие действия привели к тому, что была найдена ошибка в расширении. Тот самый "Экспорт", где он не нужен был.
Итог.
Попросил 1С доработать "Проверку модуля" расширения объектов конфигурации на наличие бездирективных экспортных процедур и функций.
В расширении конфигурации добавил новую функцию. Указал, что она экспортная.
При работе с документом получаю ошибку.
В отладчике сталкиваюсь с тем, что в процедуру прилетает "неожиданный" параметр на вход. Ожидаем Неопределено или структуру.
Если смотреть стек, то вижу, что в процедуру в модуле объекта попал из процедуры ПриОткрытии модуля формы.
Перехожу по указанной строке - там вызов другого метода модуля объекта. Прохождение которого в стеке не отражено. Ставил точку на входе в метод ОбработкаРеквизита - исполнение кода туда не попадает.
Лечится все просто снятием признака Экспорт с вновь добавленного метода.
которая целиком была перенесена в расширение с удалением из основной конфигурации. У функции (2) был скопирован признак "Экспорт".
А зачем вы меняете основную конфигурацию, если используете расширения?
Не понятно описали Проявление. Попробуйте описать минимальный пример для того, чтобы другие смогли воспроизвести "чудеса".
(19) На 3-ей картинке у вас код модуля не соответствует коду из стека вызовов. Исполняемый код не соответствует тому, который вы видите в конфигураторе. Когда вы разберетесь с этой проблемой, можно разбираться и с функциями.
(2) Что-нибудь "В расширении <таком-то> функция <бездирективная, экспортная>".
Понятно, что на будущее буду обращать на это внимание. Однако, на всяческие "танцы с бубном" ушла неделя.
(24) Да, очень похоже. В моем случае, нет необходимости откатываться на 17. Достаточно исправление внести. Но, вообще, нужно отметить, что 18 платформа вендору удалась!
да уж. а ведь раньше четные стабильные были.
сколько нытья уже по 18й. сам думаю до последнего на 16й пока сидеть.
https://forum.infostart.ru/forum34/topic246669/ еще и с производительность все не так хорошо.
P.S. Попытался воспроизвести ошибку в другой конфигурации (**). В расширении добавил в модуль объекта экспортный метод, без вызова. Ошибки не последовало.
Конфигурацию (*), в которой ошибка проявляется запускал на разных компах, в разных сетях, в разных (файл-серверных) вариантах. Делаю вывод, что там "звёзды сходятся"...
В любом случае, метод в конфигурации (*) был не экспортный, поэтому признак с него снял. Ошибочное поведение более не проявляется.
Не всегда убрать экспорт поможет.
А как например "не видит свойств структуры"
стою в отладчике на структуре, методом "вычислить значение" вижу все свойства, читаю свойства.
но как только F10 чтобы пройти строку которая читает свойство - ошибка - нет такого свойства.
пришлось такое типа УчетнаяПолитика.ЕстьНалогНаПрибыль заменять на "Истина".
и это не в расширениях.
не не не, живем пока на 16-й платформе. и с этого момента новые платформы перед обновлением проверяем жесткой тестовой эксплуатацией.