В дополнительных реквизитах нет предопределенных

   Грызлик

28.11.15 — 17:13

Есть база БП 3 КОРП v 8.3.41.63, пытаюсь обновить до версии 8.3.42.64. Сама конфигурация обновляется нормально. Далее заходу в режим предприятия, и на 55 процентах вылетает ошибка, Справочники.ВидыРегистраУчета….лизинг. Нет предопределенных данных. Хорошо, захожу в конфигуратор, предопределенный элемент есть. Пробую прочитать это все дело через точку останова. Действительно, все значения читаются, а именно то что связано с лизингом не читается. Пишет «Отсутсвие предопределенного элемента». Что пробовал, тестирование и исправление. Смена платформы. чекдск через файловый режим, обновление на sql. Ничего не помогает.Мониторя интернет, не у одного у меня такая проблема, но решения так и нет. Так же аналогичная проблема поднималась тут http://forum-1c.ru/index.php?topic=40747.0.

Пробую обовляться последовательно.. на 8.3.41.64. Обновилось, но нет тех предопределенных значений в этой обновлялки. А вот со следующей начинаются проблемы.

Что делать господа????

  

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

   Cyberhawk

1 — 28.11.15 — 17:20

Платформу до 8.3.6.2299 обнови и попробуй

   Грызлик

2 — 28.11.15 — 17:22

(1) Она и стояла.. Сейчас протестировал на 8.3.7

   Грызлик

3 — 28.11.15 — 17:24

А вообще это глобально у всех? Просто на примере обычной бп, все корректно. Что пробовал еще, выгружаю из свой конфы (корп) файл .CF. Делаю пустую базу, и она обновляется отлично, что бы раз глюканула. И при этом, через точку останова, все предопределенные значения читаются

   EugeniaK

4 — 28.11.15 — 19:48

(0) Ну значит нет в базе этого предопределенного элемента.

Добавь.

   vde69

5 — 28.11.15 — 19:55

у элемента не стоит признак «предопределенный» не смотря на то что он в конфе есть

   Cyberhawk

6 — 28.11.15 — 20:03

+(5) в дополнение, для ясности: у объекта БД не заполнен реквизит ИмяПредопределенныхДанных, по которому и идет связь объектов БД и предопределенных элементов конфигурации

   Serg_1960

7 — 28.11.15 — 20:17

(0) Попробуй: в конфигураторе открой предопределенный элемент для редактирования и нажми кнопку «Ок» — перезапись элемента повторно переустановит связь с записью базы. Естественно, что конфигурации нужно установить признак «на поддержке с возможностью изменения» и перед внесением изменений нужно сделать(выгрузить в файл) копию конфигурации.

   Serg_1960

8 — 28.11.15 — 20:19

Добавлю на всякий случай: у меня платформа 8.2.

   minele

9 — 28.11.15 — 20:31

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

   minele

10 — 28.11.15 — 20:33

Часто помогает, если где-то дописать переменную, но может и придется добавить Попытку.

   minele

11 — 28.11.15 — 20:34

Попробуй еще обновить платформу до конца.

   minele

12 — 28.11.15 — 20:37

Можно ведь скакать по этим платформам, как по ступенькам.

   Грызлик

13 — 28.11.15 — 21:22

(12) Платформы перепробовал все по одно от 8.3.2299.  Вы хотите сказать что баг в самой платформе?? потому что в файлах cf, для обновления, я перепробовал все, которые видны по умолчанию. А это 4 обновлялки.

(4) Да, в самой базе данных его нет. Отладчиком я уже это давно выяснил.

(7)Делал, не помогло.

(6) (4) Я решил это с одним справочником,когда создал такой же элемент в базе, а программно заполнил свойства которые вы указали, да это помогло,НООООО!!!!! Жирными иниями НО!!!!, пришлось конфу снять с поддержи, что бы зайти в программу, а то в процессе обновления появляется ошибка, и предлагается только выйти из базы, второе, таких справочников не один, и это только в процессе, пока работает обработка «Обновление ИБ», + в каждом справочнике не один элемент, а от 1 до 15. + начал сыпаться план счетов. Все это я подправил, и казалось бы все. Но в процессе работы уже пошли ошибки.. При загрузке банковских выписок. Дальше я не стал тестить. И если это такая кривая платформа или обновлялки… то грош цена это 1С.

   Cyberhawk

14 — 28.11.15 — 22:01

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

   Грызлик

15 — 28.11.15 — 22:15

(14) Если бы, я так тоже думал. специально откатился на пару версий назад, и еще раз прошел все обновления. Но вот что произошло. Программа ругается на предопределенный элемент.. в версии 8.3.41.64 его нет. Предположив вашу мысль, я откатился на версию 8.3.41.63. Там его тоже нет, заново накатил 8.3.41.64, его тоже нет. а вот следующее обновление, и там этот элемент уже есть.

   GROOVY

16 — 28.11.15 — 22:18

У меня наоборот. задвоились… Все на поддержке, полностью типовая. Как убить из конфигуратора дубли предопределенных и какого хрена они задвоились?

   GROOVY

17 — 28.11.15 — 22:19

Что-то последнее время меня сильно 1с удивляет.

   Cyberhawk

18 — 28.11.15 — 22:19

Попробуй релиз 3.0.41.63 обновить сразу до 3.0.42.73 — думаю, прокатит (т.к. 3.0.42.73 ушел в декабрьский диск ИТС)

   Cyberhawk

19 — 28.11.15 — 22:19

(17) Я от названия «Договорчики» еще не пришел в себя )))

   GROOVY

20 — 28.11.15 — 22:21

(18) Я на 40й обновляюсь с 39.

   Cyberhawk

21 — 28.11.15 — 22:22

(20) Думается, меньше шансов нарваться на косячный промежуточный релиз, если накатить сразу актуальный фулл-сетап 42-го релиза

   Лефмихалыч

22 — 28.11.15 — 22:24

(0) проблема в том, что предопределенные элементы есть в конфигураторе, но в предприятии к ним ни одна ссылка не привязана что ли?

   GROOVY

23 — 28.11.15 — 22:26

(21)  Да у меня не рабочая база, задача именно последовательное обновление произвести. Короче для анализа механизма обновлений… Словил глюк там где не планировал.

Кстати, а все знают, что 8.3.7 позволяет дубли предопределенных в конфигураторе иметь? Я не знал.

   Грызлик

24 — 28.11.15 — 22:26

(22) Да

   Грызлик

25 — 28.11.15 — 22:27

(18) пробовал. Тоже самое. Думаю еще раньше откатиться

   Грызлик

26 — 28.11.15 — 22:27

(25) Или вообще руками накатить через загрузку конфигурации еще выше стоящее обновление

   Грызлик

27 — 28.11.15 — 22:30

(19) Это где такое встретилось? :D

   GROOVY

28 — 28.11.15 — 22:31

(27) Это новая конфа, типа ERP.

   GROOVY

29 — 28.11.15 — 22:31

Вчера обсуждали.

   Грызлик

30 — 28.11.15 — 22:32

(28) (29) Жесть.

Ладно попробую откатиться на 38-39 релиз, и посмотрим что будет под платформой 8.3.2299

   vde69

31 — 28.11.15 — 22:38

а ты регламент запускал после обновления предыдущего релиза?

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

   Грызлик

32 — 28.11.15 — 22:43

(31) Нуу в последнее время пренебрегаю этим.

   vde69

33 — 28.11.15 — 23:19

(32) вот и причина :)

   Лефмихалыч

34 — 29.11.15 — 09:08

(24) ну, так привяжи имя предопределенных к ссылкам. Обработкой. Или в код обновления версии вломи это обновление.

   Грызлик

35 — 29.11.15 — 17:40

(34) Это крайний случай. Да и после такого я боюсь следующего.. Каждое такое обновление.

   Грызлик

36 — 29.11.15 — 20:52

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

   EugeniaK

37 — 29.11.15 — 21:03

(36) Запусти базу с параметром

/SetPredefinedDataUpdate -UpdateAutomatically

и попробуй обновить конфигурацию

   Грызлик

38 — 30.11.15 — 07:38

(37) Забавно, что произошло. работаю с файловой базой. Ваш метод сработал. И я думал что все. Проблема решена. Начинаю базу загружать в SQL, и тут программа ругается на задавленные таблица и не дает загрузиться. Далее я делаю тестирование и исправление в файловом варианте, программа исправила кучу дублей, и все предопределенные элементы пересоздала заново, а старые пометила на удаление. Но начинаю после этого работать дальше в базе, пример: план счетов не открывается, недоступны ссылки на счета. Ладно, я проделываю вашу операцию заново. Обновился снова, далее накатываю сразу еще одно обновление (последнее), и вот тут оно не накатывается. Пишет предопределенные данные не уникальны :DDD .

   Грызлик

39 — 30.11.15 — 07:38

Так и придется переносить остатки

   EugeniaK

40 — 30.11.15 — 08:49

(38) Странно. Должно было просто добавить те элементы, которых нет.

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

Надеюсь, пробовали на копии, а не на основной.

   Грызлик

41 — 30.11.15 — 09:17

(40) да, на копии. Да. они добавились. В файловом варианте все супер. При загрузке в SQL проблемы «пытаетесь загрузить не уникальное значение в уникальный индекс». При тестировании и исправлении все предопределенные элементы помечаются на удаление и создаются новые.- дальше база не рабочая. Ну думаю, пусть пока поработают в файловой базе, обновляю ее дальше (на последнее обновление), так оно не проходит сразу в конфе. Предопределенные элементы не уникальны.

   Грызлик

42 — 30.11.15 — 09:19

(40) в любом случае спасибо! Это хоть дало надежду

   EugeniaK

43 — 30.11.15 — 10:08

(41) Насколько я понимаю, изначально проблема возникла из-за того, что базу перевели в РИБ. При этом сбился режим SetPredefinedDataUpdate и новые элементы перестали создаваться при обновлениях.

А вот почему дублируются, пока не представляю.

Рекоммендую для общего представления статью http://catalog.mista.ru/public/310542/ , хотя скорее всего это уже и сами знаете.

Плюс обработка, которая в статье упоминается

https://yadi.sk/d/mSs7uaWDkqGPC

Попробуйте ею проверить базу до и после обновления предопределенных. Может, что-то и всплывет.

   Serg_1960

44 — 30.11.15 — 10:17

(43) Ваше предположение о РИБ интересно, но если вы обновляете конфигурацию базы и платформа позволяет это сделать — предположения не верны.

PS:

Я удивлён, что в этой ветке никто ещё не упомянул волшебное слово «кеш» :) Да и я грешным делом забыл об этом добавить в (7). Понадеялся что «мы сами с усами»(с) и кэши давно уже были очищены.

   EugeniaK

45 — 30.11.15 — 10:23

(44) Насколько я понимаю, было несколько итераций создания копии базы и перенос с файловой на серверную. Так что скорее всего это не КЭШ. Хотя все возможно и почистить не помешает.

То, что платформа позволяет какую-то операцию, еще не означает что эта операция прошла идеально верно.

   Грызлик

46 — 30.11.15 — 12:07

(44) Кэш.. я даже железо менял

   bazvan

47 — 30.11.15 — 12:48

Сталкнулся такой же муйней.Как так получилось так и не понял (но РИБа небыло, база создавалась из ЦФки в раоне 3.0.32.х

Проблему решил полу руками полуавтоматически.

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

Тестирование исправление помогло востановить НО без иерархии. создал иерархию, перенес в папочки и все заработало

   Грызлик

48 — 02.12.15 — 16:44

Решить проблему так и не смог. Но поступил так. Поднял копию оригинальной базы, откуда был сделан РИБ. Обновил ее до текущей версии, как боевая, обработкой ВыгрузкаЗагрузкаДанных перекинул документы, снова разделил РИБом, теперь так и обновлясь

  

bazvan

49 — 02.12.15 — 17:08

(48) могу попробовать починить. 600 рублей (инет в моем гадюкино)
Если что мой ник сабака яндекс ру. Пишите

1) В нашем объекте добавляем табличную часть «ДополнительныеРеквизиты», а точнее копируем ее из другого существующего справочника или документа, например, из справочника Пользователи, который изначально находится в составе конфигурации БСП.
2) На форме элемента нашего объекта добавляем группу с наименованием «ГруппаДополнительныеРеквизиты». Именно в этой группе и будет отображаться интерфейс дополнительных реквизитов.
3) В справочнике «НаборыДополнительныхРеквизитовИСведений» добавляем новый предопределенный элемент по шаблону — Справочник_Склады (если наш объект это справочник и называется он «Склады»). То есть смотрим на существующие предопределенные элементы и добавляем необходимый аналогичным образом.
4) В Плане видов характеристик «ДополнительныеРеквизитыИСведения» добавляем тип нашего объекта, если необходим такой тип для созданий дополнительных реквизитов.
5) В модуле формы элемента нашего объекта размещаем следующие куски кода:

    В процедуре ПриСозданииНаСервере добавляем:

    // Обработчик подсистемы "Свойства"
    ДополнительныеПараметры = Новый Структура;
    ДополнительныеПараметры.Вставить("Объект", Объект);
    ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
    УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);

    // Конец СтандартныеПодсистемы.Свойства

    В процедуре ПриЧтенииНаСервере добавляем:

    // СтандартныеПодсистемы.Свойства
    УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);   
    // Конец СтандартныеПодсистемы.Свойства    

     В процедуре ОбработкаПроверкиЗаполненияНаСервере добавляем:

    // СтандартныеПодсистемы.Свойства
    УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты, Объект);
    // Конец СтандартныеПодсистемы.Свойства

     В процедуре ПередЗаписьюНаСервере  добавляем:

    // СтандартныеПодсистемы.Свойства
    УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
    // Конец СтандартныеПодсистемы.Свойства

    Добавляем следующие процедуры:

    // ПРОЦЕДУРЫ ПОДСИСТЕМЫ "СВОЙСТВ"
    &НаКлиенте
    Процедура Подключаемый_РедактироватьСоставСвойств()
        УправлениеСвойствамиКлиент.РедактироватьСоставСвойств(ЭтаФорма, Объект.Ссылка);
    КонецПроцедуры
    &НаСервере
    Процедура ОбновитьЭлементыДополнительныхРеквизитов()
        УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма, РеквизитФормыВЗначение("Объект"));
    КонецПроцедуры

6) И еще один важный момент: у справочника «НаборыДополнительныхРеквизитовИСведений» есть реквизит «Используется». Для нашего созданного предопределенного элемента (см. пункт 3) необходимо установить значение Истина для этого реквизита. Но в пользовательском режиме 1С:Предприятие это не получится сделать, потому что этого реквизита нет на форме. Но можно воспользоваться стандартной обработкой «Групповое изменение реквизитов», где выбрать справочник «НаборыДополнительныхРеквизитовИСведений», сделать отбор по нашему созданному предопределенному элементу и установить значение Истина для реквизита «Используется». Примечание: если в обработке «Групповое изменение реквизитов» нет для выбора справочника «НаборыДополнительныхРеквизитовИСведений», то необходимо в настройке «Дополнительные параметры» включить галку «Показывать служебные реквизиты».

Contents

  • 1 Введение
  • 2 Архитектура
  • 3 Использование
  • 4 Особенности реализации
  • 5 Источники

Введение

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

Для начала предлагаю разобраться с терминологией 1С БСП: согласно ИТС дополнительные реквизиты и сведения — это свойства.  По моему мнению, подсистема «Свойства» (Управление свойствами) — это очень мощный функционал, который позволяет во многих случаях отказаться от снятия конфигурации с поддержки или внесения ненужных изменений и ошибок в конфигурацию.

Архитектура

Описание работы с подсистемой «Свойства» на сайте ИТС 1С является исчерпывающим для типовых конфигураций, но в любом случае, для того, чтобы начать работать со свойствами в любой конфигурации с внедрённым 1С БСП необходимо установить установить константу «Использовать дополнительные реквизиты и сведения» в значение «Истина».  После этого мы можем открыть справочник «Наборы дополнительных реквизитов и сведений», который содержит список объектов для которых можно создавать дополнительные реквизиты и сведения. При добавлении через стандартные формы 1С БСП пользователь создаёт новый элемент «Плана видов характеристик», который добавляется в табличную часть элемента.

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

Следующий рисунок изображает пример дополнительного реквизита, слева-направо: элемент справочника «Наборы дополнительных реквизитов и свойств», элемент плана видов характеристик и элемент справочника, в который был добавлен дополнительный реквизит.

Также стоит учитывать, что большая часть объектов метаданных в справочнике «Наборы дополнительных реквизитов и сведений» является предопределённой:

Однако, заполнение этих данных происходит программно, при внедрении 1С БСП или обновлении информационной базы — для этого в общих модулях добавляют процедуру ПриПолученииПредопределенныхНаборовСвойств. Уникальный идентификатор задаётся в явном виде, в т.ч. для того чтобы облегчить процедуры обмена между базами.

// См. УправлениеСвойствамиПереопределяемый.ПриПолученииПредопределенныхНаборовСвойств.
//
// Параметры:
//   Наборы - см. УправлениеСвойствамиПереопределяемый.ПриПолученииПредопределенныхНаборовСвойств.Наборы
//
Процедура ПриПолученииПредопределенныхНаборовСвойств(Наборы) Экспорт
	Набор = Наборы.Строки.Добавить();
	Набор.Имя = "Справочник_ПапкиФайлов";
	Набор.Идентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
КонецПроцедуры

С точки зрения интеграции с объектами механизм работы с формами не сильно отличается от аналогичных у других подсистем 1С БСП: из модуля УправлениеСвойствами вызываются процедуры и функции с названиями соответствующими названиям событий для которых они вызываются, например:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Обработчик подсистемы "Свойства"
    ДополнительныеПараметры = Новый Структура;
    ДополнительныеПараметры.Вставить("Объект", Объект);
    ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
    УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
    
КонецПроцедуры

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

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

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

Пример использования имени для получения дополнительного реквизита:

ВЫБРАТЬ
	ГражданствоФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
	ФизическиеЛицаДополнительныеРеквизиты.Значение КАК Рост,
	ГражданствоФизическихЛиц.Страна КАК Страна
ИЗ
	Справочник.ФизическиеЛица.ДополнительныеРеквизиты КАК ФизическиеЛицаДополнительныеРеквизиты
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизическихЛиц КАК ГражданствоФизическихЛиц
		ПО ГражданствоФизическихЛиц.ФизическоеЛицо = ФизическиеЛицаДополнительныеРеквизиты.Ссылка
ГДЕ
	ГражданствоФизическихЛиц.ФизическоеЛицо = &ФизическоеЛицо
	И ФизическиеЛицаДополнительныеРеквизиты.Свойство.Имя = &Имя

Результат:

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

ВЫБРАТЬ
	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
	ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен,
	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
	ДополнительныеСведения.Свойство КАК Свойство,
	ДополнительныеСведения.Значение КАК Значение,
	ДополнительныеСведения.Свойство.Имя КАК ИмяСвойства
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
			&Дата,
			Номенклатура = &Номенклатура
				И ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
		ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ДополнительныеСведения.Объект
ИТОГИ
	МАКСИМУМ(Номенклатура),
	МАКСИМУМ(Цена)
ПО
	ОБЩИЕ,
	ТипЦен

Результат:

Примеры получения свойств без запроса:

Рост = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.найтиПоРеквизиту("Имя", "Рост_12f49d4f164847b79effd75a758186c3");
// Получение дополнительного реквизита
Рост = УправлениеСвойствами.ЗначениеСвойства(ФизическоеЛицо.Ссылка, Рост);
// Получение всех дополнительных реквизитов и сведений объекта
ВсеСвойства = УправлениеСвойствами.ЗначенияСвойств(ФизическоеЛицо.Ссылка);

Особенности реализации

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

Чтобы найти реквизит на форме 1С БСП создаёт новые реквизиты формы Свойства_ОписаниеДополнительныхРеквизитов и Свойства_ОписаниеЗависимыхДополнительныхРеквизитов, с помощью них можно установить однозначное соответствие между элементом и значением объекта:

Второй особенностью реализации можно выделить невозможность создания свойства с мутабельным типом, с одной стороны это очевидное ограничение, с другой тип «Список значений» вполне допустим, но только для дополнительного реквизита (у дополнительных сведений невозможность связана с архитектурными ограничениями, так как объект и свойство — это измерения регистра «Дополнительные сведения»). Возможно, отсутствие такого типа связано со сложностями при обмене, а возможно в скором времени это будет реализовано, предлагаю посмотреть на пример такой реализации ниже.

Добавим новый дополнительный реквизит для справочника физические лица «Номера счетов»

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

Немного модифицируем код функции ЗначенияСвойств в общем модуле УправлениеСвойствамиСлужебный:

А также код процедуры ЗаполнитьДополнительныеРеквизитыВФорме в общем модуле УправлениеСвойствами:

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

// Создает/пересоздает дополнительные реквизиты и элементы в форме владельца свойств.
//
// Параметры:
//  Форма           - ФормаКлиентскогоПриложения - уже настроена в процедуре ПриСозданииНаСервере.
//
//  Объект          - Неопределено - взять объект из реквизита формы "Объект".
//                  - СправочникОбъектИмяСправочника - 
//                  - ДокументОбъектИмяДокумента - 
//                  - ПланВидовХарактеристикОбъектИмяПланаВидовХарактеристик - 
//                  - БизнесПроцессОбъектИмяБизнесПроцесса - 
//                  - ЗадачаОбъектИмяЗадачи - 
//                  - ПланВидовРасчетаОбъектИмяПланаВидовРасчета - 
//                  - ПланСчетовОбъектИмяПланаСчетов -
//                  - ДанныеФормыСтруктура -
//
//  ПоляНадписей    - Булево - если указать Истина, то вместо полей ввода на форме будут созданы поля надписей.
//
//  СкрытьУдаленные - Неопределено - не менять текущий режим скрытия удаленных, установленный ранее.
//                  - Булево - установить/отключить режим скрытия удаленных.
//                    При вызове процедуры ПередЗаписьюНаСервере в режиме скрытия удаленных, удаленные значения
//                    очищаются (не переносятся обратно в объект), а режим СкрытьУдаленные устанавливается Ложь.
//
Процедура ЗаполнитьДополнительныеРеквизитыВФорме(Форма, Объект = Неопределено, ПоляНадписей = Ложь, СкрытьУдаленные = Неопределено) Экспорт
	
	Если НЕ Форма.Свойства_ИспользоватьСвойства
	 ИЛИ НЕ Форма.Свойства_ИспользоватьДопРеквизиты Тогда
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(СкрытьУдаленные) = Тип("Булево") Тогда
		Форма.Свойства_СкрытьУдаленные = СкрытьУдаленные;
	КонецЕсли;
	
	Если Объект = Неопределено Тогда
		ОписаниеОбъекта = Форма.Объект;
	Иначе
		ОписаниеОбъекта = Объект;
	КонецЕсли;
	
	Форма.Свойства_НаборыДополнительныхРеквизитовОбъекта = Новый СписокЗначений;
	
	КлючНазначения = Неопределено;
	НаборыСвойствОбъекта = УправлениеСвойствамиСлужебный.ПолучитьНаборыСвойствОбъекта(
		ОписаниеОбъекта, КлючНазначения);
	
	УправлениеСвойствамиСлужебный.ЗаполнитьНаборыСДополнительнымиРеквизитами(
		НаборыСвойствОбъекта,
		Форма.Свойства_НаборыДополнительныхРеквизитовОбъекта);
	
	ОбновитьКлючНазначенияФормы(Форма, КлючНазначения);
	
	ОписаниеСвойств = УправлениеСвойствамиСлужебный.ЗначенияСвойств(
		ОписаниеОбъекта.ДополнительныеРеквизиты.Выгрузить(),
		Форма.Свойства_НаборыДополнительныхРеквизитовОбъекта,
		Ложь);
	
	ОписаниеСвойств.Колонки.Добавить("ИмяРеквизитаЗначение");
	ОписаниеСвойств.Колонки.Добавить("СтрокаСсылочногоТипа");
	ОписаниеСвойств.Колонки.Добавить("ИмяСсылочногоРеквизитаЗначение");
	ОписаниеСвойств.Колонки.Добавить("ИмяУникальнаяЧасть");
	ОписаниеСвойств.Колонки.Добавить("ДополнительноеЗначение");
	ОписаниеСвойств.Колонки.Добавить("Булево");
	
	УдалитьСтарыеРеквизитыИЭлементы(Форма);
	
	// Создание реквизитов.
	ДобавляемыеРеквизиты = Новый Массив();
	
	Для каждого ОписаниеСвойства Из ОписаниеСвойств Цикл
		
		ТипЗначенияСвойства = ОписаниеСвойства.ТипЗначения;
		СписокТипов = ТипЗначенияСвойства.Типы();
		СтроковыйРеквизит = (СписокТипов.Количество() = 1) И (СписокТипов[0] = Тип("Строка"));
		
		// Поддержка строк неограниченной длины.
		ИспользоватьНеограниченнуюСтроку = УправлениеСвойствамиСлужебный.ИспользоватьНеограниченнуюСтроку(
			ТипЗначенияСвойства, ОписаниеСвойства.МногострочноеПолеВвода);
		
		Если ИспользоватьНеограниченнуюСтроку Тогда
			ТипЗначенияСвойства = Новый ОписаниеТипов("Строка");
		ИначеЕсли ТипЗначенияСвойства.СодержитТип(Тип("Строка"))
			И ТипЗначенияСвойства.КвалификаторыСтроки.Длина = 0 Тогда
			// Если нельзя использовать неограниченную строку, а в свойствах реквизита она неограниченная,
			// то устанавливаем ограничение в 1024 символа.
			ТипЗначенияСвойства = Новый ОписаниеТипов(ОписаниеСвойства.ТипЗначения,
				,,, Новый КвалификаторыСтроки(1024));
		КонецЕсли;
		
		ОписаниеСвойства.ИмяУникальнаяЧасть = 
		СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Набор.УникальныйИдентификатор())), "-", "x")
		+ "_"
		+ СтрЗаменить(ВРег(Строка(ОписаниеСвойства.Свойство.УникальныйИдентификатор())), "-", "x");
		
		// {{ Prosto. [Silantev Oleg Sergeevich] - [26.09.2020 21:51].
		Если ОписаниеСвойств.Найти("ДополнительныйРеквизитЗначение_" + ОписаниеСвойства.ИмяУникальнаяЧасть) <> Неопределено Тогда 
			ОписаниеСвойства.ИмяУникальнаяЧасть = ОписаниеСвойства.ИмяУникальнаяЧасть + "_" + ОписаниеСвойств.Индекс(описаниеСвойства);		
		КонецЕсли;
		// }} {{ Prosto. [Silantev Oleg Sergeevich] - [26.09.2020 21:51].
		
		
		ОписаниеСвойства.ИмяРеквизитаЗначение =
		"ДополнительныйРеквизитЗначение_" + ОписаниеСвойства.ИмяУникальнаяЧасть;
		
		
		ОписаниеСвойства.СтрокаСсылочногоТипа = Ложь;
		Если СтроковыйРеквизит
			И Не ИспользоватьНеограниченнуюСтроку
			И ОписаниеСвойства.ВыводитьВВидеГиперссылки Тогда
			ФорматированнаяСтрока                           = Новый ОписаниеТипов("ФорматированнаяСтрока");
			ОписаниеСвойства.СтрокаСсылочногоТипа           = Истина;
			ОписаниеСвойства.ИмяСсылочногоРеквизитаЗначение = "СсылочныйДополнительныйРеквизитЗначение_" + ОписаниеСвойства.ИмяУникальнаяЧасть;
			
			Реквизит = Новый РеквизитФормы(ОписаниеСвойства.ИмяСсылочногоРеквизитаЗначение, ФорматированнаяСтрока, , ОписаниеСвойства.Наименование, Истина);
			ДобавляемыеРеквизиты.Добавить(Реквизит);
		КонецЕсли;
		
		Если ОписаниеСвойства.Удалено Тогда
			ТипЗначенияСвойства = Новый ОписаниеТипов("Строка");
		КонецЕсли;
		
		Реквизит = Новый РеквизитФормы(ОписаниеСвойства.ИмяРеквизитаЗначение, ТипЗначенияСвойства, , ОписаниеСвойства.Наименование, Истина);
		ДобавляемыеРеквизиты.Добавить(Реквизит);
		
		ОписаниеСвойства.ДополнительноеЗначение =
			УправлениеСвойствамиСлужебный.ТипЗначенияСодержитЗначенияСвойств(ТипЗначенияСвойства);
		
		ОписаниеСвойства.Булево = ОбщегоНазначения.ОписаниеТипаСостоитИзТипа(ТипЗначенияСвойства, Тип("Булево"));
	КонецЦикла;
	Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
	
	// Создание элементов формы.
	Для Каждого ОписаниеСвойства Из ОписаниеСвойств Цикл
		
		ИмяЭлементаДляРазмещения = Форма.Свойства_ИмяЭлементаДляРазмещения;
		Если ТипЗнч(ИмяЭлементаДляРазмещения) <> Тип("СписокЗначений") Тогда
			Если ИмяЭлементаДляРазмещения = Неопределено Тогда
				ИмяЭлементаДляРазмещения = "";
			КонецЕсли;
			
			ЭлементРазмещения = ?(ИмяЭлементаДляРазмещения = "", Неопределено, Форма.Элементы[ИмяЭлементаДляРазмещения]);
		Иначе
			РазделыДляРазмещения = Форма.Свойства_ИмяЭлементаДляРазмещения;
			РазмещениеНабора = РазделыДляРазмещения.НайтиПоЗначению(ОписаниеСвойства.Набор);
			Если РазмещениеНабора = Неопределено Тогда
				РазмещениеНабора = РазделыДляРазмещения.НайтиПоЗначению("ВсеОстальные");
			КонецЕсли;
			ЭлементРазмещения = Форма.Элементы[РазмещениеНабора.Представление];
		КонецЕсли;
		
		ФормаОписаниеСвойства = Форма.Свойства_ОписаниеДополнительныхРеквизитов.Добавить();
		ЗаполнитьЗначенияСвойств(ФормаОписаниеСвойства, ОписаниеСвойства);
		
		// Заполнение таблицы зависимых дополнительных реквизитов.
		Если ОписаниеСвойства.ЗависимостиДополнительныхРеквизитов.Количество() > 0
			И Не ОписаниеСвойства.Удалено Тогда
			ОписаниеЗависимогоРеквизита = Форма.Свойства_ОписаниеЗависимыхДополнительныхРеквизитов.Добавить();
			ЗаполнитьЗначенияСвойств(ОписаниеЗависимогоРеквизита, ОписаниеСвойства);
		КонецЕсли;
		
		ОтборСтрок = Новый Структура;
		ОтборСтрок.Вставить("НаборСвойств", ОписаниеСвойства.Набор);
		ЗависимостиДанногоНабора = ОписаниеСвойства.ЗависимостиДополнительныхРеквизитов.НайтиСтроки(ОтборСтрок);
		Для Каждого СтрокаТаблицы Из ЗависимостиДанногоНабора Цикл
			Если СтрокаТаблицы.ЗависимоеСвойство = "ЗаполнятьОбязательно"
				И ОписаниеСвойства.ТипЗначения = Новый ОписаниеТипов("Булево") Тогда
				Продолжить;
			КонецЕсли;
			Если ОписаниеСвойства.Удалено Тогда
				Продолжить;
			КонецЕсли;
			
			Если ТипЗнч(СтрокаТаблицы.Реквизит) = Тип("Строка") Тогда
				ПутьКРеквизиту = "Параметры.ОписаниеОбъекта." + СтрокаТаблицы.Реквизит;
			Иначе
				ОписаниеДополнительногоРеквизита = ОписаниеСвойств.Найти(СтрокаТаблицы.Реквизит, "Свойство");
				Если ОписаниеДополнительногоРеквизита = Неопределено Тогда
					Продолжить; // Дополнительный реквизит не существует, условие игнорируется.
				КонецЕсли;
				ПутьКРеквизиту = "Параметры.Форма." + ОписаниеДополнительногоРеквизита.ИмяРеквизитаЗначение;
			КонецЕсли;
			
			УправлениеСвойствамиСлужебный.ПостроитьУсловияЗависимостей(ОписаниеЗависимогоРеквизита, ПутьКРеквизиту, СтрокаТаблицы);
		КонецЦикла;
		
		Если ОписаниеСвойства.СтрокаСсылочногоТипа Тогда
			Если ЗначениеЗаполнено(ОписаниеСвойства.Значение) Тогда
				Значение = ОписаниеСвойства.ТипЗначения.ПривестиЗначение(ОписаниеСвойства.Значение);
				СтрокаЗначение = СтроковыеФункции.ФорматированнаяСтрока(Значение);
			Иначе
				Значение = НСтр("ru = 'не задано'");
				СсылкаРедактирования = "НеЗадано";
				СтрокаЗначение = Новый ФорматированнаяСтрока(Значение,, ЦветаСтиля.ЦветПустойГиперссылки,, СсылкаРедактирования);
			КонецЕсли;
			Форма[ОписаниеСвойства.ИмяСсылочногоРеквизитаЗначение] = СтрокаЗначение;
		КонецЕсли;
		Форма[ОписаниеСвойства.ИмяРеквизитаЗначение] = ОписаниеСвойства.Значение;
		
		Если ОписаниеСвойства.Удалено И Форма.Свойства_СкрытьУдаленные Тогда
			Продолжить;
		КонецЕсли;
		
		Если НаборыСвойствОбъекта.Количество() > 1 Тогда
			
			ЭлементСписка = Форма.Свойства_ЭлементыГруппДополнительныхРеквизитов.НайтиПоЗначению(
				ОписаниеСвойства.Набор);
			
			Если ЭлементСписка <> Неопределено Тогда
				Родитель = Форма.Элементы[ЭлементСписка.Представление];
			Иначе
				ОписаниеНабора = НаборыСвойствОбъекта.Найти(ОписаниеСвойства.Набор, "Набор");
				
				Если ОписаниеНабора = Неопределено Тогда
					ОписаниеНабора = НаборыСвойствОбъекта.Добавить();
					ОписаниеНабора.Набор     = ОписаниеСвойства.Набор;
					ОписаниеНабора.Заголовок = НСтр("ru = 'Удаленные реквизиты'")
				КонецЕсли;
				
				Если НЕ ЗначениеЗаполнено(ОписаниеНабора.Заголовок) Тогда
					ОписаниеНабора.Заголовок = Строка(ОписаниеСвойства.Набор);
				КонецЕсли;
				
				ИмяЭлементаНабора = "НаборДополнительныхРеквизитов" + ОписаниеСвойства.ИмяУникальнаяЧасть;
				
				Родитель = Форма.Элементы.Добавить(ИмяЭлементаНабора, Тип("ГруппаФормы"), ЭлементРазмещения);
				
				Форма.Свойства_ЭлементыГруппДополнительныхРеквизитов.Добавить(
					ОписаниеСвойства.Набор, Родитель.Имя);
				
				Если ТипЗнч(ЭлементРазмещения) = Тип("ГруппаФормы")
				   И ЭлементРазмещения.Вид = ВидГруппыФормы.Страницы Тогда
					
					Родитель.Вид = ВидГруппыФормы.Страница;
				Иначе
					Родитель.Вид = ВидГруппыФормы.ОбычнаяГруппа;
					Родитель.Отображение = ОтображениеОбычнойГруппы.Нет;
				КонецЕсли;
				Родитель.ОтображатьЗаголовок = Ложь;
				Родитель.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
				
				ЗаполненныеСвойстваГруппы = Новый Структура;
				Для каждого Колонка Из НаборыСвойствОбъекта.Колонки Цикл
					Если ОписаниеНабора[Колонка.Имя] <> Неопределено Тогда
						ЗаполненныеСвойстваГруппы.Вставить(Колонка.Имя, ОписаниеНабора[Колонка.Имя]);
					КонецЕсли;
				КонецЦикла;
				ЗаполнитьЗначенияСвойств(Родитель, ЗаполненныеСвойстваГруппы);
			КонецЕсли;
		Иначе
			Родитель = ЭлементРазмещения;
		КонецЕсли;
		
		Если ОписаниеСвойства.ВыводитьВВидеГиперссылки Тогда
			ИмяГруппыГиперссылки = "Группа_" + ОписаниеСвойства.ИмяУникальнаяЧасть;
			ГруппаГиперссылки = Форма.Элементы.Добавить(ИмяГруппыГиперссылки, Тип("ГруппаФормы"), Родитель);
			ГруппаГиперссылки.Вид = ВидГруппыФормы.ОбычнаяГруппа;
			ГруппаГиперссылки.Отображение = ОтображениеОбычнойГруппы.Нет;
			ГруппаГиперссылки.ОтображатьЗаголовок = Ложь;
			ГруппаГиперссылки.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
			ГруппаГиперссылки.Заголовок = ОписаниеСвойства.Наименование;
			
			Элемент = Форма.Элементы.Добавить(ОписаниеСвойства.ИмяРеквизитаЗначение, Тип("ПолеФормы"), ГруппаГиперссылки); // РасширениеПоляФормыДляПоляНадписи, РасширениеПоляФормыДляПоляВвода
			
			РеквизитДоступен = РеквизитДоступенПоФункциональнымОпциям(ОписаниеСвойства);
			Если РеквизитДоступен И Не ПоляНадписей Тогда
				ИмяКнопки = "Кнопка_" + ОписаниеСвойства.ИмяУникальнаяЧасть;
				Кнопка = Форма.Элементы.Добавить(
					ИмяКнопки,
					Тип("КнопкаФормы"),
					ГруппаГиперссылки);
					
				Кнопка.ТолькоВоВсехДействиях = Истина;
				Кнопка.ИмяКоманды = "РедактироватьГиперссылкуРеквизита";
				Кнопка.ОтображениеФигуры = ОтображениеФигурыКнопки.ПриАктивности;
			КонецЕсли;
			
			Если Не ОписаниеСвойства.СтрокаСсылочногоТипа И ЗначениеЗаполнено(ОписаниеСвойства.Значение) Тогда
				Элемент.Гиперссылка = Истина;
			КонецЕсли;
		Иначе
			Элемент = Форма.Элементы.Добавить(ОписаниеСвойства.ИмяРеквизитаЗначение, Тип("ПолеФормы"), Родитель); // РасширениеПоляФормыДляПоляНадписи, РасширениеПоляФормыДляПоляВвода
		КонецЕсли;
		
		ФормаОписаниеСвойства.ЭлементФормыДобавлен = Истина;
		
		Если ОписаниеСвойства.Булево И ПустаяСтрока(ОписаниеСвойства.ФорматСвойства) Тогда
			Элемент.Вид = ВидПоляФормы.ПолеФлажка;
			Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
		Иначе
			Если ПоляНадписей Тогда
				Элемент.Вид = ВидПоляФормы.ПолеВвода;
			ИначеЕсли ОписаниеСвойства.ВыводитьВВидеГиперссылки
				И (ОписаниеСвойства.СтрокаСсылочногоТипа
					Или ЗначениеЗаполнено(ОписаниеСвойства.Значение))Тогда
				Элемент.Вид = ВидПоляФормы.ПолеНадписи;
			Иначе
				Элемент.Вид = ВидПоляФормы.ПолеВвода;
				Элемент.АвтоОтметкаНезаполненного = ОписаниеСвойства.ЗаполнятьОбязательно И НЕ ОписаниеСвойства.Удалено;
			КонецЕсли;
			
			Элемент.РастягиватьПоВертикали = Ложь;
			Элемент.ПоложениеЗаголовка     = ПоложениеЗаголовкаЭлементаФормы.Лево;
		КонецЕсли;
		
		Если ОписаниеСвойства.СтрокаСсылочногоТипа Тогда
			Элемент.ПутьКДанным = ОписаниеСвойства.ИмяСсылочногоРеквизитаЗначение;
			Элемент.УстановитьДействие("ОбработкаНавигационнойСсылки", "Подключаемый_СвойстваВыполнитьКоманду");
		Иначе
			Элемент.ПутьКДанным = ОписаниеСвойства.ИмяРеквизитаЗначение;
		КонецЕсли;
		Элемент.Подсказка   = ОписаниеСвойства.Подсказка;
		Элемент.УстановитьДействие("ПриИзменении", "Подключаемый_ПриИзмененииДополнительногоРеквизита");
		
		Если Элемент.Вид = ВидПоляФормы.ПолеВвода
		   И Не ИспользоватьНеограниченнуюСтроку
		   И ОписаниеСвойства.ТипЗначения.Типы().Найти(Тип("Строка")) <> Неопределено Тогда
			
			Элемент.СвязьПоТипу = Новый СвязьПоТипу("Свойства_ОписаниеДополнительныхРеквизитов.Свойство",
				ОписаниеСвойств.Индекс(ОписаниеСвойства));
		КонецЕсли;
		
		Если ОписаниеСвойства.МногострочноеПолеВвода > 0 Тогда
			Если НЕ ПоляНадписей Тогда
				Элемент.МногострочныйРежим = Истина;
			КонецЕсли;
			Элемент.Высота = ОписаниеСвойства.МногострочноеПолеВвода;
		КонецЕсли;
		
		Если НЕ ПустаяСтрока(ОписаниеСвойства.ФорматСвойства)
			И Не ОписаниеСвойства.ВыводитьВВидеГиперссылки Тогда
			Если ПоляНадписей Тогда
				Элемент.Формат = ОписаниеСвойства.ФорматСвойства;
			Иначе
				ФорматнаяСтрока = "";
				Массив = СтрРазделить(ОписаниеСвойства.ФорматСвойства, ";", Ложь);
				
				Для каждого Подстрока Из Массив Цикл
					Если СтрНайти(Подстрока, "ДП=") > 0 ИЛИ СтрНайти(Подстрока, "DE=") > 0 Тогда
						Продолжить;
					КонецЕсли;
					Если СтрНайти(Подстрока, "ЧН=") > 0 ИЛИ СтрНайти(Подстрока, "NZ=") > 0 Тогда
						Продолжить;
					КонецЕсли;
					Если СтрНайти(Подстрока, "ДФ=") > 0 ИЛИ СтрНайти(Подстрока, "DF=") > 0 Тогда
						Если СтрНайти(Подстрока, "ддд") > 0 ИЛИ СтрНайти(Подстрока, "ddd") > 0 Тогда
							Подстрока = СтрЗаменить(Подстрока, "ддд", "дд");
							Подстрока = СтрЗаменить(Подстрока, "ddd", "dd");
						КонецЕсли;
						Если СтрНайти(Подстрока, "дддд") > 0 ИЛИ СтрНайти(Подстрока, "dddd") > 0 Тогда
							Подстрока = СтрЗаменить(Подстрока, "дддд", "дд");
							Подстрока = СтрЗаменить(Подстрока, "dddd", "dd");
						КонецЕсли;
						Если СтрНайти(Подстрока, "МММ") > 0 ИЛИ СтрНайти(Подстрока, "MMM") > 0 Тогда
							Подстрока = СтрЗаменить(Подстрока, "МММ", "ММ");
							Подстрока = СтрЗаменить(Подстрока, "MMM", "MM");
						КонецЕсли;
						Если СтрНайти(Подстрока, "ММММ") > 0 ИЛИ СтрНайти(Подстрока, "MMMM") > 0 Тогда
							Подстрока = СтрЗаменить(Подстрока, "ММММ", "ММ");
							Подстрока = СтрЗаменить(Подстрока, "MMMM", "MM");
						КонецЕсли;
					КонецЕсли;
					Если СтрНайти(Подстрока, "ДЛФ=") > 0 ИЛИ СтрНайти(Подстрока, "DLF=") > 0 Тогда
						Если СтрНайти(Подстрока, "ДД") > 0 ИЛИ СтрНайти(Подстрока, "DD") > 0 Тогда
							Подстрока = СтрЗаменить(Подстрока, "ДД", "Д");
							Подстрока = СтрЗаменить(Подстрока, "DD", "D");
						КонецЕсли;
					КонецЕсли;
					ФорматнаяСтрока = ФорматнаяСтрока + ?(ФорматнаяСтрока = "", "", ";") + Подстрока;
				КонецЦикла;
				
				Элемент.Формат = ФорматнаяСтрока;
				Элемент.ФорматРедактирования = ФорматнаяСтрока;
			КонецЕсли;
		КонецЕсли;
		
		Если ОписаниеСвойства.Удалено Тогда
			Элемент.ЦветТекстаЗаголовка = ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет;
			Элемент.ШрифтЗаголовка = ШрифтыСтиля.ЗаголовокУдаленногоРеквизитаШрифт;
			Если Элемент.Вид = ВидПоляФормы.ПолеВвода Тогда
				Элемент.КнопкаОчистки = Истина;
				Элемент.КнопкаВыбора = Ложь;
				Элемент.КнопкаОткрытия = Ложь;
				Элемент.КнопкаВыпадающегоСписка = Ложь;
				Элемент.РедактированиеТекста = Ложь;
			КонецЕсли;
		КонецЕсли;
		
		Если НЕ ПоляНадписей И ОписаниеСвойства.ДополнительноеЗначение И Элемент.Вид = ВидПоляФормы.ПолеВвода Тогда
			ПараметрыВыбора = Новый Массив;
			ПараметрыВыбора.Добавить(Новый ПараметрВыбора("Отбор.Владелец",
				?(ЗначениеЗаполнено(ОписаниеСвойства.ВладелецДополнительныхЗначений),
					ОписаниеСвойства.ВладелецДополнительныхЗначений, ОписаниеСвойства.Свойство)));
			Элемент.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбора);
		КонецЕсли;
		
	КонецЦикла;
	
	// Установка видимости, доступности и обязательности заполнения дополнительных реквизитов.
	Для Каждого ОписаниеЗависимогоРеквизита Из Форма.Свойства_ОписаниеЗависимыхДополнительныхРеквизитов Цикл
		Если ОписаниеЗависимогоРеквизита.ВыводитьВВидеГиперссылки Тогда
			ОбрабатываемыйЭлемент = СтрЗаменить(ОписаниеЗависимогоРеквизита.ИмяРеквизитаЗначение, "ДополнительныйРеквизитЗначение_", "Группа_");
		Иначе
			ОбрабатываемыйЭлемент = ОписаниеЗависимогоРеквизита.ИмяРеквизитаЗначение;
		КонецЕсли;
		
		Если ОписаниеЗависимогоРеквизита.УсловиеДоступности <> Неопределено Тогда
			Результат = РезультатВычисленияУсловия(Форма, ОписаниеОбъекта, ОписаниеЗависимогоРеквизита.УсловиеДоступности);
			Элемент = Форма.Элементы[ОбрабатываемыйЭлемент]; // ПолеФормы
			Если Элемент.Доступность <> Результат Тогда
				Элемент.Доступность = Результат;
			КонецЕсли;
		КонецЕсли;
		Если ОписаниеЗависимогоРеквизита.УсловиеВидимости <> Неопределено Тогда
			Результат = РезультатВычисленияУсловия(Форма, ОписаниеОбъекта, ОписаниеЗависимогоРеквизита.УсловиеВидимости);
			Элемент = Форма.Элементы[ОбрабатываемыйЭлемент];
			Если Элемент.Видимость <> Результат Тогда
				Элемент.Видимость = Результат;
			КонецЕсли;
		КонецЕсли;
		Если ОписаниеЗависимогоРеквизита.УсловиеОбязательностиЗаполнения <> Неопределено Тогда
			Если Не ОписаниеЗависимогоРеквизита.ЗаполнятьОбязательно Тогда
				Продолжить;
			КонецЕсли;
			
			Результат = РезультатВычисленияУсловия(Форма, ОписаниеОбъекта, ОписаниеЗависимогоРеквизита.УсловиеОбязательностиЗаполнения);
			Элемент = Форма.Элементы[ОбрабатываемыйЭлемент];
			Если Не ОписаниеЗависимогоРеквизита.ВыводитьВВидеГиперссылки
				И Элемент.АвтоОтметкаНезаполненного <> Результат Тогда
				Элемент.АвтоОтметкаНезаполненного = Результат;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Структура = Новый Структура("ПараметрыСвойств");
	ЗаполнитьЗначенияСвойств(Структура, Форма);
	Если ТипЗнч(Структура.ПараметрыСвойств) = Тип("Структура")
		И Структура.ПараметрыСвойств.Свойство("ВыполненаОтложеннаяИнициализация") Тогда
		Форма.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация = Истина;
		// Удаление временной декорации, если она была добавлена.
		Если Форма.ПараметрыСвойств.Свойство("ДобавленаПустаяДекорация") Тогда
			Для Каждого ИмяДекорации Из Форма.ПараметрыСвойств.КоллекцияДекораций Цикл
				Форма.Элементы.Удалить(Форма.Элементы[ИмяДекорации]);
			КонецЦикла;
			Форма.ПараметрыСвойств.Удалить("ДобавленаПустаяДекорация");
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры
// Возвращает заполненную таблицу значений свойств объекта.
Функция ЗначенияСвойств(ДополнительныеСвойстваОбъекта, Наборы, ЭтоДополнительноеСведение) Экспорт
	
	Если ДополнительныеСвойстваОбъекта.Количество() = 0 Тогда
		// Предварительная быстрая проверка использования дополнительных свойств.
		СвойстваНеНайдены = ДополнительныеРеквизитыИСведенияНеНайдены(Наборы, ЭтоДополнительноеСведение);
		
		Если СвойстваНеНайдены Тогда
			ОписаниеСвойств = Новый ТаблицаЗначений;
			ОписаниеСвойств.Колонки.Добавить("Набор");
			ОписаниеСвойств.Колонки.Добавить("Свойство");
			ОписаниеСвойств.Колонки.Добавить("ВладелецДополнительныхЗначений");
			ОписаниеСвойств.Колонки.Добавить("ЗаполнятьОбязательно");
			ОписаниеСвойств.Колонки.Добавить("Наименование");
			ОписаниеСвойств.Колонки.Добавить("ТипЗначения");
			ОписаниеСвойств.Колонки.Добавить("ФорматСвойства");
			ОписаниеСвойств.Колонки.Добавить("МногострочноеПолеВвода");
			ОписаниеСвойств.Колонки.Добавить("Удалено");
			ОписаниеСвойств.Колонки.Добавить("Значение");
			Возврат ОписаниеСвойств;
		КонецЕсли;
	КонецЕсли;
	
	Свойства = ДополнительныеСвойстваОбъекта.ВыгрузитьКолонку("Свойство");
	
	НаборыСвойств = Новый ТаблицаЗначений;
	
	НаборыСвойств.Колонки.Добавить(
		"Набор", Новый ОписаниеТипов("СправочникСсылка.НаборыДополнительныхРеквизитовИСведений"));
	
	НаборыСвойств.Колонки.Добавить(
		"ПорядокНабора", Новый ОписаниеТипов("Число"));
	
	Для каждого ЭлементСписка Из Наборы Цикл
		НоваяСтрока = НаборыСвойств.Добавить();
		НоваяСтрока.Набор         = ЭлементСписка.Значение;
		НоваяСтрока.ПорядокНабора = Наборы.Индекс(ЭлементСписка);
	КонецЦикла;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Свойства",      Свойства);
	Запрос.УстановитьПараметр("НаборыСвойств", НаборыСвойств);
	Запрос.УстановитьПараметр("ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык);
	Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка);
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	НаборыСвойств.Набор КАК Набор,
	|	НаборыСвойств.ПорядокНабора КАК ПорядокНабора
	|ПОМЕСТИТЬ НаборыСвойств
	|ИЗ
	|	&НаборыСвойств КАК НаборыСвойств
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	НаборыСвойств.Набор КАК Набор,
	|	НаборыСвойств.ПорядокНабора КАК ПорядокНабора,
	|	СвойстваНаборов.Свойство КАК Свойство,
	|	СвойстваНаборов.ПометкаУдаления КАК ПометкаУдаления,
	|	СвойстваНаборов.НомерСтроки КАК ПорядокСвойства
	|ПОМЕСТИТЬ СвойстваНаборов
	|ИЗ
	|	НаборыСвойств КАК НаборыСвойств
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНаборов
	|		ПО (СвойстваНаборов.Ссылка = НаборыСвойств.Набор)
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства
	|		ПО (СвойстваНаборов.Свойство = Свойства.Ссылка)
	|ГДЕ
	|	НЕ СвойстваНаборов.ПометкаУдаления
	|	И НЕ Свойства.ПометкаУдаления
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Свойства.Ссылка КАК Свойство
	|ПОМЕСТИТЬ ЗаполненныеСвойства
	|ИЗ
	|	ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК Свойства
	|ГДЕ
	|	Свойства.Ссылка В(&Свойства)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СвойстваНаборов.Набор КАК Набор,
	|	СвойстваНаборов.ПорядокНабора КАК ПорядокНабора,
	|	СвойстваНаборов.Свойство КАК Свойство,
	|	СвойстваНаборов.ПорядокСвойства КАК ПорядокСвойства,
	|	СвойстваНаборов.ПометкаУдаления КАК Удалено
	|ПОМЕСТИТЬ ВсеСвойства
	|ИЗ
	|	СвойстваНаборов КАК СвойстваНаборов
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка),
	|	0,
	|	ЗаполненныеСвойства.Свойство,
	|	0,
	|	ИСТИНА
	|ИЗ
	|	ЗаполненныеСвойства КАК ЗаполненныеСвойства
	|		ЛЕВОЕ СОЕДИНЕНИЕ СвойстваНаборов КАК СвойстваНаборов
	|		ПО ЗаполненныеСвойства.Свойство = СвойстваНаборов.Свойство
	|ГДЕ
	|	СвойстваНаборов.Свойство ЕСТЬ NULL
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ВсеСвойства.Набор КАК Набор,
	|	ВсеСвойства.Свойство КАК Свойство,
	|	ДополнительныеРеквизитыИСведения.ВладелецДополнительныхЗначений КАК ВладелецДополнительныхЗначений,
	|	ДополнительныеРеквизитыИСведения.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
	|	ВЫБОР
	|		КОГДА &ЭтоОсновнойЯзык
	|			ТОГДА ДополнительныеРеквизитыИСведения.Заголовок
	|		ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Заголовок, ДополнительныеРеквизитыИСведения.Заголовок) КАК СТРОКА(150))
	|	КОНЕЦ КАК Наименование,
	|	ДополнительныеРеквизитыИСведения.ТипЗначения КАК ТипЗначения,
	|	ДополнительныеРеквизитыИСведения.ФорматСвойства КАК ФорматСвойства,
	|	ДополнительныеРеквизитыИСведения.МногострочноеПолеВвода КАК МногострочноеПолеВвода,
	|	ВсеСвойства.Удалено КАК Удалено,
	|	ДополнительныеРеквизитыИСведения.Доступен КАК Доступен,
	|	ДополнительныеРеквизитыИСведения.Виден КАК Виден,
	|	ВЫБОР
	|		КОГДА &ЭтоОсновнойЯзык
	|			ТОГДА ДополнительныеРеквизитыИСведения.Подсказка
	|		ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(СвойстваПредставления.Подсказка, ДополнительныеРеквизитыИСведения.Подсказка) КАК СТРОКА(150))
	|	КОНЕЦ КАК Подсказка,
	|	ДополнительныеРеквизитыИСведения.ВыводитьВВидеГиперссылки КАК ВыводитьВВидеГиперссылки,
	|	ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов.(
	|		ЗависимоеСвойство КАК ЗависимоеСвойство,
	|		Реквизит КАК Реквизит,
	|		Условие КАК Условие,
	|		Значение КАК Значение,
	|		НаборСвойств КАК НаборСвойств
	|	) КАК ЗависимостиДополнительныхРеквизитов
	|ИЗ
	|	ВсеСвойства КАК ВсеСвойства
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
	|		ПО ВсеСвойства.Свойство = ДополнительныеРеквизитыИСведения.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления
	|		ПО (СвойстваПредставления.Ссылка = ДополнительныеРеквизитыИСведения.Ссылка)
	|			И (СвойстваПредставления.КодЯзыка = &КодЯзыка)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Удалено,
	|	ВсеСвойства.ПорядокНабора,
	|	ВсеСвойства.ПорядокСвойства";
	
	Если ЭтоДополнительноеСведение Тогда
		Запрос.Текст = СтрЗаменить(
			Запрос.Текст,
			"Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты",
			"Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения");
	КонецЕсли;
	
	ОписаниеСвойств = Запрос.Выполнить().Выгрузить();
	ОписаниеСвойств.Индексы.Добавить("Свойство");
	ОписаниеСвойств.Колонки.Добавить("Значение");
	
	// Удаление дублей свойств в нижестоящих наборах свойств.
	Если Наборы.Количество() > 1 Тогда
		Индекс = ОписаниеСвойств.Количество()-1;
		
		Пока Индекс >= 0 Цикл
			Строка = ОписаниеСвойств[Индекс];
			НайденнаяСтрока = ОписаниеСвойств.Найти(Строка.Свойство, "Свойство");
			
			Если НайденнаяСтрока <> Неопределено
			   И НайденнаяСтрока <> Строка Тогда
				
				ОписаниеСвойств.Удалить(Индекс);
			КонецЕсли;
			
			Индекс = Индекс-1;
		КонецЦикла;
	КонецЕсли;
	
	// {{ Prosto. [Silantev Oleg Sergeevich] - [26.09.2020 21:33].
	ИспользованныеСвойства = Новый Массив;
	// }} {{ Prosto. [Silantev Oleg Sergeevich] - [26.09.2020 21:33].
	
	// Заполнение значений свойств.
	Для Каждого Строка Из ДополнительныеСвойстваОбъекта Цикл
		ОписаниеСвойства = ОписаниеСвойств.Найти(Строка.Свойство, "Свойство");
		Если ОписаниеСвойства <> Неопределено Тогда
			// {{ Prosto. [Silantev Oleg Sergeevich] - [26.09.2020 21:34].
			Если ИспользованныеСвойства.Найти(ОписаниеСвойства.Свойство) = Неопределено Тогда
				ИспользованныеСвойства.Добавить(ОписаниеСвойства.Свойство) 
			Иначе
				НоваяСтрокаОписания = ОписаниеСвойств.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрокаОписания, ОписаниеСвойства);
				ОписаниеСвойства = НоваяСтрокаОписания;
			КонецЕсли;
			// }} {{ Prosto. [Silantev Oleg Sergeevich] - [26.09.2020 21:34].
			// Поддержка строк неограниченной длины.
			Если НЕ ЭтоДополнительноеСведение Тогда
				ИспользоватьСтрокуВВидеСсылки = ИспользоватьСтрокуВВидеСсылки(
					ОписаниеСвойства.ТипЗначения,
					ОписаниеСвойства.ВыводитьВВидеГиперссылки,
					ОписаниеСвойства.МногострочноеПолеВвода);
				ИспользоватьНеограниченнуюСтроку = ИспользоватьНеограниченнуюСтроку(
					ОписаниеСвойства.ТипЗначения,
					ОписаниеСвойства.МногострочноеПолеВвода);
				НеобходимоПеренестиЗначениеИзСсылки = НеобходимоПеренестиЗначениеИзСсылки(
						Строка.ТекстоваяСтрока,
						Строка.Значение);
				Если (ИспользоватьНеограниченнуюСтроку
						Или ИспользоватьСтрокуВВидеСсылки
						Или НеобходимоПеренестиЗначениеИзСсылки)
					И НЕ ПустаяСтрока(Строка.ТекстоваяСтрока) Тогда
					Если Не ИспользоватьСтрокуВВидеСсылки И НеобходимоПеренестиЗначениеИзСсылки Тогда
						ЗначениеБезСсылки = ЗначениеБезСсылки(Строка.ТекстоваяСтрока, Строка.Значение);
						ОписаниеСвойства.Значение = ЗначениеБезСсылки;
					Иначе
						ОписаниеСвойства.Значение = Строка.ТекстоваяСтрока;
					КонецЕсли;
				Иначе
					ОписаниеСвойства.Значение = Строка.Значение;
				КонецЕсли;
			Иначе
				ОписаниеСвойства.Значение = Строка.Значение;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат ОписаниеСвойств;
	
КонецФункции

Работа в примерах была осуществлена с версией БСП: 3.1.2.245

Источники

Как подключить дополнительные реквизиты к справочнику или документу в БСП 2.3

Создание множественного дополнительного реквизита. Управление торговлей 11

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

Идея механизма дополнительных реквизитов

Существование дополнительных реквизитов в справочниках и документах предусмотрено разработчиками системы. Их отличие от других полей состоит в том, что эти поля в объекте присутствуют неявно до тех пор, пока не конкретизированы. После объявления работа с созданными полями ведется обычным образом. Методика использования инструмента включает несколько основных моментов:

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

Настройка дополнительных реквизитов

Доступ к операции по созданию нового реквизита объекта осуществляется в разделе «Настройки / Администрирование / Дополнительные реквизиты». Флаги «Реквизиты и сведения с общим списком значений» и «Общие реквизиты и сведения» объявляют возможности повторного использования созданных параметров и их значений.

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

Конфигурация 1С.УНФ предлагает для введения новых атрибутов более сорока справочников и документов:

  • Номенклатура;
  • Контрагенты;
  • Физические лица;
  • Авансовые отчеты;
  • Договоры;
  • Корректировки поступлений;
  • Приходные накладные;
  • Счета на оплату и другие объекты.

Выбрав объект редактирования, для создания нового реквизита следует использовать кнопку «Добавить / Новый» или «Создать».

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

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

Конкретизация новых параметров объектов включает в себя:

  • Указание имени;
  • Определение типа значения;
  • Установку параметров, определяющих доступность параметра и обязательность ввода.

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

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

  • Логические значения;
  • Строковые и числовые значения;
  • Произвольные перечисления;
  • Ссылки на справочник;
  • И другие варианты.

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

Дополнительные реквизиты в отчетах

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

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

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

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

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

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

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

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

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

Интерфейс механизма дополнительных реквизитов и сведений рассмотрим на примере конфигурации «Управление торговлей 11.1»

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

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

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

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

Выберем необходимый справочник или документ в левой части формы, например справочник «Партнеры», набор «Клиенты» и нажмем на кнопку «Создать».

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

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

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

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

Надо учитывать, что первоначально их значение будет пустое. В 1С: Предприятие 8.3 предусмотрено групповое изменение объектов конфигурации, что значительно облегчает заполнение реквизитов. Выберем несколько элементов справочника «Клиенты». Затем вызовем меню «Все действия» и выберем пункт «Изменить выделенные». Откроется форма группового изменения реквизитов справочника, в том числе и дополнительных. Найдем созданный реквизит «Должник» и присвоим необходимое значение. После нажатия кнопки «Изменить реквизиты» данное значение будет присвоено всем выделенным элементам справочника.

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

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

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

реквизит

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

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

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

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

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

Но удобнее добавлять дополнительные реквизиты (или дополнительные сведения) непосредственно в самом виде номенклатуры:

Вопрос 1.32 экзамена 1С:Профессионал по ERP Управление предприятием 2.0. Дополнительный реквизит для номенклатуры является:

  1. Не обязательным для заполнения
  2. Обязательным для заполнения
  3. Обязательным или не обязательным для заполнения (определяется при создании дополнительного реквизита)
  4. Обязательным или не обязательным для заполнения (определяется настройкой вида номенклатуры)
  5. Варианты 3 или 4 в зависимости от того, является ли данный дополнительный реквизит общим

Проверено.
Правильный ответ — пятый.

Вопрос 1.33 экзамена 1С:Профессионал по ERP Управление предприятием 2.0. Контроль уникальности для дополнительного реквизита номенклатуры:

  1. Не выполняется
  2. Определяется при создании дополнительного реквизита
  3. Определяется настройкой вида номенклатуры
  4. Варианты 2 или 3 в зависимости от того, является ли данный дополнительный реквизит общим

Проверено.
Правильный ответ — третий. Контроль уникальности выполняется в виде номенклатуры; под уникальностью в данном случае понимается уникальное сочетаний реквизитов, отмеченных галочками в колонке Контроль уникальности
:

Использование дополнительных реквизитов и сведений в БП 3.0

Дополнительные реквизиты и сведения (далее ДРС) — механизм, позволяющий не изменяя конфигурацию расширить её функционал. Написать эту заметку сподвиг заказ на печать ТТН и Справки А и Б с сохранением реквизитов, с целью их дальнейшего использования в декларациях по алкогольной продукции, да и просто для того, что бы повторно посмотреть дополнительную информацию по реализации. Используют базовую БП 3.0 — менять конфигурацию соответственно нельзя, да для этой задачи вполне достаточно ДРС.

Для БП 2.0 в принципе решение у меня давно есть — так же использую дополнительные реквизиты, где сохраняются данные по автомобилю, водителю, перевозчику и т.д. Схема отработана — при печати записываются (при первой печати создаются не созданные) дополнительные реквизиты, при последующем выводе на печать реквизиты формы заполняются сохраненными значениями. Эти же данные использую при заполнении деклараций по алкоголю. Стал делать на УФ в БП 3.0 (3.0.20.18) и увидел, что механизм использования ДРС существенно изменился, причем ИМХО в лучшую сторону:

  1. Изменились объекты, «обслуживающие» ДРС:

БП 2.0

БП 3.0

Справочник ЗначенияСвойствОбъектов

План видов характеристик НазначенияСвойствКатегорийОбъектов

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

СвойстваОбъектов

Регистр сведений ЗначенияСвойствОбъектов

Справочник НаборыДополнительныхРеквизитовИСведений

План видов характеристик ДополнительныеРеквизитыИСведения

Регистр сведений ДополнительныеСведения

  1. В 2.0 название «Дополнительны реквизиты» не совсем точно отражает суть назначение эти данных — это всё-таки именно «дополнительные сведения», и хранятся они в объектах конфигурации, отличных от самого объекта этих сведений. В 3.0 можно задавать как сведения, сохраняемые регистре «Дополнительные сведения», так и именно реквизиты, сохраняемые в табличной части справочников «ДополнительныеРеквизиты» (в УТ 11 сейчас аналогичная табличная часть есть и у документов), причем эти реквизиты стали доступны в форме элемента справочника, а не вызываются по кнопке отдельным окном.

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

  • — ДополнительныеРеквизиты — содержит список реквизитов, доступных в форме справочника для чтения/записи и флаг их обязательного заполнения. эти реквизиты хранятся в табличной части справочника;
  • — ДополнительныеСведения — список сведений, сохраняющихся в регистре «ДополнительныеСведения» и доступных по дополнительной кнопке.

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

Для справочников можно установить и сведения и дополнительные реквизиты:

Причем редактируются дополнительные реквизиты справочника в форме элемента:

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

Изменился и состав объектов, имеющих ДРС:

  • — БП 2.0 это 15 справочников и список всех документов конфигурации в одной характеристике,
  • — БП 3.0 справочников стало 18, и 110 документов (не проверял все это документы или нет), на каждый из которых дополнительные сведения задаются в отдельном предопределенном элементе справочника «НаборыДополнительныхРеквизитовИСведений».

Для дополнительных реквизитов с типом «Значение свойства объекта» можно задавать произвольный список для выбора — фактически аналог справочника (с 2.0 это был справочник «ЗначенияСвойствОбъектов»):

Список может редактироваться.

Ещё один момент, из справки к ПВХ «ДополнительныеРеквизитыИСведения» —
«Все дополнительные реквизиты и сведения объектов можно вывести в отчетах и списках.»
. Действительно, теперь зарегистрированные ДРС можно использовать не только для целей сохранения данных, но и, например, для отбора в списке документа и т.п.

Список РТиУ без отбора:

Записанные дополнительные сведения для документа:

Настройка отбора списка РТиУ по доп.сведениям:

Список РТиУ с установленным отбором по незаполненному водителю:

Вроде бы пустячки, а приятно……….

Вопрос: Дополнительный реквизит, программное обращение.

Доброго времени суток.

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

Я разобрался как вытаскивать необходимые данные с помощью запроса, но что-то мне подсказывает, что есть способ проще.

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

Вот собственно и вопрос, как осуществляется это обращение?

Ответ:
() Спасибо большое. Буду знать.

Вопрос: Дополнительные сведения программно бух 3.0

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

Ответ:

сделайте в общем серверном модуле такую процедуру и вызываете ее где надо.

Процедура ЗаписатьДополнительноеСвойство(лкДок, лкИмяСвойства, лкЗначение)Экспорт
лкСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(лкИмяСвойства);
Если Не ЗначениеЗаполнено(лкСвойство) Тогда
//свойство не найдено, выходим
//пытаемся сообщить, если из клиентского режима вызывали,
//то кользователь увидит это сообщение
Сообщить(«Не найдан Дополнительный реквизит: » + лкИмяСвойства);
Возврат;
КонецЕсли;
//УстановитьПривилегированныйРежим(Истина);
//запись статуса в РС (это основной)
лкНабор = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
лкНабор.Отбор.Объект.Установить(лкДок);
лкНабор.Отбор.Свойство.Установить(лкСвойство);
лкЗапись = лкНабор.Добавить();
лкЗапись.Объект = лкДок;
лкЗапись.Свойство = лкСвойство;
лкЗапись.Значение = лкЗначение;
лкНабор.Записать();
//УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры

Приветствую уважаемые.

Сижу, делаю дописки к УТ11. Для справочника номенклатура создал свой дополнительный реквизит (булево). Для его использования запросы становятся более сложными — сначала нужно найти в таблице «доп. реквизиты» номенклатуры этот реквизит среди других, а уже потом соединять его с основной таблицой номенклатуры.

Если добавить реквизит прямо в конфигураторе запросы не усложняются, просто выбираю «Номенклатура.МойРеквизит». И вывожу его программно один раз в форме «ПриСозданииНаСервере», которая ведёт в общий модуль, т.е. в типовой форме добавлена одна строка — обновление не становится из-за этого геморройнее.

дрРаботыСФормамиСервер.ДобавитьСтатусДокументаНаФорму(ЭтаФорма.Элементы, ЭтаФорма.Элементы.РодительНовогоЭлемента);
Собственно мысль, если (в моём случае) доработок много может и не стоит париться с доп. реквизитами?

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

Вопрос: Расположение дополнительных реквизитов на форме

Доброго времени суток. Имеем 1С:Предприятие 8.3 (8.3.6.2152) режим управляемых форм.
Для справочника «Номенклатура» изменили состав дополнительных реквизитов. На форме элемента справочника эти дополнительные реквизиты, насколько я понял, выводятся сюда — ГруппаДополнительныеРеквизиты.

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

Ответ:

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

Вопрос: Обмен УТ 11.3 -> сайт на Битрикс, выгрузка дополнительного реквизита

Всем привет.

Настроен обмен между УТ 11.3 и сайтом на битрикс, выгружается номенклатура с дополнительными реквизитами (свойства). Есть один реквизит, с типом строка неограниченной длинны, в котором хранится произвольное описание товара. Так вот платформа не дает записать в него больше 1024 символа, ограничено это планом видов характеристик. А большой текст хранить в доп реквизите ну ооочень надо, с последующей выгрузкой его на сайт. Стандартный реквизит не предлагать, он да позволяет хранить неограниченное количество символов с последующей выгрузкой на сайт, но он уже задействован. Посоветуйте, как быть?

Ответ:
Или прикрутить дополнительный регистр для хранения этого текста

Вопрос: Дополнительный реквизит или обычный реквизит + расширение.

Привет.

Возьмем новые конфигурации ERP, УТ11 и т.п.

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

Что по опыту лучше? С точки зрения последующих обновлений и использования этого реквизита в алгоритмах/отчетах.

Ответ:
Есть это нужно только для отчетов — делай доп. реквизит.

Вопрос: Дополнительные реквизиты, запрос

Помогите пожалуйста с запросом.
в справочнике «Эквайринговые терминалы» есть ТЧ «Дополнительные реквизиты», там два доп реквизита «Использовать» (булево) и «ДатаОкончания» (дата)
т.е.:
ЭквТерм1, Орг «Рога и копыта»
ТЧ:
Использовать:истина

ЭквТерм2, Орг «Рога и копыта»
ТЧ:
Использовать:истина
ДатаОкончания:10.06.2017

ЭквТерм3, Орг «Рога и копыта»
ТЧ:
ДатаОкончания:12.06.2017

Нужен запрос, чтобы он вывел в следующем виде:
ЭквТерм1 истина
ЭквТерм2 истина 10.06.2017
т.е. по каждому терминалу, те которые с признаком использовать, показывать дату, три дня пытаюсь написать запрос, но он выводит не так как надо:
ЭквТерм1 истина 10.06.2017
ЭквТерм2 истина 10.06.2017

Вот мой запрос:

