1с расширение конфигурации добавление реквизита документа

Новые реквизиты в расширении

Я
   Звездец

07.10.19 — 02:35

Создавать новые реквизиты в расширении можно уже давно. Но пока приходилось создавать новые объекты целиком (новый справочник, документ, регистр) и все было ок. И вот понадобилось добавить реквизит к заимствованному документу. Ну как бы все реализовано (https://wonderland.v8.1c.ru/blog/rasshirenie-dannykh/) приступаем.

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

image

что за?.. опять новая фича или я где-то затупил

  

Партнерская программа EFSOL Oblako

   seevkik

1 — 07.10.19 — 03:09

Как бы реализовано, ага, а режим совместимости какой?

   hhhh

2 — 07.10.19 — 03:10

(0) вы невнимательны. Выбрали вверху  ФормаДокумента. А надо наоборот, ту что внизу ФормаДокумента.

   pavig

3 — 07.10.19 — 03:15

(0)

Правой кнопкой на «Объект» (в области на которой ты указал знак вопроса) -> «Добавить в расширение» и всё получится

   pavig

4 — 07.10.19 — 03:16

   famnam

7 — 07.10.19 — 06:42

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

   Звездец

8 — 07.10.19 — 07:01

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

   Звездец

9 — 07.10.19 — 07:02

(4) ну так этим я создам реквизит формы в расширении и он не будет связан с новым реквизитом объекта в расширении

   Uzyf

10 — 07.10.19 — 08:44

Не стоит создавать реквизиты в расширении, чтобы потом не терять из них данные

   Звездец

11 — 07.10.19 — 09:00

(10) это тема для другой дискуссии. Сейчас не об этом

   AlvlSpb

12 — 07.10.19 — 09:56

(11) В (2) тебе четко назвали причину. Добавляешь реквизит в расширении, так и на форму выводи его в расширении, а не в основной форме

   Звездец

13 — 07.10.19 — 09:58

(12) тьфу ты блин. Спать надо ночью …

   Cyberhawk

14 — 07.10.19 — 10:00

Интересно, как тогда предполагается понимать по задумке ребяток из 1С надпись «Форма (расширение)» в конструкторе формы )

   Звездец

15 — 07.10.19 — 10:02

(14) ага, вот это и меня смутило. Вроде форма уже заимствована, реквизит добавлен, а оказывается его еще раз надо добавлять в форму

   Cyberhawk

16 — 07.10.19 — 10:04

(15) Так ты сначала добавил реквизит, а потом заимствовал?

   Звездец

17 — 07.10.19 — 10:05

(16) по разному пробовал. и сначала форму, потом реквизит. И сначала заимствовал объект, потом добавил реквизит, потом заимствовал форму. разницы никакой

   Cyberhawk

18 — 07.10.19 — 10:10

(17) Так ты открывал форму (конструктор формы) из дерева основной конфигурации, а не из дерева расширения, правильно понял?

   Звездец

19 — 07.10.19 — 10:14

нет, все из дерева расширения естественно

   Cyberhawk

20 — 07.10.19 — 10:14

Проверил: (14) не наблюдается.

Значит у тебя на твоей картинке открыта форма из расширения. Что тогда предлагают тебе делать (2) и (11) не ясно.

   Звездец

21 — 07.10.19 — 10:16

ну а у тебя добавить реквизит на форму получилось?

   Cyberhawk

22 — 07.10.19 — 10:21

(21) На 8.3.10 поведение не отличается от того, что ты описал

   Cyberhawk

23 — 07.10.19 — 10:21

Щас на конфе с режимом совместимости 8.3.12 проверю

   Звездец

24 — 07.10.19 — 10:23

(22) это 8.3.11 появилось

   Cyberhawk

25 — 07.10.19 — 10:23

+(23) Аналогично

   Cyberhawk

26 — 07.10.19 — 10:23

(24) Платформа 8.3.14 везде, в (22) вел речь о режиме совместимости конфы / расширения.

   Cyberhawk

27 — 07.10.19 — 10:25

Полагаю, в конструктор формы расширения добавляемые в объект реквизиты тупо не подвезли

   Cyberhawk

