Правка внешних и встроенных обработок 1С 8.3: код, формы, макеты и отладка

· 9 мин

Содержание

Чтобы отредактировать обработку в 1С, откройте Конфигуратор. Внешнюю обработку (файл .epf) правят через Файл → Открыть, конфигурацию базы при этом открывать не нужно. Встроенную обработку правят в дереве конфигурации, но в типовой базе сначала придётся разрешить изменения в настройке поддержки или перенести правку в расширение.

Какой путь выбрать? Внешняя обработка — самый безопасный вариант: файл живёт отдельно, типовые обновления его не трогают. Расширение подходит, когда надо поменять поведение встроенного объекта и не потерять лёгкое обновление. Снятие с поддержки — крайний случай: каждое следующее обновление придётся сравнивать и объединять вручную.

Что правимГдеРиск для обновлений
Внешняя обработка .epfКонфигуратор, Файл → ОткрытьНет
Встроенная обработка через расширениеКонфигурация → Расширения конфигурацииНизкий
Встроенная обработка, снятая с поддержкиДерево конфигурацииВысокий
Макет типовой печатной формыРежим Предприятия, список макетовНет

Подготовка: права, режим запуска и копия базы

Для правки нужны права администратора и доступ к Конфигуратору. Обычный пользователь с ролью бухгалтера войти туда не сможет.

Что проверить до начала:

  • 🔑 Пользователь — с полными правами. В типовых конфигурациях это роль «Полные права» или «Администратор системы».
  • 🖥 Платформа — та же, на которой работает база. Обработку, сохранённую в новой платформе, старая может не открыть.
  • 💾 Копия — для встроенных обработок обязательна: Администрирование → Выгрузить информационную базу в Конфигураторе, получится файл .dt.
  • 📁 Копия файла — для внешней обработки просто скопируйте .epf рядом с другим именем.

Встроенные обработки правьте на копии базы, а не на рабочей. Разверните .dt в отдельную базу, проверьте изменения там и только потом переносите их в рабочую.

Запуск Конфигуратора: в окне выбора баз выделите нужную и нажмите кнопку «Конфигуратор». Для внешней обработки подойдёт любая база — хоть пустая. Но проверять результат удобнее на той, где обработка будет работать: нужны те же справочники и документы.

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

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

Встроенные обработки лежат в дереве конфигурации, в ветке «Обработки». Порядок действий:

  1. Откройте Конфигурация → Открыть конфигурацию.
  2. Разверните ветку «Обработки» и найдите нужную. Для быстрого поиска выделите корень дерева и начните набирать имя.
  3. Дважды щёлкните по обработке — откроется окно её свойств: реквизиты, табличные части, формы, команды, макеты.
  4. Модуль объекта открывается через вкладку «Прочее» или из контекстного меню объекта. Модуль формы — двойным щелчком по форме и вкладке «Модуль» внизу редактора формы.

В типовой конфигурации на поддержке объекты закрыты замком. Изменить их можно двумя способами.

Включить изменения в настройке поддержки

Путь: Конфигурация → Поддержка → Настройка поддержки, кнопка «Включить возможность изменения». Затем для нужной обработки задайте правило:

  • 🟡 Объект поставщика редактируется с сохранением поддержки — правка разрешена, при обновлении платформа предложит сравнить и объединить.
  • 🔴 Объект поставщика снят с поддержки — обновления этот объект больше не меняют.

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

Перенести правку в расширение

Расширение — отдельный слой поверх типовой конфигурации. Появилось в платформе 8.3.6, полноценная работа с формами и модулями — в более поздних версиях.

  1. Конфигурация → Расширения конфигурации, кнопка «Добавить».
  2. Откройте конфигурацию расширения.
  3. В основной конфигурации щёлкните правой кнопкой по обработке → «Добавить в расширение».
  4. В расширении заимствуйте нужную форму и меняйте её элементы. Для процедур модуля используйте аннотации &Перед, &После, &Вместо, а с платформы 8.3.16 — &ИзменениеИКонтроль.

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

Работа с внешней обработкой: файл .epf

Внешняя обработка — это отдельный файл. Отредактировать её можно без доступа к конфигурации базы.

  1. Запустите Конфигуратор для любой базы.
  2. Файл → Открыть, выберите файл .epf. Внешние отчёты имеют расширение .erf и открываются так же.
  3. Откроется окно обработки со своим деревом: реквизиты, табличные части, формы, макеты.
  4. Внесите правки и сохраните файл: Файл → Сохранить или Ctrl+S.

Пример простой команды формы. Клиентская часть вызывает сервер, сервер считает данные:

&НаКлиенте
Процедура Выполнить(Команда)
	Количество = КоличествоКонтрагентовНаСервере();
	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = СтрШаблон("Контрагентов в базе: %1", Формат(Количество, "ЧН=0; ЧГ=0"));
	Сообщение.Сообщить();
КонецПроцедуры

&НаСервереБезКонтекста
Функция КоличествоКонтрагентовНаСервере()
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Кол ИЗ Справочник.Контрагенты";
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	Возврат Выборка.Кол;
КонецФункции

Обращение к базе — только в серверных процедурах. Директива &НаСервереБезКонтекста не передаёт на сервер данные формы, поэтому такой вызов быстрее.

Если обработка подключена как дополнительная

В типовых конфигурациях на БСП внешние обработки часто зарегистрированы в справочнике: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Тогда сама обработка хранится в базе, а файл на диске — лишь исходник.

Порядок правки:

  1. Откройте карточку обработки и выгрузите её в файл командой «Выгрузить в файл…».
  2. Отредактируйте файл в Конфигураторе.
  3. В модуле объекта не удаляйте экспортную функцию СведенияОВнешнейОбработке() — по ней база понимает, что это за обработка и где её показывать. Увеличьте в ней номер версии, чтобы отличать правленый вариант.
  4. Вернитесь в карточку и загрузите файл командой «Загрузить из файла…», затем «Записать и закрыть».

Если поменять имя или состав команд в СведенияОВнешнейОбработке(), после загрузки придётся заново настроить размещение команд в разделах и доступ пользователей.

Отладка и анализ кода обработки

Без отладчика правка похожа на гадание. Порядок запуска:

  1. В Конфигураторе выберите Отладка → Начать отладку → Тонкий клиент (или F5 — запуск в основном режиме).
  2. В открывшемся Предприятии запустите обработку. Внешнюю откройте через Файл → Открыть в главном меню.
  3. В Конфигураторе откройте тот же файл .epf и поставьте точку останова на нужной строке — F9.
  4. Выполните действие в форме. Выполнение остановится на точке.

Клавиши отладчика:

КлавишаДействие
F9Поставить или снять точку останова
F10Шаг через процедуру
F11Шаг внутрь процедуры
Shift+F11Выйти из процедуры
Shift+F9Вычислить выражение
F5Продолжить выполнение

Точки останова в дополнительной обработке, загруженной в справочник, обычно не срабатывают: база запускает её из временной копии. Для отладки открывайте сам файл через Файл → Открыть.

Серверный код в клиент-серверной базе

В файловой базе серверные процедуры отлаживаются сразу. В клиент-серверной нужно, чтобы отладка была разрешена на сервере 1С: служба агента запускается с ключом -debug. Если ключа нет, точки в процедурах &НаСервере молча пропускаются.

Добавление ключа требует перезапуска службы сервера 1С. При этом оборвутся сеансы всех пользователей. Делайте это вне рабочего времени и только на тестовом сервере, если такой есть.

Замер производительности

Если обработка работает медленно, включите Отладка → Замер производительности перед запуском действия. После остановки замера Конфигуратор покажет, какие строки заняли больше всего времени и сколько раз выполнились. Чаще всего узким местом оказывается запрос внутри цикла — его выносят из цикла и получают данные одним запросом.

