Модификаторы в 1с это
Механизм расширения конфигурации 1C
Приветствую уважаемый читатель, в данной статье предлагаю ознакомиться с Механизмом расширения конфигурации 1С 8.3, в частности мы познакомимся с его работой в режиме Адаптация, а также рассмотрим пример программного изменения Формы объекта при помощи расширения. Ну, а сейчас немного теории…
Как указано в описании: «Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).»
Основным назначением расширения конфигурации является доработка прикладных решений (конфигураций) под нужды клиента. При этом нет необходимости в снятии дорабатываемой конфигурации с поддержки. В результате сохраняется простота сопровождения и обновления типового прикладного решения, стоящего на поддержке.
При разработке расширений следует учитывать следующие факты:
— в системе могут функционировать более одного расширения.
— расширяемая конфигурация в любой момент может быть изменена, например, в результате обновления и разработчик расширения никак не может повлиять на возможность или невозможность обновления
Расширение может иметь одно из следующих назначений:
Исправление — предназначено для оперативного исправления ошибок в прикладном решении. В таких расширениях часто применяется метод с помощью аннотации Вместо. Как правило это назначение предназначено для определенной версии прикладного решения. При выходе следующей версии этого решения автор расширения должен проводить анализ применимости созданных расширений в новой версии.
Адаптация — предназначено для адаптации прикладного решения под условия конкретного заказчика. Предполагается, что в каждый момент времени в информационной базе существует минимальное количество таких расширений. Если в одно расширение невозможно включить весь набор изменений, то рекомендуется расширения с назначением Адаптация разбивать по максимально крупным блокам расширяемого прикладного решения.
Дополнение — предназначено для реализации новых возможностей прикладных решений, которые минимально привязаны к конкретной версии прикладного решения. В качестве примера можно привести создание нового набора отчетов, который отсутствует в прикладном решении. Предполагается, что таких расширений может быть произвольное количество.
Расширение создается в конфигураторе, хранится в информационной базе и может быть выгружено в файл. Для подключения расширения, сохраненного в файл, в прикладное решение нет необходимости использовать конфигуратор. Подключить расширение можно с помощью стандартного функционала (Все функции Стандартные Управление расширениями конфигурации). Подключить расширение также используя программный интерфейс, предоставляемый платформой.
Ограничения использования расширений:
Расширения конфигурации не поддерживают создание следующих собственных объектов:
— Подписки на события.
— Функциональные опции и параметры функциональных опций.
— Бизнес-процессы и задачи.
— Внешние источники данных.
Не поддерживается расширение следующих объектов:
— Нельзя создавать подчиненные подсистемы.
— Если объект не может быть собственным объектом расширения его расширение также не поддерживается.
— Состав значений перечислений;
Не поддерживается добавление реквизитов и табличных частей для:
— План видов характеристик;
— План видов расчетов.
Не поддерживается изменение структуры регистров всех видов. Поддерживается только расширение состава регистраторов.
В базовых версиях прикладных решений работа с расширениями не поддерживается.
Стоит помнить, что Механизм расширения конфигурации – это перспективный постоянно развивающийся механизм и с выходом новых версий платформ их функционал только расширяется и лишается текущих недочетов.
Как добавить расширение конфигурации 1С 8.3
Предлагаю рассмотреть задачу добавления нового Справочника «Категория должности по Классификатору Предприятия» с выводом его значения на Форму Справочника Должности, на базе Конфигурации ЗУП 3.1
Для создания расширения необходимо запустить 1С в режиме конфигуратора.
В конфигураторе необходимо зайти в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Далее нажмем кнопку «Добавить». Мы увидим диалоговое окно создания расширения:
Стоит отдельно выделить поле Назначение – необходимо выбрать его значение в зависимости от решаемой задачи – т.к. мы выполняем добавление объектов по требованиям конкретного заказчика – нам подойдет вариант «Адаптация».
После нажатия на кнопку «ОК» — двойным кликом по появившейся строке откроем Конфигурацию расширения. Мы увидим практически пустое дерево конфигурации.
Добавим в расширение справочник Категория должности по Классификатору Предприятия. Стоит обратить внимание, что в название всех объектов процедур и функций созданных в расширении, добавляется его префикс (в нашем случае Расш1_);
Разместим наш новый Справочник в Подсистеме «ШтатноеРасписание» для этого необходимо добавить эту подсистему в Расширение – Перейдем в дерево основной Конфигурации и нажмем правой кнопкой мыши на строке с нужной подсистемой и выберем пункт «Добавить в расширение».
Теперь мы можем управлять ее составом, добавим наш новый объект в подсистему.
Далее добавим в расширение Справочник Должности и добавим для него новый реквизит КатегорияДолжности с типом СправочникСсылка.Расш1_КатегорияДолжностиПоКлассификаторуПредприятия
Далее необходимо решить задачу с выводом реквизита КатегорияДолжности на форму Справочника Должности, реализовать это можно двумя способами:
— Интерактивно, добавив Форму «ФормаЭлемента» в расширение
— Программно, не добавляя Форму Справочника в расширении, а добавив подходящую процедуру, вызываемую в обработчике Формы «ПриСозданииНаСервере» в расширение.
Останавливаться на плюсах и минусах каждого решения не будем, а ниже рассмотрим оба варианта.
Интерактивное изменение Формы в расширении.
Для того чтобы вывести Реквизит на форму интерактивно: необходимо добавить саму Форму «ФормаЭлемента» в расширение. Обращу ваше внимание на следующий момент – для того чтобы появилась возможность Интерактивного добавления Реквизита объекта на форму необходимо сам Объект тоже добавить в расширение.
Далее добавим новый Реквизит в подходящую Группу на форме.
Запустив 1С в режиме Предприятия убедимся, что новый Справочник появился в интерфейсе
А открыв элемент справочника Должности, увидим, что добавляемый реквизит Категория должности также в нужном месте.
Программное изменение Формы в расширении.
Для того чтобы программно добавить элемент на форму нам необходимо определится в каком месте это сделать оптимально с точки зрения простоты дальнейшей поддержки и обновления конфигурации.
Предлагаю воспользоваться одной из процедур вызываемых в обработчике Формы «ПриСозданииНаСервере», в которую передается наша Форма в качестве параметра например УправлениеСвойствами.ПриСозданииНаСервере.
Перейдем в Общий модуль УправлениеСвойствами где находится данная процедура, и кликнем правой кнопкой мыши по процедуре ПриСозданииНаСервере. В выпадающем меню выберем пункт «Добавить в расширение»
Система предложит нам выбрать одну из аннотаций, подробнее о каждой из них рассмотрим в следующих публикациях, а сейчас выберем «Вызывать после»
После проделанных процедур увидим что в Расширение был добавлен общий модуль УправлениеСвойствами и процедура Расш1_ПриСозданииНаСервере с аннотацией &После(«ПриСозданииНаСервере»)
Далее в добавленную процедуру поместим следующий код:
Запустим 1С в режиме предприятия и убедимся, что на форме также появился добавленный реквизит «КатегорияДолжности (пр.)»
Готовое расширение можно выгрузить в файл перейдя в конфигураторе в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». В открывшемся списке расширений по правой кнопкой мыши можно вызвать выпадающее меню, либо выбрать пункт командной панели «Конфигурация» и выбрать пункт «Сохранить конфигурацию в файл…». На выходе мы получим Файл типа *.cfe который можно передать заказчику.
Таким образом, мы научились создавать собственные расширения на примере конкретного кейса.
Рассказали, как с помощью модификаторов решать разные бизнес-задачи и получать аналитику по продажам.
Руководитель отдела внедрения Quick Resto. Аналитик бизнес-процессов и эксперт по автоматизации в заведениях общественного питания. Консультант в ресторанном бизнесе с опытом более 11 лет
Зачем нужны модификаторы
Модификаторы — это единица учёта в системе автоматизации, с помощью которой ресторатор может решить самые разные задачи. Например, через использование модификатора оформлять добавки к блюду — молоко и сиропы к кофе или соус для хот-дога. Разные объёмы напитков, степень прожарки отбивной или продажа блюд навынос — здесь тоже подключаются модификаторы, чтобы всё корректно отразить в учёте.
Для каждого блюда настраиваются необходимые модификаторы. Так, например, для напитка «капучино» это могут быть:
Все модификаторы вносятся в бэк-офисе Quick Resto и отображаются на кассовом терминале.
Увеличение продаж и быстрое оформление операций на кассе
Сотрудники заведения на кассовом терминале видят все модификаторы и добавляют их к заказу, чтобы изменить характеристику блюда, увеличить средний чек за счёт продажи дополнительной позиции и правильно оформить списание продуктов и расходников.
К блюду модификаторы добавляются как автоматически, так и вручную:
Ещё способ для увеличения среднего чека, чтобы сотрудники не забывали предлагать дополнительные позиции. Можно сделать так: создать группу таких добавок и выставить для неё минимальное количество «1». Тогда эти модификаторы автоматически появятся при заказе блюда, а если гость откажется от них, кассир выберет позицию «Без допов» (она нужна, чтобы закрыть заказ, иначе система не даст это сделать из-за минимального значения «1»).
В следующем разделе я подробнее расскажу о настройках модификаторов и куда вносить значения «0» и «1».
Как настроить модификаторы для корректного учёта
Здесь всё просто — группы модификаторов и сами добавки мы создаём и настраиваем в разделе «Номенклатура».
Если мы сами готовим модификатор в заведении, например, соус к блюду, тогда для него заполняем технологическую карту на отдельной вкладке и данные для автоматического расчёта КБЖУ. Если мы закупаем модификатор уже готовым, тогда техкарту оформлять не надо — выставляем метод списания «По продукту».
На скриншоте из системы пример модификатора молоко «Овсяное 300» — оно создано для блюда «Капучино 300» (300 — объём напитка), техкарта по нему не заполняется, так как мы закупаем это молоко как готовый продукт:
А если бы мы ввели в меню миндальное молоко и решили делать его сами, то должны оформить техкарту, в том числе указав потери продуктов и данные для расчёта КБЖУ.
Чтобы модификатор появился на кассовом терминале, «привязываем» его к нужному блюду. Продолжим на примере с овсяным молоком и капучино. В разделе «Блюда» выбираем «Капучино 300» и открываем вкладку «Модификаторы». Там мы видим все созданные в системе группы и позиции модификаторов. Раскрываем группу «Молоко» и выбираем те модификаторы, которые хотим «привязать» к этому капучино — активируем у них переключать, а у молока для напитков объёмом «200» переключатель оставляем неактивным:
Обратите внимание, что для группы «Молоко» стоят значения минимального и максимального количества «1». Это та настройка, о которой я говорил выше: при ней на кассовом терминале для «Капучино 300» автоматически подтянутся виды молока, чтобы бариста предложил их гостю. В настройках самих модификаторов значения минимального и максимального количества мы ставим «0», чтобы в заказе бариста видел именно группу и выбирал из неё.
Если мы хотим, чтобы конкретный модификатор автоматически отражался на терминале при выборе блюда, тогда в его настройках на вкладке «Основное» ставим максимальное количество модификаторов хотя бы «1»:
Альтернативное молоко для кофе: как лучше настроить учёт
С точки зрения учёта в систему лучше занести разные виды капучино («Кокосовый капучино», «Овсяный капучино», «Классический капучино» и т.д.), чем один капучино и к нему разные модификаторы. Тогда руководитель сможет посмотреть продажи, себестоимость, наценку и прибыль по конкретным блюдам, а не по связкам. Но это не очень удобно для сотрудников на местах — им придётся выбирать их большого количестве блюд, ведь помимо капучино есть раф, флэт уайт, латте и т.д., для которых мы также должны будем сделать разные виды в зависимости от добавляемого молока.
В этом случае удобнее создать блюдо «Капучино» без молока в техкарте, а в группе модификаторов «Выбор молока» указать банановое, кокосовое, овсяное и т.д. В настройках группы нужно выбрать минимальное и максимальное количество «1». В настройках у модификаторов в группе указать минимальное «0», максимальное «1», по умолчанию «0».
Дальше я расскажу про отчёте по модификаторам, в котором отражаются все необходимые показатели продаваемых связок «блюдо + модификатор».
Заказы «с собой» и «в зале»
Опция «с собой» и «в зале» влияет на учёт одноразовой посуды и упаковки. Например, в модификаторе «в зале» техкарта будет пустая, так как заведение продаёт кофе в керамической или стеклянной чашке, а в техкарте модификатора «с собой» будет отображаться бумажный стаканчик и крышка.
Если вам необходимо часть блюд пробивать в кафе, а часть — с собой, привяжите к конкретному блюду группу модификаторов, которая будет включать все опции. Тогда при формировании заказа сотрудник сможет выбрать, что пробить в зале, а что — навынос.
Как учитывать разные объёмы напитков
Когда нужно добавить к одному напитку несколько объёмов, возможны два сценария. Рассмотрим их на примере молока:
Рассмотрим ещё пример с пивом разного объёма. В баре продаётся тёмное пиво трёх объёмов — пол-литра, литр и полтора литра. В системе мы создаём одно блюдо «Пиво» и к нему привязываем группу модификаторов «Пиво тёмное», в которой создаём три позиции: «Пиво тёмное 0,5 л», «Пиво тёмное 1 л» и «Пиво тёмное 1,5 л». В техкарте каждого модификатора указываем ингредиент и тару нужного объёма.
Ответы на частые вопросы по работе с модификаторами
В случае выбора капучино с классическим молоком — будет ли убираться его списание при выборе альтернативного молока? | Нет, не будет. Поэтому из техкарты убираем любое молоко и всё списание проводим через модификаторы. Классическое можно поставить «По умолчанию», тогда оно будет добавляться всегда, а если необходимо выбрать альтернативу, то нужно просто поменять модификаторы — убрать из заказа классику и поставить альтернативное молоко. |
Почему модификаторы не отображаются на терминале? | Нужно проверить, выставлены ли правильные количественные настройки в связке с блюдом — максимальное количество «1». |
Можно ли поменять количественные настройки сразу во всех связанных блюдах? | Нет. После привязки к блюду все количественные настройки корректируются только в настройках блюда. Новые настройки в разделе «Модификаторы» будут действовать только на новые блюда. |
Блюдо становится неактивным на терминале после привязки модификаторов. Что делать? | Если в количественных настройках установлено максимальное количество «0», то такая группа модификаторов будет ломать логику системы — и блюдо не будет работать. |
Возможно ли поставить модификаторы в стоп-лист? | Нет. Если модификатор закончился, вы всё равно сможете выбрать его на терминале. |
Как поменять настройку модификатора, чтобы самый необходимый из них находился в самом верху? | Меняем их местами в бэк-офисе. После этого в таком же порядке они будут отображаться и на терминале. |
Может ли один и тот же модификатор в разных блюдах иметь разную цену? | Нет. Только в разных местах реализации. |
Отчёт по прибыльности модификаторов
В Quick Resto есть отдельный отчёт, в котором отражаются данные по продажам и прибыльности всех связок «блюдо + модификатор». Например, гости берут капучино с овсяным молоком. Аналитика по каждому сочетанию добавок к кофе показывается по отдельной строке в разрезе выручки, себестоимости и прибыли. Как анализировать эти данные, написано в нашей инструкции.
Также прибыльность модификаторов можно оценить по АВС-анализу, который можно построить как по всему меню, так и по группе модификаторов:
На скриншоте отчёт по группе модификаторов «Молоко». Например, мы видим, что «Овсяное молоко 200» попало в разные группы (А и В) на двух точках реализации. На основе этих данных нужно дальше проводить анализ и смотреть, что на это повлияло.
Подробнее о том, как работать с данными этого отчёта, мы рассказали в отдельной статье «Как проводить АВС-анализ, чтобы сформировать прибыльное меню».
Ещё хочу отметить, что при работе с модификаторами могут возникать ошибки. Например, при продаже капучино бариста может выбрать одно из видов молока — коровье, соевое или кокосовое. Если сотрудник наливает гостю кокосовое, а по невнимательности выбирает в системе коровье, то появится пересортица и убытки, поскольку кокосовое молоко стоит дороже. Поэтому важно регулярно делать инвентаризацию, а если проблема не решается, возможно, это сигнал о воровстве и стоит провести аудит.
Как-то раз, в одной компании мирового уровня (но без мирового имени), в отделе разработки учетных решений 1С, возникла крайне острая необходимость и потребность в модификации всех существующих запросов конфигурации УПП 1.2 (переписанная вдоль и поперёк так, что аж имеет своё уникальное и гордое имя - «Корпоративная Система Управления»). Суть модификации заключалась в следующем - в пакетах запросов, в явном виде, необходимо уничтожать все временные таблицы. Таблицы должны уничтожаться по мере их использования в пакете. Если временная таблица не используется ни в одном из следующих (по порядку) запросов пакета, то такая временная таблица должна быть удалена после текущего запроса (отдельным запросом «УНИЧТОЖИТ»).
По легенде, это должно обеспечить более эффективную и своевременную очистку неиспользуемых таблиц на сервере СУБД и повлиять на общую эффективность работы системы при большом количестве одновременно «функционирующих» пользователей.
Пример (реальный запрос из БП 2.0.63.4):
должен быть преобразован в:
Из примера видно, что пакет состоит из трех последовательных запросов. В запросе №1 формируется временная таблица «ТаблицаСчетовДтКт», которая в последствии используется в запросе №2. В запросе №3 временная таблица «ТаблицаСчетовДтКт» уже не используется, поэтому она может быть удалена после запроса №2. В запросе №2, так-же, создаётся временная таблица «ТаблицаСчетов», которая используется в запросе №3. Т.к. запрос №3 - это последний запрос, то после его выполнения удаляются все выжившие оставшиеся временные таблицы.
Выглядит довольно просто, на первый взгляд. И казалось бы, проделывать подобное довольно легко. Но. это лишь поверхностное впечатление. Когда дело доходит до реальных действий, оказывается (внезапно(!)), что в системе очень много пакетов запросов, которые не ограничиваются 2-3-4 временными таблицами. Встречаются даже монструозные пакеты по 40+ временных таблиц. Дополнительно, анализ отягощается повсеместным наличием вложенных запросов. Всё это может свести с ума, если проделывать подобный анализ в ручную, в старом добром Notepad++ по нескольку десятков раз за сеанс (много запросов). Поэтому, было принято правильное решение создать некий инструментарий, который делал бы подобный анализ самостоятельно, но под чутким руководством разработчика.
JAVA JIVE
Для информатиков-экономистов, математиков-экономистов и менеджеров-маркетологов, попавших в сферу IT через постель доскональное освоение мощнейших возможностей конфигуратора 1С, иногда бывает затруднительно решать проблемы, которые выходят за рамки их уютной среды обитания. Поэтому, перед началом реализации поставленной задачи нужно было ознакомиться с документацией по языку Java, что в итоге оказалось очень увлекательным занятием.
После нескольких бессонных ночей за книгами Эккеля, на выходе получилась следующая реализация:
- Комментарий - строка текста, которой будут окаймлены все созданные запросы на удаление временных таблиц в итоговом пакете запросов;
- Удалить старые комментарии - признак удаления всех комментариев из исходного пакета запросов перед его обработкой (для пущей надёжности обработки запросов, которые испещрены различными «хитрыми» комментариями). Чем-то похоже на то, как это делает стандартный конструктор запросов 1С, когда вы открываете им запросы с вашими комментариями;
- Исходный запрос - пакет запросов 1С, в который необходимо добавить запросы на уничтожение временных таблиц;
- Итоговый запрос - модифицированный пакет запросов, который содержит в «правильных» местах все необходимые дополнительные запросы на уничтожение временных таблиц;
- Очистить - кнопка очистки полей «Исходный запрос» и «Итоговый запрос»;
- Сформировать - запуск процесса обработки исходного пакета запросов.
КАК ЭТО ИСПОЛЬЗОВАТЬ
Для того, чтобы модифицировать исходный пакет запросов, необходимо:
-
Скопировать пакет запросов «от кавычки до кавычки» (если пакет копируется из какого-либо модуля исходного кода)
или скопировать ВЕСЬ пакет запросов (если пакет копируется из макета схемы компоновки данных)
В итоге, связи между временными таблицами и запросами пакета, а также добавление запросов на уничтожение временных таблиц в «правильные» места, берёт на себя данный инструментарий. Нам же остаётся умело орудовать двумя известными сочетаниями клавиш «Ctrl+С» и «Ctrl+V» на тех запросах, которые мы пожелаем модифицировать.
ДЛЯ ЗАО «1С»
Было бы неплохо добавить в конструктор запросов 1С возможность автоматического формирования запросов на уничтожение временных таблиц, аналогично тому, как это описано в данной публикации.
Примерный вид формы конструктора запросов мог бы выглядеть в этом случае как-то так:
На изображении видно, что для последнего запроса из пакета (1) появился признак «Уничтожить все временные таблицы» (2). Признак становится активным, когда установлен переключатель «Уничтожение временной таблицы». Если признак «Уничтожить все временные таблицы» установлен, то при нажатии кнопки «ОК» мы получаем, на выходе, итоговый пакет запросов со всеми дополнительными инструкциями на уничтожение временных таблиц в «правильных» местах, по аналогии с тем, как это реализовано в даннолй публикации.
Одним из важных требований к модификациям любой типовой конфигурации на платформе 1С: Предприятие является возможность дальнейшего сопровождения и обновления на новые релизы разработчиков 1С.
Особенно сложно вносить «независимые» от обновлений модификации в формы объектов конфигурации.
Разработчики 1С позаботились о тех, кто дорабатывает и обновляет конфигурации линейки ERP-решений, разработанные на платформе 1С: Предприятие 8.3, добавив функционал, упрощающий модификации форм объектов.
В линейку конфигураций ERP-решений входят:
· 1С: Управление торговлей 11 (УТ 11),
· 1С: Комплексная автоматизация 2 (КА 2),
· 1С: ERP Управление предприятием 2 (ERP 2).
В этот функционал входит блок общих модулей:
- МодификацияКонфигурацииВызовСервераПереопределяемый
- МодификацияКонфигурацииКлиентПереопределяемый
- МодификацияКонфигурацииКлиентСерверПереопределяемый
- МодификацияКонфигурацииПереопределяемый
Т.к. эти общие модули с постфиксом «Переопределяемый», в них мы можем вносить свои изменения и не боятся потерять их при обновлении релиза конфигурации.
В этих модулях находятся переопределяемые процедуры, вызываемые из обработчиков форм, таких как:
- «ПриСозданииНаСервере»,
- «ПриЧтенииНаСервере»,
- «ПередЗаписьюНаСервере»,
- «ПослеЗаписиНаСервере»,
- «ПослеЗаписи»,
- при изменении реквизитов табличной части, таких как «Номенклатура» и «Характеристика»,
- при выборе команды, которая добавлена программно,
- а также события по подсистеме «Рассылки и оповещения клиентам».
В модулях форм объектов разработчики 1С вставили следующий код для поддержки функционала модификации конфигурации:
МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
В процедурах «ПриСозданииНаСервере» и «ПриЧтенииНаСервере» может быть вызов процедур функционала модификации не «напрямую», а через процедуры общего модуля «СобытияФорм»:
- СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
- СобытияФорм.ПриЧтенииНаСервере(Форма, ТекущийОбъект);
в которых прописан вызов соответствующих процедур функционала модификации конфигураций.
В процедуре «ВыполнитьПереопределяемуюКоманду» в общем модуле «СобытияФормКлиент» расположен вызов процедуры:
МодификацияКонфигурацииКлиентПереопределяемый.ВыполнитьПереопределяемуюКоманду(Форма, Команда, ДополнительныеПараметры);
Программный код модификации конфигурации прописывается в соответствующих процедурах обработки событий, описанных выше.
Для отбора в процедуре модификации дополнительных действий конкретной формы, необходимо выполнить проверку из какой формы вызвано событие, например:
Если Форма.ИмяФормы = «Справочник.Номенклатура.Форма.ФормаЭлемента»
Если Команда.Имя= «ПРОСТО_Команда» Тогда
Подробное описание «программного» изменения формы – это тема для отдельной статьи.
Кратко опишу возможные изменения форм объектов с использованием функционала модификации конфигурации:
- Изменение свойств типовых элементов формы.
- Вывод на форме новых элементов по данным объекта (реквизитов и табличных частей, добавленных в типовую конфигурацию).
- Добавление новых реквизитов формы.
- Добавление обработчиков событий для новых элементов формы.
- Добавление и переопределение обработчиков событий типовых элементов формы.
- Замена на форме типовых элементов на «свои».
- Добавление и переопределение обработчиков событий самой формы.
Для переопределения существующего обработчика события формы и ее элемента можно сначала выполнить типовой обработчик события, потом дополнительную процедуру обработки события, например:
Добавлять новые или переопределять существующие обработчики событий формы и ее элементов, к сожалению, сейчас возможно только в модуле самой формы объекта.
Для оптимизации программного кода в конце модуля формы можно добавить «свою» область со структурой областей, аналогичной типовой структуре модуля формы.
Т.е. все добавленные процедуры и функции будут находиться в одной области и при обновлении релиза конфигурации их будет легко перенести.
Ограничения использования этого функционала:
- В случаях, когда требуется кардинальное изменение формы объекта, рекомендуется создать новую форму и назначить ее основной.
- Не во всех формах добавлена поддержка этого функционала, но при необходимости в этих формах можно самостоятельно добавить вызов функционала.
Возможно, что в следующих релизах возможности этого функционала будут расширяться.
Дополнительные отчеты и обработки — подсистема 1С БСП, предназначена для расширения функционала без изменения конфигурации.
Для более полного ознакомления можно развернуть демонстрационную конфигурацию по БСП. В ней есть необходимые примеры.
Что можно подключить
- внешние обработки (файлы с расширением “epf”) ;
- внешние отчеты (файлы с расширением «erf»).
Виды разработок
- Дополнительная обработка.
- Дополнительный отчет.
- Заполнение объекта. Возможность установить свои кнопки по заполнению документа (ранее были только кнопки по заполнению табличной части).
- Печатная форма. Дополнительная печатная форма. Добавляется кнопка «Дополнительные печатные формы».
- Отчет. Прикрепляемый к справочникам и документам.
- Создание связанных объектов. Свой ввод на основании. В пункт меню «Ввод на основании» добавляется кнопка «Создание связанных объектов…».
Возможности БСП:
- В документах можно добавлять кнопки по заполнению всего документа, кнопки по вводу на основании.
- Обработка может содержать несколько команд меню.
- Вводить на основании и заполнять объекты сразу на основании нескольких объектов.
- Задавать расписание выполнение серверных команд (на сервере).
- Задавать режим «Безопасный» или «Небезопасный», т.е. запускать обработку с учетом ограничением прав или полные права
- Задать режим использования: «Не использовать», «Отладка», «Использовать».
- Включить использование в формах объекта и в форма списков
- Привязать ко всем указанным объектам обработку или отчет.
- Настроить быстрый доступ к определенным командам внешних обработок.
- Возможность указать в каких разделах интерфейса должны появляться дополнительные обработки и отчеты.
Сведения о внешней обработке
«Вид»
Минимальным условием для регистрации разработки является заполнение поля «Вид».
Значение поле может принимать одно из значений, возвращаемых функциями: ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки().
Таблица. Поле «ВИД».
«Назначение»
Содержит массив объектов конфигурации в формате «.», для которых будет назначен внешний отчет/обработка.
«Наименование»
Строка. Подставляется в наименование при создании элемента справочника «Дополнительные отчеты и обработки». Если не заполнено, то используется синоним внешней обработки/отчета.
«Команды»
Таблица значений. Загружается в одноименную табличную часть элемента справочника «Дополнительные отчеты и обработки» при регистрации внешней обработки.
Эту табличную часть можно заполнить и вручную.
Колонки таблицы:
Идентификатор – строка (идентификатор команды).
Представление – описание команды.
Модификатор — строка (используется для дополнительных печатных форм).
ПоказыватьОповещение – окно оповещение будет появляться перед началом и после окончания выполнения (для команд клиентских и серверных без формы).
Использование – режим запуска обработки.
В колонке «Использование» указывается тип вызываемой команды. По сочетанию Вид-Тип команды система определяет какая предопределенная процедура будет вызвана из внешней обработки/отчета, и где она будет объявлена — на клиенте или на сервере.
Наиболее часто используются процедуры Печать() и ВыполнитьКоманду(), а также открытие формы без обращения к методу.
Это поле может принимать одно из значений, возвращаемых функциями ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды(), например, ТипКомандыВызовСерверногоМетода().
Таблица. Возможные варианты использования в таблице.
Тип команды | Значение поля «Вид» | Вызываемая экспортная процедура |
ВызовСерверногоМетода | ПечатнаяФорма | Печать( МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) |
ДополнительнаяОбработка ДополнительныйОтчет Отчет | ВыполнитьКоманду( ИдентификаторКоманды, ПараметрыВыполнения) | |
СозданиеСвязанныхОбъектов | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты, ПараметрыВыполнения) | |
ЗаполнениеОбъекта | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) | |
ВызовКлиентскогоМетода | ПечатнаяФорма | &НаКлиенте Печать( ИдентификаторКоманды, ОбъектыНазначенияМассив) |
ДополнительнаяОбработка ДополнительныйОтчет | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды) | |
СозданиеСвязанныхОбъектов | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) | |
ЗаполнениеОбъекта Отчет | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначенияМассив) | |
Для всех видов | в форму передается параметр ДополнительнаяОбработкаСсылка | |
ОткрытиеФормы | СозданиеСвязанныхОбъектов ЗаполнениеОбъекта Отчет | в форму передается дополнительный параметр ОбъектыНазначения |
Для всех видов | в форму передаются параметры ИдентификаторКоманды ДополнительнаяОбработкаСсылка ИмяФормы | |
Отчет | Отчет с макетом СКД может не иметь форму, тогда будет использована общая форма для отчетов по умолчанию | |
ЗаполнениеФормы | ЗаполнениеОбъекта | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) |
СценарийВБезопасномРежиме | Для всех видов | см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер .ТипКомандыСценарийВБезопасномРежиме() |
ЗагрузкаДанныхИзФайла | ДополнительнаяОбработка | см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер .ТипКомандыЗагрузкаДанныхИзФайла() |
Для типа команды ВызовКлиентскогоМетода необходимо создать форму в обработке, назначить ее основной и объявить экспортную процедуру.
«Версия БСП»
Строка, версия встроенной в конфигурации БСП. Необходима для поддержки совместимости. Можно не заполнять.
«Безопасный Режим»
Булево, отображает режим запуска обработка. В безопасном режиме недоступен привилегированный режим, COM-соединение, загрузка dll, доступ к файловой системе и интернету.
«Информация»
Строка, комментарий, который характеризует обработку.
«Версия»
Строка, версия обработки.
Подготовка разработки к подключению.
Для подключения разработки в базу необходимо задать параметры в экспортной функции модуля объекта «СведенияОВнешнейОбработке».
Пример
Подключение к базе.
Открываем справочник «Дополнительные отчеты и обработки». Кнопкой «Добавить» создаем элемент справочника. После чего система предложит прикрепить вашу разработку. Система автоматически заполнит поля формы функцией «СведенияОВнешнейОбработке.
Отладка
Единственный минус дополнительных отчетов и обработок заключается в том, что внутри них не работает встроенный в платформу отладчик.
Связано это в первую очередь с тем, что, запуская такую форму, система создает временный файл, и точки останова не срабатывают.
Читайте также: