Есть шаблон "для"
В модуле объекта пишем
текстСообщения = "Тут не должны вызываться шаблоны: для
После "для" вываливается окно шаблона. Мне кажется, что шаблоны внутри строк не должны отрабатывать совсем.

Версия 6.3.9148.39706 от 17 января 2025 г.
Настройки ТК

#1, 20 января 2025 14:43
И вообще не предлагать подсказку внутри строк.

#2, 20 января 2025 14:51
(1) Евгений М., в случае родного анализатора кода Турбоконфа можете запрещать, но для ИР адаптера нужно обязательно оставить текущее поведение механизма, т.к. оно уже достаточно отточено.
#3, 27 января 2025 15:34
(2) tormozit, не понял что надо сделать, что мне внутри строк ничего не предлагалось? Или жмакать эскейпы после каждой нажатой клавиши?
#4, 29 января 2025 08:25
(3) Евгений М., разве я предложил тебе что то делать? Нет. Тебе показалось. Я лишь отметил, чего не следует менять в API.
#5, 29 января 2025 11:48
В этой ситуации подсказка вызываться не должна. Нужен лог.
#6, 29 января 2025 14:20
(5) bolsun, лог уровня "отладка":
[20251929 14-19-Ссылка скрыта
#7, ред. 29 января 2025 15:43
Проблема косвенно связана с ИР адаптером и внесенным изменением, которое разрешает срабатывание подсказки внутри строк.
В результате, если у пользователя ИР адаптер отключен для базы, то ТК все равно продолжает вызывать подсказку в строках.
#8, ред. 29 января 2025 15:46
(7) bolsun, попробуй опереться на возвращаемый флаг СтандартнаяОбработка из обработчика ПередПолучениемДанныхТ9
#9, 29 января 2025 15:45
Решением видится ввод дополнительной настройки для разрешения срабатывания внутри строк.
Единой для всех конфигураторов или в разрезе, нужно думать.
#10, ред. 29 января 2025 15:46
(8) tormozit, если ИР адаптера вообще нет, то тоже срабатывает из-за этой правки.
Проблемы тут 3 на самом деле.
ИР нет
ИР отключен
Пользователю не нужны подсказки в строках совсем.
#11, 29 января 2025 15:48
Как минимум единая настройка должна быть, по умолчанию отключена, т.к. штатный ТК не показывает подсказку в строках (только в некоторых, типа РольДоступна и т.д.)
#12, 29 января 2025 15:48
(10) bolsun, ну ты же блокируешь свою подсказку если СтандартнаяОбработка=Ложь. Вот я и предлагаю делать правки поведения только для СтандартнаяОбработка=Истина, а мой сценарий СтандартнаяОбработка=Ложь не трогать. Можно так сделать?
#13, ред. 29 января 2025 16:00
(7) bolsun,
Она мне и с Адаптером не нужна внутри обычной (однострочной) строки
#14, ред. 29 января 2025 16:05
(12) tormozit, это разные события, разнесенные во времени.
Здесь идет речь об общей проверке автовызова при наборе текста, вызывать подсказку или нет. Если условия подходящие подсказка вызывается (штатная или T9) и там уже срабатывают обработчики.
При отключенном ИР мне придется еще раз проверять в строке произошел вызов или нет.
Поэтому как минимум должен быть общий флаг, разрешающий такой вызов.
#15, 29 января 2025 16:06
(14) bolsun, тогда прошу предусмотреть программное включение этого флага.
#16, 29 января 2025 17:18
(15) tormozit, имя глобальной настройки T9AllowAutoInvokeInsideStrings
#17, 29 января 2025 18:36
(12) tormozit,
Используй Отказ = Истина, а не СтандартнаяОбработка - тогда подсказка не будет показана.
#18, ред. 29 января 2025 21:28
(16) bolsun, не работает. Делаю так
Но автовызов в строковых литералах теперь не работает.
#19, 29 января 2025 21:44
(18) tormozit, неправильно.
T9AllowAutoInvokeInsideStrings - это глобальный флаг, его нужно включить чтобы вообще срабатывал автовызов в строках.
используй УстановитьЗначениеНастройкиПрограммы()
В остальных случаях используй Отказ
#20, 29 января 2025 21:48
(19) bolsun, но УстановитьЗначениеНастройкиПрограммы будет действовать на все окна конфигураторов. Пользователи твоей подсказки опять начнут жаловаться. Нужно сделать опять же привязку к окну конфигуратора.
#21, ред. 29 января 2025 21:52
(20) tormozit, установи глобальный флаг Истина, а затем используй Отказ при проверке в текущем конфигураторе. Если ИР отключен в данном окне и вызов внутри строки (не запрос) - установи Ложь.
#22, 29 января 2025 21:53
(21) bolsun, у меня нет анализа контекста при отключенном приложении ИР. Поэтому боюсь я могу испортить работу твоей подсказки в этой ситуации.
#23, ред. 29 января 2025 21:59
(22) tormozit, в любом случае наличие опции для отключения подсказки лучше чем отсутствие. Ты всегда можешь включить ее программно (разово).
Но как я писал ранее, нужно решить, стоит ли делать ДОПОЛНИТЕЛЬНЫЙ флаг в разрезе конфигураторов.
#24, 29 января 2025 22:07
(23) bolsun, допустим разовое включение я сделал. И тут же пользователь переключился в другое окно конфигуратора, где приложение ИР отключено. Я не смогу отловить это переключение. И вариант вмешиваться в работу твоей подсказки мне тоже не нравится. Прошу снова сделать параметр сеанса, который позволит программно включать прежний режим работы подсказки в строковых литералах из скрипта с привязкой к окну независимо от значения флажка в окне настроек
#25, ред. 29 января 2025 22:09
(24) tormozit, флаг отключения подсказки в строках будет приоритетным. Если пользователю не нужна подсказка внутри обычных строк он сможет ее отключить.
Параметр сеанса добавлю.
#26, ред. 29 января 2025 22:42
Добавлена настройка сеанса T9AllowAutoInvokeInsideCommonStrings - устанавливает режим автовызова подсказки внутри обычных строк (не текстах запросов)
ТурбоКонф.СохранитьЗначениеСеанса(Строка(Конфигуратор.ГлавноеОкно)+""+"T9AllowAutoInvokeInsideCommonStrings", НовоеЗначение);
Глобальный флаг T9AllowAutoInvokeInsideCommonStrings должен быть установлен в Истина. Не рекомендуется менять его постоянно, а предложить включить его разово.
6.3.9161.946
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#27, 29 января 2025 22:42
Обрати внимание флаг T9AllowAutoInvokeInsideStrings был переименован в T9AllowAutoInvokeInsideCommonStrings
#28, 29 января 2025 22:46
По идее переименовать можно в T9GlobalAllowAutoInvokeInsideCommonStrings, но возможно и так нормально.
#29, 29 января 2025 22:56
При старте Турбоконф выдал такую ошибку. Но она не помешала ему правильно работать.
Не удалось вызвать GetUIAutomationCachedInfo. System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
в TurboConf.Core.TurboAPI.TurboApi.SetLastDocument(Int32 pid, UIAutomationInfo doc)
в TurboConf.Core.TurboAPI.TurboApi.GetUIAutomationCachedInfo(IntPtr fg, IUIAutomationElement elem, UIAutoFlags flags)
#30, ред. 29 января 2025 23:10
(26) bolsun, проверил. Работает, т.е. в окне с ИР автоматически открывает, а в окне без ИР автоматически не ткрывает.
#31, 30 января 2025 00:44
(30) tormozit, флаг в разрезе конфигуратора будет доступен в ТК 6.3, в 6.2 будет только глобальная настройка. Остальное поведение там останется как прежде.
#32, 30 января 2025 08:32
В строках подсказка больше не появляется, спасибо.

При этом подсказки Адаптера работают. Например, в "ОбщегоНазначения.ЗначениеРеквизитаОбъекта" (1).
Но шаблоны продолжают срабатывать. В данном примере после "для" нажимаем пробел и вываливается окно шаблона.
Или надо вообще отключать автовставку шаблонов в конфигураторе?
#33, ред. 30 января 2025 08:34
(32) Евгений М., это ж штатная функция конфигуратора. Ты сам ее включаешь/выключаешь. У меня штатные шаблоны тоже работают.
#34, 30 января 2025 08:35
(33) tormozit, а ты со включенной автоподстановкой шаблонов в конфигураторе работаешь? Или отключил и оставил только их принудительный вызов по ctrl+q?
#35, 30 января 2025 22:43
Евгений М. изменил статус на Закрыто