1с добавить константу в расширение
Тема «аккуратной» доработки типовых конфигураций является всегда актуальной.
С помощью расширений появляется возможность вносить доработки, оставляя конфигурации БЕЗ изменений (то есть не снимая «с замка»).
Буквально за 15 минут Вы научитесь приемам, которые сможете использовать для решения разных задач.
Более того, во втором видео мы покажем универсальный механизм, базирующийся на расширениях. И, разработав такой механизм один раз, его можно будет подключать к любой типовой конфигурации.
Мечты о собственной нетленке могут стать реальностью :)
Изучив видео, Вы научитесь:
- Создавать и подключать расширения к конфигурации
- Выполнять отладку расширений
- Дорабатывать типовые формы обработок/документов с помощью расширений
- Перехватывать события форм типовой конфигурации
- Хранить данные не в таблицах ИБ (хранилище настроек)
- Использовать обработки как хранилище алгоритмов
Также мы разберем оптимизацию состава объектов расширений и ограничения расширений в текущих релизах платформы.
Видео 2. Создание универсальных механизмов с помощью расширений
В этом видео мы покажем:
Чтобы освоить разработку интерфейсов и форм в 1С:Предприятие 8.3
на профессиональном уровне, рекомендуем записаться на курс:
Комментарии / обсуждение (85):
добрый день, перестали запускаться некоторые курсы. Возможно из-за того, что поменял клавиатуру на ноутбуке. Не напомните порядок восстановления? Спасибо
Далее для активации плеера выполните следующие действия:
1. Запустите плеер, откройте в нем файл плейлиста (с расширением .xml)
2. В открывшемся окне не нужно ничего вводить (!), просто нажмите кнопку Активировать.
3. После этого в Вашем браузере откроется страница с формой активации, которую нужно заполнить и нажать Активировать.
Добрый день!
Да, можно. Для этого нужно создать в основной конфигурации структуры данных, аналогичные используемым в расширении. Обработкой или вручную перенести данные из расширения в основную конфигурацию. Также нужно будет перенести весь программный код из расширения в основную конфигурацию, при необходимости адаптировать его (например, в расширении был префикс Расш_, а в основной конфигурации пр_). После протестировать, убедиться, что всё работает корректно, затем окончательно удалить расширение.
Добрый день!
Столкнулся со странным поведение расширения на платформе 8.3.9.1850 (без совместимостей).
заимствовал модуль менеджера документа
заменил (&Вместо) процедуру этого модуля, которая использует вызовы процедуры из других общих модулей.
в тонком клиенте все работает,
но при запуске толстого клиента эта процедура расширения перестает видеть процедуры из других общих модулей основной конфигурации (Переменная не определена)
заимствование всех этих модулей в расширение ничего не дает.
Это действительно такое ограничение или я что-то не так делаю?
Добрый день!
С такой проблемой не сталкивался, возможно причина в версии платформы (стоит проверит на более свежей версии).
В любом случае, новые возможности расширений вполне могут содержать ошибки, так как они практически не используются из-за режима совместимости в типовых конфигураций.
Мало кто рискует его отключать и я с этим согласен.
точно такая же проблема, на 8.3.10, УТ 11.3.4
Подскажите, как вообще можно посмотреть изменения от основной конфигурации в расширении? Есть расширение конфигурации, в нем уже куча объектов, часть из которых добавлена вручную, часть автоматически добавились. В некоторых из этих объектов произведены изменения: где-то форму поправили, где-то модуль. Остальное наследуется. Как теперь получить список именно изменений? Невозможно же разобраться. Или на каждый чих создавать отдельное расширение и там описывать что к чему? Да даже если и так, как быстро посмотреть какие скажем реквизиты или их события изменены в форме из нескольких сотен реквизитов? Может быть какая-то обработка есть?
Добрый день!
Пока никак. Механизм сравнения для расширений и основной конфигурации пока не реализован в платформе, хотя пункты в меню есть, а это говорит о том, что он когда-то появится.
Безусловно механизм расширений очень перспективный, но применять его нужно обдуманно, понимая все трудности и неудобства, которые присутствую в платформе.
Добрый день!
Да, в дереве объектов метаданных для расширения есть кнопка Измененные и добавленные в расширении, которая накладывает фильтр на дерево, оставляет в нем только заимствованные объекты, модифицированные в этом расширении, и новые объекты, созданные в этом расширении. Т.е. убрирает из списка объекты, которые были только заимствованы (например, для отображения форм).
А вот сравнить объекты расширения и объекты основной конфигурации (чтобы понять, что конкретно изменилось) на сегодняшний день нельзя. Платформа пока не даёт такой возможности.
Добрый день!
Стандартно, сначала исполняется код обработчика из расширения, потом из основной конфигурации. Начиная с платформы 8.3.9 механизм расширений серьезно доработали и теперь при создании обработчика система спрашивает Перед, Вместо или После должен срабатывать обработчик расширения.
Добрый день!
Менеджер расширений не предназначен для программной генерации расширений. Он предназначен для программной загрузки и удаления расширений аналогично тому, как это делается в пользовательском режиме.
Никто не сталкивался с ситуацией, когда регулярно права на подсистемы из расширений или на объекты из расширений слетают у пользователя?
Как отследить причину?
Добрый день! К сожалению, нет. Расширения на текущий момент используются крайне редко.
Спасибо большое, лишних знаний не бывает. Как, все-таки, приятно, когда есть люди, готовые делиться знаниями и опытом и не думающие только о наживе, в отличие от доржиков-коржиков. Удачи Вам!
Я не вижу ссылки на видео, браузер гуглхром
Добрый день!
Проверка не выявила никаких ошибок при просмотре. Попробуйте перезагрузить страницу или открыть ее в другом браузере.
Также чистка кэша должна помочь.
Скажите пожалуйста а расширение можно помещать в хранилище? Каким образом над расширением могут одновременно работать несколько человек?
Подскажите пожалуйста почему в расширении можно набрать запрос в конструкторе запроса первый раз. Но открыть его вторично с помощью конструктора запроса нельзя, выдает ошибку, хотя сам запрос работает без ошибок. Я читал в интернете что данную ситуацию обходят тем что пишут запрос в обработчике, редактируют и дорабатывают там же. А потом готовый копируют в расширение. Это действительно недоработки функционала расширения?
Т.е. ошибка у меня возникала потому что не все таблицы к которым я обращался в запросе присутствовали в расширении? Если были бы все то ошибки при повторном открытии не было бы?
Подскажите, а если не все таблицы присутствуют в расширении, то сам запрос корректно отработает но просто через конструктор не откроется? У меня проблема со стандартными реквизитами(родитель, владелец,ЭтоГруппа и т.д)
Да, именно так.
Отмечайте в расширении свойства Владельцы, Иерархический как контролируемые. Тогда конструктор будет открываться без ошибок.
Спасибо, я бы никогда не догадалась))
А подскажете, как это сделать? Как в расширении увидеть свойство Владелец? Ведь это свойство не появляется среди реквизитов добавленного объекта(Номенклатуры в моем случае). Есть ли в принципе возможность в расширении на форме подчиненного объекта(Спецификации номенклатуры в моем случае) поместить поле, ссылающееся на владельца этого объекта?
Добрый день!
Давайте рассмотрим на примере, на пустой базе.
Пусть у нас есть справочник Спецификации, подчиненный справочнику Номенклатура:
Создадим расширение конфигурации, заимствуем оба справочника в расширение.
В расширении воспользуемся конструктором запроса. Для справочника Спецификации поле Владелец недоступно:
Теперь отметим для справочника Спецификации свойство Владельцы как контролируемое:
После этого в конструкторе запроса появляется поле Владелец:
На форме объекта в расширении можно отобразить владельца:
Скажите есть ли какой-то способ следить за изменением материала для тех кто прошел/приобрел курс ранее. Может реализовать механизм рассылки?
Для управления расширениями в конфигураторе предназначен диалог Расширения конфигурации. Доступ к этому диалогу осуществляется через меню Конфигурация ‑ Расширения конфигурации. С помощью данного диалога можно создать новое расширение, удалить существующее, открыть конфигурацию расширения, сохранить расширение в файл, а также выполнять другие операции.
Рис. 681. Управление расширениями в конфигураторе
В общем случае получить доступ к командам работы с расширением конфигурации можно следующими способами:
1. С помощью команд командная панель панели окна Расширения конфигурации.
2. С помощью контекстного меню выбранного расширения в окне Расширения конфигурации.
3. С помощью меню Действия ‑ Конфигурация окна с расширением конфигурации.
Команды, представленные в этих меню, по смыслу совпадают с командами, применяемыми для основной конфигурации. Подробное описание этих команд см. здесь.
Описание свойств Активно и Область действия см. здесь.
33.2.1.2. Создание расширения
При создании расширения необходимо указать имя расширения, его синоним и префикс имен методов и объектов, создаваемых в расширении. Этот префикс будет автоматически добавляться к новым отчетам, обработкам и подсистемам, которые созданы в расширении, а также к обработчикам событий, которые создаются в расширяющих формах. В дальнейшем этот префикс можно посмотреть в свойстве расширения конфигурации Префикс имен.
Рис. 682. Новое расширение
При создании нового расширения из расширяемой конфигурации автоматически копируются следующие свойства: Основной режим запуска, Назначение использования, Основной язык, Режим совместимости интерфейса и Режим совместимости. Эти же свойства помечаются как контролируемые.
33.2.1.3. Сохранение расширения в файл
Для установки расширения в какое-либо прикладное решение, необходим файл с расширением конфигурации. Для выполнения этого действия следует выбрать в списке расширений конфигуратора нужное расширение и использовать команду Конфигурация ‑ Сохранить конфигурацию в файл командной панели диалога Расширения конфигурации или контекстного меню этого окна.
33.2.2. В режиме 1С:Предприятие
33.2.3. Удаление расширений
Интерактивное удаление расширений (в конфигураторе или в клиентском приложении) различает удаление расширения, которое не расширяет данные и расширения, которое данные расширяет. В первом случае будет задан стандартный вопрос-подтверждение, после чего расширение будет удалено.
Во втором случае удаление выполняется в два действия. Более подробное описание удаления расширения, расширяющего данные, см. здесь.
Удаление расширения из встроенного языка выполняется без дополнительного контроля со стороны системы (метод РасширениеКонфигурации.Удалить()). Однако, разработчик может выполнить все необходимые проверки самостоятельно. Для проверки активности расширения предназначено свойство РасширениеКонфигурации.Активно. Проверить, расширяет расширение данные или нет, можно с помощью метода РасширениеКонфигурации.ИзменяетСтруктуруДанных().
Фирма “1С” достаточно часто выпускает новые версии платформы. Среди них можно выделить версии-”прорывы” с принципиально новым функционалом. К таким можно отнести, например, платформу 8.3.11, в которой появилась возможность изменять структуру хранения данных при помощи расширений конфигурации.
А могут быть версии платформы не настолько революционные, но в которых появился полезный, ожидаемый функционал и в которых разработчики продолжают планомерное развитие механизмов платформы. И 8.3.16 как раз относится к таким релизам.
Мы решили поделиться этими видеоуроками не только со слушателями курса, но и со всеми нашими подписчиками :)
Обзор новых возможностей платформы
Для того, чтобы Вам было проще ориентироваться в материале, мы указали тайминг наиболее важных моментов в видео.
01:22 – Как создать константу в расширении
02:44 – Как создать форму констант в расширении
05:22 – Как работать с основной формой константы
05:47 – На что влияет галочка Использовать стандартные команды в свойствах константы.
00:30 – Зачем вообще нужны функциональные опции
03:29 – На что влияют и на что не влияют функциональные опции.
01:13 – Как создается функциональная опция в расширении
01:30 – Где указывается объект, предназначенный для хранения значения функциональной опции
02:16 – Какие объекты можно включать в состав функциональной опции в расширении
05:55 – Как обновить интерфейс при изменении значения функциональной опции
07:20 – Как в типовой конфигурации УТ 11 реализована работа с константами и обновление интерфейса при изменении значения функциональной опции
09:58 – Как реализовать собственную простую обработку для настройки функционала конфигурации
13:08 – Можно ли для хранения значения функциональной опции использовать константу, заимствованную из основной конфигурации.
01:03 – Можно ли при помощи расширения изменить объект конфигурации, предназначенный для хранения значения функциональной опции?
02:03 – Как изменить состав заимствованной функциональной опции?
04:58 – Можно ли при помощи расширения удалить объекты из состава заимствованной функциональной опции?
00:33 – В каких случаях на практике используются параметры функциональных опций
06:59 – Как создать в расширении параметр функциональных опций и какие объекты к этому времени должны существовать в расширении
07:30 – Какие обработчики событий нужно реализовать для работы с параметрами функциональных опций в формах объектов
10:32 – При каких настройках функциональных опций в расширении конфигурации платформа падает.
00:12 – Для чего используются критерии отбора
03:10 – Можно ли при помощи расширения изменить тип критерия отбора
04:00 – Можно ли при помощи расширения добавить в состав критерия отбора заимствованный объект
05:20 – Можно ли при помощи расширения добавить в состав критерия отбора объект, созданный в этом же расширении
05:55 – Как в пользовательском режиме проверить работоспособность критерия отбора, модифицированного при помощи расширения конфигурации
07:35 – Как создать новый критерий отбора в расширении
08:34 – Как в панели навигации формы создать ссылку для перехода к критерию отбора
09:24 – Какие ошибки возникают в пользовательском режиме при использовании критерия отбора, созданного в расширении конфигурации.
00:34 – Какие свойства в панели свойств выделяются цветом
01:28 – Как работает команда “Показывать только измененные” в панели свойств
01:53 – Как в дереве элементов формы отобразить только те элементы, которые изменены в расширении
Хотите научиться грамотно дорабатывать конфигурации при помощи расширений?
Еще больше возможностей по доработке и обновлению типовых конфигураций без снятия с поддержки – в нашем учебном курсе Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки.
Очередное сборище замочковых фетишистов, стремящихся не включать возможность изменения конфигурации во что бы то ни стало и каким бы идиотизмом не выглядело обходное решение?
(0) Добавьте константу в основную конфигурацию и не полощите мозг себе и заказчику. От добавления своей константы обновление конфигурации поставщика сломаться не может.
(5) (8) >> Доп реквизиты для организации.
Будет работать ровно до тех пор пока не окажется, что значение этого реквизита у разных организаций разное. А дальше - как запрос решит.
Решение годное только если значение константы зависит от организации. Но если это так, то для этого не стали бы делать константу.
(7) >> Заведи справочник констант.
А чем это отличается от "завести константу"?
Добавление справочников как-то более безопасно в расширениях происходит?
(11) >> кому ты это рассказываешь.
Я тебе могу тот же вопрос задать. )))
(14) тогда ты должен знать как отрабатывает платформа конфигурации с включенной возможностью изменений, даже нсли все объекты на поддержке.
(15) ну хз. Я лично недоверяю реквизитам которые создаются в расширении.
(13) >> предполагается, что организация одна.
Ага. И с каждого пользователя берётся клятвенное обещание, что никогда-никогда в этой базе новую организацию добавлять не будут ни при каких обстоятельствах.
Вы за что так сильно клиентов не любите? Или это такие маленькие "закладочки", чтобы увеличить вероятность, что клиент снова вас позовёт, когда у него появится необходимость использовать типовой функционал конфы?
(15) Как ваша константа появится в окне сравнения при фильтре "показывать только дважды измененные"?
Глупости не надо писать.
>> разрешать редактирование конфы можно делать только в случае, когда изменения невозможно сделать через расширение.
Замочкофилия во всей красе.
Расширения прекрасны. Но надо знать меру и хотя бы иногда включать голову.
(18) если бизнеспроцессы заточены под одну организацию, то добавление еще одной организации этот явно ставит вопрос об изменение бизнес процессов, а значит и технической реализации старых решений
Я понимаю о чем ты говоришь, но в данном случае между масштабироемостью и обновлением, я выберу обновления. Какой путь выбрать должен решать системный арзитектор
(20) Про бизнес-процессы это уже чистой воды домыслы. Автор про это ничего не писал.
Вариантов только два. Либо использовать расширения, либо нет. Если используются расширения и принято принципиально решение ни в коем случае не включать возможность изменения конфигурации (причины такого решения пока опустим), то надо тупо добавить константу в расширение и не париться. Сказки автора о том, что это ломает базу данных можно проигнорировать. С таким же успехом базу могло сломать всё что угодно, включая добавление константы в саму конфу.
Если же запрет на возможность изменения конфигурации не является принципиальным, то добавлять свои собственные объекты (таблицы) и реквизиты (поля в таблицы) всегда лучше в самой конфигурации. Это безопаснее и надёжнее.
И между удобством обновления (целых пять минут сэкономленного времени) и надёжностью, я всегда выберу последнее.
Читайте также: