Как изменить макет печатной формы в 1С:ЗУП 3.1 и избежать ошибки «Поле объекта не обнаружено»?

Пользователь 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

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

Почему возникает ошибка при редактировании макета?

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

Рассмотрим два основных метода, которыми программа заполняет данные:

  1. Метод автоматического заполнения: Программа берет структуру данных и пытается сопоставить её с параметрами в макете. Если параметра в макете нет, она его просто игнорирует. В этом случае замена параметра на текст проходит безболезненно.
  2. Метод прямого обращения: Это наиболее частая причина ошибки. В коде программы жестко прописана команда обращения к конкретной ячейке макета. Выглядит это примерно так:

// Программный код в модуле 1С
ОбластьМакета.Параметры.РеквизитРуководитель = ДанныеПечати.Руководитель;

Если вы удаляете РеквизитРуководитель из макета или меняете тип заполнения ячейки на «Текст», коллекция Параметры данной области больше не содержит этого имени. Программа пытается записать значение в несуществующее поле, что и приводит к ошибке «Поле объекта не обнаружено».

Способ 1. Визуальное скрытие параметра через объединение ячеек

Самый надежный способ — это оставить обязательный параметр в макете, но сделать его невидимым для пользователя при печати. Рассмотрим подробнее, как это реализовать с помощью манипуляций с ячейками.

Допустим, у нас есть ячейка, в которой указан параметр РеквизитРуководитель. Нам нужно, чтобы вместо него всегда печатался «Иванов И.И.». Выполним следующие шаги:

  1. Откроем макет для редактирования (через меню Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм).
  2. Найдем нужную ячейку. Часто параметры должностных лиц размещаются в объединенных ячейках. Если ячейка объединена, сначала выделим её и нажмем кнопку «Разъединить».
  3. Теперь параметр находится в одной из колонок (например, в колонке 10). Нам нужно переместить его в соседнюю колонку, которая также входит в область печати, но не мешает нашему тексту.
  4. В освободившейся ячейке (колонка 10) напишем нужный нам текст — «Иванов И.И.». Тип заполнения этой ячейки должен быть установлен как «Текст».
  5. Для ячейки, куда мы перенесли обязательный параметр, установим свойства оформления: Цвет текста выберем белый (чтобы он сливался с фоном), а размер шрифта установим минимальный (например, 1 пункт).
  6. Объединим ячейки обратно так, чтобы наш текст был виден, а невидимый параметр «спрятался» сбоку или внутри объединенной области.

Таким образом, программный код успешно найдет параметр РеквизитРуководитель, запишет в него данные, но на бумаге они не отобразятся.

Способ 2. Использование режима «Шаблон»

Существует еще более элегантный метод, который позволяет оставить текст и параметр в одной и той же ячейке. Выясним, как работает режим заполнения «Шаблон».

В свойствах ячейки (правая кнопка мыши — Свойства) в поле «Заполнение» выберем значение «Шаблон». Этот режим позволяет смешивать обычный текст и параметры, которые заключаются в квадратные скобки.

Разберем на примере. Если мы напишем в ячейке:

Иванов И.И. [РеквизитРуководитель]

То программа увидит параметр в скобках, заполнит его данными (например, «Петров П.П.»), и на печати мы получим: Иванов И.И. Петров П.П.

Чтобы скрыть лишнюю фамилию, можно воспользоваться хитростью с оформлением. Мы можем добавить в шаблон очень много пробелов между нашим текстом и параметром, либо использовать перенос строки внутри ячейки (Shift+Enter), чтобы параметр «уехал» за пределы видимости, если для ячейки установлена фиксированная высота и отключено свойство «Размещать: Переносить».

Способ 3. Создание технической колонки

Если макет документа сложный и перенос параметра внутри строки портит форматирование, проанализируем возможность создания «технической» зоны.

  1. Выделим крайнюю правую колонку макета, которая входит в именованную область (например, область Подвал).
  2. Нажмем правую кнопку мыши и выберем «Вставить колонки справа».
  3. Сделаем новую колонку очень узкой (шириной 0.1 или даже 0).
  4. Перенесем в эту колонку все параметры, которые вызывают ошибки при их удалении.
  5. В основных ячейках макета, где раньше были эти параметры, теперь можно спокойно писать любой статический текст.

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

Важные нюансы: Имена областей

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

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

Совет: Всегда проверяйте, чтобы ваши изменения не удаляли серые линии-разделители областей, которые обычно видны слева и сверху в редакторе макета.

Как вернуть всё назад, если макет испорчен?

Если в процессе экспериментов печатная форма перестала открываться совсем, не стоит паниковать. Рассмотрим, как восстановить стандартный макет:

  1. Перейдем в раздел Администрирование.
  2. Выберем пункт Печатные формы, отчеты и обработки, затем Макеты печатных форм.
  3. В списке найдем наш макет (он будет выделен жирным шрифтом или отмечен особым значком, указывающим на наличие пользовательских изменений).
  4. Нажмем кнопку «Использовать стандартный макет» (или выделим строку и нажмем «Удалить измененный макет»).

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

Резюме для практического применения

Подводя итог, можно сказать: чтобы заменить данные руководителя на свой текст в 1С:ЗУП 3.1 без помощи программиста, придерживайтесь правила «Скрывай, а не удаляй». Программа — это строгий алгоритм, который ожидает найти определенные «крючки» (параметры) в вашем макете. Оставьте ей эти крючки в невидимом виде, и ваша печатная форма будет работать корректно и выглядеть именно так, как вам нужно.

← На главную