1с расширения добавить реквизит регистра сведений

Добавить ресурс регистра сведений в расширении

Я
   Mary01

06.05.20 — 09:04

Добрый день всем)

Как в расширении добавить новый ресурс в регистр сведений, заимствованный из основной конфигурации?

Платформа 8.3.15.1830. Такой возможности нет или я что-то не так делаю? В ветке «ресурсы» отсутствует возможность добавления нового ресурса. Как это обойти?

  

Партнерская программа EFSOL Oblako

   Василий Алибабаевич

1 — 06.05.20 — 09:10

(0) Добавь свой РС со своим ресурсом.

   Mary01

2 — 06.05.20 — 09:41

(1) А как я его сопоставлю с исходным регистром?

   Василий Алибабаевич

3 — 06.05.20 — 09:50

(2) По измерениям.

   1Снеговик

4 — 06.05.20 — 09:51

(0) зачем? что мешает добавить ресурс в основную конфу?

Не для этого расширения существуют, не надо в крайности впадать.

   1Снеговик

5 — 06.05.20 — 09:55

Изменяю реквизиты и добавляю новые объекты только в основной конфигурации, чтобы потом таких вопросов не задавать «А почему не работает»

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

Ну и это, платформу не собираешься обновлять? Уже 8.3.17 вышла. Или собираешься с глюками старых платформ при работе с расширениями бороться?

   Mary01

6 — 06.05.20 — 10:07

(4) В основной конфе отключены изменения, для порядка при обновлениях. Все доработки в расширениях — они ведь для этого предназначены.

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

   Mary01

7 — 06.05.20 — 10:12

(3) Как?

Добавила в расширении новый регистр, наименование такое же как в исходном, но с префиксом. В обоих регистрах измерение «ФизическоеЛицо».

В пользовательском режиме вижу их как 2 отдельных регистра. А нужен один, но с дополнительным ресурсом.

   Prog111

8 — 06.05.20 — 10:15

(1) И что это даст?

   Василий Алибабаевич

9 — 06.05.20 — 10:16

«А нужен один, но с дополнительным ресурсом.» Не нужно здесь рассказывать «как». Просто получайте нужные данные со второго регистра. Кстати и писать нужно в него же. Такое себе «вертикальное расщепление» набора данных.

   Василий Алибабаевич

10 — 06.05.20 — 10:17

(8) Получите возможность хранить еще один ресурс по той же комбинации измерений.

   unregistered

11 — 06.05.20 — 10:17

(6) >> В основной конфе отключены изменения, для порядка при обновлениях.

Идиотизм и маразм. Никакого отношения к порядку это не имеет. Чем больше изменений и доработок в расширениях тем больше бардака и неадекватного поведения системы после каждого обновления вы будете получать. Ведь никаких (от слова «совсем») механизмов для контроля совместимости обновлений с расширениями 1С не дала.

>> Все доработки в расширениях — они ведь для этого предназначены.

Какое-то массовое заблуждение. Прям пандемия головного мозга среди 1С-ников по имени «Расширение».

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

Короче! Автор! Не ипи мозг ни себе самому, ни окружающим, ни пользователям сказками о лёгкости обновления конфы с расширениями.

Включи возможность изменения и добавляй объекты и реквизиты в самой конфе.

   Prog111

12 — 06.05.20 — 10:19

(10) Ну тогда придется переписывать движения во всех документах, справочниках и обработках, где этот РС участвует. А также отчеты.

   Василий Алибабаевич

13 — 06.05.20 — 10:24

(12) И что? Жизнь вообще штука тяжелая…

   Василий Алибабаевич

14 — 06.05.20 — 10:25

+ (13) Типа для использования добавленного ресурса в тот же регистр вот это все

«переписывать движения во всех документах, справочниках и обработках, где этот РС участвует. А также отчеты.»

делать будет не нужно?

   Prog111

15 — 06.05.20 — 10:27

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

  

Василий Алибабаевич

16 — 06.05.20 — 10:38

(15) Ну так я и не спорю с unregistered. Я просто пытаюсь подсказать решение конкретной проблемы — «хранение дополнительного ресурса по существующим измерениям». Все. Для чего это нужно, что за собой повлечет, и не последовать ли совету из (11) — решение за ТС. Ему виднее.

09.06.2017

Расширение данных

Данная статья является анонсом новой функциональности.

Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.


Полное описание новой функциональности будет приведено в документации к соответствующей версии.


Полный список изменений в новой версии приводится в файле v8Update.htm.

Реализовано в версии 8.3.11.2867.

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

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

Что мы сделали

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

Вы можете добавлять собственные:

  • Справочники;
  • Документы;
  • Регистры сведений;
  • Планы обмена.

Кроме этого к справочникам и документам прикладного решения вы можете добавить собственные:

  • Реквизиты;
  • Табличные части;
  • Реквизиты табличных частей.

Как это устроено физически

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

Если расширение добавляет собственный справочник, то для него создаётся новая таблица в базе данных. В этом случае всё просто и очевидно.

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

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

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

01.png

В этой рабочей области обращение к данным справочника будет переадресовываться к расширенной таблице. А для остальных областей, для которых не применялось расширение, все обращения к данным будут адресоваться к старой, исходной таблице справочника _REFERENCE1.

Из такой реализации вытекает одно ограничение, которое, на наш взгляд, не должно существенно помешать вам использовать новые возможности.

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

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

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

Изменение расширяемой конфигурации

Итак, в базе данных появились расширенные таблицы. Но после этого конфигурация прикладного решения изменилась. Что будет происходить при реструктуризации базы данных?

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

Невозможность применения расширения

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

Самое главное – данные никуда не исчезнут, они останутся в таблицах. А вот способы работы с этими таблицами могут быть разными.

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

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

02.png

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

Удаление расширения

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

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

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

Загрузка, применение и реструктуризация

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

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

Если вы работаете с неразделённой базой, то будет установлена монопольная блокировка всей базы. А если база использует режим разделения данных, то будет установлена монопольная блокировка той области, в которую загружается расширение.

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

А при работе в режиме 1С:Предприятие процессы загрузки расширения и реструктуризации базы данных совмещены, не разделяются.

05.png

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

  1. Загрузка расширения в информационную базу;
  2. Проверка возможности применения расширения;
  3. Анализ изменений;
  4. Если на предыдущем этапе выяснилось, что нужно изменять структуру данных, то будет установлен монопольный режим;
  5. Реструктуризация (если она необходима).

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

Реструктуризация в режиме 1С:Предприятие выглядит проще, чем в конфигураторе. Чтобы понять разницу, напомним, как это выглядело в конфигураторе раньше.

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

03.png

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

Ограничения и планы

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

На текущий момент существенные, на наш взгляд, ограничения выглядят так:

  • Регистраторы регистра сведений. Заимствованному регистру нельзя назначить ни собственный, ни заимствованный регистратор (документ);
    • При этом собственному регистру можно назначить как заимствованный, так и собственный регистратор;
  • При обмене в распределенной информационной базе в главном узле и в подчинённом узле должен быть одинаковый набор расширений, модифицирующих структуру данных. Автоматическая синхронизация таких расширений между узлами пока не реализована;
  • В состав плана обмена (собственного или заимствованного) могут быть включены только собственные объекты расширения;

Эти ограничения мы планируем устранять, в ближайшее время мы будем работать в этом направлении.

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

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

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

Теги:
расширения 
8.3.11 

Фирма “1С” уделяет развитию расширений огромное внимание, в частности – расширениям данных.

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

Механизм развивается очень быстро, с каждым релизом появляются новые возможности – и сегодня мы рассмотрим ключевое изменение в редакции 8.3.12.

Ограничения расширений данных в 8.3.11

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

Для полноценных доработок конфигурации при помощи расширений в целом этого недостаточно.

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

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

Что изменилось в 8.3.12

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

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

Это достаточно распространенный на практике сценарий выполнения доработок.

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

Ограничения механизма расширения данных

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

20.04.2018 фирма “1С” в Заметках из Зазеркалья опубликовала планируемые изменения, которые должны появиться в платформе 8.3.13. И в нем первым пунктом опять – про регистры.

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

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

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

Видео – новые возможности 8.3.12 при работе с регистрами в расширении

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

Посмотрев его, Вы узнаете:

  • В чем отличия платформы 8.3.12 от 8.3.11 при работе с регистрами в расширениях
  • Какие особенности есть у проверки синтаксиса программных модулей из расширения
  • Какие ограничения существуют при работе с регистрами накопления при помощи расширений
  • При каких настройках регистра накопления система выдаст ошибку при обновлении конфигурации базы данных
  • Как переключить режим регистра накопления с итогов на агрегаты.

&nbsp

Хотите больше?

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

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

На мой взгляд, самое главное новшество в механизме расширений конфигурации это возможность в расширении конфигурации создавать собственные объекты – документы, справочники, планы счетов обмена и регистры сведений. А так же возможность создавать у заимствованных документов и справочников собственные табличные части и реквизиты. Исследуем эти новые возможности, для реализации примеров, я буду использовать конфигурацию 1С «Управляемое приложение».

У конфигурации должен стоять режим совместимости «Не использовать», так же как и у расширения.

Для этого создадим в конфигурации «Управляемое приложение» подсистему «Учет автомобилей» со следующими объектами

Справочники: Марки автомобилей, Автомобили, Гаражи

Документы: Прибытие в гараж, Выбытие из гаража.

Создадим новое расширение, которое назовем «Учет автомобилей», назначение этого расширения будет «Дополнение».

Создание нового расширения конфигурации

Добавим в новое расширение собственную картинку, в которую загрузим иконку автомобиля

Добавление общей картинки в расширении конфигурации

Общая картинка в расширении конфигурации

Теперь создадим новую подсистему, которую назовем «Учет автомобилей», в этой подсистеме отметим флаг «Включать в командный интерфейс» и в свойстве «Картинка» укажем нашу новую иконку.

Новая подсистема в расширении конфигурации

Создадим справочники: МаркиАвтомобилей, Автомобили (будет реквизит Марка с  типом ссылка на справочник МаркиАвтомобилей) и Гаражи.

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

 Новые справочники в расширении конфигурации

Точно так же создадим новые документы: Прибытие автомобиля и Выбытие автомобиля.

Новые документы в расширении конфигурации

Включим все наши новые объекты в подсистему.

Включение новых объектов расширения конфигурации в подсистему

Теперь запустим нашу конфигурацию и посмотрим на новую подсистему

Новая подсистема в конфигурации Управляемое приложение

Новая подсистема в конфигурации Управляемое приложение

Новая подсистема в конфигурации Управляемое приложение

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

Для этого заимствуем справочник Контрагент в расширение.

Заимствование справочника в расширение конфигурации

Заимствованный справочник в расширении конфигурации

Добавим для заимствованного справочника новый реквизит, который назовем Автомобиль.

Добавление нового реквизита в заимствованный справочник расширения конфигурации

Реквизит мы добавили, но на форме он еще не отобразился. Для этого необходимо заимствовать форму элемента справочника.

Форма заимствованная в расширении конфигурации

И добавить на заимствованную форму реквизит расширения.

Добавили элемент на заимствованную форму в расширении конфигурации

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

Новый реквизит из расширения в типовом справочнике

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

Семь бесплатных видео-урока по работе с расширениями конфигурации

Учимся перехватывать методы в расширении конфигурации

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Книга «Основы разработки в 1С: Такси»

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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

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

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

1с 8 консоль запросов не видит регистры из расширения

На практике по факту получается ситуация, что объекты конфигурации, добавленные в расширении с назначением «доработка» не будут доступны в основной конфигурации. В основной конфигурации становятся доступными объекты из расширений с назначением «Адаптация». Конечно, логически хочется, чтобы работало как дополнение, т.к. часто с этого и начинается создаваться расширение для реализации нужд клиента для доработки дополнительного функционала в базе. Но теория о назначениях расширений четко дает понять, что для новых объектов нужна адаптация.

Это же касается того случая, когда добавляется новый реквизит в расширении для документа, справочника или регистра. Чтобы потом можно было запросами обращаться к добавленным реквизитам в расширении — оно так же должно быть «Адаптацией»:

Так же из теории по данным из книги «Разработка в системе 1С:Предприятие 8.3». Издание 2. Е. Ю. Хрусталева. Назначение для расширения «Исправление» используется для исправления ошибок в конфигурации. Оно первым по очередности из всех расширений применяется к конфигурации. Потом применяются расширения с назначением «Адаптация». Такие расширения содержат доработки конфигурации при внедрении под конкретные задачи клиента. И последними применяются расширения с назначением «Дополнение». Оно может содержать различные дополнительные сервисы для конфигурации (например, набор дополнительных отчетов, обработок).

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

Оцените, оказалась ли эта публикация полезна для Вас?




© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

26-02-2021

Журавлев А.С.
(Сайт azhur-c.ru)

Назад

Расширения конфигурации

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

  • Изменять алгоритмы
  • Изменять формы и добавлять новые формы
  • Добавлять реквизиты к существующим объектов (кроме регистров)
  • Добавлять новые объекты

Демонстрационная задача

Имеется конфигурация, в которой реализован складской учёт товаров.

Необходимо реализовать:

  • Отчет по остаткам товаров
  • Учет взаиморасчетов с поставщиками
  • Расчет стоимости поставки с учётом скидок

Импорт существующей базы

1. Добавить новую базу данных

2. Создание новой информационной базы

3. Создание информационной базы без конфигурации для разработки новой конфигурации или загрузки выгруженной ранее информационной базы

4. Укажите наименование информационной базы и выберите тип расположения информационной базы «На данном компьютере или на компьютере в локальной сети»

5. Укажите параметры информационной базы

6. Добавление информационной базы/группы

Выбор созданной информационной базы

1. Выбираем базу и нажимаем кнопку «Конфигуратор»

Открываем дерево конфигурации

Конфигурация — Открыть конфигурацию

Загрузка информационной базы

Администрирование — Загрузить информационную базу

Файл базы данных имеет расширение .dt.

Просмотр древа исходных данных для выполнения задания

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

Настройка режима поддержки (когда необходимо доработать саму конфигурацию)

Конфигурация — Поддержка — Настройка поддержки
Включение возможности изменения

Создание расширения

Конфигурация — Расширения конфигурации — Добавить

Заполняем поля данных нового расширения.

Для уникальности расширения дополнительно заполняется поле «Префикс».

Двойной щелчок на имени расширения — открытие его древа.

Создание отчета в расширении 

Отчеты — Добавить.

Для создания отчета по схеме компоновки данных выберите «Открыть схему компоновки данных».

Подтверждаем действия по созданию макета.

Данные для отчета будем получать из запроса с помощью конструктора запросов.

Для данного отчета будем заимствовать регистр конфигурации «Остатки товаров».

ПКМ по регистру в древе конфигурации — Добавить в расширение

Регистр будет отображен теперь и в древе расширения. 

Так же заимствуется каждый элемент регистра. В нашем случае это измерения и ресурсы.

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

Запрос будем создавать с помощью конструктора запроса.

Выберем нужные поля.

Укажем ресурс — КоличествоОстаток.

Установим выбранные поля в настройках.

Добавим новую группировку.

Оставим для нее настройки по умолчанию.

Просмотрим результат в режиме предприятия.

Управление доступными расширениями из режима предприятия

Выбираем Все функции…

(Если эта кнопка не доступна, включим ее Сервис-Параметры-Отображать команду «Все функции»)

Стандартные — Управление расширениями конфигурации.

Активно — расширение работает, доступно в предприятии.

При попытке изменить активность при открытом расширении в конфигураторе может быть выведена следующая ошибка.

Изменения этих настроек произойдут при перезапуске конфигуратора.

Из этого списка также можно экспортировать расширения конфигурации в формате .cfe, а также импортировать в него расширения с этим форматом.

Учет расчета с поставщиками

Для этого сначала заимствуем документ ПоступлениеТоваров в наше расширение.

Посмотрим, как реализована обработка проведения.

Видно, что пока реализован только складской учет с регистром ОстаткиТоваров.

Заимствуем справочник Контрагенты из основной конфигурации.

А также документ ПоступлениеТоваров с процедурой из модуля объекта (щелчок на названии процедуры ОбработкаПроведения).

Выберем тип вызова нашей доработки — После.

Этапы выполнения процедуры из расширения (Перед, После):

Вид процедуры ОбработкаПроведения в расширении.

Для документа ПоступлениеТоваров заимствуем реквизиты и табличную часть с реквизитом Сумма (реквизиты табличной части заимствуются каждый по отдельности).

Для учета расчетов с поставщиками создадим новый регистр накопления в расширении.

Зададим название, синоним и выберем тип Остатки.

Добавим измерение регистра Поставщик с типом СправочникСслыка.Контрагенты.

А также ресурс — Сумма.

Установим документ ПоступлениеТоваров в качестве регистратора.

Опишем в модуле объекта этого документа в расширении алгоритм проведения.

По умолчанию расширения подключаются в безопасном режиме и не позволяют вызывать методы модулей расширений при проведении. В этом случае будет отображено следующее оповещение:

В списке расширений конфигурации снимем галочку с «Безопасный режим».

Теперь можем посмотреть регистр в режиме предприятия после проведения одного из докуменов ПоступлениеТоваров: Все функции… — Регистры — Взаиморасчеты с поставщиками.

Расчет стоимости поставки с учетом скидки

Нужно в документе «Поступление товаров» добавить новое поле «Процент скидки», при изменении которого будет происходить перерасчет суммы.

Добавим в расширении к табличной части этого документа новый реквизит «Процент скидки».

Заимствуем из основной конфигурации форму документа в расширение.

Перенесем реквизит «Процент скидки» на форму, перетащив его из правой колонки в левую.

Установим его перед реквизитом ТоварыСумма с помощью стрелок.

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

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

Нам необходимо дополнить данную процедуру. Для этого нажимаем на ее название ПКМ и добавляем в расширение .

Выберем тип вызова — Вызывать вместо.

Алгоритм работы «Вызывать вместо»:

Будет добавлен новый общий модуль в расширение со следующим содержанием.

ПродолжитьВызов(Форма) вызывает процедуру родительского модуля основной конфигурации.

Локальные переменные родительского модуля не доступны здесь.

Опишем перерасчет Суммы во вновь созданном модуле расширения.

Посмотрим результат работы в режиме предприятие.

Экспорт расширения из конфигуратора

Действия — Конфигурация — Сохранить конфигурацию в файл.

Инструкция создана на основе вебинара компании «1C-ГЭНДАЛЬФ» подготовки ко второму этапу конкурса IT-Планета «Программирование 1С: Предприятие 8».

Contents

  • 1 Механизм расширения конфигурации 1C
  • 2 Как добавить расширение конфигурации 1С 8.3

Механизм расширения конфигурации 1C

Приветствую уважаемый читатель, в данной статье предлагаю ознакомиться с Механизмом расширения конфигурации  1С 8.3, в частности мы познакомимся с его работой в режиме Адаптация, а также рассмотрим пример программного изменения Формы объекта при помощи расширения. Ну, а сейчас немного теории…

Как указано в описании: «Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).»

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

При разработке расширений следует учитывать следующие факты:

— в системе могут функционировать более одного расширения.

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

Расширение может иметь одно из следующих назначений:

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

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

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

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

Ограничения использования расширений:

Расширения конфигурации не поддерживают создание следующих собственных объектов:

— Параметры сеанса.

— Общие реквизиты.

— Критерии отбора.

— Подписки на события.

— Регламентные задания.

— Функциональные опции и параметры функциональных опций.

— Определяемые типы.

— Хранилища настроек.

— Языки.

— Константы.

— Журналы документов.

— Бизнес-процессы и задачи.

— Внешние источники данных.

Не поддерживается расширение следующих объектов:

— Нельзя создавать подчиненные подсистемы.

— Если объект не может быть собственным объектом расширения его расширение также не поддерживается.

— Состав значений перечислений;

Не поддерживается добавление реквизитов и табличных частей для:

— План видов характеристик;

— План счетов;

— План видов расчетов.

Не поддерживается изменение структуры регистров всех видов. Поддерживается только расширение состава регистраторов.

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

Стоит помнить, что Механизм расширения конфигурации – это перспективный постоянно развивающийся механизм и с выходом новых версий платформ их функционал только расширяется и лишается текущих недочетов.

Как добавить расширение конфигурации 1С 8.3

Предлагаю рассмотреть задачу добавления нового Справочника «Категория должности по Классификатору Предприятия» с выводом его значения на Форму Справочника Должности, на базе Конфигурации ЗУП 3.1

