1с параметры функциональных опций. Функциональные опции

.
«1С:ERP Управление предприятием» - инновационное решение для построения комплексных информационных систем управления деятельностью многопрофильных предприятий, в том числе с технически сложным многопередельным производством, с учетом лучших мировых и отечественных практик автоматизации крупного и среднего бизнеса.
Немного инфографики:


Пользователями 1С:ERP на сегодня (март 2016 г.) стали более 900 предприятий, и их число растет. При этом несколько десятков проектов, с точки зрения разработчиков, получили статус «пилотного», т.е. данные предприятия и организации в первую очередь принимают активное участие в развитии новой функциональности, оперативно предоставляя обратную связь.
Вот логотипы некоторых пользователей 1С:ERP:


Интересной особенностью решения 1С:ERP является то, что разрабатываем мы одно решение - 1С:ERP – а из его исходников автоматически получаем четыре решения (путем «вырезания» функциональности и переключения функциональных опций):


При расширении бизнеса или увеличении потребностей компании в автоматизации наращивание функциональности системы можно производить поэтапно, переходя от конфигурации «Управление торговлей» к конфигурации «Комплексная автоматизация» и далее к «ERP Управление предприятием 2». За счет высокой степени унификации решений такой переход выполняется быстро, накопленные в информационной базе данные сохраняются, а переучивание пользователей не требуется – они продолжают работать в привычной программной и информационной среде.

Как пишется 1С:ERP

Как мы из одного решения делаем четыре

Разработка ведется только в одной ветке (ERP). Процесс формирования из флагманского решения ERP более «легких», функционально ограниченных Комплексной Автоматизации (далее – КА для краткости) и двух разновидностей Управления Торговлей (далее – УТ и УТ Базовая) автоматизирован.
Изменения из ERP в «производные» конфигурации (КА, УТ, УТ Базовая) переносятся автоматически, с использованием механизма сравнения и объединения конфигураций . Этот механизм изначально предназначен для автоматизации процесса перехода на новые версии прикладных решений тех пользователей, которые изменяют/расширяют функциональность прикладного решения на своей стороне. Механизм сравнения и объединения конфигураций выполняет трехстороннее семантическое слияние на основании анализа трех конфигураций:
  • старая конфигурация от поставщика
  • новая конфигурация от поставщика
  • текущая конфигурация пользователя (старая конфигурация от поставщика плюс изменения, сделанные в ней пользователем)
На выходе мы получаем новую текущую конфигурацию, которая объединяет в себе новую функциональность (привнесенную разработчиком) и сохраняет доработки (кастомизации), сделанные пользователем.
В нашем случае в роли текущей конфигурации выступают поочередно КА, УТ, УТ Базовая, в роли старой и новой конфигураций от поставщика – ERP старой и новой версии соответственно. Т.е. мы считаем, что функционально ограниченные конфигурации - КА, УТ, УТ Базовая – это кастомизированные (в основном путем удаления незадействованных объектов) версии ERP.


Одни из немногих объектов, которые пишутся для каждого из решений вручную – это планы обмена , определяющие правила интеграции данного решения с другими решениями 1С (например, с 1С:Документооборотом) или, например, с внешним оборудованием. Но, благодаря постепенному переходу в обмене данными на единый стандарт EnterpriseData , мы уменьшаем количество уникальных для конкретного решения планов обмена и стараемся использовать единый код обмена данными.
В таком подходе есть одна интересная особенность. Всё решение пишется один раз, в ветке ERP; но бОльшая часть кода, форм, сценариев, отчетов и т.д. используется в четырех решениях, причем весьма разных – ERP внедряется на предприятиях с тысячами пользователей, а УТ Базовая призвана обслуживать индивидуальных предпринимателей. Мы стараемся уделять много внимания юзабилити нашего продукта.
Международный стандарт ISO 9241-11 определяет юзабилити как:
степень, с которой продукт может быть использован определёнными пользователями при определённом контексте использования для достижения определённых целей с должной эффективностью, продуктивностью и удовлетворённостью

Мы стараемся писать приложение так, чтобы с ним было легко и удобно работать даже неискушенному пользователю.

Особенности разработки

При разработке ERP мы должны всегда помнить, что разрабатываемая функциональность может быть задействована в одном или нескольких производных от ERP решениях (КА, УТ, УТ Базовая). Для легкого включения/выключения функциональности мы широко используем механизм функциональных опций , изначально созданный для таких задач. Функциональные опции позволяют выделить в прикладном решении функциональность, которую можно включать/выключать при внедрении, не изменяя само прикладное решение. Функциональные опции – это параметры настройки решения, флажки, при выключении которых вся связанная с ними функциональность становится недоступной. В первую очередь функциональные опции используются для тонкой настройки программы под нужды конкретного внедрения. В ERP мы задействуем этот механизм (помимо основного его назначения) для «вырезания» из ERP производных конфигураций. Например, в решении ERP есть функциональная опция «Управление предприятием», с ней связана вся функциональность, отвечающая за управление производством - формирование графика производства, учет производственных затрат, соответствующие отчеты и многое другое. Эта опция включена только в решении 1С:ERP и выключена в «производных» решениях КА, УТ, УТ Базовая. А всего в 1С:ERP используется около 600 функциональных опций.
Еще один механизм платформы, облегчающий труд разработчика 1С:ERP – подсистемы . Подсистемы – это способ разбить функциональность решения на блоки; каждый объект в решении (справочник, документ, отчет и т.п.) должен входить хотя бы в одну подсистему. В частности, в решении ERP заведены три подсистемы, облегчающие построение производных от ERP решений:
  1. «Объекты УП, УТ, КА» - объекты, входящие во все прикладные решения: Управление Торговлей, Комплексная Автоматизация, Управление Предприятием (русскоязычное название ERP).
  2. «Объекты УП, КА» - объекты, относящиеся только к конфигурациям Комплексная Автоматизация и ERP.
  3. «Объекты УП» - объекты, относящиеся только к решению ERP
Любой прикладной объект в решении ERP должен относиться ТОЛЬКО К ОДНОЙ из этих трех подсистем. Это условие проверяется при статическом анализе кода решения ERP (см. ниже).

Цифры после запятой

Версия продукта ERP состоит из четырех чисел, разделенных точками. Например - 2.1.3.117.
  • Первое число (редакция) в версии меняется крайне редко (например КА 1.х.х.х и КА 2.х.х.х разделяет почти 8 лет).
  • Второе число (подредакция) меняется примерно раз в год. В версии с новой подредакцией выпускается новая функциональность. Выпуск таких версий часто приурочивается к началу календарного года, чтобы у пользователей было достаточно времени на «переезд» на новую версию.
  • В версиях с новым третьим числом (релиз) развивается существующая функциональность; новый релиз выходит примерно раз в два-три месяца.
  • Версии с обновленным четвертым числом (исправительные сборки) содержат в себе только исправления ошибок и обновления для соответствия текущему законодательству. Выходят каждые две недели.
Единовременно у нас в разработке могут находиться до 3 версий продукта, например:
  1. 2.1.3.X – Поддерживаемый релиз предыдущей подредакции. Будет выпускаться до конца 2016 года. В этой версии идет только исправление ошибок и правки для соответствия текущему законодательству.
  2. 2.2.1.X – Текущий релиз текущей подредакции. В нем новая функциональность подредакции. Для него до выпуска релиза 2.2.2.X, будут выпускаться исправительные сборки.
  3. 2.2.2.X – Развитие функциональности текущей подредакции. Именно этот релиз активно разрабатывается.

Учитывая, что из каждой ветки ERP получаются, помимо ERP, еще 3 решения – КА, УТ и УТ Базовая – получаем 12 версий продуктов, находящихся в 12-ти разных хранилищах.
В ходе разработки мы имеем до 4 горизонтов планирования, например:

  1. 2.1.3 (поддерживается), решаем, какие ошибки правятся, какие проекты, связанные с изменением законодательства, будем реализовывать. Будут реализованы только те изменения, которые вступят в силу в 2016 году. Горизонт – до конца 2016 г.
  2. 2.2.1 (поддерживается) – исправляются «внешние» ошибки + изменения законодательства, вступающие в силу до выхода 2.2.2. Горизонт – до выхода 2.2.2.
  3. 2.2.2 (активно разрабатывается) - исправляются «внешние» ошибки + найденные нами ошибки + реализуется новая функциональность. Горизонт – до выхода 2.2.3
  4. 2.2.3 (планируется). Если проект большой, то он может сразу разрабатываться на эту версию (и не войдёт в предыдущую). Горизонт – до выхода 2.2.4 или до конца 2017 года.

Использование продукта «1С:Система проектирования прикладных решений» в разработке ERP

Как уже рассказывалось, мы в 1С стараемся следовать принципу Eat your own dogfood , используя наши собственные продукты в наших внутренних процедурах. В частности, в разработке ERP мы широко используем продукт «1С:Система проектирования прикладных решений» (сокращенно СППР). СППР, как следует из названия, помогает проектировать прикладные решения на платформе «1С:Предприятие», и позволяет обслуживать задачи полного цикл разработки ПО - сбор требований, контроль изменений, документирование, баг-трекинг и т.д.
СППР позволяет создавать элементы двух типов – ошибки (которые должны быть исправлены) и требования (запросы на новую функциональность). С ошибками все более-менее ясно, рассмотрим создание нового требования.
Поводом для создания требования может быть:
  1. Запрос от партнера или клиента. Такие запросы мы собираем, в частности, на партнерских семинарах; путем голосования среди партнеров мы выделяем наиболее приоритетные из них.
  2. Запрос может возникнуть в ходе пилотного проекта по внедрению новой версии в том случае, если у клиента возникло важное для него пожелание.
  3. Запрос от нашей службы техподдержки (точнее, запрос от партнера или клиента, прошедший через нашу техподдержку), запрос с нашего партнерского форума или от нашего аккаунт-менеджера (который сопровождает важного для нас клиента/клиентов).
  4. Запрос от команды разработки платформы 1С:Предприятие. Платформенная команда просит команду разработки ERP (и других типовых конфигураций) использовать новую платформенную функциональность – например, интерфейс Такси , отказ от модальных окон , отказ синхронных вызовов и т.д.
  5. Рефакторинг, оптимизация архитектуры, улучшение юзабилити.

Поводом для рефакторинга (п.5) могут быть серьезные архитектурные изменения (например, пересмотр распоряжений на отгрузку, когда вместо накладных стали использоваться заказы).

Продукт СППР поставляется в составе ERP (но его можно купить и отдельно). Решение ERP может быть запущено в режиме интеграции с СППР; в этом случае на каждой форме будет кнопка «Открыть функциональную модель», при ее нажатии откроется описание функциональности формы в СППР.


Вот, что открывается – это модель рабочего места в IDEF0 :


Можно и наоборот – изучать функциональную модель и из нее открывать формы рабочих мест. Такой режим можно использовать при изучении работы программы.
Важный момент – открывается не СППР, открывается форма внутри ERP, куда подгружаются данные из СППР. Т.е. интеграция «бесшовная» (пользователь ее не видит). Этот прием применяется при интеграции и с другими продуктами. Например, с 1С:Документооборот (можно работать не выходя из ERP с почтой, задачами, бизнес-процессами, которые работают в другой базе).

Как мы разрабатываем ERP: 6 контрольных точек проекта

Итак, решено реализовать новое требование на изменение функциональности. Однотипные требования объединяются в технические проекты. В рамках нового релиза ERP обычно реализуются от 100 до 150 технических проектов, каждом проекте – от одного до нескольких десятков требований. Технический проект заводится в СППР; проект в ходе реализации проходит через 6 контрольных точек, каждая из них фиксируется в СППР.
Немного о делении на команды внутри подразделения ERP. Руководитель команды (тим-лид) участвует в проектировании и, как правило, участвует в разработке. В состав команды также входят обычно тестировщики. Команды разработки статичны, за ними закреплены по нескольку предметных областей. Если проект затрагивает смежные области, на время реализации проекта привлекаются участники соответствующей команды. В проект может быть вовлечена не вся команда.
Ответственный за проект – ведущий разработчик или тим-лид. На его ответственности – контроль процессов:
  • Качественное проектирование, учет всевозможных сценариев, сопряжение со смежными блоками
  • Сроки
  • Качество архитектуры, пользовательского интерфейса
  • Написание справки, оформление проекта, в т.ч. разработку функциональной модели
Точка 1. Открытие проекта
Тим-лид заводит технические проекты в СППР списком на релиз. В каждом проекте расписываются цели, указываются реализуемые требования. Список перед началом работы над релизом обсуждается с руководителем разработки. Собственно при открытии проекта совещаний не проводят – просто проект в СППР посылают на открытие.
Команда проекта приступает к разработке концепции.
Точка 2. Согласование концепции
Для согласования концепции проводится онлайн или офлайн встреча, в которой участвуют ответственный за проект, тим-лид, руководитель разработки, вовлеченные в проект специалисты. Обычно к этому этапу у ответственного за проект готов «крупноблочный» концепт, который дошлифовывается в ходе встречи. Также обсуждаются (и прописываются в СППР) сценарии, описание пользовательского интерфейса. Если требование родилось из запроса партнеров или клиентов, то материалы проекта (концепции, сценарии, UI) могут быть отправлены партнеру/клиенту для оценки решения.
В процессе встречи согласуется трудоемкость создания прототипа (обычно создание прототипа занимает до 5 рабочих дней). Команда приступает к созданию прототипа.
Точка 3. Согласование прототипов
Проводится встреча, в ходе которой рассматриваются готовые прототипы, обсуждаются детали реализации (в частности, какие объекты будут добавляться и изменяться), проверяются гипотезы, утверждаются прототипы форм и т.д. С целью максимально серьезной проверки на юзабилити прототипы запускаются в самом «жестком» режиме – в веб-клиенте, в интерфейсе «Такси», на мониторах с маленьким разрешением.
Функциональная модель проекта в нотации IDEF0 разрабатывается и хранится в СППР.
На этом этапе проектная команда должна как можно точнее оценить трудозатраты на реализацию проекта, поэтому обсуждаются (и документируются в СППР) все аспекты проекта:
  • Согласование правильности описания проекта в СППР (в частности, отслеживается, что все задачи на предыдущих контрольных точках проекта выполнены).
  • Какие новые объекты метаданных (справочники, документы и т.д.) будут добавляться в решение
  • Какие изменения будут делаться в уже существующих объектах метаданных
  • Согласование планов обменов данными с другими решениями(будут ли новые/измененные данные участвовать в обмене данными с другими приложениями, и если да – то как именно)
Если трудозатраты всех устраивают – проводится презентация (на основе материалов по проекту из СППР) всего, что сделано по проекту, с целью выявить как можно больше нюансов перед началом разработки.
И начинается разработка!
Точка 4. Согласование разработанного решения
Решение разработано, подготовлена презентация (в формате PowerPoint). Часто проводится очное совещание с «живым» показом разработанного решения.
Если проект публичный (опубликован в доступном партнерам списке планов на сайте 1С), то презентация выкладывается на партнерском форуме в разделе ERP, чтобы все заинтересованные партнеры могли ознакомиться и высказать свои замечания.
Точка 5. Тестирование и аудит проекта
По окончании основной разработки проводится прогон ручных функциональных тестов. Тестеры как полноценные члены команды участвует во всех контрольных точках проекта и имеет понимание функциональности проекта и сценариев работы. Тестеры также оценивают новую функциональность на соответствие нашим стандартам юзабилити. Эти стандарты (включают в себя стандарты кодирования и стандарты разработки интерфейса) публикуются в доступном партнерам и зарегистрированным пользователям ресурсе на сайте 1С.
Код проекта проходит процедуру code review . Code review в ERP проводят участники другой проектной группы; code review – обязанность, которую все разработчики команды ERP несут по очереди. В случае если в коде найдены проблемы, в СППР регистрируются ошибки, которые должны быть исправлены до прохождения точки 5.
Проводится проверка обновления на новую версию с предыдущей (последней выпущенной на данный момент сборкой).
Итак, проект готов, тесты пройдены, время заливать код в основное хранилище (до этого вся разработка ведется в отдельном хранилище технического проекта). На этом этапе также заканчивается написание справочных материалов по новой функциональности (справка хранится в СППР).
По окончании этапа (тесты пройдены и готовы справочные материалы) проект заливается в основное хранилище; после этого проводится выборочное регрессионное тестирование в смежных областях – мы должны убедиться, что не сломали ничего из существующей функциональности.
Точка 6. Окончание проекта
Закрываем проект в СППР – присваиваем ему статус «Выполнено».

Выпуск версии

Примерно за месяц до выпуска нового релиза накладывается мораторий на заливку новых проектов в основное хранилище (разработка в хранилищах тех. проектов продолжается); те проекты, которые не успели закончиться к этому времени, переносятся на другую версию.
В течение этого месяца проводится регрессионное тестирование; вносить изменения в код разрешено только для исправления привнесенных в этом релизе ошибок. Непривнесенные ошибки (те, которые воспроизводились и на предыдущих релизах), к началу регрессионного тестирования обычно почти все исправлены; те же ошибки, что остались, переносятся на следующий релиз. Основная задача регрессионного тестирования – гарантировать неухудшение качества продукта.
В качестве баг-трекера, как уже говорилось, используется все тот же СППР.

Исправительные сборки

Каждые две недели мы выпускаем исправительные сборки к версиям; на сегодня это 2.1.3.x, после выхода релиза 2.2.1 будут выпускаться 2 исправительные сборки - 2.1.3.x и 2.2.1.х. От регистрации ошибки до появления ее в исправительном релизе у нас проходит менее двух недель; наша статистика показывает, что среднее время от обращения клиента с ошибкой в ERP в поддержку до выхода ее исправления в исправительной сборке на сегодня – 9 дней.

Разветвленная разработка



В групповой работе над ERP мы стараемся использовать средства, предоставляемые нам платформой 1С:Предприятие. Конфигурации хранятся в хранилище конфигураций , при чекине новой функциональности в ветки используется стандартный механизм поставки и поддержки . Все операции автоматизируются по максимуму; в случае, если объекты менялись только на стороне разработчика – объединение кода происходит без участия программиста. Если для объединения исходников нужно вмешательство разработчика, обычно мы используем встроенные возможности платформы. Но есть также возможность вызова сторонних инструментов сравнения/объединения из инструментов платформы (например, или Araxis). Кстати, эта фича – вызова сторонних инструментов сравнения/объединения - была добавлена в платформу по запросу именно команды разработки ERP.

Разное

При разработке новой функциональности мы используем ту версию платформы, которая будет доступна на момент выхода новой версии ERP (на сегодня это платформа 8.3.8).
Это возможно благодаря тому, что в платформе очень активно используется режим поддержки совместимости с предыдущими версиями. Как только появляется новая платформа – мы на нее переходим, а вот отключение режима совместимости происходит далеко не сразу. Это связано с тремя причинами:
  1. Мы хотим меньше «шокировать» пользователей, поэтому отключение режима совместимости мы стараемся делать в «тихие» периоды, а не тогда, когда все пользователи, например, сдают отчетность.
  2. Обычно отключение совместимости связано с разного объема переделками конфигурации. Их нужно планировать, для их реализации нужно время.
  3. ERP – это конфигурация, в состав которой входит на настоящий момент 10 библиотек. Отключать совместимость можно только тогда, когда все библиотеки тоже это сделают.
О библиотеках можно написать отдельно. Библиотека – это специальным образом написанная конфигурация, которая включает в себя функциональность, которая должна одинаковым образом работать в различных конечных наших прикладных решениях. Интеграция библиотек осуществляется с помощью уже упомянутого механизма платформы «Поставка конфигураций». Библиотеки разделяются на публикуемые (те, которые мы публикуем, и которые могут использовать сторонние разработчики в своих прикладных решениях) и внутренние (которые мы отдельно не публикуем – только в составе прикладных решений). Подавляющее количество библиотек являются публикуемыми.
В состав ERP входят 10 библиотек, разрабатываемых другими командами. Их код не меняется разработчиками команды ERP.

Список библиотек

  1. Библиотека стандартных подсистем .
    Базовая функциональность – права доступа, печать, почта и т.д. Входит в состав большинства прикладных решений.
  2. в ERP
  3. Библиотека интернет-поддержки пользователей.
    Информирование о выходе обновлений, обращение в тех. поддержку, скачивание и установка обновлений
  4. Библиотека электронного документооборота .
    Обмен электронными документами с контрагентами (в т.ч. юридически значимый ЭДО), DirectBank (прямой обмен с банками), обмен с сайтами (CMS).
  5. Библиотека интеграции с ЕГАИС.
    Обмен с Единой Государственной Автоматизированной Информационной Системой для учета операций по розничному обороту алкоголя.
  6. Библиотека регламентированного учета.
    «Кусочек» 1С:Бухгалтерии в ERP. Вообще регламентированный учет в ERP в методической части (за некоторыми небольшим исключениями) сходен с 1С:Бухгалтерией, но его реализация отличается и делается независимо. Из 1С:Бухгалтерии мы берем бухгалтерские отчеты и отчетность по некоторым налогам.

Как мы тестируем 1С:ERP

После создания из ERP трех решений - КА, УТ, УТ Базовая - для проверки корректности всех четырех решений мы проводим статический и динамический анализ полученных конфигураций.
Частичный статический анализ проводится каждый раз после того, как из хранилища ERP создаются конфигурации КА, УТ, УТ базовая и заливаются в собственные хранилища (этот процесс проходит два раза в день).
Более развернутый статический анализ делается с помощью конфигурации 1С:Автоматическая Проверка Конфигураций (1С:АПК). В частности, 1С:АПК проверяет:

  • Состав ролей. Например, проверяется, что права на чтение всех констант включены в роль «Базовые права».
  • Соответствие кода принятым стандартам. Для большого количества стандартов прикладной разработки (которых у нас несколько сотен) написаны процедуры анализа кода на предмет их соблюдения. Например, что не используются полные соединения в запросах, или, что правильно локализованы строки, которые отображаются в интерфейсе.
  • Специфические проверки, связанные с особенностями разработки ERP
    Например, проверка, что каждый прикладной объект входит только в одну из подсистем «Объекты УТ, КА, УП», «Объекты КА, УП» или «Объекты УП»
Динамический анализ кода включает в себя, в частности, регрессионное тестирование , в рамках которого прогоняются следующие операции (а результаты операций сверяются с последним предыдущим успешным тестированием):
  • Открытие всех форм
  • Обмен данными с другими прикладными решениями (например, с 1С:Бухгалтерия Предприятия)
  • Отражение проведенных документов в учете. Проверяется, что после проведения документа в эталонной базе результат отражения его в учете не поменялся.
  • И др.
Для регрессионного тестирования мы используем от 10 до 20 баз данных, различного размера (от 15 Гб до 70 Гб) и разной специфики наполнения.
На этих же базах тестируем обновление на новую версию с предыдущей, с целью убедиться, что обновление проходит а) корректно и б) за разумное время.
При обновлении базы 1С есть два существенных этапа:
  1. Основное время - обновление данных в многопользовательском режиме. Прикладное решение готовит данные к обновлению в фоне, пользователи могут продолжать работать с системой, но быстродействие системы может быть снижено и часть функций могут работать ограниченно. Обычно обновление на новую версию проводят в выходные (когда активность пользователей минимальна).
  2. Минимальное время - обновление в монопольном режиме. Когда все данные подготовлены в фоновом режиме, наступает время изменения структуры БД. Для этого база данных переводится в монопольный режим, когда работа пользователей с системой невозможна. Скорость обновления крайне важна для наших пользователей.
В ближайших планах – расширение зоны автотестирования с целью покрыть ими максимальное количество сценариев.

Заключение

ERP – один из самых масштабных наших продуктов. Мы стараемся использовать в его разработке современные и передовые методики, а также создавать новые методики и инструменты, чтобы, с одной стороны, быстро его развивать, а с другой стороны - обеспечивать высокое качество разработанного решения.

Теги:

Добавить метки

Объект 1с "Функциональные опции" - предназначены для выделения в прикладном решении функциональности, которую можно включать (выключать) при внедрении, не изменяя само (совместно с Подсистемами формируют интерфейс тонкого клиента 1С). Являются частью механизма функциональных опций.

Механизм функциональных опций включает в себя два объектов метаданных:

  1. Функциональная опция;
  2. Параметры функциональных опций.

Подробнее

Функциональная опция представляет собой объект метаданных, который может непосредственно влиять на состав интерфейса приложения (если функциональная опция хранит свое значение в реквизите типа Булево). С помощью объектов этого типа можно скрыть элементы, которые относятся к недоступной функциональности. Например, опция Валютный учет может скрыть Валюты, поле Валюта из , колонку Валютная сумма из отчетов.

Источником значения функциональной опции является объект метаданных, выбранный в качестве свойства Хранение , например, это может быть .

В случае хранения значения функциональной опции в реквизите справочника или ресурсе требуется дополнительная информация, которая указывает на то, как именно выбрать значение опции. Для этой цели предусмотрен отдельный объект метаданных – Параметры функциональных опций .

Можно сказать, что параметры функциональных опций являются осями координат пространства значений функциональных опций. Причем один параметр функциональных опций может определять значение «своей» оси координат одновременно для множества функциональных опций.

[свернуть]

Функциональные опции могут оказывать влияние:

  1. на пользовательский интерфейс:
    • глобальный ;
    • реквизиты (в том числе колонки реквизита формы типа ТаблицаЗначений или ДеревоЗначений );
    • команды формы;
  2. на отчеты, реализованные с помощью системы компоновки данных;
  3. на алгоритмы, написанные на встроенном языке – имеется возможность получать значения функциональных опций из встроенного языка и использовать их в различных условиях, например, для уменьшения объема вычислений (см., например, ).

ВНИМАНИЕ! Если клиентское приложение работает с файловым вариантом информационной базы через веб-сервер, то изменение функциональной опции приведет к изменению пользовательского интерфейса только после перезапуска веб-сервера (перезапуск клиентского приложения не вызовет изменение пользовательского интерфейса).

Свойства Функциональных опций 1С

  • Хранение - поле, в котором необходимо выбирать объект с типом булево. Как правило, используются константы.
  • при получении - флаг отвечает за возможность получения значения функциональной опции в привилегированном режиме.
  • Состав - список объектов и реквизитов объектов, видимость которых включается/выключается при выключении/выключении функциональной опции (будет управляться с помощью управляемой формы).

Например, в зависимости от условий конкретного внедрения, можно предусмотреть отключение учета товаров по складам, чтобы при оформлении документов поступления товаров поле Склад не отображалось в форме документа.

Особенности использования Функциональных опций 1С:

  1. Функциональные опции могут иметь значения произвольного типа (не обязательно Булево ).
  2. Добавляя новую константу для использования функциональной опции, не забудьте включить ее в соответствующую подсистему и назначить на нее права.
  3. Работа с функциональными опциями доступна из встроенного языка, благодаря чему разработчик может создавать собственные алгоритмы значений функциональных опций.
  4. Команда командного интерфейса будет исключена из командного интерфейса в случае, если функциональной опцией отключен:
    • реквизит, являющийся параметром команды;
    • тип параметра команды (если тип параметра команды составной, то команда становится недоступной тогда, когда отключаются все типы параметра).

ВНИМАНИЕ! Функциональные опции и их параметры не влияют на состав базы данных: все таблицы и поля присутствуют в БД независимо от состояния функциональных опций.

Влияние функциональных опций на реквизиты и команды формы:

  1. управляемой формы типа <Вид>Объект (СправочникОбъект , ДокументОбъект и т. д.) будет отключен в том случае, если функциональной опцией отключен соответствующий объект . Анализируются только те функциональные опции, которые не имеют параметров.
  2. Основной реквизит управляемой формы типа ДинамическийСписок будет отключен в том случае, если функциональной опцией отключен объект конфигурации, который указан в качестве основной таблицы динамического списка. Анализируются только те функциональные опции, которые не имеют параметров.
  3. Отключается реквизит формы ссылочного типа, если объект конфигурации, образующий этот тип, отключен функциональной опцией. Реквизит формы составного типа отключается в том случае, если функциональные опции отключают все составляющие типы.
  4. Таблица формы будет отключена, если она отображает данные реквизита формы, отключенного функциональной опцией.
  5. В диалоге выбора типов (например, для полей ввода, связанных с реквизитами составного типа) отсутствуют типы, если объекты конфигурации, формирующие эти типы, отключены функциональной опцией. Информация о типах, отключенных функциональными опциями, кешируется на стороне клиента и очищается через 20 минут или во время вызова метода ОбновитьИнтерфейс() .

ВНИМАНИЕ! В отличие от командного интерфейса, значения параметров функциональных опций устанавливаются только для конкретного экземпляра формы.

Создание параметра функциональных опций

Параметр функциональной опции создается с помощью объекта конфигурации 1С "Параметры функциональных опций".

[свернуть]

Это можно сделать в окне конфигурации, добавив новый объект.

Свойства параметра функциональных опций:

  • Использование - устанавливает набор объектов, значения которых будут определять то, как следует выбирать значение функциональной опции. В список доступных объектов входят справочники и измерения регистра сведений. Для каждого параметра функциональных опций в данном списке можно выбрать один справочник (из всего перечня справочников) и по одному измерению каждого регистра сведений.

ВНИМАНИЕ! Нельзя использовать один и тот же объект метаданных в нескольких параметрах функциональных опций.

Функциональные опции - это общие объекты конфигурации . Они являются частью механизма функциональных опций и позволяют выделить в прикладном решении функциональность, которую можно включать/выключать при внедрении, не изменяя само прикладное решение.

Например, в зависимости от условий конкретного внедрения, необходимо предусмотреть отключение учета товаров по складам. Чтобы при оформлении документов поступления товаров поле Склад не отображалось в форме документа.

Для этого в конфигурации может быть определена функциональная опция Учет по складам , хранящаяся в константе типа Булево .

С этой функциональной опцией можно связать различные объекты конфигурации или их реквизиты. Например, с этой функциональной опцией можно связать реквизит Склад документа Поступление товаров .

Тогда, при внедрении можно включать или выключать эту функциональную опцию в конкретной информационной базе в режиме 1С:Предприятие.

Платформа при этом будет автоматически включать и выключать отображение всех соответствующих элементов интерфейса (полей, команд, колонок списков, элементов отчетов). В нашем случае - будет скрываться или отображаться поле Склад во всех формах документа Поступление товара .

Функциональные опции – это одна из новых возможностей платформы 1С:Предприятие 8.2. Смысл их использования заключается в том, что они позволяют настраивать пользовательский интерфейс в соответствии с настройками функциональных опций, задавать видимость реквизитов в формах. Кроме того, разработчик имеет возможность реализовывать программный код, выполнение которого зависит от состояния функциональной опции.

Создадим функциональную опцию, которая позволяет включать и отключать ведение расчета заработной платы в конфигурации. С ее помощью мы сможем быстро скрывать те части интерфейса, которые относятся к решению расчетных задач. Функциональная опция сама по себе не хранит какого-либо значения, которое позволяет ее включать и отключать. Обычно для хранения состояния функциональной опции используют константу, хотя она может быть привязана и к другому объекту, например – к реквизиту какого-либо объекта.

Создадим новую константу, назовем ее УчетЗарплаты , тип – Булево . Включим константу в подсистему Администрирование и в форму констант для того, чтобы мы могли редактировать ее. Кроме того, в форме констант зададим обработчик ПослеЗаписи следующего вида:

&НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) ОбновитьИнтерфейс(); КонецПроцедуры

Смысл использования команды ОбновитьИнтерфейс() заключается в том, чтобы после вступления в силу изменения константы , связанной с функциональной опцией, обновить, перерисовать интерфейс . Иначе для того, чтобы изменения вступили в силу, придется перезапускать конфигурацию.

Создадим новую функциональную опцию, назовем ее УчетЗарплаты , на закладке Основные , в параметре Хранение укажем только что созданную константу, рис. 7.23 . Включим функциональную опцию в подсистему Администрирование .


Рис. 7.23.

Теперь перейдем на закладку окна настройки функциональной опции Состав и выберем все ( рис. 7.24), что относится к расчету заработной платы. Если какие-либо объекты, например, справочники, относятся к различным частям конфигурации, не будем их отмечать, иначе при выключении функциональной опции они "исчезнут" из интерфейса.


Рис. 7.24.

Выбор подсистемы РасчетЗаработнойПлаты в данном случае не ведет к автоматическому выбору всех объектов, включенных в подсистему. При выборе мы лишь подразумеваем скрытие или отображение раздела командного интерфейса РасчетЗаработнойПлаты .

Запустив систему в пользовательском режиме, мы сможем включать и отключать видимость объектов, относящихся к зарплатной подсистеме нашей конфигурации, просто устанавливая или снимая флаг у константы УчетЗарплаты .

Более сложный вариант использования функциональных опций заключается в настройке видимости отдельных элементов форм в том случае, если значение функциональной опции хранится в реквизите какого-либо объекта.

Внесем изменения в конфигурацию, в частности, в справочник ФизическиеЛица добавим реквизит логического типа ИмеетОпытКадровойСлужбы и разместим его на форме элемента справочника.

Печать (Ctrl+P)

1. Назначение функциональных опций

Функциональные опции позволяют разработчику описать возможности прикладного решения, которые можно оперативно включать или выключать на этапе внедрения и/или в процессе работы системы. Например, возможность работы с дополнительными свойствами товаров можно выделить в отдельную функциональную опцию. Тогда если отключить эту возможность, в интерфейсе прикладного решения «пропадут» все связанные (с дополнительными свойствами товаров) возможности.
Система способна автоматически учитывать состояние сделанных настроек – скрывать выключенные возможности, делая интерфейс приложения более ясным и понятным для пользователя.
При разработке возникают ситуации, когда значение функциональной опции должно зависеть от неких параметров, например, валютный учет ведется не у всех организаций. Для реализации такой зависимости служат Параметры функциональных опций – объекты, параметризующие функциональные опции.

2. На что влияют функциональные опции

2.1. Общая информация

Функциональные опции могут оказывать влияние:
● На пользовательский интерфейс – при выключении каких-либо функциональных опций система скрывает в пользовательском интерфейсе все элементы, относящиеся к ней. При этом затрагиваются следующие элементы интерфейса:
● глобальный командный интерфейс;
● реквизиты формы (в том числе колонки реквизита формы типа ТаблицаЗначений или ДеревоЗначений);
● команды формы;
● отчеты, реализованные с помощью системы компоновки данных.
ВНИМАНИЕ! Если клиентское приложение работает с файловым вариантом информационной базы через веб-сервер, то изменение функциональной опции приведет к изменению пользовательского интерфейса только после перезапуска веб-сервера (перезапуск клиентского приложения не вызовет изменение пользовательского интерфейса).
● На алгоритмы, написанные на встроенном языке – имеется возможность получать значения функциональных опций из встроенного языка и использовать их в различных условиях, например, для уменьшения объема вычислений.
ВНИМАНИЕ ! Функциональные опции и их параметры не влияют на состав базы данных. Все таблицы и поля присутствуют в базе данных независимо от состояния функциональных опций.

2.2. Глобальный командный интерфейс

Влияние функциональных опций на глобальный командный интерфейс заключается в том, что система скрывает команды всех объектов, относящихся к выключенным опциям. Например, если значение функциональной опции Закупки равно значению Ложь , то будут скрыты команды открытия раздела Закупки , создания документа ПриходТовара , открытия списка ПриходТовара и т. д.
В свою очередь, опция Закупки может учитывать значение параметра функциональной опции, например, Организация. Изменяя с помощью методов встроенного языка значение этого параметра, можно изменять состояние функциональной опции, а, следовательно, и видимость элемента интерфейса.
Также следует учитывать следующие особенности формирования командного интерфейса:
● Команда будет исключена из командного интерфейса в том случае, если реквизит, являющийся параметром команды, отключен функциональной опцией.
● Команда будет исключена из командного интерфейса в том случае, если тип параметра команды отключен функциональной опцией. Если тип параметра команды составной, то команда становится недоступной тогда, когда отключаются все типы параметра.

2.3. Форма

В форме функциональные опции могут влиять на реквизиты и команды формы и (как следствие) изменять видимость связанных с ними элементов формы (поля и колонки – для реквизитов формы, кнопки – для команд формы). При разработке формы необходимо учитывать следующие особенности поведения системы:
<Вид>Объект (СправочникОбъек т, ДокументОбъект и т. д.) будет отключен в том случае, если функциональной опцией отключен соответствующий объект конфигурации. Анализируются только те функциональные опции, которые не имеют параметров.
● Основной реквизит управляемой формы типа ДинамическийСписок будет отключен в том случае, если функциональной опцией отключен объект конфигурации, который указан в качестве основной таблицы динамического списка. Анализируются только те функциональные опции, которые не имеют параметров.
● Отключается реквизит формы ссылочного типа, если объект конфигурации, образующий этот тип, отключен функциональной опцией. Реквизит формы составного типа отключается в том случае, если функциональные опции отключают все составляющие типы.
● Отключается реквизит формы типа <Вид>Объект (включая основной реквизит формы), если объект конфигурации, образующий этот тип, отключен функциональной опцией. Анализируются только те функциональные опции, которые не имеют параметров.
● Таблица формы будет отключена, если она отображает данные реквизита формы, отключенного функциональной опцией.
● В диалоге выбора типов (например, для полей ввода, связанных с реквизитами составного типа) отсутствуют типы, если объекты конфигурации, формирующие эти типы, отключены функциональной опцией. Информация о типах, отключенных функциональными опциями, кешируется на стороне клиента и очищается через 20 минут или во время вызова метода ОбновитьИнтерфейс ().
ВНИМАНИЕ! В отличие от командного интерфейса, значения параметров функциональных опций устанавливаются только для конкретного экземпляра формы.

2.4. Система компоновки данных

Система компоновки данных в основном используется для построения отчетов. Функциональные опции влияют на состав данных, которые выводятся в отчет, и на состав настроек отчета, доступных пользователю. Например, если выключена функциональная опция Валютный учет , то в отчете, выводящем реестр документов Приход товара , будет отсутствовать колонка Валюта и Валютная сумма , а в настройках будет отсутствовать возможность отбора, группировки, сортировки и т. д. по полю Валюта .

2.5. Характеристики

Функциональные опции оказывают влияние на видимость полей формы, которые отображают значение характеристики объекта. Для этого необходимо включить в состав функциональной опции реквизит, хранящий значение характеристики.
Рассмотрим пример. Характеристики используются для справочника Товары , виды характеристик хранятся в плане видов характеристик Характеристики, а значения – в качестве ресурса регистра сведений ЗначенияХарактеристик. Ресурс входит в состав функциональной опции УчетХарактеристик .

Рис. 1. Влияние функциональных опций на характеристики

В случае отключения функциональной опции УчетХарактеристик в формах отключается видимость полей (колонка Значение и поле Значение ), отображающих значения характеристик, как показано на рис1.

3. Общая схема работы

Механизм функциональных опций включает в себя два типа объектов метаданных: Функциональная опция и .
Функциональная опция представляет собой объект метаданных, который может непосредственно влиять на состав интерфейса приложения (если функциональная опция хранит свое значение в реквизите типа Булево ). С помощью объектов этого типа можно скрыть элементы, которые относятся к недоступной функциональности. Например, опция Валютный учет может скрыть справочник Валюты, поле Валют а из документов, колонку Валютная сумма из отчетов. Источником значения функциональной опции является объект метаданных, выбранный в качестве свойства Хранение, например, это
может быть константа.
В случае хранения значения функциональной опции в реквизите справочника или ресурсе регистра сведений требуется дополнительная информация, которая указывает на то, как именно выбрать значение опции. Для этой цели предусмотрен отдельный объект метаданных – Параметры функциональных опций .
Можно сказать, что параметры функциональных опций являются осями координат пространства значений функциональных опций. Причем один параметр функциональных опций может определять значение «своей» оси координат одновременно для множества функциональных опций.


Рис. 2. Параметризуемая функциональная опция

Рассмотрим пример: допустим, суммовой учет зависит от склада, принадлежащего конкретной организации (см. рис.98). В нашей информационной базе
можно вести учет от имени разных организаций и на разных складах.
Для хранения значений функциональных опций создадим регистр сведений, где измерениями (осями координат) будут:

● Организация (соответствующего типа);
● Склад (соответствующего типа).

Ресурсом регистра сведений будет значение функциональной опции суммового учета.
Тогда общая структура конфигурации будет выглядеть следующим образом:
● Регистр сведений СуммовойУчет :
● измерение Организация ;
● измерение Склад ;
● ресурс СуммовойУчет , имеющий тип Булево.
● Параметр функциональных опций Организация . Свойство Использование указывает на измерение Организация регистра сведений СуммовойУчет .
● Параметр функциональных опций Склад . Свойство Использование указывает на измерение Склад регистра сведений СуммовойУчет .
● Функциональная опция СуммовойУчет . Свойство Хранение указывает на ресурс СуммовойУчет регистра сведений СуммовойУчет .
В результате для того, чтобы определить необходимость ведения суммового учета, нам необходимо в каждом конкретном случае указать значения параметров функциональных опций (Организация и Склад ) и получить значение функциональной опции.
Так, в примере, показанном на рис.2, для Организации 1 и Склада 1 суммовой учет разрешен, а для Организации 2 и Склада 1 суммовой учет запрещен.

4. Взаимодействие с другими объектами

Функциональные опции могут быть назначены следующим объектам конфигурации:
● Подсистемы,
● Общие команды,
● Общие формы,
● Константы,
● Критерии отбора,
● Справочник,
● Документ,
● Журнал,
● План счетов,
● План видов характеристик,
● План видов расчета,
● Бизнес-процесс,
● Задача,
● Планы обмена,
● Отчет,
● Обработка,
● Регистр накопления,
● Регистр сведений,
● Регистр бухгалтерии,
● Регистр расчета,
● Команда,
● Реквизит объекта метаданных,
● Табличная часть,
● Реквизит табличной части,
● Признак учета,
● Признак учета субконто,
● Реквизиты адресации,
● Измерение регистра,
● Ресурс регистра.
Также функциональные опции могут влиять на видимость элементов формы.

5. Создание

5.1. Создание функциональной опции

Для того чтобы создать функциональную опцию, необходимо создать объект конфигурации Функциональная опция. Это можно сделать в режиме Конфигуратор обычным способом, то есть в окне конфигурации следует выбрать пункт Общие , далее Функциональные опции и добавить новый объект.

Рис. 3. Создание функциональной опции

В результате будет создан объект конфигурации Функциональная опция, который можно использовать для назначения функциональных опций другим объектам метаданных.


Рис. 4. Хранение значения функциональной опции

Кроме имени объект имеет обязательное для заполнения свойство – Хранение. В редакторе для него можно выбрать один из объектов, который будет являться источником значения опции. В список доступных объектов входят:
● константы,
● реквизиты справочников,
● ресурсы регистров сведений.
Ограничение на тип источника значения опции нет, но для управления интерфейсом пригодны только те функциональные опции, которые хранят свои значения в реквизитах, имеющих тип Булево. Значения функциональных опций с другими типами доступны только для анализа на встроенном языке.
Свойство Привилегированный режим при получении отвечает за способ получения (и кеширования) значения функциональной опции.


Рис. 5. Привилегированный режим при получении значения функциональной опции

Если данное свойство установлено, то значение функциональной опции получается в привилегированном режиме. Полученное значение кешируется для всех сеансов, связанных с данной информационной базой.
Если свойство Привилегированный режим при получении сброшено, то получение значения функциональной опции выполняется в обычном режиме.
Кеширование выполняется для текущего сеанса. Кешируется как значение (если его удалось получить), так и признак невозможности получения значения (в том случае, если значение получить не удалось).
Кеш сбрасывается при изменении значений параметров сеанса.
СОВЕТ . Рекомендуется устанавливать свойство Привилегированный режим при получении для всех случаев, когда значение функциональной опции не содержит конфиденциальную информацию.

5.2. Создание параметра функциональных опций

Для того чтобы создать параметр функциональной опции, необходимо создать объект конфигурации Параметры функциональных опций . Это можно сделать в режиме Конфигуратор обычным способом, то есть в окне конфигурации следует выбрать пункт Общие , далее Параметры функциональных опций и добавить новый объект.

Кроме имени, параметр имеет обязательное свойство Использование . В нем указывается набор объектов, значения которых будут определять то, как следует выбирать значение функциональной опции. В список доступных объектов входят справочники и измерения регистра сведений. Для каждого параметра функциональных опций в данном списке можно выбрать один справочник (из всего перечня справочников) и по одному измерению каждого регистра сведений.
ВНИМАНИЕ! Нельзя использовать один и тот же объект метаданных в нескольких параметрах функциональных опций.

6. Использование

6.1 Назначение объектам метаданных

Объект метаданных (например, справочник) можно отнести к одной или нескольким функциональным опциям. Для этого служит свойство Функциональные опции, которое содержит ссылки на созданные в конфигурации функциональные опции.

Рис. 6. Назначение функциональной опции объекту

Список доступных опций ограничен только теми опциями, для которых в свойстве Хранение назначен объект с типом значения Булево .
ВНИМАНИЕ! Если объекту не назначена ни одна функциональная опция, то он считается видимым всегда. В противном случае объект считается видимым, если хотя бы одна из назначенных ему функциональных опций является включенной (т. е. функциональные опции сочетаются «по ИЛИ»).

6.2. Назначение реквизитам и командам формы

Объекты, принадлежащие форме (Реквизиты и Команды), также можно задействовать в механизме функциональных опций.


Рис. 7. Назначение функциональной опции команде

Сделать это можно в редакторе формы, установив свойство Функциональные опции для требуемого объекта.
Состояние функциональных опций будет влиять на отображение объектов формы точно так же, как это происходит в случае объектов метаданных.
Например, в случае с командой, отключенной с помощью функциональной опции, будут убраны все связанные с ней кнопки.
Если реквизиту формы или команде не назначена ни одна функциональная опция, то реквизит формы или команда считается видимой всегда. В противном случае реквизит формы или команда считается видимой, если хотя бы одна из назначенных ему функциональных опций является включенной.

6.3. Использование в механизме ограничения доступа к данным

В условиях механизма ограничения доступа к данным Функциональные опции могут использоваться точно так же, как и Параметры сеанса . Допустимо использовать только не зависящие от параметров опции, то есть те, которые привязаны к константам.
ВНИМАНИЕ! Системой контролируется уникальность имен между параметрами сеанса и функциональными опциями.

6.4. Определение значения функциональной опции

Значение функциональной опции определяется объектом, который указан в свойстве Хранение. В случае константы используется ее значение. Для опции, связанной с реквизитом справочника или ресурсом регистра сведений, – значения, хранящиеся в этих объектах. Для того чтобы найти конкретный объект, который хранит значение функциональной опции, необходима дополнительная информация – набор значений параметров функциональных опций.
Если опция хранится в реквизите справочника, параметр должен содержать ссылку на конкретный элемент справочника. Если опция хранится в ресурсе регистра сведений, должны быть указаны значения всех измерений регистра. В этом случае каждое измерение должно характеризоваться своим параметром.
Если для функциональной опции, имеющей тип Булево, заданы не все параметры, то выполняется сложение «по ИЛИ» всех значений с не заданными параметрами. Например, если функциональная опция хранится в регистре сведений с измерениями Организация и Склад и задано только измерение Организация , то значение функциональной опции будет равно Истина, если хотя бы у одного из складов, перечисленных в измерении Склад , значение функциональной опции будет равно значению Истина.
Для функциональной опции, имеющий тип, отличный от Булево , ситуация с не полностью заданными параметрами приводит к генерации исключения.
Методы встроенного языка позволяют получить значение опции, как в зависимости от переданных параметров, так и для параметров, установленных
для командного интерфейса или конкретной формы. В том случае, когда изменение значения объекта, указанного в свойстве функциональной опции Хранение , выполняется в транзакции, собственно значение функциональной опции будет изменено только после завершения транзакции. Пока открыта транзакция – значение функциональной опции будет равно значению, актуальному на момент начала транзакции.
Если функциональная опция привязана к ресурсу периодического регистра сведений, то система использует срез последних для получения значения опции. Если требуется получать значение опции на какую-либо другую дату, необходимо указать значение для параметра функциональных опций Период (Period), имеющий тип Дата , который будет использоваться как дата получения среза. Этот параметр не нужно создавать в метаданных. Он предоставляется системой автоматически.

При использовании параметризованных функциональных опций следует учитывать следующие особенности поведения:
● В формах списков колонка реквизита, связанного с параметризованной функциональной опцией, будет отображаться, если в информационной базе хранится хотя бы одно включенное значение данной функциональной опции.
● Если необходимо, чтобы при открытии формы реквизиты, связанные с функциональными опциями, были отключены по умолчанию, то нужно
установить значения этих параметров в значения, отсутствующие в информационной базе (для справочников – пустая ссылка, для регистров сведений – значения измерений, для которых нет записей). В этом случае функциональная опция будет иметь значение Ложь .
● В том случае, когда в качестве параметра указана ссылка на группу (если типа параметра функциональной опции допускает создание групп), а не ссылка на элемент, поведение системы будет следующим:
● если реквизит, в котором хранится значение функциональной опции, используется как для элемента, так и для группы, то значение функциональной опции будет определяться значением этого реквизита.
● если реквизит, в котором хранится значение функциональной опции, не используется для группы, то при получении значения функциональной опции c помощью методов ПолучитьФункциональнуюОпцию (), () и () будет возращено значение NULL . Если, параметризованная таким значением, функциональная опция оказывает влияние на пользовательский интерфейс, то система будет воспринимать ее как выключенную (функциональная опция будет иметь значение Ложь ).
● Для командообразующих объектов метаданных возможно установить привязку к параметризованной функциональной опции. В командном интерфейсе команды таких объектов будут отображаться только в том случае, если есть хотя бы одна комбинация параметров функциональных опций, при которых значение функциональной опции равно Истина . Однако с помощью метода () можно задать конкретные значения параметров функциональных опций, и тогда видимость
команд будет определяться именно заданными параметрами.
● Динамический список автоматически использует функциональные опции, используемые формой. Если реквизиты, которые используются в запросе динамического списка, будут отключены при заданной комбинации параметров функциональных опций, данные по ним не будут выбраны и отображены в динамическом списке, а реквизит будет удален из списков доступных реквизитов в диалоге настройки отображения данных
динамического списка (в режиме 1С:Предприятие).

7. Работа с функциональными опциями во встроенном языке

Методы глобального контекста ПолучитьФункциональнуюОпцию() и ПолучитьФункциональнуюОпциюИнтерфейса () возвращают значение функциональной
опции. Разница между ними заключается в том, что первый метод позволяет указать набор параметров функциональных опций, а второй – возвращает значение функциональной опции исходя из параметров, заданных для командного интерфейса. В форме есть свой метод, который возвращает значение опции для параметров, указанных в рамках формы, – ПолучитьФункциональнуюОпциюФормы ().
Для обновления глобального командного интерфейса следует явным образом вызывать метод УстановитьПараметрыФункциональныхОпцийИнтерфейса ().
Командный интерфейс будет обновлен с учетом нового состояния функциональных опций.
ПРИМЕЧАНИ Е. Если значение функциональной опции изменяется в базе данных, то автоматического обновления глобального командного интерфейса и открытых в это время форм не происходит. Для этого следует использовать метод ОбновитьИнтерфейс() после записи значений функциональных опций в базу данных.
Следует помнить, что установка параметров функциональных опций (и выполнение метода ОбновитьИнтерфейс ()) приводит к следующим последствиям:
● для каждой формы вызывается закрытие всех вспомогательных форм (с вызовом соответствующих обработчиков);
● формы, отказавшиеся от закрытия, не закрываются;
● происходит обновление состава элементов основной формы;
● если на момент обновления интерфейса активной формой была основная, происходит отображение основной формы в соответствии с новым составом элементов;
● если на момент обновления интерфейса активной формой была вспомогательная форма, то:
● будет выполнена команда открытия вспомогательной формы, если после обновления интерфейса она является доступной;
● в противном случае обновляется состав элементов основной формы и выполняется ее отображение;
● если на момент обновления интерфейса активной формой была вспомогательная форма, открытая с помощью команды, не относящейся к панели навигации формы, то вместо этой формы будет обновлен состав элементов основной формы и выполнено ее отображение.
Для того чтобы обновить конкретную форму, следует либо заново открыть ее, либо вызвать метод УстановитьПараметрыФункциональныхОпцийФормы(),
при этом вышеописанная последовательность действий отрабатывает только для той формы, в контексте которой вызвана установка параметров функциональных опций формы.
Параметры не обязательно указывать все сразу, можно изменить значение конкретного параметра или набора параметров выборочно. Но эффективнее осуществляется именно групповая установка значений одним вызовом.
Для получения значений параметров необходимо вызвать соответствующую функцию (ПолучитьПараметрыФункциональныхОпцийИнтерфейса () или
ПолучитьПараметрыФункциональныхОпцийФормы()), которая вернет установленные параметры в виде структуры, где ключом будет выступать имя параметра.
При открытии форма автоматически использует параметры функциональных опций, установленных для командного интерфейса.

Просмотров