28 — 07.10.19 — 10:25

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

   RomanYS

29 — 07.10.19 — 10:27

(27) Проверил. Там реально крепкий маразм. В расширенной форме нужно объект (в реквизитах) добавить в расширение)))

   RomanYS

30 — 07.10.19 — 10:29

+(29) пытаюсь найти в этом хоть каплю здравого смысла, пока не получается

   Cyberhawk

31 — 07.10.19 — 10:31

+(29) Ага, помогло. Только после этого отображение формы сломалось.

А при вызове команды «Обновить расширение формы» все возвращается обратно, в т.ч. и добавленный реквизит исчезает.

   Cyberhawk

32 — 07.10.19 — 10:32

+(31) После этого действия добавленный реквизит в объект уже никак не добавить, команда «добавить в расширение» неактивна)

   Cyberhawk

33 — 07.10.19 — 10:32

*добавленный в объект реквизит в форму уже никак не добавить

   Звездец

34 — 07.10.19 — 10:33

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

   Cyberhawk

35 — 07.10.19 — 10:34

(34) В 8.3.15 вроде это пофиксили, там форма в расширение приезжает сразу куцая

   RomanYS

36 — 07.10.19 — 10:34

(31) (32) (33) Жесть. Ну их в ж.. эти расширения. Где адепты этого волшебного инструмента?

   Звездец

37 — 07.10.19 — 10:35

(35) не, че-то ничего они толком не пофиксили

   RomanYS

38 — 07.10.19 — 10:35

(35) Это не лечит (31). Я тестил на 8.3.15.1656

   Cyberhawk

39 — 07.10.19 — 10:36

(38) А режим совместимосты конфы и расширения тоже 8.3.15?

   Звездец

40 — 07.10.19 — 10:37

(39) да, я ради этого как раз новую пустую демо и создавал. Тоже грешил на совместимость вначале

   Cyberhawk

41 — 07.10.19 — 10:37

(36) Используем только как патчи, и не для форм

   Звездец

42 — 07.10.19 — 10:39

(41) ну при этом то хочется. Снимать с поддержки конфу если надо пару реквизитов добавить и в печ форму вывести очень не хочется, а использовать дополнительные реквизиты неудобно из-за их вывода в ж-пе формы

   RomanYS

43 — 07.10.19 — 10:40

(31) Эта кнопка вроде должна обновлять сохраненную форму основной конфы в составе расширенной после изменения/обновления конфигурации. Почему она вообще доступна и что-то делает, если конфигурация не менялась?

   RomanYS

44 — 07.10.19 — 10:41

(39) было 8.3.13. Перепроверил (расширение создавал заново) без совместимости — всё также

   Cyberhawk

45 — 07.10.19 — 10:42

(42) Снимать с поддержки рано или поздно скорее всего все равно придется, оттягивая этот момент только добавляешь себе мороки по началу) Если конечно ты не потоковый франч с типовыми

   Cyberhawk

46 — 07.10.19 — 10:42

(42) «использовать дополнительные реквизиты неудобно из-за их вывода в ж-пе формы» // Вот через расширение как раз можно использовать чтоб программно переопределять место вывода нужных тебе доп. реквизитов, например.

   Cyberhawk

47 — 07.10.19 — 10:43

(40) (44) Ок, спс, запомнил что расширения для интерактивной работы с конструктором формы не подходят)

   RomanYS

48 — 07.10.19 — 10:44

(47) Подходят. Только нельзя нажимать «обновить форму», это запомнить нельзя, я себе запишу))

   AlvlSpb

49 — 07.10.19 — 11:22

Никогда не обращал внимания, но вы оказались правы. Действительно поведение в расширении более чем странное. Вроде нашел лекарство. Встать на Объект, Изменить и обновить тип объекта (например «ДокументОбъект.ЗаказПокупателя») реквизит появляется и можно выводить на форму. При этом уже не требует обновить форму. Проверьте как у вас

   AlvlSpb

50 — 07.10.19 — 11:25

(49) Естественно Объект в форме расширения

   pavig

51 — 07.10.19 — 11:38

(47)

Нормально оно всё подходит

   RomanYS

52 — 07.10.19 — 11:43

(49) Да. Реквизит возвращается.

>> При этом уже не требует обновить форму

Он и до этого не требовал. Но если Вам потребуется или случайно нажмете — сюрприз

   AlvlSpb

53 — 07.10.19 — 16:13

(52) Не для дискуссии, но у меня требовал. Вернее в конфигураторе сверху формы писал «Форма была изменена. Обновить форму?».

   Звездец

54 — 08.10.19 — 09:25

ну вроде разобрался с добавлением. Добавил. Запускаю, а на форме изменений нет. Что за … трава у разработчиков

   AlvlSpb

55 — 08.10.19 — 11:17

(54) расширение единственное в базе или еще есть?

   AlvlSpb

56 — 08.10.19 — 11:19

И безопасный режим расширения отключи, если включен

   unenu

57 — 08.10.19 — 11:32

ответ дали еще в (3)

о чем вы говорите?

  

Cyberhawk

58 — 08.10.19 — 19:24

(57) «Ну, братец, виноват: Слона-то я и не приметил» (с) :)

Файлы материала
Описание

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

Программное добавление реквизита на форму

Для примера, стоит задача в конфигурации ЗУП 3.1 добавить реквизит «Способ отражения зарплаты в БУ» для позиции штатного расписания в группе “Дополнительные данные”.

Способ отражение в позиции штатного расписания

Создадим расширение и выполним следующую последовательность действий:

  1. Добавим в расширение справочник “Штатное расписание” и создадим реквизит “АВ_СпособОтражения” с типом данных “СправочникСсылка.СпособыОтраженияЗарплатыВБухУчете”

добавление реквизита АВ_СпособОтражения в расширение

2. Заберем в расширение процедуру “ПриСозданииНаСервере” из общего модуля “УправлениеСвойствами”, программно добавим поле в форму и свяжем его с реквизитом объекта добавленного на первом шаге.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Справочник.ШтатноеРасписание.Форма.ФормаЭлемента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяГруппы = «ГруппаДополнительныеРеквизиты»;

ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);

Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = «АВ_СпособОтражения»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда

ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы);

//Вместо Добавить() можно использовать метод Вставить()

//в 4-й параметре указывается Элемент перед которым должен быть вставлен новый элемент.

//ЭлементФормы = Форма.Элементы.Вставить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы, Форма.Элементы.Найти(«ИмяСледующегоЭлементаФормы»));

ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;

ЭлементФормы.ПутьКДанным = «Объект.АВ_СпособОтражения»;

//ЭлементФормы.МногострочныйРежим = Истина;

//ЭлементФормы.Высота = 3;

КонецЕсли;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

Образец расширения для скачивания в начале описания.

Программное добавление реквизита в табличную часть формы

Например, таким же способом, добавим в табличную часть “Рабочие места” реквизит “Спецжиры” с типом “Булево”.

Результат спецоценки условий труда с  колонкой спецжиры

Добавление реквизита в табличную часть

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Документ.РезультатыСпецоценкиУсловийТруда.Форма.ФормаДокумента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяЭлемента = «АВ_ЕстьСпецжиры»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда

ЭлементФормы = Форма.Элементы.Добавить(«Спецжиры», Тип(«ПолеФормы»), Форма.Элементы.РабочиеМеста);        

ЭлементФормы.Вид = ВидПоляФормы.ПолеФлажка;

ЭлементФормы.ПутьКДанным = «Объект.РабочиеМеста.АВ_ЕстьСпецжиры»;

//ЭлементФормы.ТолькоПросмотр = Истина;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

В результате получим табличную часть с новой колонкой.

Программное добавление табличной части на форму

Аналогично добавим табличную часть “АВ_ВредныеФакторы” на форму справочника “Профессии”.

Табличная часть добавленная через расширение

Добавление табличной части на форму

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Справочник.ПрофессииРабочих.Форма.ФормаЭлемента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяГруппы = «ГруппаДополнительныеРеквизиты»;

ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);

Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = «АВ_ВредныеФакторы»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда   

ЭлементФормыТаблица = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ТаблицаФормы»), ГруппаФормы);  

ЭлементФормыТаблица.ПутьКДанным = «Объект.АВ_ВредныеФакторы»;

ЭлементФормы = Форма.Элементы.Добавить(«ВредныйФактор», Тип(«ПолеФормы»), ЭлементФормыТаблица);

ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;

ЭлементФормы.ПутьКДанным = «Объект.АВ_ВредныеФакторы.ВредныйФактор»;    

КонецЕсли;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

Связь реквизитов формы с элементами формы

Кроме того, реквизиты формы можно создавать программно и связывать их с элементами формы

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#Область ДобавлениеРеквизитовФормы

// Массив для новых реквизитов

ДобавляемыеРеквизиты = Новый Массив;

// Опишем ревизиты формы

Реквизит_РабочееМесто = Новый РеквизитФормы(«АВ_РабочееМесто», Новый ОписаниеТипов(«СправочникСсылка.РабочиеМестаОхраныТруда»), , «Рабочее место»);

// Заполним массив после описания реквизитов формы

ДобавляемыеРеквизиты.Добавить(Реквизит_РабочееМесто);

// Добавим новые реквизиты в форму

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

#КонецОбласти

#Область ДобавлениеЭлементовФормы

...

#КонецОбласти

#Область ЗаполнениеДанных

Форма.АВ_РабочееМесто = Форма.Объект.АВ_РабочееМесто;

#КонецОбласти


Расширения, Типовые приемы, Шаблоны и заготовки

Skip to content

1С, как добавить, изменить реквизит формы объекта через расширение

Как добавить, изменить реквизит формы через расширение

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

Вам необходимо выполнить следующие действия:

  • В дереве метаданных нажать правой кнопкой мыши на реквизит -> «Добавить в расширение» -> выбрать расширение;

  • Перейти в расширение конфигурации, открыть форму, в которую планируем добавить (или изменить) реквизит -> в области справа выделить реквизит -> нажать правую кнопку мыши -> «Добавить реквизит»;

Почему в новой платформе изменился данный механизм?

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

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

Связанные статьи

Contents

  • 1 Механизм расширения конфигурации 1C
  • 2 Как добавить расширение конфигурации 1С 8.3

Механизм расширения конфигурации 1C

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

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

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

При разработке расширений следует учитывать следующие факты:

— в системе могут функционировать более одного расширения.

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

Расширение может иметь одно из следующих назначений:

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

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

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

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

Ограничения использования расширений:

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

— Параметры сеанса.

— Общие реквизиты.

— Критерии отбора.

— Подписки на события.

— Регламентные задания.

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

— Определяемые типы.

— Хранилища настроек.

— Языки.

— Константы.

— Журналы документов.

— Бизнес-процессы и задачи.

— Внешние источники данных.

Не поддерживается расширение следующих объектов:

— Нельзя создавать подчиненные подсистемы.

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

— Состав значений перечислений;

Не поддерживается добавление реквизитов и табличных частей для:

— План видов характеристик;

— План счетов;

— План видов расчетов.

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

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

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

Как добавить расширение конфигурации 1С 8.3

Предлагаю рассмотреть задачу добавления нового Справочника «Категория должности по Классификатору Предприятия» с выводом его значения на Форму Справочника Должности, на базе Конфигурации ЗУП 3.1

Для создания расширения необходимо запустить 1С в режиме конфигуратора.

В конфигураторе необходимо зайти в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Далее нажмем кнопку «Добавить». Мы увидим диалоговое окно создания расширения:

Стоит отдельно выделить поле Назначение – необходимо выбрать его значение в зависимости от решаемой задачи – т.к. мы выполняем добавление объектов по требованиям конкретного заказчика – нам подойдет вариант «Адаптация».

После нажатия на кнопку «ОК» — двойным кликом по появившейся строке откроем Конфигурацию расширения. Мы увидим практически пустое дерево конфигурации.

Добавим в расширение справочник Категория должности по Классификатору Предприятия. Стоит обратить внимание, что в название всех объектов процедур и функций созданных в расширении, добавляется его префикс (в нашем случае Расш1_);