Для создания расширения необходимо запустить 1С в режиме конфигуратора.

В конфигураторе необходимо зайти в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Далее нажмем кнопку «Добавить». Мы увидим диалоговое окно создания расширения:

Стоит отдельно выделить поле Назначение – необходимо выбрать его значение в зависимости от решаемой задачи – т.к. мы выполняем добавление объектов по требованиям конкретного заказчика – нам подойдет вариант «Адаптация».

После нажатия на кнопку «ОК» — двойным кликом по появившейся строке откроем Конфигурацию расширения. Мы увидим практически пустое дерево конфигурации.

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

Разместим наш новый Справочник в Подсистеме «ШтатноеРасписание» для этого необходимо добавить эту подсистему в Расширение – Перейдем в дерево основной Конфигурации и  нажмем правой кнопкой мыши на строке с нужной подсистемой и выберем пункт «Добавить в расширение».

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

Далее добавим в расширение Справочник Должности и добавим для него новый реквизит КатегорияДолжности с типом СправочникСсылка.Расш1_КатегорияДолжностиПоКлассификаторуПредприятия

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

— Интерактивно, добавив Форму «ФормаЭлемента» в расширение

— Программно, не добавляя Форму Справочника в расширении, а добавив подходящую процедуру, вызываемую в обработчике Формы «ПриСозданииНаСервере» в расширение.

Останавливаться на плюсах и минусах каждого решения не будем, а ниже рассмотрим оба варианта.

Интерактивное изменение Формы в расширении.

Для того чтобы вывести Реквизит на форму интерактивно: необходимо добавить саму Форму «ФормаЭлемента» в расширение. Обращу ваше внимание на следующий момент – для того чтобы появилась возможность Интерактивного добавления Реквизита объекта на форму необходимо сам Объект тоже добавить в расширение.

Далее добавим  новый Реквизит в подходящую Группу на форме.

Запустив 1С в режиме Предприятия убедимся, что новый Справочник появился в интерфейсе

А открыв элемент справочника Должности, увидим, что добавляемый реквизит Категория должности также в нужном месте.

Программное изменение Формы в расширении.

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

Предлагаю воспользоваться одной из процедур вызываемых в обработчике Формы «ПриСозданииНаСервере», в которую передается наша Форма в качестве параметра например УправлениеСвойствами.ПриСозданииНаСервере.

Перейдем в Общий модуль УправлениеСвойствами где находится данная процедура, и кликнем правой кнопкой мыши по процедуре ПриСозданииНаСервере. В выпадающем меню выберем пункт «Добавить в расширение»

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

После проделанных процедур увидим что в Расширение был добавлен общий модуль УправлениеСвойствами  и процедура Расш1_ПриСозданииНаСервере с аннотацией &После(«ПриСозданииНаСервере»)

Далее в добавленную процедуру поместим следующий код:

//Определим тип, чтобы ограничить добавление реквизитов только нужными нам Формами
Если ТипЗнч(Форма.СсылкаНаобъект) = Тип("СправочникСсылка.Должности") Тогда

// Добавим элемент формы "Категория должности"
мИмя = "Расш1_КатегорияДолжности";

    Если Форма.Элементы.Найти(мИмя) = Неопределено Тогда
        Элемент = Форма.Элементы.Добавить(мИмя, Тип("ПолеФормы"), Форма.Элементы.ОплатаГруппа);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;
        Элемент.ПутьКДанным = "Объект.КатегорияДолжности";
        Элемент.Заголовок = "КатегорияДолжности (пр.)";
    КонецЕсли;

КонецЕсли;

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

Готовое расширение можно выгрузить в файл перейдя в конфигураторе в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». В открывшемся списке расширений по правой кнопкой мыши можно вызвать выпадающее меню, либо выбрать пункт командной панели «Конфигурация» и  выбрать пункт «Сохранить конфигурацию в файл…». На выходе мы получим Файл типа *.cfe который можно передать заказчику.

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

Понравилась статья? Поделить с друзьями:
  • 1с реквизит табличной части в динамический список
  • 1с сообщение пользователю с указанием на реквизит
  • 1с стандартные реквизиты справочника в расширение
  • 1с управляемая форма реквизит использовать всегда
  • 1с управляемые формы получить реквизит на клиенте