Изменение макетов и печатных форм обработки

Макет — это табличный документ с областями. Печатная форма собирается из областей кодом.

В Конфигураторе макет открывается из ветки «Макеты» обработки. Что можно менять:

  • ✏️ текст и оформление ячеек, шрифты, границы;
  • 📐 ширину колонок и высоту строк;
  • 🧩 параметры ячеек — в свойстве «Заполнение» выбирается «Параметр», имя параметра заполняется из кода;
  • 📦 именованные области — выделите строки и задайте имя через Таблица → Имена → Назначить имя.

Не переименовывайте области и параметры, на которые ссылается код. Код получает область по имени — Макет.ПолучитьОбласть("Шапка"). Сменили имя в макете — печать упадёт с ошибкой.

Типовые печатные формы без Конфигуратора

Для многих типовых печатных форм Конфигуратор не нужен вовсе. В БП 3.0, ЗУП 3.1 и УТ 11 есть список Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм.

Выберите макет, нажмите «Изменить», поправьте его во встроенном редакторе и сохраните. Изменённый макет хранится в базе и переживает обновления. Вернуть исходный вариант можно командой «Использовать стандартный макет».

Так можно поменять оформление, текст и ширину колонок. Новые данные в форму так не добавить — для этого нужна правка кода через внешнюю печатную форму или расширение.

Сохранение, проверка и обновление базы

Перед сохранением прогоните синтаксический контроль модуля: в редакторе модуля нажмите Ctrl+F7. Ошибки появятся в окне сообщений внизу, двойной щелчок переводит к строке.

Дальше путь зависит от вида обработки.

ВидКак сохранитьЧто сделать после
Внешняя .epfCtrl+S в окне обработкиПереоткрыть обработку в Предприятии
Дополнительная (в справочнике)Сохранить файлЗагрузить его в карточку обработки
ВстроеннаяКонфигурация → Сохранить конфигурациюКонфигурация → Обновить конфигурацию базы данных (F7)
В расширенииСохранить расширениеОбновить конфигурацию базы данных для расширения

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

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

Если правка затронула реквизиты другого объекта — например, вы добавили поле в справочник ради обработки, — обновление уже меняет структуру данных. Тогда понадобится монопольный режим: попросите всех выйти из базы.

Ошибки при редактировании обработок

Диагностика: выберите симптом

Ещё одна частая причина неожиданных ошибок — вызов серверных методов из клиентского кода. Сообщение «Метод объекта недоступен на клиенте» означает, что обращение к базе или к объекту стоит в процедуре с директивой &НаКлиенте. Перенесите эту часть в серверную процедуру и вызывайте её с клиента.

Частые вопросы

Можно ли отредактировать обработку без Конфигуратора?
Код и форму — нет, нужен Конфигуратор или среда 1C:EDT. Оформление типовых печатных форм можно поменять в режиме Предприятия через список макетов печатных форм.
Слетит ли правка внешней обработки после обновления конфигурации?
Сам файл не изменится. Но если в новом релизе переименовали реквизиты или справочники, к которым обращается код, обработка начнёт выдавать ошибки, и её придётся поправить.
Нужна ли лицензия на Конфигуратор для правки обработки?
Отдельной лицензии на Конфигуратор нет. Подойдёт та же клиентская лицензия, что и для работы в базе, и права администратора.
Можно ли превратить встроенную обработку во внешнюю?
Да. В Конфигураторе щёлкните правой кнопкой по обработке и выберите «Сохранить как внешнюю обработку, отчет». Учтите, что код с обращениями к общим модулям конфигурации будет работать только в базе с такими же модулями.
Где хранить исходники правленых обработок?
Держите копии файлов .epf с номером версии в имени или в системе контроля версий. Для расширений и конфигураций удобнее выгрузка в файлы и хранилище конфигурации.