Во вложении обработка с одним реквизитом и одной таб частью.
ТестИР_ТабЧасть.epf
Заходим в модуль обработки
Процедура Тест() Экспорт
ОбщегоНазначения.СообщитьПользователю("Вошли в модуль объекта внешней обработки!"); // С этой строкой подсказки с именем таб части нет
//Сообщить("Привет!"); // а если убрать первую и оставить эту, то подсказка работает корректно
КонецПроцедуры
Если здесь в последней строке процедуры или всего модуля сделать "ЭтотОбъект." то не видим ни реквизитов, ни табличной части обработки (без "ЭтотОбъект" тоже самое)
Теперь комментируем 1-ю строку процедуры "ОбщегоНазначения.СообщитьПользователю.."
и расскомментируем вторую "Сообщить..."
Сохраняемся.
Теперь всё работает нормально
В обратную сторону, чтобы подсказка снова не подсказывала, тоже работает
Ссылка скрыта
#1, ред. 01 ноября 2024 15:37
Причем "ОбщегоНазначения" может быть в любом месте. Например, вот так тоже не работает
Имя модуля не имеет значения
Евгений М. изменил статус на Открыто
#2, ред. 01 ноября 2024 18:50
Скорее всего такой общий модуль (ОбщегоНазначения) отсутствует в приложении ИР. Поэтому создание объекта внешней обработки там выбрасывает ошибку и соответственно не видны ее метаданные.
У меня проблема в описанном виде не воспроизводится. Но если написать вместо ОбщегоНазначения другое несуществующее имя, то воспроизводится.
#3, ред. 01 ноября 2024 19:15
Однажды я уже думал над обозначением для пользователя причины такого поведения. Но из простых решений есть только вывод уведомления об ошибке компиляции модуля обработки при каждом вызове подсказки, т.к. объект внешней обработки я не кэширую. Пробовал его и ожидаемо показался слишком назойливым, т.к. агрессивно принуждает исправлять ошибку компиляции.
#4, 01 ноября 2024 20:54
(2) tormozit,
Не совсем понял что это значит. У меня допиленная Бухгалтерия+БитФинанс. Я уже даже подрубил адаптер к основной базе, где ведется разработка, а не к "донору", как было всегда. Но это не помогло.
Общий модуль "ОбщегоНазначения" конечно же есть в Бухгалтерии. Но я даже пробовал подставить другой существующий общий модуль, но это не спасло (писал во 2м посте).
У меня бОльшая часть начальной разработки проходит во внешних обработках. И вот такое поведение сводит все плюсы быстрой разработки на нет. Сейчас вообще отключил адаптер. Так хоть что-то подсказывает и не приходится постоянно переключаться на основную форму обработки, чтобы посмотреть правильное имя Табличной части и/или реквизита
#5, ред. 01 ноября 2024 21:03
А ларчик просто открывался!
Вставка в модуль обработки директивы
Спасает ситуацию!
#6, 01 ноября 2024 21:04
Да. Причина в том, что я создаю объект внешней обработки на клиенте. А твой общий модуль на клиенте недоступен.
Подумаю.
#7, ред. 01 ноября 2024 22:10
Теперь в такой ситуации будет однократно выводиться уведомление:
И метаданные внешней обработки обновляться перестанут, т.к. одна распаковка+запаковка EPF файла занимает 500мс. Во всех отношениях такое поведение кажется не хуже старого.
#8, ред. 04 ноября 2024 11:26
(7) tormozit, я не сильно понимаю механики, поэтому уточню:
Если я не ставлю "#Если Сервер Тогда", то Адаптер при первом обращении сделает кэш обработки и её метаданных, которые будут в последующем использоваться при редактировании модуля. Так? Тогда непонятно несколько моментов:
(а) если я добавляю новый реквизит, то как нужно обновить кэш? переоткрыв обработку?
(б) Сообщение с предложением будет всплывать один раз или при каждом нажатии символа в модуле обработки?
Если я ставлю "#Если Сервер Тогда", тогда обработка будет постоянно (?) переобновляться распаковкой и запаковкой?
#9, ред. 04 ноября 2024 18:37
Исправлено в ИР 7.51 https://www.hostedredmine.com/issues/995740
#10, ред. 05 ноября 2024 17:20
(8) Евгений М.,
#11, 05 ноября 2024 17:08
Евгений М. изменил статус на Закрыто