Публикации. Публикации Расширение конфигурации 1с 8.3 7


Начиная с редакции 8.3.6 платформы 1С:Предприятия в ней появился механизм расширения конфигураций .

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

Новые возможности

Ограничения

Конечно есть и ограничения:

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

Пример использования

Давайте рассмотрим на примере как можно переопределить процедуру общего модуля с использованием расширения конфигурации. То есть это тот случай, когда нам надо оперативно исправить какую-то ошибку без выпуска релиза и обновления основной конфигурации. Итак пусть у нас есть общий модуль professia1c_ry_Расширения .

И в нем простейшая процедура, которая выводит сообщение:

Процедура ВывестиСообщение() Экспорт Сообщение = Новый СообщениеПользователю; Сообщение. Текст = "Это основная конфигурация" ; Сообщение. Сообщить() ; КонецПроцедуры

А теперь давайте выведем другое сообщение с помощью расширения. В первую очередь нам конечно же надо создать само расширение. В меню конфигуратора выбираем Конфигурация — Расширение конфигурации


В открывшемся окне жмем кнопку Добавить и заполняем поля со свойствами расширения. Поля Имя и Синоним комментариев не требуют. Префикс будет использоваться имени расширяющей процедуры, которая будет замещать исходную. А в списке Назначение из трех возможных вариантов (Исправление, Адаптация, Дополнение) выберем Исправление :

Далее в списке расширений убираем флажки «Безопасный режим, имя профиля безопасности» и «Защита от опасных действий» :


Таким образом мы создали расширение. Но если мы откроем его двойным щелчком, то увидим, что дерево метаданных у него пустое. И теперь нам надо добавить в расширение общий модуль.

Для этого в дереве метаданных основной конфигурации щелкаем правой кнопкой по нужному общему модулю и выбираем пункт «Добавить в расширение» :


И теперь наше расширение будет выглядеть следующим образом:

Но если мы посмотрим на код общего модуля расширения, то увидим, что он пустой. И следующим шагом надо добавить в него процедуру. Снова идем в основную конфигурацию, открываем код общего модуля, щелкаем правой кнопкой по процедуре, снова выбираем пункт «Добавить в расширение» и в открывшемся окне выбираем тип вызова Вызывать вместо :

В итоге в общий модуль расширения будет добавлена процедура со следующим кодом:

&Вместо("ВывестиСообщение") Процедура Сообщения_ВывестиСообщение() // Вставить содержимое метода. ПродолжитьВызов() ; КонецПроцедуры

Как видим в имени процедуры присутствует префикс, который был указан при создании расширения. Теперь остается только доработать код процедуры так как нам нужно:

&Вместо("ВывестиСообщение") Процедура Сообщения_ВывестиСообщение_() Сообщение = Новый СообщениеПользователю; Сообщение. Текст = "Это расширение" ; Сообщение. Сообщить() ; КонецПроцедуры

И теперь можно легко убедиться, что у нас будет выполняться код расширения вместо кода основной конфигурации, если выполнить следующий код:

Professia1c_ry_Расширения. ВывестиСообщение() ;

Изучив опыт использования предыдущих версий программы, и учтя тот факт, что каким бы универсальным и всеобъемлющим не было конкретное решение, в конечном итоге в 90% случаев требуется его доработка под конечного пользователя. Разработчики 8 версии программы 1С реализовали несколько принципиально новых решений для минимизации необходимости изменения стандартных механизмов конфигураций:

  • Буквально с первых версий программы у элементов многих справочников появилась возможность создания дополнительных свойств и категорий с использованием соответствующего плана видов характеристики и регистра сведений;
  • Дополнительные печатные формы и формы заполнения табличных частей, равно как и дополнительные отчеты и обработки теперь могут вызываться из соответствующего справочника;
  • Обработка стандартных процедур объектов осуществляется не внесением изменений в модуль, а путем подписок на события;
  • И, наконец, с версии платформы 8.3.6 появились в 1С расширения конфигурации.

Что такое расширения конфигурации 1С, как с ними работать, ограничения в использовании – вот тот спектр вопросов, которые мы попытаемся раскрыть в нашей статье.

Немного теории

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

  1. Сравнивать типовую и имеющуюся структуру метаданных;
  2. В случае существенного отличия типовых элементов следить за корректным обновлением;
  3. Вносить соответствующие изменения после обновления.

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

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

Ситуации, в которых можно использовать расширения

Как и у любого другого инструмента, у механизма расширений существует ряд характеристик, и ограничений которые определяют область их использования:

  • Расширения могут работать с управляемыми формами;
  • Механизм поддерживает изменение и добавление существующих подсистем;
  • До выхода платформы 8.3.8 в расширении можно было только изменять существующие роли, после обновления они позволили добавлять новые, ограничивая доступ даже к объектам основной базы;
  • Существующий механизм позволяет по собственному желанию изменять командный интерфейс подсистем и основного раздела конфигурации;
  • Также этот инструментарий позволяет добавлять обработки и отчеты без внесения изменений в структуру базы;
  • В версии платформы 8.3.9.718 значительно переработан механизм диагностирования совместимости расширения и основной конфигурации.

Из вышесказанного становится понятно, что:

  1. При работе с обычными формами функционал расширений значительно ограничен;
  2. Хотя и облегчился процесс обновления основной конфигурации, однако возможность использования конкретного расширения (в том числе и в качестве тиражных решений) может быть серьезно ограничена как изменениями исходной структуры, так и несколькими параллельно используемыми расширениями;
  3. Использовать этот механизм целесообразно в тех случаях, когда есть необходимость дифференциации внешнего вида и функционала, используемыми различными пользователями, либо когда собственными силами производится доработка типовой конфигурации, находящейся на поддержке.

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

Создание расширения

В конфигураторе войдем в меню Конфигурация->Расширения конфигурации, откроется форма (Рис.1).

Именно здесь и можно создать новое расширение. Нажмем кнопку «Добавить». Вот и окно нового расширения (Рис.2)

Рис.2

Рассмотрим его элементы:

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

Список поля «Назначение» состоит из трех значений, опишем их в порядке исполнения:

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

Запуск расширения

Двойной щелчок на имени расширения в окне из Рис.1, открывает окно расширения (Рис.3)


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

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

То есть, если для нашей разработки потребуется реквизит «ИНН» справочника «Физические лица», если он будет использован в модуле формы, мы должны его заимствовать из основной базы. В этом случае каждый раз при запуске расширения будет производиться проверка на наличие этого реквизита в справочнике основной конфигурации и на соответствие типа данных в исходной базе и в расширении.

Если после обновления или в ходе разработки нового функционала возникнет несогласованность между типами данных расширения и конфигурации или еще какие-то ошибки система проинформирует об этом пользователя (Рис.4)

Окно в правом нижнем углу указывает на нестандартную ситуации при подключении расширения, двойной клик на нем открывает подробную информацию. В данном случае мы просто поменяли тип значения у реквизита ИНН со значения «Строка» на значение «Булево» у заимствованного объекта, однако гораздо чаще бывает обратная ситуация – когда обновление типового продукта приводит к изменению или ликвидации реквизита основной базы.

Отработав и протестировав расширение на копии базы, его можно выгрузить в отдельный файл, для этого в окне (Рис.5) необходимо нажать кнопку «Конфигурация», выбрать пункт «Сохранить в файл». В отличие от обычных файлов конфигурации, имеющих расширение cf, файл дополнения к конфигурации будет иметь маску *.cfe.

Как видно из вышеприведенного рисунка загрузить новый функционал можно из того же окна, а можно из основного окна программы.

Для подключения расширения в режиме 1С.Предприятие у пользователя должен быть включен режим «Все функции» и вход в программу должен быть осуществлен с правами Администратора.

Путь для подключения доработки выглядит следующим образом: Все функции->Стандартные->Управление расширениями конфигурации. Открывающееся окно представлено на Рис.6

Рис.6

Нажатие на кнопку «Добавить», открывает диалоговое окно выбора файла, в котором необходимо выбрать нашу выгрузку. Если у обработки установлена галочка (Рис.7) и расширение содержит ошибку, подключение функционала будет отменено, и программа сообщит о возникновении исключительной ситуации.

Рис.7

Чтобы после успешного добавления наш функционал заработал, программу надо перезапустить.

Заимствование объектов и порядок срабатывания модулей

Для того, чтобы проследить последовательность выполнения обработчиков, мы включим возможность изменения нашей конфигурации и добавим в нее новую обработку, функционал которой будет заключаться только в одном – она будет сообщать, что её запустили из основной конфигурации, код на Рис.8.

Рис.8

Добавим эту обработку в расширение.

Для этого:

  • Правой кнопкой мышки активизируем контекстное меню формы обработки (Рис.9);

Рис.9

  • Выберем пункт «Добавить в расширение»;
  • В дереве дополнительной конфигурации появится и сама обработка и дубликат её формы;
  • Открыв форму, мы обнаруживаем, что команда, вызывающая сообщение тоже есть, только ей не присвоен обработчик;
  • Добавление действия команды вызывает диалоговое окно (Рис.10) в котором помимо основных директив места исполнения команды, присутствуют еще группа «Тип вызова».

Рис.10

Мы имеем три типа вызова для имеющейся процедуры;

  • Вызывать перед – исполнение кода расширения будет запущено прежде, чем отработает основная конфигурация;
  • Вызывать после – доработанная процедура пойдет вторым номером;
  • Вызывать вместо – процедура из основной конфигурации вообще не будет выполнена.

Оставим тип вызова в положении «Вызывать после» и добавим процедуру «Расш1_СообщитьПосле(Команда)» (Рис.11).

Рис.11

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

Рис.12

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

Механизм аннотаций

Представим ситуацию, когда к одной конфигурации подключено несколько расширений, то есть окно их выбора в конфигураторе выглядит как на (Рис.13)

Рис.13

При добавлении каждого нового расширения система самостоятельно выстраивает порядок их исполнения.

Настройка порядка выполнения дополнительных модулей происходит исходя не только из времени добавления модуля (позже добавлено, позже исполняется), но и исходя из назначения доработки («Исполнение» всегда будет идти прежде «Адаптации»).

Кроме этого последовательность выполнения процедур добавляемых модулей можно регулировать с помощью аннотаций:

  • &Перед(«ИмяПроцедуры»);
  • &После(«ИмяПроцедуры»);
  • &Вместо(«ИмяПроцедуры»).

Как видно, их набор схож с тем, что был продемонстрирован в предыдущем разделе, сходен и функционал.

Так как заимствованный модуль и модуль-донор находятся в одном пространстве имен, никаких дополнительных определений для типовых переменных и методов в этом случае не нужно.

Несколько иначе, нежели с процедурами обстоит дело с функциями. Дело в том что, выполнение типовой процедуры может быть как бы окантовано кодом расширения, то есть можно вставить какие-то действия до кода процедуры, некоторые алгоритмы после, а вот для функций это не прокатит. Если основная функция будет выполняться после кода расширения, возвратное значение замещающей функции не будет получено, если же перед измененным алгоритмом, то не будет получено значение основной функции и аннотация &После отработает как &Вместо.

Для ликвидации такой «несправедливости» был создан метод ПродолжитьВызов().

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

Внесение изменений в модуль объекта

Механизм подписок на события очень сильно облегчил работу разработчикам, но было одно серьезное НО.

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

Допустим, нам в процессе работы понадобилось добавить какую-либо обработку для типового документа «Прием на работу» при его записи. Раньше мы бы зашли в подписки и действовали оттуда, сейчас мы можем добавить этот документ к расширению:

  • Выберем в конфигураторе «ПриемНаРаботу» и из его контекстного меню добавим его в наше расширение (кстати этот механизм имеет комбинацию горячих клавиш Альт+Шифт+Ф2);
  • После выбора соответствующего дополнения мы получим картинку, как на Рис.14;

Рис.14

  • Нас будет интересовать выделенный желтым цветом элемент «Модуль объекта», откроем его, активировав предварительно соответствующей галочкой (Рис.15);

Рис.15

  • Мы получим чистый лист программного модуля, обратим внимание на верхнюю панель, а точнее, на элемент, представленный на Рис.16, в ниспадающем списке здесь представлены события, которые можно обработать для данного объекта;

Рис.16

  • Попробуем в сообщении вывести номер документа при его записи, выбрав соответствующее событие;
  • Мы получим форму выбора типа вызова (Рис.17), определим, когда будет выводиться номер;

Рис.17

  • Код процедуры показан на Рис.18;

Рис.18

В некоторых случаях из-за установленной галочки «Безопасный режим», подключение расширения происходит с ошибкой.

Небольшой анонс

В ближайшее время фирма 1С планирует выпуск платформы 8.3.11, в которой они анонсировали возможность добавления собственных:

  • Документов;
  • Справочников;
  • Планов обмена;
  • Регистров сведений.

Так же должна быть реализована возможность добавления реквизитов и табличных частей. При этом разработчики учли возможность изменения типовых решений, которое может повлечь за собой сбой в работе расширения.

Данные, внесенные в расширение никуда не пропадут, а до того момента, как не будет решена проблема совместимости, изменяемый дополнением справочник основной конфигурации будет недоступен для записи.

0. Введение

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

Согласно документации:

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

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

Более подробно о расширениях можно почитать и посмотреть здесь:

Заметки в зазеркалье
Курсы Гилёва и Насипова
Расширения в 8.3.9

Ниже я приведу полезные советы для работы с расширениями.

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

Итак, поехали!

1. Показать/скрыть неизмененные объекты

При добавлении новых объектов в расширение также автоматически добавляются связанные объекты. В результате в метаданных расширения скапливается много служебных объектов.
Для того, чтобы показать только измененные объекты есть кнопка “Измененные и добавленные в расширении”. При нажатии отображаются только добавленные вручную и измененные объекты расширения.
Принцип её работы показан ниже:

2. Последовательность выполнения обработчиков

Если в расширении переопределить событие или команду, то по умолчанию сначала выполняется обработчик из расширения, а затем обработчик типовой конфигурации.
Это не всегда удобно, например, когда какие-то операции следует выполнить после типовых обработчиков.
Рассмотрим примеры, которые позволяют изменить эту последовательность:

а) Выполнить сначала типовой код, затем код из расширения:

&НаСервере Процедура Учеб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("Сообщение", "ПослеТиповогоОбработчика!"); УстановитьВыполнениеПослеОбработчиковСобытия("ВыполнитьПослеТиповогоОбработчика", ДополнительныеПараметры); КонецПроцедуры &НаСервере Процедура ВыполнитьПослеТиповогоОбработчика(Отказ, СтандартнаяОбработка, ДополнительныеПараметры) Сообщить(ДополнительныеПараметры.Сообщение); КонецПроцедуры

б) Выполнить сначала код из расширения, затем типовой код, затем опять код из расширения

&НаСервере Процедура Учеб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Процедуры до типовых обработчиков Сообщить("До типового обработчика!"); // Устанавливаем обработчик после типового обработчика событий УстановитьВыполнениеПослеОбработчиковСобытия("ВыполнитьПослеТиповогоОбработчика"); // Дальше будет выполнен код из типового обработчика КонецПроцедуры &НаСервере Процедура ВыполнитьПослеТиповогоОбработчика(Отказ, СтандартнаяОбработка, ДополнительныеПараметры) // Код после типового обработчика из расширения Сообщить("После типового обработчика!"); КонецПроцедуры

в) Выполнить сначала типовой код, затем код из расширения, затем снова типовой код

Можно прибегнуть к хитрости:
- Отменяем выполнение обработчиков из типовой конфигурации.
- В расширении вызываем нужные процедуры из типового кода в перемешку с процедурами из расширения.

&НаСервере Процедура Учеб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Процедуры до типовых обработчиков Сообщить("ДоТиповогоОбработчика!"); // Процедуры из типового обработчика Если НЕ ЗначениеЗаполнено(БанковскийСчет.ВалютаДенежныхСредств) Тогда БанковскийСчет.ВалютаДенежныхСредств = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета(); КонецЕсли; РазместитьКонтактнуюИнформацию(); Если Параметры.Ключ.Пустая() Тогда ПодготовитьФормуНаСервере(); КонецЕсли; УправлениеФормой(ЭтаФорма); // Процедуры после типовых обработчиков Сообщить("ПослеТиповогоОбработчика!"); // Остановим выполнение типовых обработчиков УстановитьВыполнениеОбработчиковСобытия(Ложь); КонецПроцедуры

г) Отменить типовые обработчики

&НаСервере Процедура Учеб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Остановим выполнение типовых обработчиков УстановитьВыполнениеОбработчиковСобытия(Ложь); КонецПроцедуры

3. Создание и использование общего модуля, модуля менеджера или модуля объекта

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

&НаСервере Процедура СообщитьДиректораНаСервере() Должность = "Директор"; ФИОРуководителя = "Иванов И.И."; Обработки.Учеб_Обработка.СообщитьДиректора(Должность, ФИОРуководителя); КонецПроцедуры

Модуль менеджера обработки:

Процедура СообщитьДиректора(Знач Должность, Знач ФиоРуководителя) Экспорт ТекстСообщения = СтрШаблон(НСтр("ru="%1 %2""), Должность, ФиоРуководителя); Сообщить(ТекстСообщения); КонецПроцедуры

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

4. Как подключить отладку

В типовых конфигурациях на основе библиотеки стандартных подсистем (БСП) при отладке расширений встречается вот такое страшное сообщение:


Оно возникает если в конфигураторе открыто наше расширение и лечится только закрытием окна расширения.

Для того, чтобы подключить отладку в расширении следует и спользовать ключ командной строки - “РежимОтладки”

Это упрощает отладку кода. В частности:

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

Для того чтобы его установить:

  • Запустить предприятия с ключом командной строки - " /C РежимОтладки "
  • В режиме конфигуратора установить параметр запуска:
    Сервис -> Параметры -> Запуск 1С:Предприятия -> Параметр запуска: ввести строку < РежимОтладки >

При первом подключении расширения или при изменении в версии расширения или поставщика, отладка может не подключится с таким же сообщением.

Для того, чтобы исправить эту ситуацию можно попробовать следующие действия:

1. В конфигураторе закрыть это расширение
2. Запустить конфигурацию в режиме предприятие и открыть форму, связанную с расширением
3. Открыть расширение в конфигураторе
4. Перезапустить отладку.

5. Как писать запросы

Расширение видит и работает только с теми объектами, которые заимствованы из основной конфигурации.
Объекты, которые не заимствованы, в расширении не видны и при попытке обращения к ним, например, в тексте запроса, в режиме “Конфигуратор” вызывают ошибку. Хотя в пользовательском режиме код выполняется без проблем.
Для того чтобы писать или редактировать запросы с большим количеством метаданных лучше воспользоваться любой внешней обработкой. В ней доступны все метаданные из основной конфигурации:


6. Как сохранять данные

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

а) Сохранение данных формы

В редактируемой форме можно установить свойство - “АвтоматическоеСохранениеДанныхВНастройках” в "Использовать" и поставить флаг "Сохранение" над нужными реквизитами. Это позволит сохранять значения реквизитов типовым механизмом платформы:


Такое сохранение данных .

б) Хранилище общих настроек

В этом хранилище можно хранить любые данные. Подробнее можно .
Рассмотрим пример хранения произвольных данных.

Сохранение данных:

&НаСервере Процедура ПередЗакрытиемНаСервере() // Подготовим структуру хранения данных СтруктураНастроек = Новый Структура; СтруктураНастроек.Вставить("Всем", Всем); СтруктураНастроек.Вставить("Близким", Близким); СтруктураНастроек.Вставить("Друзьям", Друзьям); // Сохраним данные в хранилище общих настроек ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Учеб_СделатьВсёХорошо", "Настройки", СтруктураНастроек); КонецПроцедуры

Восстановление данных:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Инициализируем структуру СтруктураНастроек = Новый Структура; // Восстановим сохраненные данные СтруктураНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("Учеб_СделатьВсёХорошо", "Настройки", СтруктураНастроек); // Заполним значения реквизитов формы ЗаполнитьЗначенияСвойств(ЭтаФорма, СтруктураНастроек); КонецПроцедуры

7. Как добавить свой макет

К сожалению, в заимствованных документах нельзя добавлять или изменять макеты. Но макеты можно добавлять к обработкам, также можно вставлять внешние обработки, в которых уже существуют макеты. Эти макеты можно использовать для создания или изменения печатных форм, .

8. Как подменить кнопку заполнения табличной части

Иногда может потребоваться и добавить свою кнопку заполнения и оставить типовую кнопку.
Для того, чтобы убрать типовую кнопку подальше, но не удалять её совсем можно установить свойство - “Только во всех действиях” - "Да":

В этом случае кнопка будет доступна из подменю “Еще”. Это позволит в случае непредвиденных ситуаций продолжить работу с типовой функциональностью.

9. Расширение как багфикс

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

К тому же разработчики типовых иногда выкладывают текст исправления ошибки на партнерском форуме. Это позволит создать такое расширение еще проще.

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

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

10. Как вывести свою обработку в интерфейс

Для того, чтобы вывести свою обработку в интерфейс конфигурации необходимо включить её в состав требуемой подсистемы:

Также можно создать свою подсистему в расширении и складывать нужные объекты в неё.
Например, можно поместить в расширение внешние обработки или отчеты и просто подключать их к любым конфигурациям:

11. Как перевести расширение на 8.3.8

Чтобы перевести расширение на 8.3.8 следует выполнить следующие действия:

1. Снять режим совместимости в расширении.
Установить свойства совместимости такими же как и у основной конфигурации.

2. Устранить проблемы подключения.
Необходимо проверить, что на новой версии расширение подключается. Причину ошибок можно посмотреть в журнале регистрации.

3. Обновить формы в расширении.
Следует обновить формы расширений из основной конфигурации. Чтобы и в расширении и в конфигурации формы были одинаковыми.

4. Привести компоновку формы к новым правилам движка.
С рекомендациями по адаптации форм к новой платформе можно ознакомиться по этой ссылке .

5. Проверить, что расширение выглядит и работает правильно.

Более подробно по каждому пункту описано в . Там же приведены полезные материалы по теме.

12. Как подключить расширение

1. Администрирование - "Печатные формы и обработки"

3. Кнопка "Добавить" - Выбираем файл

4. Кнопка "Перезапустить"

5. Готово!


13. Как обновить расширение

1. Администрирование - "Печатные формы и обработки"

3. Встаем на нужное расширение

4. "Еще" - Команда "Обновить из файла на диске"

5. Кнопка "Перезапустить"

6. Готово!

Пока на этом всё!

Благодарность можно выразить денежно, а то кризис, сами понимаете!

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

При рассмотрении механизма расширения конфигурации будут использоваться следующие термины:

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

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

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

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

В качестве расширяемых объектов могут выступать:

  • Управляемые формы;
  • Роли;
  • Подсистемы;
  • Настройки начальной страницы (рабочего стола) прикладного решения;
  • Общие модули;
  • Модули объектов для всех типов объектов;
  • Модули менеджеров для всех типов объектов;
  • Модуль сеанса;
  • Модуль управляемого приложения;
  • Модуль внешнего соединения;
  • Модули команд.

В качестве собственных объектов расширения могут выступать:

  • Подсистемы;
  • Обработки;
  • Отчеты;
  • Реквизиты, табличные части и реквизиты табличных частей в заимствованных обработках и отчетах;
  • Роли;
  • XDTO-пакеты;
  • Web-сервисы;
  • HTTP-сервисы;
  • WS-ссылки;
  • Общие макеты;
  • Общие команды;
  • Общие модули (кроме глобальных серверных и привилегированных общих модулей);
  • Группы команд;
  • Общие картинки;
  • Формы, макеты и команды заимствованных объектов:
  • Планов обмена;
  • Критерев отбора;
  • Хранилищ настроек;
  • Справочников;
  • Документов;
  • Журналов документов;
  • Перечислений;
  • Отчетов;
  • Обработок;
  • Регистров сведений;
  • Регистров накопления;
  • Регистров бухгалтерии;
  • Регистров расчета;
  • Планов видов характеристик;
  • Планов счетов;
  • Планов видов расчета;
  • Бизнес-процессов;
  • Задач;
  • Таблиц внешних источников данных;
  • Кубов внешних источников данных;
  • Таблиц измерений внешних источников данных.

Среди контролируемых свойств следует особо выделить:

  • Состав плана обмена;
  • Предопределенные элементы для справочников, планов видов характеристик, планов счетов и планов видов расчетов.

В базовых версиях прикладных решений работа с расширениями не поддерживается.

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

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

У конфигурации должен стоять режим совместимости «Не использовать», так же как и у расширения.

Для этого создадим в конфигурации «Управляемое приложение» подсистему «Учет автомобилей» со следующими объектами

Справочники: Марки автомобилей, Автомобили, Гаражи

Документы: Прибытие в гараж, Выбытие из гаража.

Создадим новое расширение, которое назовем «Учет автомобилей», назначение этого расширения будет «Дополнение».

Добавим в новое расширение собственную картинку, в которую загрузим иконку автомобиля

Теперь создадим новую подсистему, которую назовем «Учет автомобилей», в этой подсистеме отметим флаг «Включать в командный интерфейс» и в свойстве «Картинка» укажем нашу новую иконку.

Создадим справочники: МаркиАвтомобилей, Автомобили (будет реквизит Марка с типом ссылка на справочник МаркиАвтомобилей) и Гаражи.

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

Точно так же создадим новые документы: Прибытие автомобиля и Выбытие автомобиля.

Включим все наши новые объекты в подсистему.

Теперь запустим нашу конфигурацию и посмотрим на новую подсистему

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

Для этого заимствуем справочник Контрагент в расширение.

Добавим для заимствованного справочника новый реквизит, который назовем Автомобиль.

И добавить на заимствованную форму реквизит расширения.

Теперь, если мы зайдем в справочник нашей конфигурации, то сможем заполнить этот реквизит из расширения.

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

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг:

  • Закрепите полученные знания при помощи задачника;
  • Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

    1. Очень доступный и понятный язык изложения
    2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
    3. Поймете идеологию управляемого приложения 1С
    4. Узнаете, как разрабатывать управляемое приложение;
    5. Научитесь разрабатывать управляемые формы 1С;
    6. Сможете работать с основными и нужными элементами управляемых форм
    7. Программирование под управляемым приложением станет понятным

    Промо-код на скидку в 15% — 48PVXHeYu


    Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

    можно оплатить вручную:

    Яндекс.Деньги — 410012882996301
    Web Money — R955262494655

    Вступайте в мои группы.





    

    2024 © teslales.ru.