Разместим наш новый Справочник в Подсистеме «ШтатноеРасписание» для этого необходимо добавить эту подсистему в Расширение – Перейдем в дерево основной Конфигурации и  нажмем правой кнопкой мыши на строке с нужной подсистемой и выберем пункт «Добавить в расширение».

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

Далее добавим в расширение Справочник Должности и добавим для него новый реквизит КатегорияДолжности с типом СправочникСсылка.Расш1_КатегорияДолжностиПоКлассификаторуПредприятия

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

— Интерактивно, добавив Форму «ФормаЭлемента» в расширение

— Программно, не добавляя Форму Справочника в расширении, а добавив подходящую процедуру, вызываемую в обработчике Формы «ПриСозданииНаСервере» в расширение.

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

Интерактивное изменение Формы в расширении.

Для того чтобы вывести Реквизит на форму интерактивно: необходимо добавить саму Форму «ФормаЭлемента» в расширение. Обращу ваше внимание на следующий момент – для того чтобы появилась возможность Интерактивного добавления Реквизита объекта на форму необходимо сам Объект тоже добавить в расширение.

Далее добавим  новый Реквизит в подходящую Группу на форме.

Запустив 1С в режиме Предприятия убедимся, что новый Справочник появился в интерфейсе

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

Программное изменение Формы в расширении.

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

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

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

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

После проделанных процедур увидим что в Расширение был добавлен общий модуль УправлениеСвойствами  и процедура Расш1_ПриСозданииНаСервере с аннотацией &После(«ПриСозданииНаСервере»)

Далее в добавленную процедуру поместим следующий код:

//Определим тип, чтобы ограничить добавление реквизитов только нужными нам Формами
Если ТипЗнч(Форма.СсылкаНаобъект) = Тип("СправочникСсылка.Должности") Тогда

// Добавим элемент формы "Категория должности"
мИмя = "Расш1_КатегорияДолжности";

    Если Форма.Элементы.Найти(мИмя) = Неопределено Тогда
        Элемент = Форма.Элементы.Добавить(мИмя, Тип("ПолеФормы"), Форма.Элементы.ОплатаГруппа);
        Элемент.Вид = ВидПоляФормы.ПолеВвода;
        Элемент.ПутьКДанным = "Объект.КатегорияДолжности";
        Элемент.Заголовок = "КатегорияДолжности (пр.)";
    КонецЕсли;

КонецЕсли;

Запустим 1С в режиме предприятия и убедимся, что на форме также появился добавленный реквизит «КатегорияДолжности (пр.)»

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

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

Расширения конфигурации

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

  • Изменять алгоритмы
  • Изменять формы и добавлять новые формы
  • Добавлять реквизиты к существующим объектов (кроме регистров)
  • Добавлять новые объекты

Демонстрационная задача

Имеется конфигурация, в которой реализован складской учёт товаров.

Необходимо реализовать:

  • Отчет по остаткам товаров
  • Учет взаиморасчетов с поставщиками
  • Расчет стоимости поставки с учётом скидок

Импорт существующей базы

1. Добавить новую базу данных

2. Создание новой информационной базы

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

4. Укажите наименование информационной базы и выберите тип расположения информационной базы «На данном компьютере или на компьютере в локальной сети»

5. Укажите параметры информационной базы

6. Добавление информационной базы/группы

Выбор созданной информационной базы

1. Выбираем базу и нажимаем кнопку «Конфигуратор»

Открываем дерево конфигурации

Конфигурация — Открыть конфигурацию

Загрузка информационной базы

Администрирование — Загрузить информационную базу

Файл базы данных имеет расширение .dt.

Просмотр древа исходных данных для выполнения задания

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

Настройка режима поддержки (когда необходимо доработать саму конфигурацию)

Конфигурация — Поддержка — Настройка поддержки
Включение возможности изменения

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

Конфигурация — Расширения конфигурации — Добавить

Заполняем поля данных нового расширения.

Для уникальности расширения дополнительно заполняется поле «Префикс».

Двойной щелчок на имени расширения — открытие его древа.

Создание отчета в расширении 

Отчеты — Добавить.

Для создания отчета по схеме компоновки данных выберите «Открыть схему компоновки данных».

