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

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

Я
   salih020292

14.12.13 — 11:25

Есть БП 2.0 . Есть Справочник Подразделения Организаций.

Задача такая: Чтобы в форме списка был дополнительный реквизит СекретноеПодразделение(булево, флажок Да/Нет) — Добавил в форму списка и в форму элемента. Вроде как связал с данными все ок. Отображается.

Теперь нужно в зависимости от рекзвита СекретноеПодразделение отоборажать те элементы у которых есть флажок или нету. Также Видеть флажок должен пользователь ГлавныЙ бУХГЛАЕТр, пользователь НеГлавныйБухгалетр видеть не должен.

Нужно реализовать отбор в форме. Где копать? в форме списка или в форме элемента? какой обработчик? ПриОткрытии?..Не имею опыт с формами в обычном приложении.

  

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

   ДенисЧ

1 — 14.12.13 — 11:27

в приотркытии проверяй

   zak555

2 — 14.12.13 — 11:28

в чём оно секретное ?

   salih020292

3 — 14.12.13 — 11:29

(1) а с пользователями где работать? там же?

Типа Если ИмяПользователя()=Справочник.тра-та-та.НайтиПоНаименованию(«такой то») Тогда ЭлементыФормы… = вИДИМОСТЬ Иначе Видимость = ЛОжь.

   salih020292

4 — 14.12.13 — 11:30

(2) нивчем) просто тестовоеЗадание дали

   salih020292

5 — 14.12.13 — 11:35

(2) я его так назвал. Вместо Видимость, СекретноеПодразделение

   ОбычныйЧеловек

6 — 14.12.13 — 11:42

(3) Считай, что тестовое задание ты только, что провалил :)

   salih020292

7 — 14.12.13 — 11:43

(6) почему?(

   salih020292

8 — 14.12.13 — 11:46

(6) скажи)))

   ОбычныйЧеловек

9 — 14.12.13 — 11:48

(8) За «НайтиПоНаименованию» и «ИмяПользователя» обычно сразу увольняют :) вот посомтри для пример сюда http://infostart.ru/public/73954/ — добавь туда пользователя — вот тебе и решение )

   salih020292

10 — 14.12.13 — 11:52

(9) там все что нужно в описании есть? или мне её скачать надо ещё?

   salih020292

11 — 14.12.13 — 11:53

(9) я так предварительно понял,это все решение моей проблемы.

   salih020292

12 — 14.12.13 — 11:54

(9) и почему уврольняют? )

   salih020292

13 — 14.12.13 — 11:54

(9) СпасибоБольшое. Если получится сделать, думаю начальник удивится.

   salih020292

14 — 14.12.13 — 11:56

(9) у меня 8.2 стоит, для 8.2 пойдет?

   ОбычныйЧеловек

15 — 14.12.13 — 11:59

(12) потому, что гладиолус.

(14) конвертнется автоматически в 8.2

Вот еще http://infostart.ru/public/88987/

   salih020292

16 — 14.12.13 — 12:01

(15) второе что-то большое))) первое попробую.

   salih020292

17 — 14.12.13 — 12:02

(15) а вообще хорошо будет если и простым кодом сделаю и попробую статью.

   ОбычныйЧеловек

18 — 14.12.13 — 12:13

(17) ссылки для того, что бы ты понимал как надо реализовывать подобные задания — тестовое задание тебе для того и дается, что бы понять как в будущем ты будешь писАть — «Если ИмяПользователя…НайтиПоНаименование….НайтиПоКоду…и т.д.» или все таки будешь реализовывать как указано по ссылкам

   salih020292

19 — 14.12.13 — 12:15

(18) Спасибо. Вразумили.

   salih020292

20 — 14.12.13 — 12:17

(18) только вот, не понимаю, в результате сам список подразделений же сократится? то есть строки сами, а не колонки.

   salih020292

21 — 14.12.13 — 12:18

(18) хотя как я понял — да

   salih020292

22 — 14.12.13 — 14:41

все-таки требуется первое мое собственное решение, второе как дополнительная.

   salih020292

23 — 14.12.13 — 14:43

Хочу проанализировать в обработчике ПриОткрытии значение строки СекретноеПодразделение на истину, если истина то не показывать текущую строку, если ложь то показывать.

Не могу найти нужный метод чтоб вытащить это значение.

   salih020292

24 — 14.12.13 — 14:43

У СекретногоПодраздления

   salih020292

25 — 14.12.13 — 14:43

Не подскажет кто-нибудь?

   salih020292

26 — 14.12.13 — 14:46

ищу ЭлементыФормы.СправочникСписок В ВычислитьВыражение, пока черт ногу сломит

   salih020292

27 — 14.12.13 — 14:47

нужный метод

   salih020292

28 — 14.12.13 — 14:51

up

   salih020292

29 — 14.12.13 — 14:55

up2)

   salih020292

30 — 14.12.13 — 14:57

ЭлементыФормы.СправочникСписок.Колонки.СекретноеПодразделение ? может это, но что -то не получалось

   salih020292

31 — 14.12.13 — 15:09

ЭлементыФормы.СправочникСписок.Колонки.СекретноеПодразделение.ЭлементУправления.Значение или это?

   salih020292

32 — 14.12.13 — 15:18

мм

   ОбычныйЧеловек

33 — 14.12.13 — 15:37

(23) Значение какой строки ты собрался анализировать??? Секретное подразделение — это реквизит — вот его значение и анализируй…

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

   salih020292

34 — 14.12.13 — 15:51

(33) ну ,реквизит. он же в каждой строке. В цикле перебрать его?

   salih020292

35 — 14.12.13 — 15:51

(33) всех строк

   salih020292

36 — 14.12.13 — 15:53

(33) то есть нужно так, если в такой-то строке реквизит секретное подразделение равен истина то эту строку показывать нельзя, то есть отключить у этой строки видимость

   Wobland

37 — 14.12.13 — 16:17

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

   Wobland

38 — 14.12.13 — 16:18

+(37) в БСП реализована довольно мощная система этого дела

   Wobland

39 — 14.12.13 — 16:20

и уйди от реквизита и приди к ролям

   salih020292

40 — 14.12.13 — 16:28

(39) все бы хорошо, да роу левел секьюрити использовать нельзя

   salih020292

41 — 14.12.13 — 16:29

(37) таковы условия

   Wobland

42 — 14.12.13 — 16:37

(41) аллах запрещает?

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

   salih020292

43 — 14.12.13 — 16:44

(42) нет, начальник с именем Константин)

   salih020292

44 — 14.12.13 — 16:45

))))))))))))))))(42)

   salih020292

45 — 14.12.13 — 16:45

(18) делаю по той статье которую Вы указывали.

   Wobland

46 — 14.12.13 — 16:46

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

   salih020292

47 — 14.12.13 — 16:51

(46) Если вы опытный и умный человек я Вас уважаю.

Завидовать нечему, так как не с неба Вы получили это,а трудились.

А так, люблю здоровую конкуренцию.

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

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

   salih020292

48 — 14.12.13 — 16:52

(46) меня тоже окружают не глупые люди. хотя таковых и мало.

   Wobland

49 — 14.12.13 — 16:55

(47) та я ж говорю, что эмулирование РЛС только потому, что Константину так захотелось, есть лишнее

   salih020292

50 — 14.12.13 — 22:57

Сделал, задача решается через отборы.

   salih020292

51 — 14.12.13 — 23:44

Если ПараметрыСеанса.ТекущийПользователь.ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.НайтиПоИмени(«НЕГлавныйБухгалтер)»).УникальныйИдентификатор Тогда

       СправочникСписок.Отбор.СекретноеПодразделение.Значение = Ложь;

       СправочникСписок.Отбор.СекретноеПодразделение.Использование = Истина;                                  

      ЭлементыФормы.СправочникСписок.Колонки.СекретноеПодразделение.Видимость = Ложь;                  

   КонецЕсли;

   Wobland

52 — 15.12.13 — 00:32

а там никак не залезть в настройки отбора и не выключить установленный отбор?

   Armando

53 — 15.12.13 — 00:54

Тему не читал.

(51) Надо ролями это разруливать.

Во-первых, RLS

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

ЕстьПравоПросмотраРеквизита = ПравоДоступа(«Просмотр», Метаданные.Справочники.Подразделения.Реквизиты.СекретноеПодразделение);

ЭлементыФормы.СправочникСписок.Колонки.СекретноеПодразделение.Видимость = ЕстьПравоПросмотраРеквизита;

   Armando

54 — 15.12.13 — 00:59

+(53) То есть в конфигураторе надо пройтись по всем ролям и отключить право «Видимость», а для роли ПравоГлавногоБухгалтера включить. И для всех, кроме ПравоГлавногоБухгалтера прописать текст ограничения (RLS).

   Wobland

55 — 15.12.13 — 01:06

(53) ещё один.. автору Константин запрещает РЛСы

   Armando

56 — 15.12.13 — 01:15

(55) Ясно. Берем универсальный отчет и алга.

   Wobland

57 — 15.12.13 — 01:25

   salih020292

58 — 15.12.13 — 11:40

ахах))(55)

   salih020292

59 — 15.12.13 — 11:42

как он ( Константин ) начал задавать задачу, я тоже сразу Р…

Нееет, это мы не будем использовать)

   salih020292

60 — 15.12.13 — 11:42

(57) он просил меня ограничиться одной строчкой кода.

   salih020292

61 — 15.12.13 — 11:44

(52) моожноооо. ) но это не суть, ему нужен был код просто.

   salih020292

62 — 15.12.13 — 11:45

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

   salih020292

63 — 15.12.13 — 11:46

(52) отборы нельзя выключить на форме ,то есть скрыть на хер?

ну это как вариант, дальше я делать уже не буду

   salih020292

64 — 15.12.13 — 11:47

(51) +  // Арбуханов Салих код тра-та-та

    Если ПараметрыСеанса.ТекущийПользователь.ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.НайтиПоИмени(«НЕГлавныйБухгалтер)»).УникальныйИдентификатор

        Тогда    ЭлементыФормы.СекретноеПодразделение.Доступность=Ложь;

    Иначе   ЭлементыФормы.СекретноеПодразделение.Доступность=Истина;

    КонецЕсли;

               // Арбуханов Салих код тра-та-та

   salih020292

65 — 15.12.13 — 11:53

(64)это в форме элемента

   Wobland

66 — 15.12.13 — 13:43

(64) доступность=текущий=небухгалетр

  

salih020292

67 — 19.12.13 — 22:19

потом пришлось по Ролям проверять , РольДоступна()

Skip to content

1С — настройка пользовательской видимости элементов документа, по ролям

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

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

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

  • В конфигураторе открыть форму документа «Заказ клиента».
  • В свойствах вкладки «Комментарий менеджера» найти «Пользовательская видимость» -> «Открыть» -> отметить только нужные флажки (рис 1, 2);

Рисунок 1 — Форма элемента «Заказ покупателя»

Рисунок 2 — Настройка пользовательской видимости

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

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

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

Программное ограничения по ролям в 1С

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

1C Ограничения по ролям

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

Если РольДоступна("Пользователь") Тогда
     Элементы.Номер.РедактированиеТекста = Ложь;
     Элементы.Дата.РедактированиеТекста = Ложь;
     Объект.Отвественный = Справочники.Пользователи.НайтиПоКоду("000000002");
     Сообщить("У Вас не хватает прав для редактирования реквизитов документа!!!");
КонецЕсли;

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

1C Как ограничить доступ к некоторым реквизитам документа для определённой роли программно

Запустим 1С и посмотрим что получилось, в итоге ввести что-то с клавиатуры в поля «Номер», «Дата» не получиться.

1C Как ограничить доступ к некоторым реквизитам для определённой роли

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

1C Как ограничить доступ к некоторым реквизитам для определённой роли программно

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

Элементы.Дата.Доступность = Ложь;
Элементы.Номер.Доступность = Ложь;
Элементы.Отвественный.Доступность = Ложь;
1C отключаем доступность

В этом случае пользователь уже ни чего не сможет сделать.

1С как отключить доступность по ролям

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

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

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

Настройки прав доступа в 1С:Документооборот 2.0 подробно рассмотрены в видеокурсе.

Настройки прав доступа в 1С:Документооборот условно можно разделить на:

  • ограничивающие (папки, группы доступа, рабочие группы),
  • расширяющие (делегирование, права руководителей),
  • по доступности полей по состоянию.

Общая концепция прав доступа представлена на следующих схемах.

В 1С:Документооборот 8 есть ограничивающие настройки (группы доступа, права по папкам, рабочие группы) и расширяющие настройки прав доступа (делегирование прав, права руководителей).

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

В описании конфигурации приведены следующие рекомендации разработчиков 1С:Документооборот по настройке прав:

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

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

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

При полном обновлении прав в отложенном режиме очистка прав выполняется в фоновом режиме, не мешая работе пользователя.

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

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

В рабочей базе в клиент-серверном варианте работы флаг «Отложенное обновление прав доступа» должен быть всегда включен.

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

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

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

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

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

Профили используются при создании групп доступа.

Конфигурация «1С:Документооборот» уже включает в себя несколько готовых профилей.

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

Профиль состоит из двух списков:

  • доступных ролей, где галочками отмечены те роли (преднастроенные в конфигураторе разрешенные действия), которые в этом профиле участвуют;
  • видов доступа (возможных ограничений от значений справочников — RLS).

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

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

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

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

  • Виды мероприятий
  • Виды внутренних документов
  • Виды входящих документов
  • Виды исходящих документов
  • Вопросы деятельности
  • Грифы доступа
  • Группы доступа корреспондентов
  • Группы доступа физических лиц
  • Организации

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

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

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

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

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

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

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

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

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

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

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

Для применения ограничений установленных прав в профиле указываются разрезы ограничения (виды доступа) прав, задействованные в ролях профиля.
Группы доступа дают с одной стороны связать пользователей с профилями, а с другой — указать дополнительные настройки по видам доступа.

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

Например, у нас может быть группа доступа «Работа с кадровыми документами по организации Меркурий Проект», в которой мы дадим разрешения на все виды кадровых документов и на организацию ООО «Меркурий проект».

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

Создадим на основе существующего профиля Делопроизводитель две группы доступа по разным организациям.

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

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

При ограничении прав по видам доступа возможны следующие варианты:

1. Ограничение по виду документа, вопросу деятельности, грифу доступа, организации осуществляется по соответствующему полю карточки.

2. Ограничение по группе доступа корреспондентов осуществляется по соответствующему справочнику «Группы доступа корреспондентов», значения которых доступны у справочника «Корреспонденты». Ограничение устанавливается как по корреспондентам, так и по относящимся к ним документам. 

3. Ограничение по группе доступа физических лиц осуществляется по соответствующему справочнику «Группы доступа физических лиц», значения которых доступны у справочника «Физические лица». Ограничение устанавливается только к сведениям о физических лицах. 

4. Ограничение по папкам файлов и папкам внутренних документов осуществляется в форме списка.

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

Права по папкам можно настраивать для следующих объектов системы:

  • внутренние документы,
  • файлы,
  • проекты,
  • письма,
  • мероприятия,
  • форум.

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

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

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

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

Право на изменение документов не означает, что пользователь может изменять саму папку. Права пользователя на изменение папки появятся только в том случае, когда у него будет права на Изменение папок.
Важно! Права пользователя на объекты в папке будут, если есть хотя бы одно разрешение и нет ни одного запрещения.

Приведем некоторые примеры.

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

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

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

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

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

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

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

Если мы хотим, чтобы папка на просмотр и на редактирование была доступна для всех сотрудников, а у сотрудников отдела Бухгалтерия был только просмотр, то права должны быть установлены как показано на картинке (группе Все пользователи даем права на просмотр и редактирование, а группе Бухгалтерия – запрещаем редактирование):

В карточках документов есть закладка «Рабочая группа». На этой закладке указывается список сотрудников, которые будут иметь доступ к этому документу, а остальные сотрудники не будут.
В настройках видов документов есть две полезные настройки «Автоматически вести состав участников рабочей группы» и «Заполнение рабочей группы является обязательным».

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

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

Права на создание проектов имеют только пользователи, входящие в группу доступа Руководители проектов. 

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

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

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

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

Установить признак выполнения имеют право только:

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

Для просмотра прав доступа к процессу необходимо перейти в карточку процесса, это можно сделать из раздела Управление процессами по ссылке Процессы, либо из карточки задачи с помощью команды Еще — Открыть процесс:

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

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

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

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

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

Делегирование прав настраивается администратором в справочнике Делегирование прав:

Для настройки делегирования прав заполните реквизиты карточки:

 
• От кого — пользователь, права которого будут делегированы;
• Кому — пользователь, которому делегируются права;
• Что делегировать – область делегирования прав:
Области делегирования прав — это и есть описание объектов, на которые будут делегированы права. Список содержит предопределенные типовые области делегирования: документы и файлы, ежедневные отчеты, мероприятия, обсуждения, контроль, почта, проекты, процессы и задачи.

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

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

Для прекращения делегирования прав укажите дату окончания или пометьте элемент справочника на удаление.

Начиная с релиза 2.0.15 конфигурации 1С:Документооборот 8 появилась возможность делегирования ролей.

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

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

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

Справочник «Настройки доступности по состоянию» расположен в разделе «Настройка и администрирование»:

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

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

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

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

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

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

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

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

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

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

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

В карточке Права доступа можно:

  • узнать, какие сейчас права рассчитаны для этого объекта;
  • понять, почему права получились именно такими (закладка Данные для расчета прав) – это может сделать только Администратор;
  • обновить права (выполняется немедленно, даже если включено отложенное обновление прав доступа) – это может сделать только Администратор:

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

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

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

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

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

Разработчики 1С рекомендуют проверять права доступа с использованием полнотекстового поиска:

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

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

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

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

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

На закладке Права доступа показаны права доступа, рассчитанные для этого дескриптора:

На закладке Объекты показан список всех объектов, использующих данный дескриптор доступа:

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

Список всех дескрипторов объектов доступен с помощью команды Все функции:

В 1С:Документооборот управление правами доступа выполняется из одного окна (Настройка и администрирование – Управление правами доступа):В 1С:Документооборот управление правами доступа выполняется из одного окна (Настройка и администрирование – Управление правами доступа):

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

В данном окне доступны следующие отчеты:

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

Если у Вас возникают сложности в настройке прав доступа, или Вы сомневаетесь, что права доступа у Вас настроены правильно, то закажите услугу «Аудит СЭД 1С:Документооборот».

Настройки прав доступа в 1С:Документооборот 2.0 подробно рассмотрены в видеокурсе.

Полезная информация о настройке прав доступа также есть в вебинаре Александра Федая (разработчика 1С:Документооборот 8):

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

Опубликовано 19.03.2021 15:16
Автор: Administrator
Просмотров: 13398

Иногда у пользователя возникает необходимость внести дополнительную информацию об объекте в 1С и он, не зная всех возможностей программы, делает пометки в комментариях, в карточке объекта или приписывает что-то в наименовании. Комментарии в отчетах не видны, а «исковерканные» наименования выглядят не очень привлекательно. Как выйти из ситуации, когда пользователю не хватает стандартных реквизитов в 1С? В этом ему поможет подсистема «Дополнительные реквизиты и сведения». Рассмотрим пошагово на примерах, как работает этот механизм в программе 1С: Бухгалтерия ред. 3.0. 

                                                            Первичная настройка программы 1С 

Шаг 1. Перейдите в раздел «Администрирование» — «Общие настройки».

Шаг 2. Разверните подраздел «Дополнительные реквизиты и сведения» и установите одноименную галочку, разрешающую добавлять реквизиты и сведения к объектам программы.

Для создания дополнительных реквизитов объекта перейдите по гиперссылке «Дополнительные реквизиты».

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

Настройка дополнительного реквизита 1С к справочнику «Договоры»

Рассмотрим пример: ИП Круглова О.А. оказывает несколько видов услуг: «Услуга №1», «Услуга №2». При поступлении оплаты по договорам хотелось бы видеть, какая из услуг оказанная контрагентом не оплачена, в разрезе договоров. При заполнении данных договора, в нем указана лишь дата и номер. Если изменить наименование договора, оно отобразится в печатных формах, что не очень удобно. Оптимальный вариант решения – это добавление к договору дополнительного реквизита.

Шаг 1. В левой стороне окна выберите нужный объект.

В нашем примере – это справочник «Договор». Нажав кнопку «Добавить», выберите команду – «Новый».

Для нашего примера назовем новый реквизит «Детализация договора».

Шаг 2. Задайте наименование реквизита и установите настройки.

Пользователь может задать любой «Тип значения» из предложенного списка в зависимости от своей задумки.

Остановимся немного на некоторых типах реквизитов:

«Строка» – это поле, в которое вносится информация в произвольном виде. Текстовая информация сохраняется для конкретного элемента;

«Булево» – это установка флажка, означающего «Да» или «Нет»;

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

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

В нашем примере выберите «Тип значения» – «Номенклатура».

Установите дополнительные настройки отображения, видимости и заполнения нового реквизита, при необходимости:

• «Выводить в виде гиперссылки» — установите галочку;

• «Видимость» и «Доступность» — перейдите для настройки по гиперссылке «Всегда»;

• «Заполнять всегда» — установите галочку.

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

В нашем примере условие не задается.

Шаг 3. Сохраните настройку – «Записать и закрыть».

Справа в таблице отобразился созданный дополнительный реквизит к объекту «Договоры». У объекта в скобках появилась цифра «1» — т.е. у объекта имеется один дополнительный реквизит.

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

Шаг 4. Реализуем услугу контрагенту и создадим новый договор.

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

Теперь за каждым договором, пользователь может закрепить номенклатуру.

Контрагенту ООО фирма «Меркурий» оказана услуга по доставке. К договору №12 от 02.02.2021 года закреплена детализация в виде номенклатуры «Доставка».

Шаг 5. Сохраните документ реализации и сформируйте отчет «Оборотно-сальдовая ведомость по счету» 62 «Расчеты с покупателями и заказчиками» в разделе «Отчеты».

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

Шаг 6. На закладке «Группировка» нажмите «Добавить» и выберите поле для группировки «Детализация договора (Договоры)» — это наш новый реквизит.

Шаг 7. Нажмите «Сформировать». В отчете отдельной строкой видны обороты в разрезе не только договора, но и введенного дополнительного реквизита. В нашем примере к договору закреплена номенклатура «Доставка».

Рассмотрим еще один простой, но интересный пример – использование обычной текстовой строки.

Настройка текстового дополнительного реквизита
в виде комментария к договору

Пример: В течении месяца ИП Круглова О.А. оказывает услуги, которые суммируются за период и в конце месяца выставляется счет. Прикрепить отдельную номенклатуру к договору не получится. Но во избежание разногласий к договору делается «отметка»: перечень выполненной работы, отметки о дате и времени и т.п. Чтобы на вопрос контрагента: «А за что? А когда?» можно было сразу поднять детализацию и посмотреть.

Создайте еще один дополнительный реквизит к договору, как описывалось выше.

Шаг 1. В поле «Наименование» задайте «Описание услуг по договору».

Тип значения укажите – «Строка». Установите переключатель в положение «Многострочное поле ввода» и задайте количество возможны строк. В нашем примере – 10.

Если строки не заданы, то поле получится однострочное.

В двух наших примерах реквизиты не обязательны к заполнению.

Шаг 2. Сформируйте документ оказания услуг, создайте договор с «отметками — описанием».

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

В поле «Описание услуг по договору» внесите дополнительную информацию.

Шаг 3. Сохраните документ реализации услуг с новым договором и с отметками.

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

Шаг 4. В настройках отчета («Показать настройки») добавьте группировку по созданному дополнительному реквизиту – закладка «Группировка» — кнопка «Добавить».

В окне «Выбор поля группировки» найдите созданный реквизит – «Описание услуг по договору».

С большим количеством детализации для анализа лучше устанавливать дополнительные отборы – закладка «Отбор», выбрав конкретного контрагента.

В нашем примере отбор установлен по контрагенту «Методический центр Дружба».

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

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

Такие «эксперименты» с реквизитами можно проводить с любым объектом 1С.

Приведем еще один «ходовой» пример – справочник «Номенклатура».

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

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

Шаг 1. Перейдите в настройку «Дополнительные реквизиты» раздела «Администрирование» — «Общие настройки».

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

Создать новый реквизит можно также щелкнув в пустом поле справа правой кнопкой мышки и в контекстном меню, выбрав «Добавить» — «Новый».

Шаг 2. Задайте наименование дополнительного реквизита. Например, «Цвет».

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

Для этого укажите «Тип значения» – «Дополнительное значение».

Перейдите на закладку «Значения» и перечислите возможные варианты значения реквизита «Цвет». В дальнейшем справочник можно пополнять.

Шаг 3. Нажмите «Создать» и укажите значение дополнительного реквизита «Цвет». В нашем примере, «Белый».

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

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

Посмотрим настройку в действии.

Шаг 4. Откройте карточку элемента номенклатуры. В разделе «Дополнительные реквизиты» появилось новое поле «Цвет» с возможностью выбора варианта из справочника.

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

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

Пользователь может задать производителя товара, задав выбор из справочника «Контрагенты». Например, «Молоко, 3,2%» – производитель МКС – Молочный комбинат «Ставропольский».

Шаг 5. Для этого реквизита установите «Тип значения» – «Контрагент».

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

В таких примерах можно использовать условия.

Создадим новый реквизит, для отметки наличия функции «Газ-контроль».

Шаг 6. Укажите название реквизита и «Тип значения» задайте «Булево». Т.е. в карточке установится галочка, определяющая имеется в данной модели газ-контроль или нет.

В данном примере, этот реквизит актуален только для газовых печей и варочных газовых панелей. Поэтому в настройке видимости – «Виден» — гиперссылка «Всегда» задайте условие:

«Входит в группу» — Равно – и укажите для каких групп номенклатуры актуален данный реквизит. В нашем примере – «Комплекты встраиваемой техники для кухни». В данной папке в справочнике сгруппированы газовые варочные панели, духовки и их комплекты.

Так, для номенклатуры мы ввели три дополнительных реквизита.

Но так как мы задали условие для одного из реквизитов, для элементов номенклатуры, не входящих в границу условия, этот реквизит в карточке не отображается.

Так, для блендера в разделе «Дополнительные реквизиты» видны лишь:

• «Цвет»;

• «Производитель».

А для номенклатуры, входящей в группу, заданную условием «Комплект встраиваемой техники Simfer», в карточке отражается дополнительно реквизит – «Газ-контроль».

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

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

Шаг 7. Сформируйте «Оборотно-сальдовую ведомость по счету» — 41 «Товары». В настройках отчета на закладке «Отбор» добавьте условие отбора «Газ-контроль (Номенклатура)» — Равно – и значение, которое хотите увидеть. В нашем примере – «Да» — наличие «Газ-контроля».

Из отчета видно, что в наличии с функцией «Газ-контроль» у нас имеется «Комплект встраиваемой техники Simfer».

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

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

Автор статьи: Ольга Круглова

Понравилась статья? Подпишитесь на рассылку новых материалов

Добавить комментарий

Понравилась статья? Поделить с друзьями:
  • They are billions пропали технологии в компании
  • Электротехническая компания минимакс реквизиты
  • 1с групповое изменение реквизитов нет реквизита
  • Transit account что это в банковских реквизитах
  • Элементы входящие в состав реквизита резолюция