При переходе с платформы 1С 7.7 на 1С 8.3 начинающие разработчики часто сталкиваются с трудностями при поиске программного кода во внешних файлах .epf. В отличие от "семерки", где структура была более линейной, в управляемом приложении 1С 8.3 код распределен по разным типам модулей. Рассмотрим подробно, как ориентироваться во внешней обработке, находить скрытые ошибки в запросах и обходить ограничения интерфейса управляемых форм.
Во внешней обработке (файл .epf) код не хранится в одном месте. Проанализируем основные точки концентрации программной логики, которые нам необходимо проверить:
ПередЗаписью). Чтобы открыть его, необходимо в окне конфигуратора нажать кнопку "Действия" и выбрать "Открыть модуль объекта".Разберем типичную ситуацию: если глобальный поиск по конфигурации не дает результатов, скорее всего, код формируется динамически или используется поиск по строке внутри модулей конкретного внешнего файла. Попробуем использовать сочетание клавиш Ctrl + Shift + F, выбрав в области поиска "Во всех открытых документах" или предварительно открыв все модули обработки.
Часто при запуске универсальных журналов или отчетов возникает ошибка синтаксиса запроса с указанием конкретной строки (например, 1770). Важно понимать: это не строка в вашем программном коде в конфигураторе. Это номер строки в финальном текстовом блоке, который был сформирован программой и передан на выполнение SQL-серверу или локальному движку БД.
Выясним причину появления такой ошибки на примере проблемы с документом "Отчет оператора системы Платон". Проблема заключается в том, что разработчики часто используют в запросах автоматическую подстановку синонимов метаданных:
ТекстЗапроса = "ВЫБРАТЬ Ссылка КАК Документ, """ + МетаданныеДокумента.Синоним + """ КАК ТипДокумента ИЗ ...";
Если в синониме документа содержатся кавычки (как в случае с Платоном), итоговая строка запроса "ломается", так как лишняя кавычка интерпретируется как преждевременное окончание строки. Чтобы найти точное место, выполним следующие шаги:
Запрос.Текст).Для исправления подобных ошибок рекомендуется использовать функцию СтрЗаменить, чтобы экранировать кавычки или вовсе удалять их из текста запроса:
ОчищенныйСиноним = СтрЗаменить(МетаданныеДокумента.Синоним, """", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяТипа", ОчищенныйСиноним);
Рассмотрим ситуацию, когда требуется разместить поле ввода (например, период или дату) в верхней части формы, где обычно находится командная панель. В 1С 8.3 "Управляемые формы" накладывают жесткие ограничения: в стандартную Командную панель нельзя напрямую добавить поле ввода — она предназначена только для кнопок.
Посмотрим на пример обхода этого ограничения:
Проанализируем работу с динамическими списками. Если ваш журнал документов построен на Динамическом списке, то для работы с периодом лучше использовать стандартную команду "Установить период". Чтобы она всегда была под рукой, в свойствах командной панели списка нужно найти эту команду и установить для нее свойство "Только в еще" в значение Нет, тогда она вынесется отдельной кнопкой.
Иногда ошибка кроется не во внешней обработке, а в самих метаданных конфигурации (например, нужно убрать кавычки из синонима документа, чтобы не переписывать десятки запросов). По умолчанию типовые конфигурации (БП 3.0, УНФ) стоят на поддержке ("на замочке").
Важно: Не спешите снимать конфигурацию с поддержки полностью. Рассмотрим более современный и безопасный метод — Расширения.
Это позволит сохранить основную конфигурацию на замке, что значительно упростит последующие обновления программы через интернет или обновлятором. Если же вы решили пойти по пути изменения основной конфигурации, путь лежит через меню "Конфигурация" -> "Поддержка" -> "Настройка поддержки" -> "Включить возможность изменений". Но помните, что это крайняя мера, часто свидетельствующая о "тяп-ляп" подходе к разработке.
Изучение 1С 8.3 после 7.7 требует времени на понимание объектной модели и работы с управляемым интерфейсом. Главное — активно использовать отладчик и не пытаться решать задачи "в лоб" методами старых платформ.