Тема «аккуратной» доработки типовых конфигураций является всегда актуальной.
С помощью расширений появляется возможность вносить доработки, оставляя конфигурации БЕЗ изменений (то есть не снимая «с замка» ).
В качестве примера мы расширим функционал типовой “1С:Бухгалтерии 8” – добавим проверки на заполненность реквизитов документов. В результате система будет выдавать диагностику, если реквизиты заполнены “неправильными” значениями.
Буквально за 15 минут Вы научитесь приемам, которые сможете использовать для решения разных задач.
Более того, во втором видео мы покажем универсальный механизм , базирующийся на расширениях. И, разработав такой механизм один раз , его можно будет подключать к любой типовой конфигурации .
Мечты о собственной нетленке могут стать реальностью:)
Итак, приступаем:
Изучив видео, Вы научитесь:
Также мы разберем оптимизацию состава объектов расширений и ограничения расширений в текущих релизах платформы.
В этом видео мы покажем:
Всем привет!
Замечательная конфигурация 1С "БИТ:Управление медицинским центром" вплоть до релиза 2.0.28.3 в логике своей работы имеет пару досадных неточностей, не позволяющих основательно получать удовольствие от её использования.
Привожу здесь два варианта разрешения этих трудностей с оговоркой, что мне лично больше нравится тот что связан с изменением конфигурации - старые дедовские способы работают как должно пока ещё. И да - это моё ИМХО и это работает.
Проблема №1. Не проставляются цены на работы в документе "Оказание услуг".
Нарушение в логике работы программы следующее: регистр сведений "Цены номенклатуры" имеет измерение "ЕдиницаИзмерения", а табличная часть "Работы" вышеуказанного документа не имеет никакого подобного подходящего реквизита для того, чтобы при заполнении строки данной табличной части легко и свободно можно было подставить её в запрос по ценам. Далее, функция "ПолучитьЦену" общего модуля "Ценообразование" содержит строки:
Если ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",ЕдиницаИзмерения); Иначе СтруктураОтбора.Вставить("ЕдиницаИзмерения",Справочники.ЕдиницыИзмерения.ПустаяСсылка()); КонецЕсли;
Вот здесь, на мой взгляд, применено крайне неверное решение: при нормальных условиях в измерении "ЕдиницаИзмерения" регистра "Цены номенклатуры" никак не могут оказаться пустые ссылки. Скорее там будут ссылки на элементы справочника "Единицы измерения" из реквизитов "ЕдиницаТоваров" соответствующих номенклатур. Используем же их скорее:
Если ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",ЕдиницаИзмерения); Иначе Если ТипЗнч(Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",Номенклатура.ЕдиницаТоваров); КонецЕсли; КонецЕсли;
Варианты решения:
а) непосредственное изменение кода конфигурации;
б) создание расширения: проблемную функцию помещаем "вместо" исходной, меняем код.
Проблема №2. Не совсем работают внешние печатные формы с видом использования "ВызовКлиентскогоМетода".
Во-первых, форма внешней обработки должна называться "Форма1". Да. Именно так.
Во-вторых, в модуле объекта обработки должна находиться функция:
Функция РежимЗапускаКлиент() Экспорт Возврат Истина; КонецФункции
Тоже так надо.
В-третьих, и что самое неприятное, конфигурация в открывающуюся форму не передаёт ссылку на документ, из которого эта форма открывается... И, как следствие, внешняя печатная форма не знает, что ей печатать.
Варианты решения:
а) добавить строки:
после строки
Форма = ПолучитьФорму("ВнешняяОбработка."+Рез+".Форма.Форма1");
в функции "НапечататьВнешнююФормуСПроверкойРежимаКлиент" общего модуля "ПечатьДокументовКлиент"
б) вынести всё это дело в расширение.
Сложности в применении расширений.
На данный момент используем платформу 8.3.10.2505.
Рассматриваемая конфигурация имеет режим совместимости "Версия 8.3.6". Не зря, конечно.
Основная задача состоит в том, чтобы заимствовать некую функцию общего модуля в расширение в режиме "вместо" и, изменив там несколько строк, добиться того, чтобы в процессе работы конфигурации выполнялся модифицированный код.
Вот тут-то и начинаются поводные камни:
По всему видно, что для использования расширений необходимо усановить режим совместимости конфигурации в "Не использовать". Однако, такое решение привносит ряд дополнительных проблем и "неразрешимых" ситуаций в нашу конфигурацию. В основном, начинают хромать методы при и перед закрытием форм и самой системы. Решаются они частично при помощи методик из документа Перевод конфигураций на платформу "1С:Предприятие 8.3" без режима совместимости с версией 8.2 , находящегося на сайте 1С ИТС. Почему частично - потому что не все серверные вызовы можно переделать на клиентские и не от всех можно отказаться. Подробности - в прикрепленном расширении "ЗавершениеРаботы".
В списке файлов три расширения, решающие проблемы с внешней печатной формой, ценами и ошибками при закрытии форм и приложения в конфигурации 1С: "БИТ:Управление медицинским центром" релиза 2.0.28.3.
В данной статье предлагаю рассмотреть, что такое «расширение конфигурации», как добавить расширение или же отключить его. Начиная с версии 1C 8.3.6.1977 в платформе введен новый механизм – расширения конфигурации. Сначала немного теории.
Расширения представляют в 1С собой что-то вроде параллельных конфигураций, которые автоматически объединяются с основной конфигурацией поставщика. Причем в расширениях можно добавлять как свои объекты, так и заимствовать объекты основной конфигурации.
В первую очередь расширения созданы для облегчения внесения изменений в программу. То есть, если пользователи просят добавить какой-либо функционал, то до появления расширений программистам приходилось снимать конфигурацию с полной поддержки и менять типовую конфигурацию.
Снятие с полной поддержки влечет за собой ряд неудобств:
При использовании расширений при внесении изменений программист не будет трогать типовую конфигурацию. Все изменения будут делаться при помощи расширений, которые (как я писал выше) тоже являются конфигурациями. Таким образом, основная конфигурация останется на полной поддержке.
После обновления основной конфигурации, если произошли в новом релизе какие-то изменения с объектом, который ранее был изменен расширением, то изменения все равно возьмутся из расширения. То есть расширения имеют больший приоритет, чем основная конфигурация.
Получите 267 видеоуроков по 1С бесплатно:
Чтобы показать, что такое расширение, лучше привести пример его создания в конфигураторе 1С.
В конфигураторе зайдем в меню «Конфигурация» и выберем пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Нажмем кнопку «Добавить» и добавим новое расширение. Теперь можно открыть конфигурацию расширения:
Как видно, конфигурация расширения имеет точно такую же структуру, как и основная. Только она изначально совершенно чистая, без объектов.
Недавно я писал статью о том, как самим сделать . На её примере я хочу сделать ее встроенной при помощи расширения.
В обработке у меня есть поле со ссылкой на справочник «Организации». Поэтому мне этот справочник необходим. Но мы не будем создавать новый справочник «Организации», тем более что платформа этого и не позволит. Нельзя, чтобы в конфигурации расширения были объекты, одноименные с объектами в основной конфигурации.
Поэтому справочник мы позаимствуем из основной конфигурации:
Теперь нажмем правой кнопкой мышки на «Обработки» и выберем «Вставить внешнюю обработку, отчет…» Таким образом, добавим новую обработку в конфигурацию расширения. Если Вы используете мою обработку, то сразу переименуйте ее, так как в основной конфигурации уже есть обработка с таким именем.
Ну и последний штрих. Я хочу, чтобы моя обработка отражалась в меню «Администрирование». Для этого позаимствуем одноименную подсистему основной конфигурации. Не забудьте указать в обработке, что она относится к этой подсистеме.
Вот такая структура у меня получилась:
Посмотрим, что у нас получилось. Обновляем конфигурацию базы данных и запускаем программу в режиме 1C: Предприятие, и идем в меню «Администрирование». Да, чуть не забыл, конфигурацию расширения необходимо закрыть, иначе программа не запустится:
Коллеги, всем здравствуйте.
На днях вышла тестовая Бухгалтерия Предприятия с отключенным режимом совместимости с платформой 8.3.6.
А значит в этой версии используется новый движок, который по-новому отрисовывает формы.
Прочитать про это можно в Зазеркалье .
Вместе с типовыми на новую платформу следует переделывать и свои расширения.
В процессе перевода сформировал для себя небольшой чек-лист или памятку о том, что нужно сделать.
Для этого следует привести режим совместимости расширения к режиму совместимости конфигурации.
В версии Бухгалтерия Предприятия установлены следующие свойства:
В расширении можно установить точно такие же свойства или снять все флажки.
Отсутствие флажков означает, что расширение не будет проверять эти свойства при подключении.
То если эти свойства изменятся в основной конфигурации, то расширение все равно запуститься:
Для этого запускаем конфигурацию в режиме предприятия и смотрим взлетело или нет.
Ошибки, из-за которых не удалось подключить расширение, можно посмотреть в журнале регистрации
(Администрирование - Поддержка и обслуживание - Журнал регистрации)
Нас интересуют события - “Сеанс. Ошибка применения расширения конфигурации”:
Чаще всего проблема подключения решается удалением лишнего реквизита или объекта.
Основная сложность в том, что расширение не выдает сразу все ошибки (кстати, эта проблема решена в 8.3.9).
Поэтому требуется последовательно запускать конфигурации после исправления каждой ошибки.
Чтобы было удобно запускать журнал регистрации - добавим его в избранное:
Для этого в каждой измененной форме нажимаем на “Обновить расширение формы”
С помощью этой команды мы заново подгружаем форму основной конфигурации в расширение.
В принципе работать будет и без этого, но это нужно для того, чтобы в расширении форма выглядела также как и в основной конфигурации.
В версии 3.0.44 практически все формы подверглись изменениям, поэтому хорошо бы и в расширение подтянуть эти изменения.
Рекомендую ознакомиться со статьей - Рекомендации по адаптации форм к 8.3.7 .
В ней рассматриваются особенности нового движка и даются конкретные рекомендацию как сделать, чтобы в новой платформе было все хорошо.
Я составил следующий порядок действий:
Мы выпустили новый релиз панели телефонии для 1С.
В версии релиза для управляемого приложения появилась возможность встраивания панели телефонии с минимальными доработками основной конфигурации с помощью механизма расширения конфигурации.
Расширение очень похоже на обычную конфигурацию. Для работы с ним используются те же приёмы работы, что и с обычной конфигурацией. Расширения созданы в первую очередь для облегчения внесения изменений в программу. Вам не придется теперь вставлять "куски кода" в определенные модули и добавлять новые объекты метаданных, достаточно просто добавить расширение в конфигурацию.
Огромным преимуществом использования расширений является автоматическое обновление основной конфигурации. Теперь нет необходимости изменять настройки поддержки для типовой конфигурации.
Такие возможности стали доступны расширениям для платформы, начиная с версии 8.3.9.1818 . Поэтому, чтобы воспользоваться этим, мы отключили режим совместимости для расширения, так как версия 8.3.9 еще не поддерживается. Соответственно возникает необходимость отключения режима совместимости и для основной конфигурации, иначе возникнет ошибка: "Режим совместимости расширения конфигурации больше режима совместимости основной конфигурации ".
2) В основную конфигурацию мы добавляем роль МИКО_Софтфон , для которой мы снимаем все права.
При добавлении нового объекта метаданных, в данном случае роли, необходимо обновление справочника ИдентификаторыОбъектаМетаданных . Когда мы добавляли эту роль в расширение, то типовые конфигурации игнорировали её, то есть при обновлении справочника ИдентификаторыОбъектаМетаданных роль в нём не появлялась. Из-за этого некорректно работал механизм профилей настроек панели телефонии, возникала ошибка: "Не найден идентификатор объекта метаданных для роли МИКО_Софтфон ".
Причем данная ситуация возникала не во всех конфигурациях, так в "Управление торговлей, 11.2.3.218" и "Комплексная автоматизация, 2.0.3.222" проблем с ролью не было, когда она была добавлена в само расширение. Чтобы обеспечить некую универсальность предлагаемого нами решения и гарантировать бесперебойную работу в большинстве поддерживаемых нами конфигураций, мы решили добавлять роль МИКО_софтфон в основную конфигурацию и заимствовать её в расширении, а уже в расширении реализовать настройки данной роли.
Очень важной особенностью является тот факт, что если встроив однажды наше расширение, Вы захотите встроить панель по нашим старым инструкциям , необходимо отключить расширение и удалить роль МИКО_софтфон. Если захотите вновь воспользоваться расширением, необходимо сначала добавить роль, а потом уже добавить расширение.
Даже включая возможность изменения основной конфигурации и внося минимальные изменения в конфигурацию мы сделали процесс встраивания панели телефонии более простым. Теперь Вам не надо вносить изменения в модули управляемого приложения, добавлять обработки и подсистемы в конфигурацию, настраивать роли. Всё это за вас сделает расширение! Мы продолжим совершенствовать процесс встраивания панели телефонии для 1С!
Инструкции по встраиванию панели телефонии для 1С с помощью механизма расширений находятся .
Задавайте свои вопросы через форму обратной связи .
© 2019. MIKO LLC All Rights Reserved.