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

В этой статье мы разберёмся, что такое форма документа на практике, чем управляемые формы отличаются от обычных, как их создавать и модифицировать — от базовых действий для бухгалтеров до тонкостей для разработчиков. А ещё выясним, почему иногда формы «ломаются» после обновлений и как это исправить без потери данных.

Что такое форма документа в 1С: определение и роль в системе

Форма документа в 1С:Предприятие — это интерфейсный элемент, который позволяет пользователю:

  • 📝 Создавать новые документы (например, счета, накладные, приказы).
  • 🔍 Просматривать и редактировать существующие записи.
  • 📊 Контролировать корректность введённых данных (через встроенные проверки).
  • 🖱️ Выполнять действия (проведение, печать, отправка по email).

Фактически, форма — это «обёртка» для объекта метаданных Документ. Без неё документ существует только как набор данных в базе, но пользователь не может с ним взаимодействовать. Например, документ ПоступлениеТоваровУслуг хранит информацию о поставщике, номенклатуре и суммах, а форма определяет, какие поля будут видны на экране, в каком порядке и с какой логикой заполнения.

Важно понимать, что формы бывают не только у документов, но и у справочников, отчётов, обработок. Однако документальные формы — самые сложные, потому что часто содержат:

  • 📋 Табличные части (например, список товаров в накладной).
  • 🔗 Связи с другими объектами (контрагенты, склады, валюты).
  • 📈 Динамические элементы (графики, индикаторы статуса).
  • 🔄 Кнопки обработки (провести, отменить проведение, создать на основе).
⚠️ Внимание: Если форма документа повреждена или отсутствует, система может выдавать ошибки при открытии, например: "Не найдена форма объекта" или "Ошибка при создании формы". В таких случаях требуется восстановление из резервной копии или пересоздание формы в конфигураторе.

Типы форм в 1С: управляемые vs обычные

В 1С:Предприятие 8 существует два основных типа форм, которые принципиально отличаются по архитектуре и возможностям:

Характеристика Обычные формы Управляемые формы
Платформа 1С:Предприятие 8.1–8.2 1С:Предприятие 8.2 (с обновлением) и 8.3
Интерфейс Жёстко привязан к клиентскому приложению (толстый клиент) Адаптивный, работает в тонком клиенте, веб-браузере, мобильном приложении
Логика работы Код выполняется на клиенте Код выполняется на сервере (безопаснее и быстрее)
Настройка Ограниченные возможности кастомизации Гибкая настройка через механизм расширений
Пример использования Устаревшие конфигурации (например, 1С:Бухгалтерия 7.7) Современные решения (1С:ERP, 1С:УТ 11, 1С:ЗУП 3)

Обычные формы сегодня встречаются редко —mostly в legacy-системах или у клиентов, которые давно не обновляли конфигурацию. Их главный недостаток: при изменении формы требуется обновление клиентского приложения на всех рабочих местах. Кроме того, они не поддерживают современные устройства (планшеты, смартфоны).

Управляемые формы — стандарт де-факто для новых проектов. Их ключевые преимущества:

  • 🌐 Кроссплатформенность (работают в браузере без установки 1С).
  • 🔒 Безопасность (код выполняется на сервере, минимизируя риски взлома).
  • ⚡ Быстродействие (оптимизированы для работы с большими объёмами данных).
  • 🛠️ Легкость модификации (можно изменять без перезапуска системы).
⚠️ Внимание: При переходе с обычных форм на управляемые может потребоваться полная переработка конфигурации. В некоторых случаях проще создать новую базу с миграцией данных, чем адаптировать старую.
📊 Какой тип форм используется в вашей компании?
Обычные (устаревшие)
Управляемые (современные)
Не знаю, не проверял
Используем оба типа

Структура формы документа: из чего она состоит

Любая форма в 1С — это совокупность элементов управления (контролов) и модулей (кода на встроенном языке). Рассмотрим основные компоненты на примере формы документа РеализацияТоваровУслуг:

