Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.
Комментарии
tormozit #1, ред. 21 ноября 2023 17:29
Ожидалось что она не будет сама вызываться, в том числе при вводе точки, исключая случай когда текст начинается с ВЫБРАТЬ (является текстом запроса по содержанию).
Аналогичная проблема давно была исправлена в 5-й версии.
0
bolsun #2, 21 ноября 2023 23:17
В 5.19 точно такое же поведение, быстро и в то же время надежно определить что это макет пока я не придумал как.
Напоминаю, что было решено реализовать проверку на Bsl начиная с 30000 символов.
0
tormozit #3, 22 ноября 2023 00:36
Еще раз проверил в 5.19. Там нет этой проблемы. Это видно сразу же, т.к. список Т9 не появляется сам, но появляется если нажать CTRL+Space. Ровно так я и просил тебя сделать. Т.е. в 5.19 этот сценарий работает максимально удобно.
В 6 версии список Т9 сам открывается постоянно. Это раздражает и мешает печатать текст на естественном языке.
0
bolsun #4, 22 ноября 2023 00:38
(3) tormozit, у меня в 5.19 появляется автоматически.
0
bolsun #5, 22 ноября 2023 00:39
Еще раз, я не определяю, что это макет. и в 5.19 не определял, только анализировал, что это код 1с, начиная от 30000 символов.
0
bolsun #6, 22 ноября 2023 00:40
Возможно какие-то другие факторы сказываются. Нужен лог и экспорт параметров.
0
tormozit #7, 22 ноября 2023 00:47
В 5.19 сумел воспроизвести аналогичную проблему.
Сегодня мне потребовалось создать текстовый макет и написать в нем около 40 слов. Я не вытерпел работы Т9 и пришлось писать в отдельном текстовом редакторе.
Вроде бы ты делал анализ типа текста по содержимому, чтобы понять относится ли он к одному из программных языков 1С. И делал ты этот анализ для первых 20000 символов. В моем тексте было явно меньше символов.
Вот пример текста
(7) tormozit, такого анализа не было. Был анализ на ключевые слова, для текстов более 30000 символов.
но можно попробовать придумать, какой-то еще способ определения bsl для коротких текстов.
0
bolsun #9, 22 ноября 2023 00:50
т.к. мы обсуждали с тобой и решили, что на меньшем объеме по ключевым словам не гарантировано определение.
0
tormozit #10, ред. 22 ноября 2023 00:58
Да. Проблема не простая. Нужно что то еще придумать. Пока тогда сделаю этот анализ на своей стороне.
0
bolsun #11, 22 ноября 2023 00:57
Могу добавить определение, по имени элемента дерева конфигурации, после перехода в дерево. Но понадобится дополнительный переход к родителю.
Я так делаю в некоторых случайх для внешних обработок.
0
bolsun #12, 22 ноября 2023 00:59
Прототип у меня есть, но с этим тоже могут возникнуть кое-какие проблемы. Для системных модулей например.
0
tormozit #13, ред. 22 ноября 2023 01:18
Поле текста на встроенном языке кажется проще всего определяется через поиск кнопки "Процедуры и функции". Конечно она может быть скрыта, но это 0.1% вероятности - можно отбросить такие случаи.
Т.е. если кнопка есть, то это документ текста на встроенном языке.
Если же это НЕ текст на встроенном языке, дальше нужно проверить язык запросов.
С текстом запроса проверка простая:
Если Ложь
Или ЗаголовокОкна = "Запрос"
Или ЗаголовокОкна = "Произвольное выражение"
Или ЗаголовокОкна = "Динамический список"
Или ЗаголовокОкна = "Ограничение доступа"
Или ПолеТекстаПрограммы.ЛиТекстЯзыкаЗапросовЛкс(Лев(ТекстМодуля, 1000))
Выявленный тип языка документа желательно добавить как свойство объекта Конфигуратор.ТекущийДокумент.
В остальных случаях подсказку не вызывать автоматически. Явный вызов через CTRL/ALT+Space должен работать.
0
bolsun #14, 22 ноября 2023 01:18
Да, так можно определить как некоторыми другими способами, но они не относятся к разряду быстрых.
Каждый раз, поиск кнопки (а искать придется от корневого окна) может занимать относительно много времени.
0
bolsun #15, 22 ноября 2023 01:19
Пользователи редактируют в основном модули и в единичных случаях макеты (я так думаю)
может просто добавить кнопку игнора документа в подсказке?
0
bolsun #16, 22 ноября 2023 01:20
Т.к. штатная там не вызовется, а сразу вызовется T9, то можно будет в ее окне запретить срабатывать в данном документе
0
tormozit #17, 22 ноября 2023 01:23
(15) bolsun, да, кнопка игнора меня бы спасла. Но найдет ли ее обычный пользователь - сомневаюсь.
0
tormozit #18, ред. 22 ноября 2023 01:26
(14) bolsun, да, у этой кнопки много уровней родителей. Видимо самым дешевым и к тому же самым универсальным все же будет способ через проверку пунктов меню режима текста
0
bolsun #19, 22 ноября 2023 01:26
Самый быстрый и надежный это через родителя, в дереве конфигурации. Для системных модулей будет просто полная задержка 200мс.
0
bolsun #20, 22 ноября 2023 01:27
Вызывать меню очень ненадежно и не быстро, в плане работы. В плане определения - да.
0
tormozit #21, ред. 22 ноября 2023 01:29
(19) bolsun, не достаточно универсально. Много раз уже приводил этот аргумент - у меня включен фильтр в дереве часто и текущий объект там может отсутствовать.
0
bolsun #22, 22 ноября 2023 01:29
да, точно. Дурацкая система, не переходит к элементу при фильтре.
0
bolsun #23, ред. 22 ноября 2023 01:38
Пока сделаем игнор по кнопке. Думаю проблема не на столько критичная, раз о ней никто не сообщал кроме тебя много лет. Кому нужно нажмет кнопку, а так мы усложним и сломаем механизм для 99% (образный процент) обычных случаев.
0
bolsun #24, 22 ноября 2023 01:40
Но если есть идеи по эвристике определения bsl - то тоже можно добавить.
0
tormozit #25, ред. 22 ноября 2023 08:38
Считая по умолчанию, что текст на встроенном языке, можно отменить решение на основе проверки последних 3000 символов:
Истина
И Найти(ТекстМодуля, "КонецФункции") = 0
И Найти(ТекстМодуля, "КонецПроцедуры") = 0
И Найти(ТекстМодуля, "EndFunction") = 0
И Найти(ТекстМодуля, "EndProcedure") = 0
И Найти(ТекстМодуля, "КонецЕсли") = 0
И Найти(ТекстМодуля, "|") = 0
И Найти(ТекстМодуля, "=") = 0
И Найти(ТекстМодуля, ");") = 0
И Найти(ТекстМодуля, "()") = 0
И Найти(ТекстМодуля, "Перем ") = 0
И Найти(ТекстМодуля, "&НаКлиенте") = 0
И Найти(ТекстМодуля, "&НаСервере") = 0
Добавил это в скрипт. Обкатаю.
0
bolsun #26, ред. 25 ноября 2023 19:07
(25) tormozit, попробуй эту версию. Улучшенный механизм проверки на макет. У меня определяет точно, с текстом модуля или без, окна развернутые или нет, отбор - не влияет. Пробовал на разных платформах. https://disk.yandex.ru/d/ay0Wg6IBTsxSxg
0
bolsun #27, ред. 25 ноября 2023 18:57
Попутно определяется модуль формы или нет. Для тестирования выводится уведомление о типе документа.
#1, ред. 21 ноября 2023 17:29
Ожидалось что она не будет сама вызываться, в том числе при вводе точки, исключая случай когда текст начинается с ВЫБРАТЬ (является текстом запроса по содержанию).
Аналогичная проблема давно была исправлена в 5-й версии.
#2, 21 ноября 2023 23:17
В 5.19 точно такое же поведение, быстро и в то же время надежно определить что это макет пока я не придумал как.
Напоминаю, что было решено реализовать проверку на Bsl начиная с 30000 символов.
#3, 22 ноября 2023 00:36
Еще раз проверил в 5.19. Там нет этой проблемы. Это видно сразу же, т.к. список Т9 не появляется сам, но появляется если нажать CTRL+Space. Ровно так я и просил тебя сделать. Т.е. в 5.19 этот сценарий работает максимально удобно.
В 6 версии список Т9 сам открывается постоянно. Это раздражает и мешает печатать текст на естественном языке.
#4, 22 ноября 2023 00:38
(3) tormozit, у меня в 5.19 появляется автоматически.
#5, 22 ноября 2023 00:39
Еще раз, я не определяю, что это макет. и в 5.19 не определял, только анализировал, что это код 1с, начиная от 30000 символов.
#6, 22 ноября 2023 00:40
Возможно какие-то другие факторы сказываются. Нужен лог и экспорт параметров.
#7, 22 ноября 2023 00:47
В 5.19 сумел воспроизвести аналогичную проблему.
Сегодня мне потребовалось создать текстовый макет и написать в нем около 40 слов. Я не вытерпел работы Т9 и пришлось писать в отдельном текстовом редакторе.
Вроде бы ты делал анализ типа текста по содержимому, чтобы понять относится ли он к одному из программных языков 1С. И делал ты этот анализ для первых 20000 символов. В моем тексте было явно меньше символов.
Вот пример текста
#8, 22 ноября 2023 00:49
(7) tormozit, такого анализа не было. Был анализ на ключевые слова, для текстов более 30000 символов.
но можно попробовать придумать, какой-то еще способ определения bsl для коротких текстов.
#9, 22 ноября 2023 00:50
т.к. мы обсуждали с тобой и решили, что на меньшем объеме по ключевым словам не гарантировано определение.
#10, ред. 22 ноября 2023 00:58
Да. Проблема не простая. Нужно что то еще придумать. Пока тогда сделаю этот анализ на своей стороне.
#11, 22 ноября 2023 00:57
Могу добавить определение, по имени элемента дерева конфигурации, после перехода в дерево. Но понадобится дополнительный переход к родителю.
Я так делаю в некоторых случайх для внешних обработок.
#12, 22 ноября 2023 00:59
Прототип у меня есть, но с этим тоже могут возникнуть кое-какие проблемы. Для системных модулей например.
#13, ред. 22 ноября 2023 01:18
Поле текста на встроенном языке кажется проще всего определяется через поиск кнопки "Процедуры и функции". Конечно она может быть скрыта, но это 0.1% вероятности - можно отбросить такие случаи.
Т.е. если кнопка есть, то это документ текста на встроенном языке.
Если же это НЕ текст на встроенном языке, дальше нужно проверить язык запросов.
С текстом запроса проверка простая:
Выявленный тип языка документа желательно добавить как свойство объекта Конфигуратор.ТекущийДокумент.
В остальных случаях подсказку не вызывать автоматически. Явный вызов через CTRL/ALT+Space должен работать.
#14, 22 ноября 2023 01:18
Да, так можно определить как некоторыми другими способами, но они не относятся к разряду быстрых.
Каждый раз, поиск кнопки (а искать придется от корневого окна) может занимать относительно много времени.
#15, 22 ноября 2023 01:19
Пользователи редактируют в основном модули и в единичных случаях макеты (я так думаю)
может просто добавить кнопку игнора документа в подсказке?
#16, 22 ноября 2023 01:20
Т.к. штатная там не вызовется, а сразу вызовется T9, то можно будет в ее окне запретить срабатывать в данном документе
#17, 22 ноября 2023 01:23
(15) bolsun, да, кнопка игнора меня бы спасла. Но найдет ли ее обычный пользователь - сомневаюсь.
#18, ред. 22 ноября 2023 01:26
(14) bolsun, да, у этой кнопки много уровней родителей. Видимо самым дешевым и к тому же самым универсальным все же будет способ через проверку пунктов меню режима текста
#19, 22 ноября 2023 01:26
Самый быстрый и надежный это через родителя, в дереве конфигурации. Для системных модулей будет просто полная задержка 200мс.
#20, 22 ноября 2023 01:27
Вызывать меню очень ненадежно и не быстро, в плане работы. В плане определения - да.
#21, ред. 22 ноября 2023 01:29
(19) bolsun, не достаточно универсально. Много раз уже приводил этот аргумент - у меня включен фильтр в дереве часто и текущий объект там может отсутствовать.
#22, 22 ноября 2023 01:29
да, точно. Дурацкая система, не переходит к элементу при фильтре.
#23, ред. 22 ноября 2023 01:38
Пока сделаем игнор по кнопке. Думаю проблема не на столько критичная, раз о ней никто не сообщал кроме тебя много лет. Кому нужно нажмет кнопку, а так мы усложним и сломаем механизм для 99% (образный процент) обычных случаев.
#24, 22 ноября 2023 01:40
Но если есть идеи по эвристике определения bsl - то тоже можно добавить.
#25, ред. 22 ноября 2023 08:38
Считая по умолчанию, что текст на встроенном языке, можно отменить решение на основе проверки последних 3000 символов:
Добавил это в скрипт. Обкатаю.
#26, ред. 25 ноября 2023 19:07
(25) tormozit, попробуй эту версию. Улучшенный механизм проверки на макет. У меня определяет точно, с текстом модуля или без, окна развернутые или нет, отбор - не влияет. Пробовал на разных платформах.
https://disk.yandex.ru/d/ay0Wg6IBTsxSxg
#27, ред. 25 ноября 2023 18:57
Попутно определяется модуль формы или нет. Для тестирования выводится уведомление о типе документа.
#28, 27 ноября 2023 17:54
bolsun изменил статус на Закрыто