Подтверждаем действия по созданию макета.

Данные для отчета будем получать из запроса с помощью конструктора запросов.

Для данного отчета будем заимствовать регистр конфигурации «Остатки товаров».

ПКМ по регистру в древе конфигурации — Добавить в расширение

Регистр будет отображен теперь и в древе расширения. 

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

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

Запрос будем создавать с помощью конструктора запроса.

Выберем нужные поля.

Укажем ресурс — КоличествоОстаток.

Установим выбранные поля в настройках.

Добавим новую группировку.

Оставим для нее настройки по умолчанию.

Просмотрим результат в режиме предприятия.

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

Выбираем Все функции…

(Если эта кнопка не доступна, включим ее Сервис-Параметры-Отображать команду «Все функции»)

Стандартные — Управление расширениями конфигурации.

Активно — расширение работает, доступно в предприятии.

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

Изменения этих настроек произойдут при перезапуске конфигуратора.

Из этого списка также можно экспортировать расширения конфигурации в формате .cfe, а также импортировать в него расширения с этим форматом.

Учет расчета с поставщиками

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

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

Видно, что пока реализован только складской учет с регистром ОстаткиТоваров.

Заимствуем справочник Контрагенты из основной конфигурации.

А также документ ПоступлениеТоваров с процедурой из модуля объекта (щелчок на названии процедуры ОбработкаПроведения).

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

Этапы выполнения процедуры из расширения (Перед, После):

Вид процедуры ОбработкаПроведения в расширении.

Для документа ПоступлениеТоваров заимствуем реквизиты и табличную часть с реквизитом Сумма (реквизиты табличной части заимствуются каждый по отдельности).

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

Зададим название, синоним и выберем тип Остатки.

Добавим измерение регистра Поставщик с типом СправочникСслыка.Контрагенты.

А также ресурс — Сумма.

Установим документ ПоступлениеТоваров в качестве регистратора.

Опишем в модуле объекта этого документа в расширении алгоритм проведения.

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

В списке расширений конфигурации снимем галочку с «Безопасный режим».

Теперь можем посмотреть регистр в режиме предприятия после проведения одного из докуменов ПоступлениеТоваров: Все функции… — Регистры — Взаиморасчеты с поставщиками.

Расчет стоимости поставки с учетом скидки

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

Добавим в расширении к табличной части этого документа новый реквизит «Процент скидки».

Заимствуем из основной конфигурации форму документа в расширение.

Перенесем реквизит «Процент скидки» на форму, перетащив его из правой колонки в левую.

Установим его перед реквизитом ТоварыСумма с помощью стрелок.

Посмотрим, какие процедуры есть в основной конфигурации этой формы.

Перейдем к определению процедуры РассчитатьСуммы из общего модуля.

Нам необходимо дополнить данную процедуру. Для этого нажимаем на ее название ПКМ и добавляем в расширение .

Выберем тип вызова — Вызывать вместо.

Алгоритм работы «Вызывать вместо»:

Будет добавлен новый общий модуль в расширение со следующим содержанием.

ПродолжитьВызов(Форма) вызывает процедуру родительского модуля основной конфигурации.

Локальные переменные родительского модуля не доступны здесь.

Опишем перерасчет Суммы во вновь созданном модуле расширения.

Посмотрим результат работы в режиме предприятие.

Экспорт расширения из конфигуратора

Действия — Конфигурация — Сохранить конфигурацию в файл.

Инструкция создана на основе вебинара компании «1C-ГЭНДАЛЬФ» подготовки ко второму этапу конкурса IT-Планета «Программирование 1С: Предприятие 8».

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

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

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

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

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

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

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

Создание нового расширения конфигурации

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

Добавление общей картинки в расширении конфигурации

Общая картинка в расширении конфигурации

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

Новая подсистема в расширении конфигурации

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

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

 Новые справочники в расширении конфигурации

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

Новые документы в расширении конфигурации

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

Включение новых объектов расширения конфигурации в подсистему

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

Новая подсистема в конфигурации Управляемое приложение

Новая подсистема в конфигурации Управляемое приложение

Новая подсистема в конфигурации Управляемое приложение

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

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

Заимствование справочника в расширение конфигурации

Заимствованный справочник в расширении конфигурации

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

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

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

Форма заимствованная в расширении конфигурации

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

Добавили элемент на заимствованную форму в расширении конфигурации

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

Новый реквизит из расширения в типовом справочнике

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

Семь бесплатных видео-урока по работе с расширениями конфигурации

Учимся перехватывать методы в расширении конфигурации

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

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

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

Книга «Основы разработки в 1С: Такси»

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

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

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


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

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

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

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

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Экспериментируем в тонком клиенте, Бухгалтерия предприятия, редакция 3.0 (3.0.51.25) .

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

Добавили в расширение документ УстановкаЦенНоменклатуры. Далее добавляем ФормуДокумента.

Ревизит1 и Реквизит4 создаем исключительно программно в форме документа в Расширении. Реквизит1 добавляем к форме документа, а Реквизит4 добавляем к табличной части документа.

фотка 1

Ревизит2 добавлен явно в форме документа в Расширении.

фотка 2

Реквизит3 явно добавлен в Форме документа в ветку реквизитов Объект / Табличная часть . Он будет появляться в таблице Товары.

    В модуле ФормыДокументы добавляем Реквизит1 и Реквизит2 к имеющейся форме, и Реквизит3 к табличные :

  • &НаСервере
  • мм1 = Новый Массив;
  • //здесь обычные реквизиты Реквизит1 , Реквизит2, …
  • Реквизит1 = Новый РеквизитФормы(«Реквизит1», Новый ОписаниеТипов(«Строка»), , «Реквизит1», Истина);
  • мм1.Добавить(Реквизит1);
  • …..
  • //здесь Реквизит4 — реквизит табличной части
  • Реквизит4 = Новый РеквизитФормы(«Реквизит4», Новый ОписаниеТипов(«Строка»),»Объект.Товары» , «Реквизит4», Истина);
  • мм1.Добавить(Реквизит4);
  • ….
  • ИзменитьРеквизиты(мм1);
  • //———— связываем реквизиты с элементами формы——————————-
  • Элемент = ЭтаФорма.Элементы.Добавить(«Реквизит1», Тип(«ПолеФормы»), ЭтаФорма);
  • Элемент.Вид = ВидПоляФормы.ПолеВвода;
  • Элемент.ПутьКДанным = «Реквизит1»;
  • Элемент = ЭтаФорма.Элементы.Добавить(«Реквизит2», Тип(«ПолеФормы»), ЭтаФорма);
  • Элемент.Вид = ВидПоляФормы.ПолеВвода;
  • Элемент.ПутьКДанным = «Реквизит2»;
  • Элемент = ЭтаФорма.Элементы.Добавить(«Реквизит3», Тип(«ПолеФормы»), Этаформа.Элементы.Товары);
  • Элемент.Вид = ВидПоляФормы.ПолеВвода;
  • Элемент.ПутьКДанным = «Объект.Товары.Реквизит3»;

Теперь для заполнения колонки Реквизит3 достаточно на Сервере сделать так (без предварительного кода сразу ссылаемся на Объект.Товары :
Для каждого стр из Объект.Товары цикл
стр.Реквизит3 = 123;
КонецЦикла;

Для установки значения Реквизит1(или Реквизит2) делаем на Сервере так ЭтаФорма[«Реквизит1»]=»34231432432″ (эту возможность я искал 3 часа в интернете). ЗначениеВРеквизитФормы(«вопыорвоап»,»Реквизит1″) — не катит.
Создать изначально в Объекте Реквизит1 = Новый РеквизитФормы(«Реквизит1», Новый ОписаниеТипов(«Строка»),»Объект» , «Реквизит1», Истина) — тоже не проходит.

Понравилась статья? Поделить с друзьями:
  • 23 стандартных возражения по бизнесу в сетевом маркетинге
  • 240 часов обязательных работ сколько дней лишения свободы
  • 250000 на развитие бизнеса от соцзащиты 2022 как получить
  • 2540 ифнс по фрунзенскому району г владивостока реквизиты
  • 3 описать методы повышения эффективности бизнес процессов