нельзя установить область действия расширения конфигурации в значение разделение данных
Область действия расширения конфигурации
Возможность изменения области действия расширения конфигурации была добавлена в версии платформы 8.3.12. Теперь стало возможным управлять областью действия расширения конфигурации.
Варианты значений области действия расширения конфигурации
Теперь рассмотрим, как можно изменить область действия расширения конфигурации. При установке области действия расширения конфигурации доступны 2 значения:
Чтобы вызвать изменение области действия расширения конфигурации — необходимо выполнить команду контекстного меню «Изменить область действия расширения конфигурации»:
Если Вы выполните эту команду в конфигурации, в которой не используется разделение данных, Вы получите предупреждение: «Нельзя установить область действия расширения конфигурации в значение РазделениеДанных в информационной базе, не использующей разделение данных».
Режим разделения данных будет доступен только в том случае, если у Вас в конфигурации есть общий реквизит с установленным свойством «Разделение данных» в значение «Разделять». Также для этого реквизита должен быть настроен состав объектов, в которых будет использоваться разделение данных в разрезе общего реквизита.
Ошибка: «Ошибка применения расширения конфигурации. «
Если у Вас есть расширение конфигурации и оно перестало работать с выводом ошибки: «Ошибка применения расширения конфигурации. Нельзя установить область действия расширения конфигурации в значение РазделениеДанных в информационной базе, не использующей разделение данных» — для восстановления расширения Вам необходимо выполнить следующие шаги:
После этих действий для расширения конфигурации установится верное значение области действия расширения конфигурации и ошибка исчезнет.
Расширения (проблемы и решения)
Проблема №1
Работа с таблицей невозможна. Структура таблицы несовместима с текущими расширениями конфигурации
Данная ошибка возникает при отключении расширения (снятие флага «Активно») при попытке прочитать таблицы (запросом, набором записей и т.д.) которые были модифицированы расширением.
Создали расширение, в котором есть заимствованный регистр накопления и добавленный новый документ, который участвует в движении по этому регистру. Даже несмотря на то, что новый добавленный документ не сделал еще никаких движений по регистру, ошибка будет появляться.
Возможность отключить расширение «на время» и продолжить работу в базовой конфигурации очень удобная штука, но к сожалению сделать это как оказалось не всегда возможно.
Проблема №2
На форуме периодически встречаются темы следующего содержания:
Для того, чтобы использовать отчеты\обработки основной конфигурации (в которых есть реквизиты с типом «ЛюбаяСсылка» или конкретным типом) в своих расширениях необходимо либо заменить используемый тип на тип «Неопределено», либо заимствовать отчет\обработку и выполнить замену типа уже в расширении.
Личный опыт
При написании расширений, которые предполагают использование ссылочных типов, я использую следующий подход:
Вместо реквизита «Ссылка» я создаю 2 реквизита «СсылкаID» и «ТипCcылки» где:
Конечно, у такого подхода есть свои минусы (отсутствие ссылочной проверки, отсутствие автоматического включения в интерфейс объекта), но он позволяет создавать универсальные расширения, которые будут работать в паре с любыми другими расширениями.
Заметки из Зазеркалья
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Реализовано в версии 8.3.11.2867.
Теперь с помощью расширений конфигурации вы можете добавлять к прикладному решению собственные структуры для хранения данных: справочники, документы, регистры сведений.
В расширении вы добавляете (или модифицируете) соответствующий объект конфигурации. При загрузке расширения, «на лету», выполняется реструктуризация базы данных, и, перезапустив сеанс, вы сразу же можете заполнять новые структуры своими данными.
Что мы сделали
Можно сказать, что это самая сложная и самая ожидаемая доработка механизма расширений. Мы доработали механизм расширений таким образом, что теперь вы можете добавить в прикладное решение объекты или реквизиты, данные которых будут сохранены в информационной базе. Раньше вы могли дорабатывать прикладное решение, но расширение не влияло на структуру хранимых данных. Теперь с помощью расширений вы можете изменить и структуру данных тоже.
Вы можете добавлять собственные:
Кроме этого к справочникам и документам прикладного решения вы можете добавить собственные:
Как это устроено физически
Чтобы не усложнять, рассмотрим основные принципы работы этого механизма на примере справочника.
Если расширение добавляет собственный справочник, то для него создаётся новая таблица в базе данных. В этом случае всё просто и очевидно.
Сложнее обстоят дела, когда расширение модифицирует уже существующую структуру данных. Если расширение добавляет собственный реквизит к справочнику прикладного решения, то для этого справочника создаётся отдельная таблица с новой структурой (с дополнительной колонкой для нового реквизита). Будем называть её расширенная таблица. В неё переносятся данные из старой таблицы справочника. В дальнейшем все обращения к этому справочнику будут переадресовываться к расширенной таблице.
Независимо от количества расширений, модифицирующих этот справочник, расширенная таблица будет всегда одна. Её структура будет содержать изменения, добавленные всеми расширениями.
Если прикладное решение использует разделение данных, и расширение применяется к одной рабочей области, то в расширенную таблицу будут копироваться только те данные справочника, которые относятся к этой области. На рисунке расширенная таблица называется _REFERENCE1X, оранжевым цветом обозначена колонка, добавленная расширением.
В этой рабочей области обращение к данным справочника будет переадресовываться к расширенной таблице. А для остальных областей, для которых не применялось расширение, все обращения к данным будут адресоваться к старой, исходной таблице справочника _REFERENCE1.
Из такой реализации вытекает одно ограничение, которое, на наш взгляд, не должно существенно помешать вам использовать новые возможности.
Если расширение, модифицирующее структуру данных, вы хотите применять к отдельным областям, то все объекты прикладного решения, которые модифицируются расширением, должны разделяться только «независимо».
Если же вы хотите модифицировать и те объекты, которые разделяются «независимо и совместно», то в этом случае вам не удастся применить расширение только к одной области. Его надо будет применить ко всей базе, ко всем областям сразу. Для этого нужно указать, что разделение данных на расширения «не действует» (свойство общего реквизита Разделение расширений конфигурации = Не использовать).
Дальше рассмотрим несколько ситуаций, которые могут возникнуть после того, как вы применили к прикладному решению расширение, модифицирующее структуру данных.
Изменение расширяемой конфигурации
Итак, в базе данных появились расширенные таблицы. Но после этого конфигурация прикладного решения изменилась. Что будет происходить при реструктуризации базы данных?
Все расширенные таблицы также будут реструктуризироваться. Общая стратегия заключается в том, что все расширенные таблицы должны обновиться до нового состояния расширяемой конфигурации. При этом если в процессе их обновления возникнут ошибки, вызванные исключительно изменениями основной конфигурации, то информация об этом будет выдана так же, как и раньше.
Невозможность применения расширения
Самое главное – данные никуда не исчезнут, они останутся в таблицах. А вот способы работы с этими таблицами могут быть разными.
Самый простой случай, если расширение добавляло собственный справочник. Тогда мы оказываемся в ситуации, когда таблица есть, а метаданных, которые её описывают, нет. В этом случае данные просто будут недоступны. До тех пор, пока не будет решена проблема с применением расширения.
Более интересная ситуация получается тогда, когда расширение модифицировало существующий справочник. В этом случае мы имеем расширенную таблицу и метаданные (из конфигурации), которые описывают только часть этой таблицы. В такой ситуации данные, находящиеся в колонках, добавленных расширением, также будут недоступны. Но остальные данные можно будет прочитать.
Однако запись в этот справочник будет недоступна. До тех пор, пока не будет решена проблема с применением расширения. То есть до тех пор, когда у платформы не появится полный набор метаданных, описывающих эту таблицу.
Удаление расширения
Раньше вы могли спокойно удалять расширения из информационной базы. Это не имело никаких последствий для данных, так как расширения привносили только свою функциональность.
Теперь удаление расширений становится ответственной операцией. Потому что при удалении расширения из базы данных будут удалены и все данные, которые содержатся в структурах, добавленных расширением.
При этом если получается так, что конечная структура таблиц полностью описывается конфигурацией прикладного решения, будет выполнена и «обратная» реструктуризация. То есть данные из расширенных таблиц будут скопированы обратно в исходные таблицы объектов, а сами расширенные таблицы будут удалены.
Загрузка, применение и реструктуризация
Как вы понимаете, результатом использования новых возможностей расширения должна стать база данных с новыми таблицами. Процесс изменения структуры таблиц базы данных (реструктуризация) обычно, раньше, выполнялся только в конфигураторе. В тот момент, например, когда вы нажимали кнопку Обновить конфигурацию базы данных.
Теперь ситуация меняется. Расширения могут подключаться как в конфигураторе, так и в режиме работы 1С:Предприятие. Если при этом требуется изменить структуру таблиц, то в том же режиме будет выполняться и реструктуризация. И для её выполнения требуется монопольный режим.
Если вы работаете с неразделённой базой, то будет установлена монопольная блокировка всей базы. А если база использует режим разделения данных, то будет установлена монопольная блокировка той области, в которую загружается расширение.
При работе в конфигураторе реструктуризация, как и раньше, выполняется в момент обновления конфигурации базы данных. То есть сначала вы загружаете (или создаёте) расширение, сохраняете его в информационной базе. А затем выполняете обновление конфигурации базы данных. В этот момент происходит реструктуризация и создание новых и расширенных таблиц.
А при работе в режиме 1С:Предприятие процессы загрузки расширения и реструктуризации базы данных совмещены, не разделяются.
То есть в момент добавления расширения, или в момент его загрузки в существующее расширение, будут выполнены следующие действия:
Если на 2 шаге окажется, что расширение применить невозможно, весь процесс будет возвращён к исходному состоянию, в том числе и загрузка расширения в информационную базу.
Реструктуризация в режиме 1С:Предприятие выглядит проще, чем в конфигураторе. Чтобы понять разницу, напомним, как это выглядело в конфигураторе раньше.
Сначала платформа анализировала изменение метаданных и готовила всё, что необходимо для последующего изменения структуры базы данных. Когда всё было готово, она отображала диалог будущих изменений, и ожидала от вас явной команды для того, чтобы всё это выполнить. Вы соглашались, и платформа начинала менять структуру базы данных. Если в этом месте происходил сбой, то оставшиеся изменения платформа выполняла при следующем запуске конфигуратора. Если реструктуризация не была завершена, а вы пытались запустить сеанс 1С:Предприятия, платформа не позволяла вам это сделать, и предлагала перейти в конфигуратор, чтобы завершить реструктуризацию.
Теперь, когда реструктуризация выполняется в режиме 1С:Предприятие, всё происходит так же, но проще. Отсутствует диалог явного принятия будущих изменений. Если в фазе подготовки никаких ошибок не возникло, платформа автоматически примет все изменения и изменит структуру базы данных. Если в фазе изменения структуры базы данных произойдёт сбой, то завершение изменений будет выполнено при следующем запуске сеанса 1С:Предприятия (или при следующем входе в область, если база в режиме разделения данных). То есть тут не требуется участие конфигуратора ни на какой стадии.
Ограничения и планы
Нужно сказать, что в описываемой версии мы сделали не всё, что хотелось сделать. Однако мы решили, что важнее выпустить то, что уже сделано, пусть даже с некоторыми ограничениями.
На текущий момент существенные, на наш взгляд, ограничения выглядят так:
Эти ограничения мы планируем устранять, в ближайшее время мы будем работать в этом направлении.
Кроме этого мы планируем увеличить набор объектов конфигурации, которые можно дорабатывать с помощью расширений.
Также мы будем работать над тем, чтобы упростить создание расширений, упростить их адаптацию к изменениям прикладного решения (тот случай, когда расширение перестаёт подключаться).
Помимо этого мы готовы принимать ваши пожелания, анализировать их, и учитывать. В настоящий момент существует довольно широкий спектр задач и направлений для дальнейшего развития, поэтому своими пожеланиями вы можете повысить приоритет тех или иных задач в нашей будущей работе. Прежде всего, нам хотелось бы увидеть пожелания, основанные на реальной практике создания и использования расширений.
Заметки из Зазеркалья
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Планируется в версии 8.3.20 Пробовать
Мы продолжаем развивать функциональность расширений, чтобы вы могли с их помощью делать всё более сложные и функциональные кастомизации. В версии 8.3.20 мы добавим в расширения ещё несколько новых возможностей.
Поддержка определяемых типов, планов видов характеристик и общих реквизитов
В расширениях будут поддержаны определяемые типы.
Как это можно использовать?
Предположим, у нас есть конфигурация для автоматизации торговли. В ней есть определяемый тип Вес (Число (10,3)), который используется для определения веса продаваемых товаров (т.е. учет ведется с точностью до грамма).
Благодаря поддержке определяемых типов в расширениях мы можем сделать расширение, позволяющее этой конфигурации работать с ювелирными изделиями (где учет веса ведется с точностью до одной сотой грамма). Для этого мы добавляем в расширение определяемый тип Вес из основной конфигурации и переопределяем его как Число (10,5).
В расширениях также будут поддержаны планы видов характеристик – их можно будет добавить из конфигурации в расширение и переопределить в соответствии с решаемой задачей.
Точно так же можно будет добавить из конфигурации в расширение общий реквизит и переопределить его (например, расширив тип). Эта функциональность будет недоступна, если этот общий реквизит используется для разделения данных.
Поддержка наборов типов
В версии 8.3.20 будут добавлены новые возможности использования ссылок на объекты расширений.
Так, например, массив, полученный вызовом метода Справочники.ТипВсеСсылки().Типы(), будет содержать типы справочников как из конфигурации, так и из расширений (аналогично будут себя вести методы Документы.ТипВсеСсылки().Типы() и т.д.). Ранее эти методы возвращали только соответствующие типы, определенные в конфигурации.
Также в реквизит типа ЛюбаяСсылка можно будет помещать ссылки на объекты типов, определенных в расширениях. В реквизиты типа СправочникСсылка, ДокументСсылка и т.д. можно будет помещать ссылки на объекты соответствующих типов из расширений. Ранее после присвоения таким реквизитам ссылок на объекты типов, определенных в расширениях, значение реквизита становилось равным НеОпределено.
Это нововведение, помимо прочего, позволит разработчикам расширений легче встраивать свои расширения в стандартные механизмы БСП, использующие наборы и определяемые типы.
Поддержка предопределенных в справочниках
В версии 8.3.20 можно будет добавлять предопределенные элементы в собственные справочники расширений. Ранее эта возможность была доступна только для планов видов характеристик, планов счетов и планов видов расчета, определенных в расширениях
Возможности расширения конфигурации
Последние версии прикладных решений линейки конфигураций ERP 2.4 на момент написания статьи, например Управление торговлей версия 11.4.13.123 работает в режиме совместимости “Версия 8.3.14”. Поскольку режим совместимости расширения конфигурации не может быть больше режима совместимости основной конфигурации, то мы не можем использовать новые возможности расширения конфигурации более старших версий технологической платформы, чем версии в режиме совместимости.
Использование констант в расширениях недопустимо в режиме совместимости 8.3.15 и ниже
При проверке метаданных обнаружены ошибки!
Операция не может быть выполнена.
На сегодняшний день в расширении конфигурации не поддерживается создание следующих собственных объектов:
В результате ограничения на создание собственных регламентных заданий в расширении не возможно создавать обмены данными, которые должны выполняться по расписанию.
Новые возможности расширения конфигурации в последних версиях технологической платформы 1С.
Версия 8.3.18
Реализована возможность расширять типы реквизитов заимствованных объектов, кроме:
1. типов общих реквизитов;
2. реквизитов с типами внешних источников данных;
3. реквизитов, имеющие определяемый тип;
4. реквизит Тип плана видов характеристик.
В документации данное изменение описано здесь.
Версия 8.3.17
Реализована возможность заимствования подписок на события и создания собственных подписок в расширении.
В документации данное изменение описано здесь и здесь.
Версия 8.3.16
Реализована возможность создания в расширении конфигурации:
1. констант;
2. функциональных опций и параметров функциональных опций;
3. критериев отбора.
Реализована возможность расширения:
1. состава заимствованных функциональных опций (собственными и заимствованными объектами);
2. состава заимствованных критериев отбора реквизитами собственных объектов расширения.
В документации данное изменение описано здесь, здесь и здесь.
Версия 8.3.15
Реализована возможность помечать какое-либо контролируемое свойство расширения таким образом, что несовпадение этого свойства в расширяемой конфигурации и в расширении не будет блокировать применение расширения, но пользователь получит предупреждение о том, что значение свойства в расширении и расширяемой конфигурации различаются.
В документации данное изменение описано здесь, здесь и здесь.
Версия 8.3.14
1. Реализована возможность расширять состав значений заимствованного перечисления. При удалении расширения, в котором расширен список значений перечисления, реквизиты объектов информационной базы, хранящие удаляемые значения, заполняются пустой ссылкой на перечисление.
В документации данное изменение описано здесь и здесь.
2. Для объектов метаданных, заимствованных в расширение, реализовано свойство Комментарий. Свойство предназначено для использования в процессе разработки расширения и не используется при формировании результирующей конфигурации и проверках применимости расширения.
В документации данное изменение описано здесь.
Версия 8.3.13
В расширении конфигурации реализована возможность создания следующих собственных объектов:
1. планы видов характеристик;
2. планы счетов;
3. планы видов расчета;
4. регистры накопления;
5. регистры бухгалтерии;
6.регистры расчета.
Для собственных регистров накопления не поддерживается создание агрегатов.
Реализована возможность включать собственные регистры любого вида в состав движений собственных и заимствованных документов расширения.
В документации данное изменение описано здесь.
Версия 8.3.12
Реализована возможность управлять областью действиярасширения конфигурации и активностью установленных расширений. Областью действия расширения может быть или текущая область данных или вся информационная база.
Управление активностью позволяет отключить расширение, не удаляя его из информационной базы.
Для объекта РасширениеКонфигурации реализованы свойства ОбластьДействия и Активно.
Изменен порядок подключения расширений: в первую очередь подключаются расширения, имеющие областью действия всю информационную базу.
В документации данное изменение описано здесь, здесь и здесь.
Для собственных и заимствованных документов расширения реализована возможность формировать движения по любым заимствованным регистрам, кроме оборотных регистров накопления с включенными агрегатами.
В документации данное изменение описано здесь.
Версия 8.3.11
Реализована возможность добавлять в расширение конфигурации ;
Для заимствованных справочников и документов реализована возможность добавления реквизитов и табличных частей в расширении.
В состав собственного плана обмена могут входить только собственные объекты расширения. Собственный план обмена расширения не может участвовать в распределенной информационной базе. Для заимствованных планов обмена реализована возможность включать в состав плана обмена собственные объекты расширения.
Список ограничений приведен в документации.
При удалении расширения, все данные, которые были внесены в собственные объекты расширения, будут удалены из информационной базы.
В документации данное изменение описано здесь, здесь, здесь, здесь,
здесь, здесь, здесь, здесь, здесь и здесь.