ВЫБРАТЬ
ЭквайринговыеТерминалыДополнительныеРеквизиты.Ссылка.БанковскийСчет.Владелец КАК Владелец,
ЭквайринговыеТерминалыДополнительныеРеквизиты.Ссылка КАК Ссылка,
ВЫБОР
КОГДА ЭквайринговыеТерминалыДополнительныеРеквизиты.Свойство.Наименование ПОДОБНО «%Использовать%»
ТОГДА ЭквайринговыеТерминалыДополнительныеРеквизиты.Значение
КОНЕЦ КАК Использовать
ПОМЕСТИТЬ табл1
ИЗ
Справочник.ЭквайринговыеТерминалы.ДополнительныеРеквизиты КАК ЭквайринговыеТерминалыДополнительныеРеквизиты
ГДЕ
ЭквайринговыеТерминалыДополнительныеРеквизиты.Ссылка.ПометкаУдаления = ЛОЖЬ
И ЭквайринговыеТерминалыДополнительныеРеквизиты.Свойство = &СвойствоИспользовать;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЭквайринговыеТерминалыДополнительныеРеквизиты.Ссылка.БанковскийСчет.Владелец КАК Владелец,
ЭквайринговыеТерминалыДополнительныеРеквизиты.Ссылка КАК Ссылка,
ВЫБОР
КОГДА ЭквайринговыеТерминалыДополнительныеРеквизиты.Свойство.Наименование ПОДОБНО «%Дата%»
ТОГДА ЭквайринговыеТерминалыДополнительныеРеквизиты.Значение
КОНЕЦ КАК ДатаПрекращения
ПОМЕСТИТЬ табл2
ИЗ
Справочник.ЭквайринговыеТерминалы.ДополнительныеРеквизиты КАК ЭквайринговыеТерминалыДополнительныеРеквизиты
ГДЕ
ЭквайринговыеТерминалыДополнительныеРеквизиты.Ссылка.ПометкаУдаления = ЛОЖЬ
И ЭквайринговыеТерминалыДополнительныеРеквизиты.Свойство = &СвойствоДата;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
табл1.Владелец КАК Владелец,
табл1.Ссылка КАК Ссылка,
табл1.Использовать КАК Использовать,
табл2.ДатаПрекращения КАК ДатаПрекращения
ИЗ
табл1 КАК табл1
ЛЕВОЕ СОЕДИНЕНИЕ табл2 КАК табл2
ПО (табл1.Владелец = табл2.Владелец)
УПОРЯДОЧИТЬ ПО
Владелец

Ответ:

1с-ник сказал(а):

Сначала отбираем терминалы, в которых имеется свойство «Использовать» в значении истины, а затем берём все строки таблицы доп. реквизитов.

ВЫБРАТЬ
ЭквайринговыеТерминалыДополнительныеРеквизиты.Ссылка КАК Ссылка,
ЭквайринговыеТерминалыДополнительныеРеквизиты.Свойство КАК Свойство,
ЭквайринговыеТерминалыДополнительныеРеквизиты.Значение КАК Значение
ИЗ
Справочник.ЭквайринговыеТерминалы.ДополнительныеРеквизиты КАК ЭквайринговыеТерминалыДополнительныеРеквизиты
ГДЕ
ЭквайринговыеТерминалыДополнительныеРеквизиты.Ссылка В
(ВЫБРАТЬ
ДополнительныеРеквизиты.Ссылка
ИЗ
Справочник.ЭквайринговыеТерминалы.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
ГДЕ
ДополнительныеРеквизиты.Свойство = &Свойство
И ДополнительныеРеквизиты.Значение = ИСТИНА)

Только не понятно, зачем тебе NULL

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

Содержание

  • Дополнительные реквизиты и сведения в 1С
  • Настройка подсистемы Дополнительные реквизиты и дополнительные сведения на примере 1С 8.3 Бухгалтерия 3.0
    • Добавление дополнительных реквизитов
    • Добавление дополнительных сведений к форме

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

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

Настройка подсистемы Дополнительные реквизиты и дополнительные сведения на примере 1С 8.3 Бухгалтерия 3.0

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

Добавление дополнительных реквизитов

Для добавления и настройки дополнительных реквизитов в 1С 8.3 перейдем по ссылке Дополнительные реквизиты. В окне перечислены объекты, к которым можем добавить реквизиты.

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

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

На вкладке Значения можем перечислить значения нашего реквизита, при этом значения можно объединять в группы. Например, Значение доп. реквизита 1, значение доп. реквизита 2, значение доп. реквизита 3.

Нажимаем Записать и закрыть и также сохраняем наш созданный реквизит.

Создадим еще один реквизит, назовем его Доп. реквизит — 2 (установка галочки). Для добавления реквизита галочка, флажок установим Тип реквизита Булево. При смене реквизита меняются настройки формы. В данном случае нам предлагается установить настройки видимости и доступности, установить всплывающую подсказку.

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

Введем для примера еще один реквизит с Типом значения Строка (назовем его для примера Доп. реквизит — 3 (текст)).

Все настройки интуитивно понятны.

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

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

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

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

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

Добавление дополнительных сведений к форме

Рассмотрим пример добавления дополнительных сведений в 1С 8.3. Для этого перейдем по ссылке Дополнительные сведения, в разделе Администрирование — Общие настройки — Дополнительные реквизиты и сведения. Выберем элемент для добавления сведений и нажимаем кнопку Создать — Новое.

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

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

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

Откроем справочник Сотрудники и проверим добавление сведений. Эта информация скрыта из формы элемента и открывается нажатием кнопки Еще — Дополнительные сведения.

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

Аналогично можно добавить Дополнительные сведения и к документам. Окно ввода дополнительных сведений также будет доступно в кнопке Еще — Дополнительные сведения документа.

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

См. также:

  • Печать ценников в 1С
  • Очистка кэш 1С 8.3
  • Журнал регистрации в 1С 8.3
  • Как сделать копию базы 1С 8.3
  • Загрузка из Excel в 1С 8.3
  • Как выгрузить документ, отчет из 1С 8.3 в Excel

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Что ни день вижу обсуждения, где предлагают нещадно ломать типовую конфигурацию для решения задач, того вовсе не требующих. Если есть необходимость сохранения каких либо дополнительных данных, сохранение которых не предусмотрено не стоит сразу создавать свои справочники или регистры сведений, и уж тем более не нужно добавлять свои реквизиты в справочники и документы. Дополнительные реквизиты в типовых конфигурациях существуют давно, так что ничего нового я тут не открыл, просто увидел, что в БП 3.0 механизм несколько изменился, решил поделиться с сообществом. (Файл с текстом в word во вложении:-)
28.06.2014 — Для работы с ДРС предлагаю использовать инструмент, описанный http://infostart.ru/public/288722/

Использование дополнительных реквизитов и сведений в БП 3.0

 Дополнительные реквизиты и сведения (далее ДРС) – механизм, позволяющий  не изменяя конфигурацию расширить её функционал. Написать эту заметку сподвиг заказ на печать ТТН и Справки А и Б с сохранением реквизитов, с целью их дальнейшего использования в декларациях по алкогольной продукции, да и просто для того, что бы повторно посмотреть дополнительную информацию по реализации. Используют базовую БП 3.0 – менять конфигурацию соответственно нельзя, да для этой задачи вполне достаточно ДРС.

Для БП 2.0 в принципе решение у меня давно есть – так же использую дополнительные реквизиты, где сохраняются данные по автомобилю, водителю, перевозчику и т.д. Схема отработана – при печати записываются (при первой печати создаются не созданные) дополнительные реквизиты, при последующем выводе на печать реквизиты формы заполняются сохраненными значениями. Эти же данные использую при заполнении деклараций по алкоголю. Стал делать на УФ в БП 3.0 (3.0.20.18) и увидел, что механизм использования ДРС существенно изменился, причем ИМХО в лучшую сторону:

  1. Изменились объекты, «обслуживающие» ДРС:

БП 2.0

БП 3.0

Справочник ЗначенияСвойствОбъектов

Удален

План видов характеристик НазначенияСвойствКатегорийОбъектов

Удален

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

СвойстваОбъектов

Удален

Регистр сведений ЗначенияСвойствОбъектов

Удален

Нет

Справочник НаборыДополнительныхРеквизитовИСведений

Нет

План видов характеристик ДополнительныеРеквизитыИСведения

Нет

Регистр сведений ДополнительныеСведения

  1. В 2.0 название «Дополнительны реквизиты» не совсем точно  отражает суть назначение эти данных — это всё-таки именно «дополнительные сведения», и хранятся они в объектах конфигурации, отличных от самого объекта этих сведений. В 3.0 можно задавать как сведения, сохраняемые регистре «Дополнительные сведения», так и именно реквизиты, сохраняемые в табличной части справочников «ДополнительныеРеквизиты» (в УТ 11 сейчас аналогичная табличная часть есть и у документов), причем эти реквизиты стали доступны в форме элемента справочника, а не вызываются по кнопке отдельным окном.

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

  • — ДополнительныеРеквизиты – содержит список реквизитов, доступных в форме справочника для чтения/записи и флаг их обязательного заполнения. эти реквизиты хранятся в табличной части справочника;
  • — ДополнительныеСведения – список сведений, сохраняющихся в регистре «ДополнительныеСведения» и доступных по дополнительной кнопке.

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

Для справочников можно установить и сведения и дополнительные реквизиты:

 

Причем редактируются дополнительные реквизиты справочника в форме элемента:

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

Изменился и состав объектов, имеющих ДРС:

  • — БП 2.0 это 15 справочников и список всех документов конфигурации в одной характеристике,
  •  — БП 3.0 справочников стало 18, и 110 документов (не проверял все это документы или нет), на каждый из которых дополнительные сведения задаются в отдельном предопределенном элементе справочника «НаборыДополнительныхРеквизитовИСведений».

Для дополнительных реквизитов с типом «Значение свойства объекта» можно задавать произвольный список для выбора – фактически аналог справочника (с 2.0 это был справочник «ЗначенияСвойствОбъектов»):

 

Список может редактироваться.

 Ещё один момент, из справки к ПВХ «ДополнительныеРеквизитыИСведения»  — «Все дополнительные реквизиты и сведения объектов можно вывести в отчетах и списках.». Действительно, теперь зарегистрированные ДРС можно использовать не только для целей сохранения данных, но и,  например, для отбора в списке документа и т.п.

Список РТиУ без отбора: 

 Записанные дополнительные сведения для документа:

Настройка отбора списка РТиУ по доп.сведениям:

 

 Список РТиУ с установленным отбором по незаполненному водителю:

 

Вроде бы пустячки, а приятно……….

Понравилась статья? Поделить с друзьями:
  • В какие российские компании инвестировать в 2022
  • В какие российские компании инвестировать в 2023
  • В какие российские компании инвестировать сейчас
  • В какие часы можно делать шумные работы в москве
  • В каких видах бланков используется реквизит огрн