Как исправить ошибку «СтрНачинаетсяС» и правильно обновить УТ 10.3 с релиза 10.3.50 до 10.3.70

Программист 1С v8.3 (Обычные формы)
← На главную

Обновление сильно устаревших редакций «1С:Управление торговлей 10.3» (например, с версии 10.3.50.1 на 10.3.70.2) часто сопровождается техническими сложностями. Одной из наиболее распространенных проблем является ошибка компиляции: «Процедура или функция с указанным именем не определена (СтрНачинаетсяС)». Рассмотрим подробно, почему это происходит, как настроить среду разработки и какую последовательность обновлений выбрать, чтобы минимизировать затраты времени.

Выясняем причину ошибки СтрНачинаетсяС

Давайте проанализируем ситуацию. Функция СтрНачинаетсяС является встроенным методом платформы «1С:Предприятие», который был добавлен в версии 8.3.6. Основная сложность заключается в том, что конфигурация «Управление торговлей 10.3» исторически разрабатывалась под платформу 8.2 и долгое время сохраняла режим совместимости «Версия 8.2.13».

Если в свойствах вашей конфигурации установлен режим совместимости ниже 8.3.6, платформа игнорирует наличие этой функции в ядре, даже если вы используете современную версию платформы (например, 8.3.18 или 8.3.22). В последних релизах УТ 10.3 (начиная с 10.3.60+) разработчики начали активно внедрять модули для работы с маркировкой (ИС МП, Честный знак, ГИСМ), где используется современный синтаксис. При попытке выполнить обновление через объединение конфигураций (файл .cf), код обновляется, а системные настройки режима совместимости иногда остаются прежними, что и приводит к ошибке при попытке запуска или компиляции.

Смена режима совместимости при работе с Хранилищем конфигурации

Если ваша база подключена к хранилищу конфигурации, просто изменить свойство в окне свойств конфигурации не получится. Проанализируем системное сообщение: «Для изменения режима совместимости требуется Захват В Хранилище: Подсистема.ГоИС...». Это происходит потому, что режим совместимости влияет на всю структуру метаданных, включая все подсистемы.

Разберем по шагам, как правильно изменить режим совместимости в условиях работы с хранилищем:

  1. Откройте конфигуратор и подключитесь к хранилищу с правами администратора.
  2. Нажмите правой кнопкой мыши на самый верхний корень конфигурации (имя вашей базы).
  3. Выберите пункт «Захватить в хранилище...».
  4. Важный момент: в открывшемся окне обязательно установите флажок (так называемую «вишенку») «Захватить рекурсивно». Это позволит заблокировать для редактирования не только сам корень, но и все подчиненные объекты, включая подсистемы ГоИС, ИСМП и другие, которые упоминались в ошибке.
  5. После успешного захвата перейдите в свойства конфигурации и установите Режим совместимости в значение «Не использовать» или как минимум «Версия 8.3.6». Для стабильной работы современных механизмов маркировки рекомендуется устанавливать режим «Версия 8.3.12» или выше.
  6. Выполните сохранение конфигурации и зафиксируйте изменения в хранилище (Check-in).

После этих действий ошибка СтрНачинаетсяС исчезнет, так как платформа разрешит использование современных строковых функций.

Альтернативное решение: замена кода

Если по каким-то причинам (например, из-за несовместимости старого торгового оборудования) вы не можете повысить режим совместимости выше 8.2.13, вам придется адаптировать код типового обновления вручную. Рассмотрим пример, как можно заменить проблемную функцию на универсальный код, понятный старым версиям платформы.

Вместо использования СтрНачинаетсяС, проанализируем ситуацию и применим функцию Найти или Лев:


// Было (вызывает ошибку в режиме 8.2.13):
Если СтрНачинаетсяС(ВРегИмяТаблицы, ВРег("РегистрСведений")) Тогда
    // Логика обработки
КонецЕсли;

// Стало (универсальный вариант):
Если Найти(ВРегИмяТаблицы, ВРег("РегистрСведений")) = 1 Тогда
    // Логика обработки
КонецЕсли;

Такая замена полностью эквивалентна по результату, но не требует изменения глобальных настроек конфигурации. Однако помните, что при следующем обновлении вам снова придется вносить эти правки в типовой код.

Оптимизация последовательности обновлений УТ 10.3

Посмотрим на список релизов, которые предложил «калькулятор обновлений». Установка 11-19 промежуточных обновлений через файлы .cfu — это очень трудоемкий процесс, который может занять целый рабочий день. Разберем, как можно ускорить этот процесс.

Для перехода с 10.3.50 на 10.3.70 не обязательно заходить на каждую «ступеньку». В 1С существуют так называемые «узловые релизы». Мы можем пропустить значительную часть промежуточных версий, если будем использовать полные файлы конфигурации (.cf).

Рассмотрим примерную сокращенную цепочку переходов, проверенную практикой:

  1. 10.3.50.1 -> 10.3.56.1
  2. 10.3.56.1 -> 10.3.62.2
  3. 10.3.62.2 -> 10.3.66.3
  4. 10.3.66.3 -> 10.3.70.2

Важное правило: при использовании «прыжков» через релизы, после каждого объединения с .cf файлом обязательно запускайте базу в режиме «1С:Предприятие». Необходимо дождаться завершения всех обработок обновления данных (заполнение новых регистров, конвертация идентификаторов маркировки). Если этого не сделать и продолжить накатывать .cf файлы один за другим, вы рискуете получить «битую» базу с незаполненными ключевыми данными, что приведет к критическим ошибкам в учете.

Рекомендации по выполнению работ

Проанализируем финальный алгоритм безопасного обновления:

  1. Сделайте резервную копию базы данных.
  2. Если база сильно доработана, используйте сравнение и объединение конфигураций, сохраняя свои изменения.
  3. Если конфигурация находится на поддержке без изменений, используйте пункт меню «Конфигурация — Поддержка — Обновить конфигурацию», выбирая файл .cf нужного узлового релиза.
  4. После каждого этапа обновления проверяйте Режим совместимости. Если он не обновился автоматически до нужного уровня, измените его вручную через рекурсивный захват в хранилище, как мы разобрали выше.
  5. Следите за версией платформы. Для релизов УТ 10.3 выше 70.x крайне рекомендуется использовать платформу не ниже 8.3.17.1851 или 8.3.18.1363, так как в них исправлены критические ошибки работы с криптографией для маркировки.

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

← На главную