1. Реквизиты формы — это переменные, которые хранят данные документа. Они делятся на:

  • 📌 Стандартные (автоматически создаются по структуре документа, например, Дата, Номер).
  • 📌 Дополнительные (добавляются разработчиком, например, КомментарийМенеджера).

2. Элементы формы — визуальные компоненты, с которыми взаимодействует пользователь:

  • 📋 Поля ввода (ПолеВвода) — для текста, чисел, дат.
  • 🗂️ Табличные поля (ТаблицаФормы) — для отображения списков (например, товары в накладной).
  • 🔘 Кнопки (Кнопка) — для действий («Провести», «Печать»).
  • 📊 Диаграммы и индикаторы — для визуализации данных.

3. Модули формы — программный код, который обрабатывает события:

  • 🔄 ПриСозданииНаСервере — выполняется при открытии формы.
  • 📝 ПередЗаписью — проверяет данные перед сохранением.
  • ПриИзменении — реагирует на изменения в полях.

Пример структуры формы в конфигураторе:

Форма.Реквизиты:

- Дата (Тип: Дата)

- Контрагент (Тип: СправочникСсылка.Контрагенты)

- ТабличнаяЧастьТовары (Тип: ТабличнаяЧастьДокумента.Товары)

Форма.Элементы:

- ПолеДата (Тип: ПолеВвода)

- ПолеКонтрагент (Тип: ПолеВводаСВыбором)

- ТаблицаТовары (Тип: ТаблицаФормы)

Форма.Модуль:

Процедура ПередЗаписью(Отказ)

Если Дата > ТекущаяДата Тогда

Сообщить("Дата документа не может быть в будущем!");

Отказ = Истина;

КонецЕсли;

КонецПроцедуры

Как посмотреть структуру формы в конфигураторе?

Откройте конфигуратор (1Cv8.exe с ключом /config), найдите документ в дереве метаданных, разверните ветку"Формы" и дважды кликните на нужную форму. В правой части отобразится её структура с реквизитами, элементами и модулями.

Как создать или изменить форму документа: пошаговая инструкция

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

Способ 1: Настройка формы без программирования (для пользователей)

В современных конфигурациях (например, 1С:УТ 11 или 1С:ERP) есть механизм «Все действия» → «Изменить форму». Он позволяет:

Добавить/убрать колонки в табличной части|Переместить поля в удобное место|Скрыть ненужные кнопки|Изменить порядок закладок-->

Пример: чтобы убрать ненужную колонку Вес из таблицы товаров в документе ПоступлениеТоваровУслуг:

  1. Откройте документ и нажмите Все действия → Изменить форму.
  2. Выделите табличную часть Товары.
  3. В контекстном меню выберите Настройка списка.
  4. Снимите галочку с колонки Вес и сохраните изменения.

⚠️ Ограничение: Такие настройки действуют только для текущего пользователя. Чтобы применить их для всех, требуется вмешательство администратора.

Способ 2: Редактирование формы в конфигураторе (для разработчиков)

Для глубоких изменений (добавление новых реквизитов, изменение логики) нужно работать в конфигураторе:

  1. Откройте базу в режиме конфигуратора (файл 1Cv8.exe с ключом /config).
  2. В дереве метаданных найдите нужный документ (например, Документы → РеализацияТоваровУслуг).
  3. Разверните ветку Формы и выберите форму для редактирования (обычно это ФормаДокумента).
  4. Добавьте новый реквизит (например, СпособОплаты типа Перечисление) через контекстное меню.
  5. Перетащите элемент ПолеВвода на форму и свяжите его с новым реквизитом.
  6. В модуле формы добавьте код для обработки события (например, проверку заполнения поля).
  7. Сохраните изменения и обновите конфигурацию базы данных.

Пример кода для проверки заполнения поля СпособОплаты:

Процедура ПередЗаписью(Отказ)

Если ЗначениеЗаполнено(СпособОплаты) = Ложь Тогда

Сообщить("Укажите способ оплаты!", СтатусСообщения.Важное);

Отказ = Истина;

КонецЕсли;

КонецПроцедуры

⚠️ Внимание: Изменения в конфигураторе могут привести к конфликтам при обновлении 1С. Всегда создавайте резервную копию базы перед редактированием!
💡

Если нужно временно скрыть поле от всех пользователей, но не удалять его из формы, используйте свойство"Видимость" в конфигураторе. Установите значение"Ложь" — поле останется в структуре, но не будет отображаться.

Распространённые ошибки при работе с формами и как их исправить

Даже опытные пользователи сталкиваются с проблемами при работе с формами. Вот самые частые ошибки и способы их решения:

Ошибка Причина Решение
"Не найдена форма объекта" Форма удалена или повреждена Восстановить форму из резервной копии или пересоздать в конфигураторе
"Ошибка при создании формы: неверный тип данных" Несовпадение типов реквизитов Проверить типы данных в метаданных и форме (например, поле Дата не должно быть типа Строка)
Форма открывается пустой (без данных) Ошибка в модуле формы или права доступа Проверьте код в ПриСозданииНаСервере и права пользователя на документ
Кнопка"Провести" неактивна Не заполнены обязательные поля Найдите поля с красным восклицательным знаком и заполните их

Случай 1: Форма не открывается после обновления 1С

Этоная проблема при переходе на новую версию платформы. Чаще всего связано с тем, что:

  • 🔄 В новой версии изменилась структура метаданных (например, переименован реквизит).
  • 🛠️ Форма была кастомизирована, и изменения конфликтуют с обновлением.

Решение:

  1. Сравните текущую и новую версию конфигурации через Конфигуратор → Конфигурация → Сравнить конфигурации.
  2. Найдите различия в форме и перенесите свои изменения в новую версию.
  3. Если не уверены — откатитесь на резервную копию и обратитесь к специалисту.

Случай 2: Данные в форме не сохраняются

Причины могут быть разные:

  • 🔒 Отсутствуют права на запись (проверьте роли пользователя).
  • 📛 Ошибка в процедуре ПередЗаписью (например, всегда возвращает Отказ = Истина).
  • 🗃️ Повреждение данных в базе (рекомендуется тестирование и исправление через chdbfl.exe).
💡

Перед любыми изменениями формы всегда проверяйте журнал регистрации (Администрирование → Журнал регистрации). Там могут быть подробности об ошибках, которые не видны пользователю.

Практические примеры: как настроить форму под бизнес-задачи

Рассмотрим реальные кейсы, где настройка формы помогает автоматизировать рутинные операции.

Пример 1: Добавление поля «Комментарий менеджера» в документ «Заказ клиента»

Задача: В компании нужно фиксировать устные договорённости с клиентом прямо в заказе.

Решение:

  1. В конфигураторе добавьте реквизит КомментарийМенеджера (тип Строка, длина 200).
  2. Откройте форму документа ЗаказКлиента и добавьте ПолеВвода, связав его с новым реквизитом.
  3. В модуле формы добавьте проверку на заполнение (если поле обязательное):
Процедура ПередЗаписью(Отказ)

Если НЕ ЗначениеЗаполнено(КомментарийМенеджера) Тогда

Сообщить("Укажите комментарий менеджера!", СтатусСообщения.Важное);

Отказ = Истина;

КонецЕсли;

КонецПроцедуры

Пример 2: Автоматическое заполнение цены в табличной части

Задача: При добавлении товара в документ РеализацияТоваровУслуг цена должна подтягиваться из справочника Номенклатура.

Решение: В модуле формы добавьте обработчик события ПриИзменении для колонки Номенклатура:

Процедура ТоварыНоменклатураПриИзменении(Элемент)

ТекущаяСтрока = Элементы.Товары.ТекущаяСтрока;

Если ТекущаяСтрока <> Неопределено Тогда

ВыбраннаяНоменклатура = ТекущаяСтрока.Номенклатура;

Если ВыбраннаяНоменклатура <> Неопределено Тогда

ТекущаяСтрока.Цена = ВыбраннаяНоменклатура.ЦенаПродажи;

КонецЕсли;

КонецЕсли;

КонецПроцедуры

Пример 3: Скрытие ненужных закладок для разных ролей

Задача: Бухгалтеры должны видеть только финансовую информацию, а менеджеры — данные о клиенте.

Решение: В процедуре ПриСозданииНаСервере добавьте проверку ролей:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если НЕ Роли.Найти("Бухгалтер") Тогда

Элементы.ЗакладкаФинансы.Видимость = Ложь;

КонецЕсли;

Если НЕ Роли.Найти("МенеджерПоПродажам") Тогда

Элементы.ЗакладкаКлиент.Видимость = Ложь;

КонецЕсли;

КонецПроцедуры

💡

Чтобы быстро протестировать изменения формы, используйте режим"Отладка" в конфигураторе (F5). Это позволит открыть форму без полного обновления базы.

Как перенести изменения формы при обновлении 1С

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

  1. Создайте резервную копию текущей конфигурации (Файл → Сохранить конфигурацию в файл).
  2. Обновите конфигурацию через Конфигурация → Поддержка → Обновить конфигурацию.
  3. Сравните версии:
    • Откройте Конфигурация → Сравнить конфигурации.
    • Выберите текущую и новую версию.
    • Найдите различия в форме (отмечены красным/зелёным).
  • Перенесите изменения:
    • Скопируйте свои реквизиты/элементы из старой формы в новую.
    • Проверьте модуль формы на совместимость с новой логикой.
    • Протестируйте форму в пользовательском режиме.
    • Если изменений много, целесообразно использовать механизм расширений (доступен с версии 8.3.6). Он позволяет дорабатывать формы без изменения основной конфигурации, что упрощает обновления.

      Пример создания расширения:

      1. В конфигураторе выберите Файл → Новый → Расширение конфигурации.
      2. Добавьте в расширение форму документа и модифицируйте её.
      3. Подключите расширение к основной базе через Администрирование → Печатные формы, отчёты и обработки.
      ⚠️ Внимание: Детали механизма расширений могут отличаться в зависимости от версии платформы. В некоторых конфигурациях (например, 1С:Бухгалтерия 3.0) требуется дополнительная настройка прав доступа для расширений.

      FAQ: Частые вопросы о формах документов в 1С

      Можно ли вернуть стандартную форму, если я её случайно изменил?

      Да. В конфигураторе найдите форму документа, нажмите правой кнопкой и выберите Восстановить из шаблона. Если форма сильно повреждена, может потребоваться восстановление из резервной копии или пересоздание.

      Почему после обновления 1С исчезли мои поля в форме?

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

      Как сделать так, чтобы поле автоматически заполнялось текущей датой?

      В модуле формы добавьте обработчик события ПриСозданииНаСервере:

      Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
      

      Если ЗначениеЗаполнено(Дата) = Ложь Тогда

      Дата = ТекущаяДата;

      КонецЕсли;

      КонецПроцедуры

      Можно ли настроить разные формы для одного документа в зависимости от пользователя?

      Да, но это требует программирования. Например, в процедуре ПриСозданииНаСервере можно проверять роль пользователя и динамически скрывать/показывать элементы:

      Если Роли.Найти("Директор") Тогда
      

      Элементы.ЗакладкаФинансы.Видимость = Истина;

      Иначе

      Элементы.ЗакладкаФинансы.Видимость = Ложь;

      КонецЕсли;

      Как экспортировать форму документа для переноса в другую базу?

      В конфигураторе выделите форму, нажмите правой кнопкой и выберите Копировать. Затем в другой базе вставьте её через Вставить. Альтернативно можно экспортировать всю конфигурацию в файл .cf и импортировать её в другую базу.