Как добавить предопределенный элемент в справочник 1с в расширении
Перейти к содержимому

Как добавить предопределенный элемент в справочник 1с в расширении

  • автор:

В расширении справочнику нельзя добавить предопределенные данные.

(2) думаю, что это сделано умышлено и возможность создания предопределенной группы — баг.

Интересно, чем же решили заменить преопределенные элементы справочников?

Полный мрак.
Пытаюсь в режиме приложения открыть справочник:
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
по причине:
Ошибка при выполнении операции с информационной базой
Запись не найдена в менеджере имен базы данных.

После удаления предопределенных групп:
Платформа: 1С:Предприятие 8.3 (8.3.11.2867)
Конфигурация: Зарплата и кадры государственного учреждения, редакция 3.1 (3.1.5.65) (http://v8.1c.ru/statehrm/)
Copyright © ООО "1C-Софт", 2014 — 2017. Все права защищены
Расширение конфигурации: Дополнения для ХХХ
Режим: Серверный (сжатие: усиленное)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский
Вариант интерфейса: Такси
Ошибки:
Тип не определен ‘8db5ca43-69d9-46a0-8a77-4c087bbc0bda’

Ну всё, угробил базу.
Со второй попытки снес расширение.
Пытаюсь зайти в один из справочников, которые пробовал расширить:

Ошибка при выполнении запроса.
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
Работа с таблицей невозможна.
Структура таблицы расширена при выключенном разделении.

Развитие расширений

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Реализовано в версии 8.3.20.1549

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

Поддержка определяемых типов, планов видов характеристик и общих реквизитов

В расширениях будут поддержаны определяемые типы.

Как это можно использовать?

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

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

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

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

Поддержка наборов типов

В версии 8.3.20 будут добавлены новые возможности использования ссылок на объекты расширений.

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

Также в реквизит типа ЛюбаяСсылка можно будет помещать ссылки на объекты типов, определенных в расширениях. В реквизиты типа СправочникСсылка, ДокументСсылка и т.д. можно будет помещать ссылки на объекты соответствующих типов из расширений. Ранее после присвоения таким реквизитам ссылок на объекты типов, определенных в расширениях, значение реквизита становилось равным НеОпределено.

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

Поддержка предопределенных в справочниках

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

Новые возможности расширений в платформе 8.3.20

В редакции 8.3.19 в части расширений больших изменений не было, но в платформе 8.3.20 механизм расширений получил новые функциональные возможности.

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

В платформе 8.3.18 появилась возможность расширять типы реквизитов заимствованных объектов. А в платформе 8.3.20 ряд ограничений был снят. И теперь при помощи расширения можно расширять типы следующих объектов:

  • Общий реквизит, который не является разделителем
  • Тип значения характеристик в плане видов характеристик
  • Определяемый тип

Изменения коснулись “обобщенных” типов данных – таких, как ЛюбаяСсылка, СправочникСсылка и т.д. Эти типы теперь включают в себя и ссылки на объекты, созданные в расширении, а не только ссылки из основной конфигурации.

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

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

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

Все указанные новшества рассмотрены подробно в следующих видеоуроках.

Видео 1 – Вступление

Ключевые моменты видео:

00:29 – ограничения на изменение в расширении типа реквизита в платформе 8.3.18
00:40 – снятие ограничения в платформе 8.3.20

Создание предопределенных элементов в собственном справочнике, созданном в расширении

Пред.история: При доработке конфигурации ЗУП (доработка делается в расширении) очень понадобилось создать собственный справочник с предопределенными элементами. Решить задачу стандартным образом — ни как, поиск в интернете дал отрицательный результат, типа в конфигурации на сей день это еще не реализовано. Задача на грани срыва и тут именно в голову 🙂 приходит мысль: — а в чем особое различие между пользовательскими и предопределенными элементами? Основное: пользователь не может менять Имя и при открытии они всегда на верху (в первых строках) + запрет на удаление. Вот тут и возникла идея создать собственные "предопределенные" элементы. Пример выполнен на самом простом нужном мне справочнике.

1. Создаем справочник с нужными реквизитами, добавляем еще реквизит типа Булево (имя свое, типа "НеИзменять", а заголовок "Предопределенный").

2. Создаем Форму элемента и Форму списка.

3. В обоих формах процедуры "ПриОткрытии". В Форме списка еще процедуру для первоначального заполнения типа ЗаполнитьПредопределенные() и получается почти идеальный справочник.

Модуль формы элемента:

Модуль формы списка:

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *