Можно ли во Фреше добавлять реквизиты в документы при помощи расширений?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Вопрос расширения функционала типовых конфигураций в облачных сервисах, таких как 1C:Fresh, является одним из самых актуальных для разработчиков. Особенности работы в "облаке" накладывают определенные ограничения на изменение структуры данных. Разберем подробно, как реализована возможность добавления реквизитов и колонок табличных частей через механизмы расширений, основываясь на опыте специалистов и официальных требованиях сервиса.

Анализ возможности: Платформа и режим совместимости

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

Рассмотрим основные технические требования:

  1. Версия платформы: Возможность полноценно добавлять реквизиты объектов (справочников, документов) в расширениях появилась начиная с версии платформы 8.3.12. Однако для стабильной работы и поддержки всех современных механизмов в 1C:Fresh рекомендуется использовать платформу версии 8.3.13 и выше.
  2. Режим совместимости: Это критически важный параметр. Даже если платформа обновлена до 8.3.23, но конфигурация (например, 1С:Бухгалтерия или 1С:Управление торговлей) работает в режиме совместимости с версией 8.3.10, добавить реквизиты через расширение не получится. Платформа просто заблокирует эту возможность.

Выясним причину этого ограничения. Режим совместимости диктует платформе, какие механизмы управления данными использовать. Новые методы расширения таблиц баз данных (хранение данных расширений в отдельных таблицах) не поддерживаются старыми режимами совместимости. Например, в конфигурации БП 3.0 последних версий режим совместимости постепенно отключается или повышается, что открывает дорогу к кастомизации метаданных.

Как добавить колонку в табличную часть через расширение

Разберем по шагам процесс добавления новой колонки в существующую табличную часть документа для сервиса 1C:Fresh. Представим, что нам необходимо добавить поле прф_ДополнительнаяИнформация в табличную часть Товары документа РеализацияТоваровУслуг.

Проанализируем алгоритм действий:

  1. Создание расширения: Создадим новое расширение. Важно убедиться, что свойство расширения Использовать основные роли для всех пользователей включено. Это необходимо для корректного доступа к данным в облаке.
  2. Заимствование объекта: Добавим в расширение необходимый документ и его табличную часть.
  3. Добавление реквизита: Внутри табличной части в расширении создадим новый реквизит. Обязательно установим для него свойство "Хранить данные". Если этого не сделать, колонка будет визуально отображаться на форме, но введенные пользователем данные не будут записываться в базу данных.
  4. Вывод на форму: Заимствуем форму документа и перетащим созданный реквизит в элемент управления "Таблица".

Посмотрим на пример настройки свойств реквизита в расширении. Важно понимать, что имя реквизита в 1C:Fresh обязано содержать уникальный префикс. Рассмотрим, почему это необходимо:


// Пример правильного наименования реквизита в расширении для облака:
// Имя: прф_СрокГодности
// Префикс "прф_" (от сокращения названия вашей компании или проекта)

Префиксация защищает ваше расширение от конфликтов. Если завтра фирма "1С" выпустит обновление конфигурации и добавит в этот же документ реквизит с таким же именем (но без вашего префикса), ваша база не "сломается", и расширение продолжит работу корректно.

Особенности работы в облачной инфраструктуре (1C:Fresh)

Многие пользователи и разработчики опасаются, что добавление реквизитов невозможно из-за единой SQL-базы, в которой хранятся данные тысяч клиентов. Разберем, как 1С решает эту проблему. Платформа не меняет структуру основных таблиц типовой конфигурации. Вместо этого:

Важно: Любое расширение, которое меняет структуру данных в 1C:Fresh, должно пройти обязательный аудит специалистами 1С. Основные критерии проверки:

  1. Работа только в безопасном режиме.
  2. Отсутствие кода, который может нарушить целостность данных других пользователей (хотя архитектурно это и так минимизировано).
  3. Соблюдение правил префиксации всех новых объектов и реквизитов.

Рекомендации по производительности и рискам

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

Рассмотрим важный момент, касающийся удаления данных. В отличие от локальной базы, где вы можете манипулировать бэкапами как угодно, в 1C:Fresh удаление расширения, содержащего данные, приведет к безвозвратной потере всей информации, накопленной в этих новых реквизитах. Система выдаст предупреждение, но восстановить данные из "облачного" архива отдельно для одного расширения будет крайне сложно или невозможно.

Итоги и выводы

Посмотрим на финальный результат нашего исследования. На современных версиях 1С:Бухгалтерия 3.0 в сервисе 1C:Fresh:

Если ваше расширение не проходит проверку, первым делом проверьте настройки режима совместимости и убедитесь, что вы не пытаетесь использовать функционал, который платформа блокирует для старых версий конфигураций. В случае с типовыми решениями, такими как БП 3.0, проблем возникнуть не должно, так как разработчики 1С планомерно снимают ограничения режима совместимости для поддержки новых возможностей платформы.

← На главную