Есть процедура для Склонения (см. файл)
Если текст есть в модуле - то автоподсказка при наборе текста не происходит. Иначе - происходит
Ссылка скрыта
Версия 6.6.9453.37073 от 18 ноября 2025 г.
платформа 8.3.27.1589
Если перенести функцию в общий модуль - работает. Если сделать пустую обработку и поместить функцию в модуль - перестает работать.
#1, 25 ноября 2025 00:33
Программа не может определить что документ - модуль на языке 1С, а не макет.
В первых 30000 символах нет ни одного специфического слова-признака и документ помечается на игнорирование.
Список этих слов
@"конецпроцедуры|endprocedure|конецфункции|endfunction|конецпопытки|endtry|конецесли|endif|конеццикла|enddo";
#2, ред. 25 ноября 2025 07:48
(1) bolsun, Если это вся проверка, то она не достаточно гибка. Например в модуле первой может располагаться функция возвращающая текст запроса на 500+ строк и такой текст не пройде такую проверку. В адаптере я проверяю так
#3, 25 ноября 2025 12:39
(2) tormozit,
Это не вся проверка.
#4, 25 ноября 2025 12:44
Я проверяю и на запросы и т.д., но в присланном примере в начале модуля огромный комментарий к первой функции.
#5, 25 ноября 2025 12:44
(4) видимо нужно с конца модуля еще брать кусок на проверку.
#6, ред. 25 ноября 2025 12:45
(5) bolsun, да, в (2) я это делаю
#7, 25 ноября 2025 17:44
(2) tormozit, в твоем алгоритме я не вижу, что проверяется конец модуля, вижу что поиск идет по всему модулю, что не оптимально.
{Тест}: переменной 'КонецМодуля' присвоено значение, но оно никогда не используется#8, ред. 25 ноября 2025 21:41
(7) bolsun, да, ошибка по оптимальности. Должно быть
Исправлю. Но в то время когда я активно тестировал эту проверку, я пришел к выводу, что конец модуля проверять эффективнее. Потом я ее видимо неаккуратно поправил.
#9, ред. 25 ноября 2025 21:39
(8) tormozit, в этом условии есть еще сомнительные проверки. Например:
Думаю наличие этих признаков не гарантирует с достаточной долей вероятности, что это язык 1С, особенно в условиях обрезки в неизвестном месте текста.
#10, ред. 25 ноября 2025 21:55
(9) сколько тут можно найти совпадений
#11, ред. 25 ноября 2025 21:49
(9) bolsun, про последние 2 сравнения с Лев() согласен. Их надо оставить с ТекстМодуля (исправил в (8)). Но уже не помню точно, в для какого случая их добавлял. Вероятно что то очень редкое.
Еще тут важно учесть, что мое условие негативное, т.е. оно позволяет с большой вероятность понять, что это НЕ язык 1С. Т.е. тут идет анализ от противного.
#12, 25 ноября 2025 21:53
(11) tormozit, условия которые я перечислил вообще никак не помогают оценить вероятность, а остальные позволяют почти с максимальной вероятностью утверждать, что это язык 1С,
#13, 25 ноября 2025 21:57
(12) но то что они определяют, с большой вероятностью, что это язык программирования - да и в условиях, того что мы находимся в конфигураторе 1С, то вероятность еще возрастает, но я бы не полагался на это.
#14, ред. 25 ноября 2025 22:04
(11) в целом непонятно что хуже, НЕ срабатывать для документа с языком 1С, или срабатывать для документа НЕ с языком 1С. И то и то не очень.
Наверное второе хуже.
#15, ред. 25 ноября 2025 22:07
Думаю все же стоит учесть что в начале модуля не так уж и редко бывают огромные комментарии или текст запроса. Поэтому
(14) Несомненно, что тут даже близко нет безвредного решения. Можно лишь немного снизить шансы вреда, но не избавиться от него. В моем условии перевес в сторону "чаще считать то это язык 1С".
#16, ред. 25 ноября 2025 22:13
(15) tormozit, да, конец модуля анализировать желательно, но обрезать лучше тогда по началу строки и убрать сомнительные признаки, которые могут быть даже у какого-то Json или просто текста.
Если цель, что бы чаще срабатывать, чем не срабатывать, тогда да, но такие признаки как =, или скобки - такое себе даже в этом случае.
#17, 25 ноября 2025 22:55
6.6.9461.1518
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
#18, 26 ноября 2025 23:57
bolsun изменил статус на Закрыто