При сборке Бустер 1.18 под платформу 1С 8.3.27 компилятор поймал 5 типов синтаксических конструкций, которые более ранние версии пропускали. Тонкий клиент крэшил без выводимой ошибки — пришлось искать через DESIGNER /CheckConfig. Этот кейс — карта ошибок и патчи, которые применили мы. Поможет всем, кто сейчас мигрирует на 8.3.27.
// 01Контекст
Бустер 1.17 был собран и работал под платформой 1С 8.3.25. На 1.18 мы обновили dev-стенд на 8.3.27. После LoadConfigFromFiles + UpdateDBCfg расширение успешно встало, но тонкий клиент 1cv8c.exe начал падать при запуске с записью .mdmp в %LOCALAPPDATA%\1C\1cv8\dumps\. Дамп без приватных pdb-символов 1С не читается; встроенный «Анализатор дампов» доступен только из интерактивного Конфигуратора.
// 02Задача
Найти и устранить причину крэша, не понимая, какая именно конструкция в наших ~6 000 строк BSL вызвала проблему. Идти через бинарный поиск по модулям было дорого. Нужен был способ диагностики без интерактивного запуска платформы.
// 03Что сделали
Ключевое открытие — команда DESIGNER /CheckConfig -ThinClient -WebClient -Server -Extension Бустер в платформе 8.3.27 выдаёт точную диагностику с exit code 101 и списком ошибок. На 8.3.25 эти же конструкции компилировались без замечаний. Запустили проверку, получили список из 9 нарушений в 5 категориях. Каждую починили, прогнали повторно, добились «Ошибок не обнаружено».
Пять типов ошибок
1. Имя процедуры совпадает со встроенной функцией
Своя функция ПустаяСтрока() без параметров. На 8.3.27 — конфликт со встроенной ПустаяСтрока(Строка).
2. Цепочка свойств после конструктора
Прямое обращение к свойству после Новый Файл(...) на одной строке. 8.3.27 требует разнести.
3. Использование Вычислить() для процедурных вызовов
Вычислить() работает только с выражениями. Для процедурных вызовов нужна Выполнить().
4. Устаревший API ПоказатьВыборИзСписка для тонкого/веб-клиента
Сигнатура ПоказатьВыборИзСписка(Оповещение, Список, Заголовок) удалена в Тонком/Веб-клиенте 8.3.27. Замена — метод списка.
5. Однобуквенная переменная-резерв в цикле
В Для И = ... переменная И — зарезервированный логический оператор. На 8.3.27 это ошибка компиляции.
// 04Бонус: реквизиты объекта в борровом модуле
Дополнительная категория, которую CheckConfig подсветил. В ObjectModule заимствованных объектов (например, Документ.ДействиеЗадачи.МодульОбъекта) обращение к реквизитам объекта в перехватчике &Перед / &После компилятор не видит — «Переменная не определена». Решение — обращаться через индексатор:
// 05Результат
После применения патчей CheckConfig возвращает «Ошибок не обнаружено», новая Бустер.cfe собирается, тонкий клиент стартует штатно. Главный урок: при миграции на 8.3.27 всегда запускайте CheckConfig с явными ключами -ThinClient -WebClient -Server — он стал намного строже и ловит реальные проблемы, а не «ложные» предупреждения, как раньше.
1С:ПЛАТФОРМА 8.3.27 · DESIGNER · CHECKCONFIG · BSL · CFE
Делаете своё расширение под 1С:ДО?
Бустер — готовое расширение с 28 функциями, уже собранное под 8.3.27 + ДО КОРП 3.0.19. Подписка 15 000 ₽/мес или бессрочная лицензия от 30 000 ₽.