Мазмұнға өту
Tez Base

Бесплатно на Инфостарте

Ревизор костылей: где ваш код делает руками то, что платформа 1С уже умеет сама

Обработка проходит код конфигурации, расширений и внешних обработок и находит места, где регулярное выражение, паузу, хеш, распаковку архива или чтение Excel делают самописным кодом, COM-объектом или компонентой. По каждой находке отчёт говорит, можно ли заменить прямо на месте или мешает тонкий клиент.

Обработка бесплатная. Внешняя обработка на управляемых формах, только читает: базу не меняет и ничего в неё не пишет. Проверена на платформе 8.3.27, конфигурация любая, БСП не нужна. В веб-клиенте не проверялась.

Платформа в 8.3.22-8.3.27 получила регулярные выражения, ВызватьПаузу, ЧтениеФайлаАрхива для RAR и 7z, СредстваБуфераОбмена, генератор паролей и WebSocket-клиент. Код конфигураций при этом живёт по-старому, и поиском по тексту такие места не найти: VBScript.RegExp встречается в закомментированном примере, имя COM-объекта в тексте сообщения об ошибке, а цикл по символам выглядит как любой другой цикл.

Ревизор разбирает модули лексером, который отличает код от комментария и строкового литерала, и засчитывает COM-объект только как аргумент Новый COMОбъект. Модули без признаков костыля лексер не трогает: в типовой УТ для Казахстана разбор понадобился 137 модулям из 7 157.

Главное в отчёте не сама находка, а вывод по ней. Регулярок, паузы, хеширования, КодироватьСтроку и чтения xlsx нет в тонком клиенте, буфера обмена нет на сервере. Отчёт берёт место исполнения строки из директивы процедуры и свойств общего модуля и пишет, доступна ли замена здесь же. Режим совместимости учитывается только там, где он на деле прячет функцию: у побитовых функций при режиме 8.3.10 и ниже. Новинки 8.3.22-8.3.27 он не прячет, это проверено исполнением в базе с режимом 8.3.17.

Что в отчёте

20 правил

Регулярки через COM и посимвольные циклы, пауза пустым циклом или ping, 7z и rar программой, буфер обмена через HTML-поле, свой хеш, Base64, URLEncode, побитовые функции и генератор паролей, HTTP, XML, файлы, GUID, картинки, кодировки, Excel и JavaScript через COM, компоненты под закрытые платформой задачи.

Вывод по каждой находке

Замена доступна на месте, в тонком клиенте замены нет, нужна платформа новее или, только для побитовых функций, мешает режим совместимости.

Было и стало у каждой замены

Версия платформы, где замена появилась, где она работает по синтакс-помощнику 8.3.27, пример кода до и после и чем замена проверена: прогоном или синтакс-помощником.

Два уровня правил

"Заменить" для однозначных признаков и "На проверку" там, где правило судит косвенно: цикл по символам бывает и честной логикой, а Excel создают и ради проверки, что он установлен.

Три источника кода

Конфигурация, расширения и внешние обработки из справочника. Выгрузку делает сам пакетным конфигуратором или берёт готовую папку выгрузки.

Что показали две типовые

Управление торговлей для Казахстана 3.4.4.87 (режим совместимости 8.3.10) и Бухгалтерия предприятия 3.0.204.22 (платформа 8.3.27.2325, режим 8.3.27). Находки УТ разобраны вручную все до одной, находки БП приведены как их выдал отчёт.

Показатель Значение Как надо Вердикт Что это значит
УТ КЗ: модулей и строк 7 157 модулей, 3,5 млн строк - инфо лексером разобрано 137 модулей; проверка 223 с на сервере с отладкой плюс 249 с выгрузки
УТ КЗ: находок 30, верных 24 - норма у правил "Заменить" верны 4 из 4, у "На проверку" 20 из 26
УТ КЗ: замена на месте 8 из 24 - внимание 14 упираются в тонкий клиент (10 циклов в модулях КлиентСервер, 3 Excel, URLEncode), 2 в режим 8.3.10 (побитовые)
БП 3.0: модулей и строк 20 167 модулей, 17,4 млн строк - инфо лексером разобрано 804; выгрузка около 55 минут, проверка 65
БП 3.0: находок 105, замена на месте у 46 - внимание посимвольных циклов 71, из них на месте 19; буфер обмена 8 из 8, свой Base64 7 из 7
БП 3.0: свои побитовые функции 6, на месте все 6 - норма режим 8.3.27: та же находка, что в УТ упиралась в режим 8.3.10, здесь уходит одной правкой
Самопроверка на контрольном модуле 23 из 23, лишних 0 все ловушки норма модуль с ловушками: COM в комментарии и в тексте сообщения, команды формы с похожими именами

Разбор результата

Типовые держат такой код не по недосмотру: БСП обязана работать в тонком клиенте и в старых режимах совместимости. Отчёт полезнее всего на своих доработках, расширениях и внешних обработках, где режим и место исполнения выбираете вы. Справочник по всем двадцати заменам с примерами и подвохами (шаблон [0-9] вместо \d, пустая строка, пауза в серверном вызове с клиента) разобран в статье блога.

Как проверить свою конфигурацию

  1. 01

    Открыть обработку

    В тонком или толстом клиенте Windows. Отметить, что проверять: конфигурацию, расширения, внешние обработки из справочника.

  2. 02

    Дать код

    Ввести пароль пользователя для конфигуратора или оставить пустым, тогда конфигуратор спросит сам. Если выгрузка в файлы уже есть, указать её папку, конфигуратор не запустится.

  3. 03

    Нажать "Проверить код"

    Обработка выгрузит модули в пакетном режиме, проверит их и откроет отчёт табличным документом: сводка по правилам, потом находки с модулем, строкой, процедурой и выводом.

  4. 04

    Разобрать находки

    "Замена доступна" меняется на месте по примеру из отчёта. "Тонкий клиент" требует серверного вызова, и тут решать по месту: иногда старый цикл честно лучше лишнего круга до сервера.

Өзіңіз шеше алмай жатырсыз ба? Жазыңыз, бірге қараймыз

У вас бюджет и идея - платформа для трейдинга, учётная система под свою нишу, сервис, которого ещё ни у кого нет. Мы разбираем задачу, готовим ТЗ со сметой и собираем команду под стек, а не подгоняем идею под то, что уже умеем.

Құны
450 000 - 600 000 ₸разбор идеи и ТЗ со сметой, без налогов; сама разработка - по смете отдельным договором после ТЗ

Рядом по теме

Жиі қойылатын сұрақтар

Чем это отличается от поиска по тексту выгрузки?

Лексер отличает код от комментария и строки, поэтому имя COM-объекта в тексте ошибки или закомментированный пример находкой не станут. И у каждой находки есть вывод: доступна ли замена там, где исполняется строка. Поиск по тексту этого не скажет.

Типовая выдала десятки находок. Надо всё переписывать?

Нет. Типовые держат такой код ради тонкого клиента и старых режимов совместимости, и при обновлении правки в типовой всё равно уедут. Смотреть стоит находки в своих доработках, расширениях и внешних обработках.

Почему регулярка помечена как недоступная, ведь платформа 8.3.27?

Строка исполняется в тонком клиенте или в модуле, общем для клиента и сервера. Регулярных выражений, ВызватьПаузу, хеширования и КодироватьСтроку в тонком клиенте нет. Замена возможна только через серверный вызов.

Режим совместимости у нас 8.3.10. Новые функции нам недоступны?

Доступны. В базе с режимом 8.3.17 на платформе 8.3.27 регулярка, пауза, генератор паролей, ЧтениеФайлаАрхива и WebSocketКлиенты отработали. Режим прячет только то, у чего в списке изменений есть оговорка про него, в этой линейке это побитовые функции при режиме 8.3.10 и ниже.

Обработка что-нибудь исправляет в коде?

Нет, только находит и объясняет. Пример замены "было-стало" лежит в отчёте рядом с каждым правилом, правку делает разработчик.

Сколько идёт проверка?

На УТ для Казахстана, 7 157 модулей, проверка заняла 223 секунды плюс 249 секунд выгрузки конфигуратором. На Бухгалтерии предприятия 3.0, 20 167 модулей, около 55 минут выгрузки и 65 минут проверки. С готовой выгрузкой конфигуратор не запускается вовсе.

1С жүйеңізге тегін экспресс-аудит

1-2 күнде базаңызды қарап, өнімділік қайда жоғалып жатқанын табамыз және не істеу керегін айтамыз. Міндеттемесіз.

Тегін экспресс-аудит алу

Тапсырманы талқылайық

Ең жылдамы WhatsApp: тапсырма туралы бірер жол жазыңыз, жұмыс күні ішінде жауап береміз.

[email protected]

Өтінімді формамен қалдыру ыңғайлырақ