Проверять значение при подключении расширения 1с
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Реализовано в версии 8.3.15.1489.
Мы выполнили ряд доработок, которые упрощают поддержку и подключение расширений в простых и частых сценариях использования.
Упрощение поддержки небольших изменений в методах
При создании расширений бывают случаи, когда вам нужно полностью заменить какой-то метод основной конфигурации собственным методом. Для этого вы можете использовать аннотацию &Вместо. В таком случае, как бы ни изменялась типовая конфигурация, будет работать только ваш метод. Другими словами вы полностью берёте ответственность за работу расширяемого метода на себя.
Но часто возникают ситуации, когда вы не хотите полностью менять поведение метода конфигурации, а хотите лишь немного подкорректировать его. Так, чтобы основное «содержание» метода менялось бы вместе с изменениями конфигурации, и в то же время в нём сохранялись ваши небольшие изменения.
Специально для таких небольших доработок мы сделали компромиссное решение – новую аннотацию &ИзменениеИКонтроль. Она позволяет вам добавить собственные изменения в метод, сохраняя, при этом, его исходный текст.
В результате, если в Конфигураторе при проверке применимости обнаружится, что исходный текст метода (в расширении) не совпадает с новым текстом метода в конфигурации, будут выполнены следующие действия:
- такой метод не применится и попадёт в список ошибок применения расширения,
- Конфигуратор поймёт, что эта ошибка относится к особенностям работы аннотации &ИзменениеИКонтроль,
- в колонке Действие Конфигуратор предложит вам Восстановить соответствие с методом конфигурации,
- с помощью объединения по трём точкам платформа изменит в расширении исходный текст так, чтобы он соответствовал новому тексту модуля (для этого вы должны заранее настроить в Конфигураторе использование внешней программы для сравнения модулей).
В такой ситуации вы можете заимствовать этот метод в расширение, и использовать при этом аннотацию &ИзменениеИКонтроль.
Таким образом, заимствованный модуль будет содержать сразу два «варианта» текста:
Как и в случае использования аннотации &Вместо, метод с аннотацией &ИзменениеИКонтроль полностью заменяет собой расширяемый метод конфигурации. С одним расширяемым методом конфигурации может быть связан только один метод, имеющий аннотацию &ИзменениеИКонтроль. Если есть другие методы с этой аннотацией, расширяющие исходный метод, они будут признаны ошибочными и будут показаны в списке ошибок применения расширения.
Несмотря на всё удобство аннотации &ИзменениеИКонтроль, мы всё равно рекомендуем подходить к её использованию очень взвешенно. Основным сценарием для расширения типовых конфигураций являются аннотации &Перед и &После. Аннотацию &ИзменениеИКонтроль вы можете использовать тогда, когда &Перед и &После не позволяют достичь желаемого результата.
Облегчение поддержки расширений в случае переименования объектов конфигурации
Если в расширении есть заимствованные из конфигурации объекты, то каждый раз, при проверке применимости, платформа контролирует, что в конфигурации всё ещё есть объекты, соответствующие заимствованным. При этом сопоставление объектов происходит по именам.
Если в конфигурации, после создания расширения, переименовали какой-либо из расширяемых объектов, расширение применено не будет. Чтобы оно снова начало применяться, необходимо соответствующий заимствованный объект аналогичным образом переименовать в расширении.
Это понятное ограничение, но технически следовать ему не очень удобно. Такое переименование в расширении приходится выполнять вручную. К тому же не всегда бывает ясно, какое исходное имя было у переименованного объекта.
Чтобы облегчить вам эту работу, мы сделали следующие доработки:
- Для свойств заимствованных объектов мы добавили новый тип действия – Предупреждать о расхождении при подключении расширения. Он отображается как обычный флажок. Кроме этого для заимствованных объектов мы добавили новое контролируемое свойство Объект расширяемой конфигурации. Оно недоступно для редактирования, заполняется автоматически при заимствовании и содержит внутренний идентификатор расширяемого объекта.
- Для самого расширения мы добавили новое свойство Поддерживать соответствие объектам расширяемой конфигурации по внутренним идентификаторам. По умолчанию оно имеет значение Истина.
В результате, если вы не меняли стандартное значение нового свойства расширения, то в Конфигураторе, при переименовании объекта расширяемой конфигурации, во всех открытых расширениях будут соответствующим образом переименованы заимствованные объекты расширения.
Если же конфигурация и расширение разрабатываются отдельно, то в Конфигураторе, при добавлении расширения, в списке ошибок проверки применимости у вас появятся новые действия, основанные на том, что в расширении теперь сохраняются идентификаторы расширяемых объектов:
- Переименовать, сохранив соответствие,
- Выбрать соответствие,
- Сохранить имя, изменив соответствие,
- Установить значение из объекта конфигурации,
- Очистить соответствие,
- Отключить проверку,
- Удалить объект.
Облегчение подключения «универсальных» расширений
«Универсальными» мы, условно, называем такие расширения, которые приносят в конфигурацию свою функциональность, и, как правило, не содержат заимствованных объектов. Например, это может быть расширение, добавляющее в конфигурацию какие-то обработки или отчёты.
Пользователи конфигурации, у которых есть роли, автоматически дающие права на новые объекты, смогут воспользоваться этими обработками и отчётами. Но дать права на них другим пользователям бывает сложно.
Хорошо, если разработчик расширения предусмотрел собственную роль (роли), включающую объекты расширения. Тогда администратор может назначить эту роль нужным пользователям. Однако заранее неизвестно, как такая роль может называться, да и само создание такой роли для разработчика расширения является чисто «механической» задачей.
Если же в расширении нет собственных ролей, то воспользоваться им смогут только те пользователи конфигурации, у которых есть роли, автоматически дающие права на новые объекты. Другим пользователям администратор не сможет предоставить доступ, не модифицировав расширение.
Чтобы упросить создание и подключение «универсальных» расширений, мы внесли в механизм некоторые доработки, которые позволяют работать по следующему сценарию:
- На предприятии некоторым ответственным пользователям дается дополнительное право администрирования расширений конфигурации. Благодаря этому они могут самостоятельно (без участия администратора) подключать новые расширения.
- Эти пользователи, например, скачивают из Интернета расширение, подключающее новую печатную форму.
- С помощью стандартной функции Управление расширениями конфигурации они добавляют это расширение в информационную базу.
Доработки, которые мы сделали в механизме, заключаются в следующем.
Во-первых, теперь при создании расширения в нем автоматически создаётся роль, имя которой формируется по шаблону _ОсновнаяРоль. Эта роль устанавливает права для новых собственных объектов.
Эта роль сразу же добавляется в свойство Основные роли расширения (возможность модифицировать основные роли мы добавили в версии 8.3.14).
Таким образом, мы избавляем вас от необходимости «механически» создавать роли, дающие полный доступ к объектам расширения. Кроме этого такая, автоматически созданная роль, имеет понятное для всех имя, формируемое по фиксированному шаблону.
Во-вторых, расширению конфигурации мы добавили новое свойство ИспользоватьОсновныеРолиДляВсехПользователей, которое стандартно установлено в значение Истина. Это значит, что по умолчанию при добавлении такого расширения все пользователи конфигурации будут обладать правами из основных ролей добавляемого расширения.
В третьих, в стандартную функцию Управление расширениями конфигурации мы добавили возможность управления основными ролями.
С её помощью пользователь, которому «доверено» администрирование расширений, может отобрать роли расширения у тех пользователей, которым оно не нужно. При этом автоматически будет сброшено свойство расширения ИспользоватьОсновныеРолиДляВсехПользователей.
При необходимости и «ответственный» пользователь, и разработчик могут отдельно изменять значение этого свойства расширения. Пользователю оно доступно в списке расширений в стандартной функции Управление расширениями конфигурации, а разработчику оно доступно в списке расширений в Конфигураторе.
Таким образом, если вы не хотите использовать новое стандартное поведение (чтобы при добавлении вашего расширения все пользователи сразу же получали доступ к его функциям), устанавливайте свойство расширения ИспользоватьОсновныеРолиДляВсехПользователей в значение Ложь. Тогда роли расширения, как и раньше, администратор должен будет добавить пользователям в явном виде.
Также мы изменили отображение ролей расширения в Конфигураторе. Теперь они отображаются под своими именами, и у вас есть возможность управлять ими.
По поводу использования основных ролей расширения хочется дать некоторые рекомендации.
Во-первых, среди основных ролей расширения могут быть только собственные роли, и эти роли не могут давать права на заимствованные объекты.
Во-вторых, если ваше расширение небольшое и не предполагает разного ролевого доступа к разным его частям, то вы просто создаёте расширение, и не задумываетесь о ролях. Основная роль, создаваемая автоматически, даст доступ ко всей функциональности вашего расширения.
И, наконец, если в расширении нужен разный ролевой доступ к разным его частям, то в основную роль расширения добавляйте ту роль, которая понадобится большинству пользователей. А роль, которая даёт права на остальную функциональность, администратор добавит пользователям самостоятельно. Например, ваше расширение позволяет формировать и отправлять отчёты. Формировать могут все, а отправлять – только некоторые пользователи. Тогда роль, позволяющую формировать отчеты, вам нужно включить в основные роли расширения.
Мы надеемся, что новые возможности упростят вам создание и использование расширений конфигурации.
Изучая, расширения конфигураций, столкнулся со странной проблемой Вот, пример:
- В основной конфигурации находится справочник «А» и «Реквизит1», ссылающийся на этот справочник
- В расширении «Расш1» добавлен ещё один справочник «Расш1_Б»
- «Реквизит1» справочника «А» импортирован в расширение «Расш1»
- В расширении «Расш1», в «Реквизит1» справочника «А» добавлен тип - справочник «Расш1_Б» из расширения
- В расширении «Расш1», в «Реквизит1» справочника «А» снята галочка «Проверять значение при подключении расширения» (кстати так и не понял сакраментального смысла её наличия - что делает ясно - но зачем это нужно - мне не понято)
Проблема: В режиме «1С Предприятие» «Реквизит1» справочника «А» не может иметь значения ссылки на справочник «Расш1_Б» (хотя в расширении его тип был расширен)
Аналогично:
- В основной конфигурации ввожу определяемый тип «Т» типа справочник «А»
- В основной конфигурации в справочник «А» добавляю «Реквизит2» типа «Т»
- В расширение «Расш1» импортирую определяемый тип «Т» и «Реквизит2» справочника «А»
- В расширении «Расш1» расширяю тип определяемого типа «Т» типом «Расш1_Б»
- В расширении «Расш1» снимаю галочку "Проверять значение при подключении расширения" у свойства "Типа" определяемого типа «Т»
Проблема: В режиме «1С Предприятие» «Реквизит2» не может иметь значения ссылки на справочник «Расш1_Б» (хотя в расширении его тип определяемый тип «Т» был расширен)
Что я делаю не так? Или в расширениях конфигураций нельзя расширять типы импортированных элементов метаданных типами из расширения?
Впрочем, я расширил в расширении «Реквизит1» справочника «А» типом справочника «В» из основной конфигурации - и всё равно не могу присваивать Реквизиту1 значения справочника «В» (если расширять типами из расширения – всё то же самое – не расширяются).
Ну, если добавить в расширение «Расш1» в справочник «А» «Реквизит3» - то ему можно назначить все доступные справочники и можно будет устанавливать их значения.
Но, вот, задать определяемый тип реквизитам в расширении нельзя, хотя у импортированного «Реквизит2» в расширении будет стоять Определяемый тип «Т», импортированный из основной конфигурации.
Проверено на платформах 1С Предприятие следующих версий: 8.3.13.1513, 8.3.15.1700, 8.3.16.942 (beta), режимы совместитмости соответсующие (в т.ч. у расширения)
прочитал три строки в (0) и шокирован.
Не понимаю, что там не понятно написано - даже базу приложил - всё по пунктам разложил.
Но хорошо, если в двух словах:
Почему я в расширении не могут для импортированного в расширение реквизита основной конфигурации расширить его тип новым типом?
То есть, пусть у меня есть регистр, у него есть измерение "Партия", тип которого состоит из нескольких документов партий, а в расширении хочу расширить состав этих типов ещё одним документом - но не могу это сделать - тип не расширяется - ссылку добавленного в него типа документа я этому измерению присвоить не могу.
Правда в приложенной конфигурации задача для простоты абстрагирована до нескольких справочников!
(4)Почему? Ведь конфигуратор это позволяет сделать? Дайте, пожалуйста ссылку на документацию?
При этом, например, тип реквизита на форме я расширить могу, или тип параметра команды - всё работает!
Тема «аккуратной» доработки типовых конфигураций является всегда актуальной.
В 2015 году фирма 1С добавила в платформу функционал расширений – отличный инструмент, который меняет старый подход к разработке.
С помощью расширений появляется возможность вносить доработки, оставляя конфигурации БЕЗ изменений (то есть не снимая «с замка»).
В качестве примера мы расширим функционал типовой “1С:Бухгалтерии 8” – добавим проверки на заполненность реквизитов документов. В результате система будет выдавать диагностику, если реквизиты заполнены “неправильными” значениями.
Буквально за 15 минут Вы научитесь приемам, которые сможете использовать для решения разных задач.
Более того, во втором видео мы покажем универсальный механизм, базирующийся на расширениях. И, разработав такой механизм один раз, его можно будет подключать к любой типовой конфигурации.
Мечты о собственной нетленке могут стать реальностью :)
Видео 1. Приемы работы с расширениями – на примере “1С:Бухгалтерии 8”
Изучив видео, Вы научитесь:
- Создавать и подключать расширения к конфигурации
- Выполнять отладку расширений
- Дорабатывать типовые формы обработок/документов с помощью расширений
- Перехватывать события форм типовой конфигурации
- Хранить данные не в таблицах ИБ (хранилище настроек)
- Использовать обработки как хранилище алгоритмов
Также мы разберем оптимизацию состава объектов расширений и ограничения расширений в текущих релизах платформы.
Видео 2. Создание универсальных механизмов с помощью расширений
В этом видео мы покажем:
- Подключение расширения в пользовательском режиме (без конфигуратора)
- Пример универсальной проверки заполнения
- Особенности реализации расширений – создание форм с произвольными отборами и хранение данных в расширениях
Чтобы освоить разработку интерфейсов и форм в 1С:Предприятие 8.3
на профессиональном уровне, рекомендуем записаться на курс:
Комментарии / обсуждение (85):
добрый день, перестали запускаться некоторые курсы. Возможно из-за того, что поменял клавиатуру на ноутбуке. Не напомните порядок восстановления? Спасибо
Для запуска курса Вам нужно получить новый регистрационный ключ.
Для этого Вам высылался код активации плеера. Код активации имеет следующий вид – ХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХ
Найти код активации целиком Вы можете в личном кабинете на сайте на вкладке “Мои заказы”
Далее для активации плеера выполните следующие действия:
1. Запустите плеер, откройте в нем файл плейлиста (с расширением .xml)
2. В открывшемся окне не нужно ничего вводить (!), просто нажмите кнопку Активировать.
3. После этого в Вашем браузере откроется страница с формой активации, которую нужно заполнить и нажать Активировать.
Здравствуйте!
Можно ли настройки сделанные в расширении встроить в конфигурацию, естественно не потеряв данные? То есть – удалить расширение, но не потерять функционал, который был в этом расширении?
Добрый день!
Да, можно. Для этого нужно создать в основной конфигурации структуры данных, аналогичные используемым в расширении. Обработкой или вручную перенести данные из расширения в основную конфигурацию. Также нужно будет перенести весь программный код из расширения в основную конфигурацию, при необходимости адаптировать его (например, в расширении был префикс Расш_, а в основной конфигурации пр_). После протестировать, убедиться, что всё работает корректно, затем окончательно удалить расширение.
Добрый день!
Столкнулся со странным поведение расширения на платформе 8.3.9.1850 (без совместимостей).
заимствовал модуль менеджера документа
заменил (&Вместо) процедуру этого модуля, которая использует вызовы процедуры из других общих модулей.
в тонком клиенте все работает,
но при запуске толстого клиента эта процедура расширения перестает видеть процедуры из других общих модулей основной конфигурации (Переменная не определена)
заимствование всех этих модулей в расширение ничего не дает.
Это действительно такое ограничение или я что-то не так делаю?
Добрый день!
С такой проблемой не сталкивался, возможно причина в версии платформы (стоит проверит на более свежей версии).
В любом случае, новые возможности расширений вполне могут содержать ошибки, так как они практически не используются из-за режима совместимости в типовых конфигураций.
Мало кто рискует его отключать и я с этим согласен.
точно такая же проблема, на 8.3.10, УТ 11.3.4
Подскажите, как вообще можно посмотреть изменения от основной конфигурации в расширении? Есть расширение конфигурации, в нем уже куча объектов, часть из которых добавлена вручную, часть автоматически добавились. В некоторых из этих объектов произведены изменения: где-то форму поправили, где-то модуль. Остальное наследуется. Как теперь получить список именно изменений? Невозможно же разобраться. Или на каждый чих создавать отдельное расширение и там описывать что к чему? Да даже если и так, как быстро посмотреть какие скажем реквизиты или их события изменены в форме из нескольких сотен реквизитов? Может быть какая-то обработка есть?
Добрый день!
Пока никак. Механизм сравнения для расширений и основной конфигурации пока не реализован в платформе, хотя пункты в меню есть, а это говорит о том, что он когда-то появится.
Безусловно механизм расширений очень перспективный, но применять его нужно обдуманно, понимая все трудности и неудобства, которые присутствую в платформе.
Есть такая кнопка. в конфигураторе.Выглядит как воронка(отбор).Называется “Измененные и добавленные в расширении”
Добрый день!
Да, в дереве объектов метаданных для расширения есть кнопка Измененные и добавленные в расширении, которая накладывает фильтр на дерево, оставляет в нем только заимствованные объекты, модифицированные в этом расширении, и новые объекты, созданные в этом расширении. Т.е. убрирает из списка объекты, которые были только заимствованы (например, для отображения форм).
А вот сравнить объекты расширения и объекты основной конфигурации (чтобы понять, что конкретно изменилось) на сегодняшний день нельзя. Платформа пока не даёт такой возможности.
Здравствуйте!
Не подскажете, что срабатывает раньше: обработчик основной конфигурации или аналогичный обработчик в расширении? Например “ПриСозданииНаСервере” в основной конфигурации или аналогичное событие в расширении?
Добрый день!
Стандартно, сначала исполняется код обработчика из расширения, потом из основной конфигурации. Начиная с платформы 8.3.9 механизм расширений серьезно доработали и теперь при создании обработчика система спрашивает Перед, Вместо или После должен срабатывать обработчик расширения.
Добрый день!
спасибо за видео!
Возникла задача создать “Расширение” программным способом. В платформе есть метод МенеджерРасширенийКонфигурации.Создать() который возвращает РасширениеКонфигурации(Р1). Но затем это Р1 нельзя записать, т.к. свойства Р1 такие как имя, синоним и т.д. редактировать нельзя.
не сталкивались с подобной задачей?
Добрый день!
Менеджер расширений не предназначен для программной генерации расширений. Он предназначен для программной загрузки и удаления расширений аналогично тому, как это делается в пользовательском режиме.
Никто не сталкивался с ситуацией, когда регулярно права на подсистемы из расширений или на объекты из расширений слетают у пользователя?
Как отследить причину?
Добрый день! К сожалению, нет. Расширения на текущий момент используются крайне редко.
Спасибо большое, лишних знаний не бывает. Как, все-таки, приятно, когда есть люди, готовые делиться знаниями и опытом и не думающие только о наживе, в отличие от доржиков-коржиков. Удачи Вам!
Я не вижу ссылки на видео, браузер гуглхром
Добрый день!
Проверка не выявила никаких ошибок при просмотре. Попробуйте перезагрузить страницу или открыть ее в другом браузере.
Также чистка кэша должна помочь.
Скажите пожалуйста а расширение можно помещать в хранилище? Каким образом над расширением могут одновременно работать несколько человек?
Добрый день!
Сейчас нет возможности работать с расширением при помощи хранилища. Фирма “1С” рассматривает возможность реализации такого функционала.
Но для расширения можно производить операции сравнения-объединения с cfe-файлом. Тогда разработчик из нескольких файлов может собрать итоговое расширение, выгрузить его в cfe-файл, передать заказчику.
Подскажите пожалуйста почему в расширении можно набрать запрос в конструкторе запроса первый раз. Но открыть его вторично с помощью конструктора запроса нельзя, выдает ошибку, хотя сам запрос работает без ошибок. Я читал в интернете что данную ситуацию обходят тем что пишут запрос в обработчике, редактируют и дорабатывают там же. А потом готовый копируют в расширение. Это действительно недоработки функционала расширения?
Добрый день!
В расширении (например, в расширении формы документа) в конструкторе запроса будут присутствовать таблицы, доступные в самом расширении. Если в расширении пробовать открывать конструктором текст запроса, в котором участвуют таблицы, недоступные в расширении, то такой текст запроса не откроется, появится ошибка. Но при выполнении в режиме “1С:Предприятие” такой запрос отработает корректно, без ошибок. Можно все нужные таблицы добавить в расширение или редактировать текст запроса во внешней обработке или в каком-либо модуле основной конфигурации.
Т.е. ошибка у меня возникала потому что не все таблицы к которым я обращался в запросе присутствовали в расширении? Если были бы все то ошибки при повторном открытии не было бы?
Подскажите, а если не все таблицы присутствуют в расширении, то сам запрос корректно отработает но просто через конструктор не откроется? У меня проблема со стандартными реквизитами(родитель, владелец,ЭтоГруппа и т.д)
Да, именно так.
Отмечайте в расширении свойства Владельцы, Иерархический как контролируемые. Тогда конструктор будет открываться без ошибок.
Спасибо, я бы никогда не догадалась))
А подскажете, как это сделать? Как в расширении увидеть свойство Владелец? Ведь это свойство не появляется среди реквизитов добавленного объекта(Номенклатуры в моем случае). Есть ли в принципе возможность в расширении на форме подчиненного объекта(Спецификации номенклатуры в моем случае) поместить поле, ссылающееся на владельца этого объекта?
Добрый день!
Давайте рассмотрим на примере, на пустой базе.
Пусть у нас есть справочник Спецификации, подчиненный справочнику Номенклатура:
Создадим расширение конфигурации, заимствуем оба справочника в расширение.
В расширении воспользуемся конструктором запроса. Для справочника Спецификации поле Владелец недоступно:
Теперь отметим для справочника Спецификации свойство Владельцы как контролируемое:
После этого в конструкторе запроса появляется поле Владелец:
На форме объекта в расширении можно отобразить владельца:
Скажите есть ли какой-то способ следить за изменением материала для тех кто прошел/приобрел курс ранее. Может реализовать механизм рассылки?
Например, “Вы прошли курс по …, появились обновленные материалы, вы можете скачать их по ссылке:…”
тогда и не упустишь ни чего нового. А просматривать все стартовые страницы всех пройденных курсов на предмет “бонусов” слишком утомительно. (Спасибо!)
В Видео2 говорится, что сам процесс создания расширений подробно рассматривается в курсе? В каком курсе? Я прошла курс “Профессиональная разработка интерфейсов и форм”, который закончился 04.07.2016, но там не было про расширения. Или я что-то упустила?
В платформе 8.3.18 произошли значительные изменения, связанные с механизмом расширений. Например, теперь при помощи расширений можно изменять типы реквизитов из основной конфигурации!
Этот функционал давно ожидался всеми разработчиками, использующими расширения при внедрениях.
Этот функционал давно ожидался всеми разработчиками, использующими расширения при внедрениях, так как он сильно увеличивает их возможности при доработках.
Раньше можно было только менять логику дорабатываемой конфигурации, корректировать программный код в модулях, добавлять новые объекты (справочники, документы) в расширении. А вот изменять существующие реквизиты – нельзя. Теперь такая возможность появилась.
Какие преимущества это дает?
- К примеру, когда не хватает типовой длины строкового поля, ее можно можно увеличить с помощью расширения – то есть, не снимая конфигурацию с поддержки.
- Можно увеличить длину числового реквизита в документе, когда разработчики типовой задали недостаточную длину для хранения данных конкретного предприятия.
- Также можно в реквизит составного типа добавить еще один тип данных при помощи расширения. Например, разработчик типовой предполагает, что в реквизите можно указывать только документы «Заказ клиента» и «Реализация». А на проекте для реализации требований заказчика нужно добавить в этот реквизит еще «Заказ поставщику». Это можно теперь сделать при помощи расширения, что очень удобно.
Работа с расширением типов реквизитов детально рассмотрена в этой серии видеоуроков — с практическими примерами и описаниями ограничений.
Кроме того, разобраны и другие полезные возможности расширений:
- Объединение расширений с cfe-файлом из командной строки
- Работа платформы при отключенных расширениях — когда при старте сеанса были подключены не все расширения, изменяющие структуру хранения данных
- Новая логика проверки применимости расширения, использующего аннотацию ИзменениеИКонтроль
- И другие полезные «фишки»…
Общая длительность видео – полтора часа. Приятного просмотра! :)
Видео 1 – Вступление
Ключевые моменты видео:
00:00 – Узнаем, какие темы разбираются в занятии.
Видео 2 – Объединение расширений
Ключевые моменты видео:
00:00 – При помощи какой команды пакетного режима запуска конфигуратора можно выполнять сравнение расширения с файлом на диске?
00:45 – Где на сайте ИТС найти описание параметров командной строки
04:05 – Как вручную в конфигураторе выполнить объединение расширения с файлом на диске
05:10 – Какие параметры нужно указывать в командной строке
06:40 – Почему при объединении расширения из командной строки возникает ошибка “Каталог не обнаружен”
07:50 – Как работает сохранение настроек объединения в файл
12:50 – В каких случаях на практике можно применять объединение расширения с файлом на диске
Видео 3 – Расширение типов реквизитов
Ключевые моменты видео:
00:00 – Как убедиться, что в платформе 8.3.17 и ранее нельзя изменить тип реквизита при помощи расширения
01:20 – Как установить признак контролируемого или проверяемого свойства в расширении
Видео 4 – Расширение строковых реквизитов
Ключевые моменты видео:
00:00 – Как в платформе 8.3.18 увеличить длину строкового реквизита при помощи расширения
01:20 – Какие изменения произошли в панели свойств объекта расширения
03:20 – Можно ли уменьшить длину строкового реквизита при помощи расширения
04:20 – Происходит ли потеря данных при уменьшении длины строкового реквизита с помощью расширения
Видео 5 – Расширение числовых реквизитов
Ключевые моменты видео:
00:00 – Как в платформе 8.3.18 изменить длину и точность числового реквизита при помощи расширения
01:50 – Можно ли уменьшить длину и точность числового реквизита при помощи расширения
Видео 6 – Изменение длины кода
Ключевые моменты видео:
00:00 – Можно ли изменить длину кода и наименования справочника при помощи расширения
01:20 – Как в расширении установить признак контролируемого или проверяемого свойства для длины кода и наименования справочника
02:20 – Можно ли изменить длину номера документа при помощи расширения
Видео 7 – Формирование результирующего типа
Ключевые моменты видео:
00:00 – Почему нельзя уменьшить длину строкового реквизита при помощи расширения
00:50 – Каким образом при расширении типа реквизитов получается составной тип данных
03:20 – Как при помощи расширения добавить дополнительные типы в тип данных реквизита из основной конфигурации
04:20 – Как платформа обеспечивает сохранность данных при расширении типов реквизитов
Видео 8 – Примеры расширения типа
Ключевые моменты видео:
00:00 – Какой тип данных в результате будет иметь реквизит, если его тип изменяет одновременно несколько расширений
02:15 – Как ведет себя платформа при отключении расширения, изменяющего тип данных реквизита основной конфигурации
04:30 – Как при помощи консоли запросов проверить результирующую длину строки реквизита
06:00 – Как воспроизвести пример потери данных при изменении типа данных в расширении
Видео 9 – Свойство Тип
Ключевые моменты видео:
00:00 – Как сделать в расширении свойство Тип одновременно и контролируемым, и модифицируемым
01:30 – Что означает признак контролируемости свойства при расширении типа данных реквизита
02:50 – Каким образом формируется всплывающая подсказка для свойства Тип
Видео 10 – Ограничения составного типа
Ключевые моменты видео:
00:00 – Какие типы данных нельзя включать в составной тип
02:00 – Почему при помощи расширения нельзя изменить тип строкового реквизита на ХранилищеЗначения
Видео 11 – Ограничения расширений
Ключевые моменты видео:
00:00 – Можно ли расширить тип данных для общего реквизита
00:50 – Можно ли при помощи расширения изменить тип реквизита, ссылающегося на внешний источник данных
02:50 – Можно ли расширить тип данных определяемого типа
04:30 – Какие ограничения существуют при работе с планом видов характеристик
Видео 12 – Типовые конфигурации
Ключевые моменты видео:
00:00 – Можно ли в типовой конфигурации УТ 11 воспользоваться расширением типов данных
01:20 – Какой режим совместимости необходим для расширения типов данных
02:20 – Как использование определяемых типов усложняет использование расширения типов
Видео 13 – Отключенные расширения
Ключевые моменты видео:
00:00 – Как ведет себя система, когда при старте сеанса подключены не все расширения, изменяющие структуру хранения данных
01:00 – Как работают предыдущие версии платформы в таком случае
03:40 – Какие изменения произошли в платформе 8.3.18
04:10 – Какие особенности существуют при работе со справочниками, документами, планами обмена
10:40 – Какие особенности существуют при работе с табличными частями
15:50 – Какие особенности существуют при работе с регистрами
Видео 14 – Изменение и контроль
Ключевые моменты видео:
Расширения в 1С 8.3 - это микро конфигурации в формате xml (текст с тегами) которые позволяют дополнить существующую конфигурацию (вклиниться) в виде слоя. Расширения в 1С 8.3 являются одновременно и данными, и метаданными. В одной конфигурации может быть N-е количество и зависимости друг от друга заранее неизвестно. В основном имеет смысл использовать в типовых конфигурациях (на поддержке). Расширение является своеобразным "клином", который можно мигрировать из одной информационной базы в другую.
Конфигуратор 1С - Меню - Конфигурация - Расширения конфигурации. При применении расширения контролируется порядковый номер версии при одинаковых ID (применяется последняя версия). Имя, синоним, префикс - называем как нам удобно.
- Исправление - применяются на конфигурацию поставщика (вклинивание в логику поставщика bug fix, инъекция в код).
- Адаптация - в логику кода не вмешиваемся. Адаптация без изменения логики и зависит от конфигурации поставщика.
- Дополнение - полностью независимое решение. Автономное решение без связки с конфигурацией поставщика.
- Активно - расширение используется. Если будет ошибка применения - признак автоматически отключится.
- Безопасный режим - влияет на работу в клиент-серверной версии. Актуально только для профилей безопасности SQL (разрешения к доступу).
- Защита от опасных действий - запрещает обращение к серверным модулям, открытие внешних отчетов, работа с интернетом. Аналогично параметрам пользователя
- Используется в распределенной ИБ - миграция расширения по распределенным узлам
- Область действия - использование БД целиком или с разделителями для различных технологий (например, для облаков)
- Использовать основные роли для всех пользователей - Рекомендуется ее отключить т.к. значительно влияет на производительность. Для всех пользователей создастся дополнительная роль (с префиксом) расширения и будет применятся. Роли пользователя в основной конфигурации будут иметь приоритет.
- Применилось ли расширение можно увидеть в Меню - Справка - О программе "Конфигурация"
- Если расширений много и не конфликтуют друг с другом - они применяются последовательно по имени и/или версии.
- Отключать расширение (Функции для технического специалиста - Стандартные - Управление расширениями конфигурации) в можно в режиме 1С Предприятие, но при закрытом! конфигураторе. Иначе при попытке отключить признак "Активно" получаем ошибку: Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи не выполнено). Ошибка блокировки объекта. Объект уже заблокирован: . После отключения расширения необходим перезапуск пользователя.
- Рекомендуется дробить расширения. Создавать на каждый объект своё, так проще контролировать применение и фиксировать ошибки, т.к. при конфликте в режиме 1С Предприятие расширение автоматически отключается.
- Найти пересечения по объектам невозможно. Поэтому расширения должны быть автономны.
- Для новой печатной формы или нового отчета/обработки рекомендуется первично использовать БСП так как количество расширение негативно влияет на производительность
- При удалении расширения сопутствующие данные удаляются без возможности восстановления
- Работать с метаданными основного поставщика не рекомендуется
Система не поддерживает зависимость объектов в конфигурации поставщика. Применяет слои в порядке их очередности ( последовательно), по списку (если они друг с другом не конфликтуют). Первыми будут применятся Исправление , потом Адаптация , а самые последние Дополнение . Далее в списке происходит сортировка по Имени и Версии расширения:
- Вызывать перед
- Вызывать после
- Вызывать вместо
- Вызывать вместо (с контролем)
При изменении существующего или добавлении нового реквизита основной конфигурации через заимствование в расширение. Система создаст новую таблицу чтение которой будет производится через основную таблицу. Поэтому при переопределении свойств реквизита (например: увеличение длины цены с 10 до 12 символов) не рекомендуется использовать заимствование объекта, а создать автономный, новый (в расширении) и работать с ним для исключения конфликтов (как заимствованные объекты). В этом случаем система создаст новую независимую таблицу. Например, также можно реализовывать через Регистр сведений или подчиненный справочник с нужными реквизитами. К баг фиксам данная рекомендация не относится!
Для переноса данных из основной конфигурации в расширение нужно писать обработку (через внешний источник (*.xml, *.bdf и т.п.) или дежурный регистр).
При добавлении в расширение из осн.конфигурации реквизита составного типа система заимствует все объекты
Если объект контролируемый (установлен признак). Система не применит расширение если основной поставщик изменит значение объекта.
Критичная: Значение контролируемого свойства Тип у объекта ***** не совпадает со значением в расширяемой конфигурации "
Также можно установить у объекта свойство: Проверять значение при подключении расширения, не запрещать подключение расширения:
Просмотреть работает ли расширение в пользовательском режиме 1С: Меню - Сервис и настройки - О программе (Расширения конфигурации:).
Отключить расширения в пользовательском режиме 1С (с правами Администратора): Меню - Сервис и настройки - Функции для технического специалиста - Стандартные - Управление расширениями конфигурации - Снять галки с ненужного расширения (Делать это нужно при закрытом конфигураторе и для применения нужен перезапуск сеанса).
Читайте также: