Тема «аккуратной» доработки типовых конфигураций является всегда актуальной.
В 2015 году фирма 1С добавила в платформу функционал расширений – отличный инструмент, который меняет старый подход к разработке.
С помощью расширений появляется возможность вносить доработки, оставляя конфигурации БЕЗ изменений (то есть не снимая «с замка»).
В качестве примера мы расширим функционал типовой “1С:Бухгалтерии 8” – добавим проверки на заполненность реквизитов документов. В результате система будет выдавать диагностику, если реквизиты заполнены “неправильными” значениями.
Буквально за 15 минут Вы научитесь приемам, которые сможете использовать для решения разных задач.
Более того, во втором видео мы покажем универсальный механизм, базирующийся на расширениях. И, разработав такой механизм один раз, его можно будет подключать к любой типовой конфигурации.
Мечты о собственной нетленке могут стать реальностью :)
Итак, приступаем:
Видео 1. Приемы работы с расширениями – на примере “1С:Бухгалтерии 8”
Изучив видео, Вы научитесь:
- Создавать и подключать расширения к конфигурации
- Выполнять отладку расширений
- Дорабатывать типовые формы обработок/документов с помощью расширений
- Перехватывать события форм типовой конфигурации
- Хранить данные не в таблицах ИБ (хранилище настроек)
- Использовать обработки как хранилище алгоритмов
Также мы разберем оптимизацию состава объектов расширений и ограничения расширений в текущих релизах платформы.
Видео 2. Создание универсальных механизмов с помощью расширений
В этом видео мы покажем:
- Подключение расширения в пользовательском режиме (без конфигуратора)
- Пример универсальной проверки заполнения
- Особенности реализации расширений – создание форм с произвольными отборами и хранение данных в расширениях
P.S.
Чтобы освоить разработку интерфейсов и форм в 1С:Предприятие 8.3
на профессиональном уровне, рекомендуем записаться на курс:
добрый день, перестали запускаться некоторые курсы. Возможно из-за того, что поменял клавиатуру на ноутбуке. Не напомните порядок восстановления? Спасибо
Для запуска курса Вам нужно получить новый регистрационный ключ.
Для этого Вам высылался код активации плеера. Код активации имеет следующий вид – ХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХ
Найти код активации целиком Вы можете в личном кабинете на сайте на вкладке “Мои заказы”
Далее для активации плеера выполните следующие действия:
1. Запустите плеер, откройте в нем файл плейлиста (с расширением .xml)
2. В открывшемся окне не нужно ничего вводить (!), просто нажмите кнопку Активировать.
3. После этого в Вашем браузере откроется страница с формой активации, которую нужно заполнить и нажать Активировать.
Здравствуйте!
Можно ли настройки сделанные в расширении встроить в конфигурацию, естественно не потеряв данные? То есть – удалить расширение, но не потерять функционал, который был в этом расширении?
Добрый день!
Да, можно. Для этого нужно создать в основной конфигурации структуры данных, аналогичные используемым в расширении. Обработкой или вручную перенести данные из расширения в основную конфигурацию. Также нужно будет перенести весь программный код из расширения в основную конфигурацию, при необходимости адаптировать его (например, в расширении был префикс Расш_, а в основной конфигурации пр_). После протестировать, убедиться, что всё работает корректно, затем окончательно удалить расширение.
Добрый день!
Столкнулся со странным поведение расширения на платформе 8.3.9.1850 (без совместимостей).
заимствовал модуль менеджера документа
заменил (&Вместо) процедуру этого модуля, которая использует вызовы процедуры из других общих модулей.
в тонком клиенте все работает,
но при запуске толстого клиента эта процедура расширения перестает видеть процедуры из других общих модулей основной конфигурации (Переменная не определена)
заимствование всех этих модулей в расширение ничего не дает.
Это действительно такое ограничение или я что-то не так делаю?
(УТ 11.3.1.127)
Добрый день!
С такой проблемой не сталкивался, возможно причина в версии платформы (стоит проверит на более свежей версии).
В любом случае, новые возможности расширений вполне могут содержать ошибки, так как они практически не используются из-за режима совместимости в типовых конфигураций.
Мало кто рискует его отключать и я с этим согласен.
точно такая же проблема, на 8.3.10, УТ 11.3.4
Подскажите, как вообще можно посмотреть изменения от основной конфигурации в расширении? Есть расширение конфигурации, в нем уже куча объектов, часть из которых добавлена вручную, часть автоматически добавились. В некоторых из этих объектов произведены изменения: где-то форму поправили, где-то модуль. Остальное наследуется. Как теперь получить список именно изменений? Невозможно же разобраться. Или на каждый чих создавать отдельное расширение и там описывать что к чему? Да даже если и так, как быстро посмотреть какие скажем реквизиты или их события изменены в форме из нескольких сотен реквизитов? Может быть какая-то обработка есть?
Добрый день!
Пока никак. Механизм сравнения для расширений и основной конфигурации пока не реализован в платформе, хотя пункты в меню есть, а это говорит о том, что он когда-то появится.
Безусловно механизм расширений очень перспективный, но применять его нужно обдуманно, понимая все трудности и неудобства, которые присутствую в платформе.
Есть такая кнопка. в конфигураторе.Выглядит как воронка(отбор).Называется “Измененные и добавленные в расширении”
Добрый день!
Да, в дереве объектов метаданных для расширения есть кнопка Измененные и добавленные в расширении, которая накладывает фильтр на дерево, оставляет в нем только заимствованные объекты, модифицированные в этом расширении, и новые объекты, созданные в этом расширении. Т.е. убрирает из списка объекты, которые были только заимствованы (например, для отображения форм).
А вот сравнить объекты расширения и объекты основной конфигурации (чтобы понять, что конкретно изменилось) на сегодняшний день нельзя. Платформа пока не даёт такой возможности.
Здравствуйте!
Не подскажете, что срабатывает раньше: обработчик основной конфигурации или аналогичный обработчик в расширении? Например “ПриСозданииНаСервере” в основной конфигурации или аналогичное событие в расширении?
Добрый день!
Стандартно, сначала исполняется код обработчика из расширения, потом из основной конфигурации. Начиная с платформы 8.3.9 механизм расширений серьезно доработали и теперь при создании обработчика система спрашивает Перед, Вместо или После должен срабатывать обработчик расширения.
Добрый день!
спасибо за видео!
Возникла задача создать “Расширение” программным способом. В платформе есть метод МенеджерРасширенийКонфигурации.Создать() который возвращает РасширениеКонфигурации(Р1). Но затем это Р1 нельзя записать, т.к. свойства Р1 такие как имя, синоним и т.д. редактировать нельзя.
не сталкивались с подобной задачей?
Добрый день!
Менеджер расширений не предназначен для программной генерации расширений. Он предназначен для программной загрузки и удаления расширений аналогично тому, как это делается в пользовательском режиме.
Спасибо!
Никто не сталкивался с ситуацией, когда регулярно права на подсистемы из расширений или на объекты из расширений слетают у пользователя?
Как отследить причину?
Добрый день! К сожалению, нет. Расширения на текущий момент используются крайне редко.
Спасибо большое, лишних знаний не бывает. Как, все-таки, приятно, когда есть люди, готовые делиться знаниями и опытом и не думающие только о наживе, в отличие от доржиков-коржиков. Удачи Вам!
Полностью присоединяюсь!
Я не вижу ссылки на видео, браузер гуглхром
Добрый день!
Проверка не выявила никаких ошибок при просмотре. Попробуйте перезагрузить страницу или открыть ее в другом браузере.
Также чистка кэша должна помочь.
Скажите пожалуйста а расширение можно помещать в хранилище? Каким образом над расширением могут одновременно работать несколько человек?
Добрый день!
Сейчас нет возможности работать с расширением при помощи хранилища. Фирма “1С” рассматривает возможность реализации такого функционала.
Но для расширения можно производить операции сравнения-объединения с cfe-файлом. Тогда разработчик из нескольких файлов может собрать итоговое расширение, выгрузить его в cfe-файл, передать заказчику.
Подскажите пожалуйста почему в расширении можно набрать запрос в конструкторе запроса первый раз. Но открыть его вторично с помощью конструктора запроса нельзя, выдает ошибку, хотя сам запрос работает без ошибок. Я читал в интернете что данную ситуацию обходят тем что пишут запрос в обработчике, редактируют и дорабатывают там же. А потом готовый копируют в расширение. Это действительно недоработки функционала расширения?
Добрый день!
В расширении (например, в расширении формы документа) в конструкторе запроса будут присутствовать таблицы, доступные в самом расширении. Если в расширении пробовать открывать конструктором текст запроса, в котором участвуют таблицы, недоступные в расширении, то такой текст запроса не откроется, появится ошибка. Но при выполнении в режиме “1С:Предприятие” такой запрос отработает корректно, без ошибок. Можно все нужные таблицы добавить в расширение или редактировать текст запроса во внешней обработке или в каком-либо модуле основной конфигурации.
Т.е. ошибка у меня возникала потому что не все таблицы к которым я обращался в запросе присутствовали в расширении? Если были бы все то ошибки при повторном открытии не было бы?
Да, именно так.
Подскажите, а если не все таблицы присутствуют в расширении, то сам запрос корректно отработает но просто через конструктор не откроется? У меня проблема со стандартными реквизитами(родитель, владелец,ЭтоГруппа и т.д)
Да, именно так.
Отмечайте в расширении свойства Владельцы, Иерархический как контролируемые. Тогда конструктор будет открываться без ошибок.
Спасибо, я бы никогда не догадалась))
А подскажете, как это сделать? Как в расширении увидеть свойство Владелец? Ведь это свойство не появляется среди реквизитов добавленного объекта(Номенклатуры в моем случае). Есть ли в принципе возможность в расширении на форме подчиненного объекта(Спецификации номенклатуры в моем случае) поместить поле, ссылающееся на владельца этого объекта?
Добрый день!
Давайте рассмотрим на примере, на пустой базе.
Пусть у нас есть справочник Спецификации, подчиненный справочнику Номенклатура:
Создадим расширение конфигурации, заимствуем оба справочника в расширение.
В расширении воспользуемся конструктором запроса. Для справочника Спецификации поле Владелец недоступно:
Теперь отметим для справочника Спецификации свойство Владельцы как контролируемое:
После этого в конструкторе запроса появляется поле Владелец:
На форме объекта в расширении можно отобразить владельца:
Скажите есть ли какой-то способ следить за изменением материала для тех кто прошел/приобрел курс ранее??? Может реализовать механизм рассылки?
Например, “Вы прошли курс по …, появились обновленные материалы, вы можете скачать их по ссылке:…”
тогда и не упустишь ни чего нового. А просматривать все стартовые страницы всех пройденных курсов на предмет “бонусов” слишком утомительно. (Спасибо!)
Так же хотелось бы попросить решить вопрос с рассылкой по курсам, не раз замечал, что приходит приглашение на курс который я уже проходил – зачем мне о нем сообщают (это касается и всплывающих сообщений на текущем сайте).
Доброго дня, Иван!
< Скажите есть ли какой-то способ следить за изменением материала для тех кто прошел/приобрел курс ранее??? Может реализовать механизм рассылки?
По всем ключевым обновлениям мы делаем рассылки + публикуем новость на сайте.
Так, например, в ближайшие дни уйдет рассылка по покупателям курса Подготовка к аттестации по упр. учету в ERP.
Некритические обновления публикуем только на стартовой странице курса.
< приходит приглашение на курс который я уже проходил — зачем мне о нем сообщают
Постараемся учесть это предложение.
В Видео2 говорится, что сам процесс создания расширений подробно рассматривается в курсе? В каком курсе? Я прошла курс “Профессиональная разработка интерфейсов и форм”, который закончился 04.07.2016, но там не было про расширения. Или я что-то упустила?
Доброго дня, Наталья!
В курс были добавлены новые материалы. Скачать их Вы сможете здесь – http://курсы-по-1с.рф/1c-v8/interfaces-forms/startpage/#materials
Подскажите пожалуйста как использовать расширения если у меня конфигурация Управление торговлей, редакция 11.2 (11.2.3.177) стоит в режиме совместимости 8.3.6. Можно ли снимать с режима совместимости эту типовую конфигурацию чтобы появилась возможность писать расширения? У меня она будет после этого корректно работать? Или этого делать нельзя?
Добрый день!
При использовании режима совместимости Версия 8.3.6 можно разрабатывать расширения. Изменять режим совместимости не придется.
При запуске предприятия выскакивает сообщение: http://prntscr.com/c0mnxi “Ошибка подключения расширения: Расширение1 – Ошибка свойства РежимСовместимости у объект”. Если поставить в “Не использовать” то подключается. Прокомментируйте пожалуйста.
У расширения есть ряд свойств, которые контролируются при подключении расширения. Расширение не подключится, если не совпадут контролируемые свойства. Одно из них – РежимСовместимости:
Т.е. если я создал расширение на режиме совместимости 8.3.7 а потом использую его на конфигурации с режимом совместимости 8.3.6 то расширение не подключится?
Да, возле этого свойства слева установлена галочка. Это значит, что оно является контролируемым. Если при подключении значения не совпадут, то расширение не подключится. В этом случае нужно будет доработать расширение.
Обновили конфигурацию и в новом релизе изменилась форма документа (например 1с добавила какой-то новый реквизит и добавила на форму)которую мы дорабатывали в расширении.
1. Что будет? нам нужно будет полностью перерисовывать форму в расширении с учетом изменений в новом релизе?
2. как сравнивать изменившиеся формы с расширением
Добрый день!
Обновленная форма в конфигурации автоматически не синхронизируется с формой из расширения.
Для обновления формы в расширении можно использовать пункт меню Обновить расширение формы:
Это действие переносит в расширение изменения, которые были сделаны в основной конфигурации после создания расширения этой формы.
При помощи механизма сравнения конфигураций сравнить основную конфигурацию и расширение нельзя.
По этой ссылке нашёл данную статью:
http://курсы-по-1с.рф/бесплатное/
Разве это не часть курса по интерфейсам и формам?
Но я почитал описание http://курсы-по-1с.рф/1c-v8/interfaces-forms/ и не нашёл там данной части. Добавьте в описание, пожалуйста.
Добрый день, Ринат Валерьевич!
Обновление добавлено в описание (в раздел «Бонусное занятие»).
Подскажите, расширение работает только на управляемых формах?
Добрый день!
Да, механизм расширений предназначен только для управляемого интерфейса.С выходом платформы 8.3.9 (где с помощью расширений можно будет подключаться практически ко всем модулям системы) можно попытаться использовать расширения и в обычном интерфейсе, но в любом случае расширения не будут подключаться к модулям обычных форм.
по первому видео.
А почему не за кэшировали контрагента в параметрах сеанса?
есть мнение что это избавило бы от запроса к SQL.
Добрый день, Олег! Если использовать кэширование, тогда это действительно избавит от запроса к SQL, но в данной задаче это лишнее.
какие варианты кэширования можно было бы организовать?
Добрый день!
Имеется в виду создать параметр сеанса, сохранить в нем контрагента. И обращаться к параметру сеанса, чтобы не было дополнительных чтений из базы.
Обновили конфигурацию и в новом релизе удалили один из использовавшихся реквизитов расширения. Что будет?
Добрый день, Дмитрий!
При запуске возникнет ошибка “Ошибка подключения расширения: ХХХХХХХХХХ – Не найден объект ХХХХХХХХ” и расширение не будет подключено.
Нужно будет изменять расширение. Именно поэтому из расширения я удалял лишние реквизиты.
Второе видео вызывает желание пройти курс )
Тогда нужно поторопиться, сегодня уже официальный старт летней группы, набор завершаем.
А можно ссылку на курс, в котором рассматривается подробно работа с расширениями конфигурации?
Собственно на этой странице и есть ссылка на курс.
Продублирую – http://курсы-по-1с.рф/1c-v8/interfaces-forms/
Но запись на этот поток уже закрыта – проходите предварительную регистрацию.
А почему вы разместили общий код в модуле объекта обработки? В модуле менеджера не лучше? Тогда бы не пришлось создавать объект обработки, чтобы вызвать её методы.
Согласен, можно и в модуле менеджера.
Спасибо за видео !!!
Добрый день! Я прошел курс по интерфейсам и что-то не могу найти тему про расширения! Подскажите в каком занятии разбираются описанные в видео механизмы. Или это в материалах нового потока? Но я ведь тоже хочу!:)
Добрый день!
Сегодня было опубликовано обновление на странице с материалами – оно доступно в том числе участникам предыдущих потоков.
Добрый день! Обещали на начало августа сертификат:) Его ожидать на почту или на сайте где-то есть зал славы?:)
Доброго дня, Андрей!
Ваш электронный сертификат отправлен на почту. Проверьте, пожалуйста.
Режет слух: “сэрверная” :(
+1
Добрый день.
В каком уроке/модуле курса представлена информация из вышеуказанных видео ?
Добрый день, Дмитрий!
Сегодня было опубликовано обновление на странице с материалами курса.
Видео из добавленных материалов 2016-07-27-Forms-Add-ExtCheck.rar
некорректно воспроизводится в ускоренном режиме (версия плеера 3.16.0.253 ). Невозможно разобрать о чем рассказывает преподаватель.
На нормальной скорости таких проблем нет, но , как по мне, в целях экономии времени гораздо удобнее “скоростной режим” воспроизведения.
Добрый день, Дмитрий!
Спасибо, что сообщили – материалы исправлены.
У меня вопрос – для чего в первом видео было добавлено условие проверки на создание путём копирования, и затем проверки на заполнено?
Если убрать проверку на копирование объекта, то код будет корректно отрабатываться – если при копировании контрагент заполнен, он не будет заполнятся данными из настройки. И наоборот – будет происходить заполнение при пустом поле.
Добрый день, Дмитрий!
Я считаю так правильнее, так как когда выполняется копирование документа, пользователь ожидает получить точную копию исходного документа. У вас может быть другая точка зрения. Это нормально.
“Счет на опАлату” немного режет глаза, но ролики просто отличного качества в части подачи материала.
Евгений, спасибо за внимательность! Видео подправим и скоро обновим.
Хорошо снято, очень легко воспринимается.
Как мне кажется, как хранилище алгоритмов логичнее использовать модуль менеджера обработки, а не объекта.
Лучше вписывается в идеологию платформы и чуть-чуть быстрее вызывается.
Ну и по проверкам логичнее дождаться 8.3.9 и использовать модуль объекта, а не формы.
Учитывая, что пример расширения почти полностью повторяет мою старую разработку (идея применения расширения и сам принцип хранения данных в настройках пользователя) то думаю, вполне этичным будет добавить тут ссылку на исходный вариант “Проверка ввода данных и события форм без изменения конфигурации”.
http://infostart.ru/public/359597/
Насколько я понимаю, она и использовалась как основа.
Кроме того, она является хорошей иллюстрацией.
Согласен, в платформе 8.3.9 данный механизм можно реализовать эффективнее. Также согласен, что можно использовать модуль менеджера.
Добрый день.
Помню в свое время не смог работать с расширениями в распределенных базах (РИБ).
Расширение не ходит с обменом. Более того, в периферийных базах его невозможно подключить вручную.
Как решаете проблему?
К сожалению, не тестировал расширения в составе РИБ, поэтому ничего по этой проблеме сказать не могу.
Расширения в РИБ подключаются без проблем.
каким образом?
Да Подскажите пожалуйста каким образом?
Подключить расширение к узлу РИБ получилось следующим образом:
1) отключил подчиненный узел от главного узла (обработки есть в сети)
2) в конфигураторе добавил расширение
3) в режиме предприятия восстановил подключение к главному узлу (у меня Розница 2.2 восстановила сама при первом после операции входе)
Из меню “все функции”стандартные обработки “Управление расширениями конфигурации” всё без проблем загружается, удаляется, обновляется… на подчинённом узле РИБ да и на главном тоже.