Владелец 1с справочника это

Обновлено: 05.07.2024

Особенности работы в формах с подчиненным справочником

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

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

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

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

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

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

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

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

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

Курс лекций

Форум

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

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


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

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

  • ЭтоГруппа() – возвращает 1, если текущий элемент справочника – группа;
  • ПринадлежитГруппе(<Группа>) – возвращает 1, если текущий элемент принадлежит группе <Группа>;
  • Уровень() – возвращает номер уровня текущего элемента.­

Глубина вложенности групп настраивается в конфигураторе и не может превышать 10 уровней.

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

Есть несколько способов поиска элемента справочника:

  • НайтиЭлемент(<Элемент>),
  • НайтиПоКоду(<Код>),
  • НайтиПоНаименованию(<Наименование>),
  • НайтиПоРеквизиту (<Реквизит>, <Значение>).

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

Пример. Следующая функция выполняет поиск элемента справочника по наименованию. Если элемент с таким наименованием не найден, то создается новый элемент. Параметр «Справ» – строка с идентификатором справочника, «Наим» – наименование по которому производится поиск элемента. Функция возвращает ссылку на найденный или созданный элемент.

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

Чтобы удалить помеченные на удаление объекты через систему 1С:Предприятие 7.7, нужно зайти в программу в монопольном режиме и в меню «Операции» выбрать пункт «Удаление помеченных объектов…».

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


Реквизиты шапки документа задаются в списке «Реквизиты шапки». Реквизиты табличной части задаются в списке «Реквизиты табличной части».

Для того чтобы документ формировал проводки, необходимо

  1. создать хотя бы один план счетов.
  2. поставить флажок «Разрешить проведение документа».
  3. поставить флажок «Бухгалтерский учет».

Формирование проводок происходит в «Модуле документа» в предопределенной процедуре «Обработка проведения».

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

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

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

В соответствии с заданием №1 из приложения 3 создать справочники и документы в новой информационной базе.

// Будет добавлено на форму ,
// связанное с переданным , ПолеВвода Владелец (первый владелец из возможных).
// Будет размещён в
// - будут найдены Владелец Владельца и тд.
Процедура ДобавитьСвязанныйЭлементВладельцаНаФорму ( Форма , Элемент , НайтиВсехВладельцев = Истина, МассивПодчиненных = Неопределено) Экспорт

Выполнить (" ЗначениеРеквизита = Форма." + Элемент . ПутьКДанным) ;

Если Справочники . ТипВсеСсылки (). СодержитТип ( ТипЗнч ( ЗначениеРеквизита )) Тогда

// Размещение элемента
Родитель = Элемент . Родитель ;

Для Каждого Владелец Из ЗначениеРеквизита . Метаданные (). Владельцы Цикл

ЗаголовокВладельца = Владелец . РасширенноеПредставлениеОбъекта ;
ЗаголовокВладельца = ?( ПустаяСтрока ( ЗаголовокВладельца ), Владелец . ПредставлениеОбъекта , ЗаголовокВладельца );
ЗаголовокВладельца = ?( ПустаяСтрока ( ЗаголовокВладельца ), Владелец . Имя , ЗаголовокВладельца );

ПреффиксТипаСсылки = ?( Метаданные . Справочники . Содержит ( Владелец ), "СправочникСсылка." , "ПланВидовХарактеристикСсылка." );
ОписаниеТипаВладельца = Новый ОписаниеТипов ( ПреффиксТипаСсылки + Владелец . Имя );

ИмяРеквизитаВладельца = Элемент . Имя + "__Владелец" ;

// добавим реквизит формы и связанный с ним элемент
РеквизитВладельца = ДобавитьВРеквизитыФормы ( Форма , ИмяРеквизитаВладельца , ОписаниеТипаВладельца ,, ЗаголовокВладельца ,Истина);
ЭлементВладельца = ДобавитьЭлементНаФорму ( Форма , ИмяРеквизитаВладельца , Тип ( "ПолеФормы" ), Родитель , ИмяРеквизитаВладельца );

// значение нового реквизита
Форма [ РеквизитВладельца . Имя ] = ЗначениеРеквизита . Владелец ;

// переместим "вперёд" элемент владельца
Форма . Элементы . Переместить ( ЭлементВладельца , Родитель , Элемент );

// установим связь с
ЗадатьСвязьЭлементаФормы ( Элемент , "Отбор.Владелец" , РеквизитВладельца . Имя );

Если ТипЗнч ( МассивПодчиненных ) <> Тип ( "Массив" ) Тогда МассивПодчиненных = Новый Массив КонецЕсли;

Для Каждого ЗаписьМассива Из МассивПодчиненных Цикл
ЗадатьСвязьЭлементаФормы ( Форма . Элементы [ ЗаписьМассива ], РеквизитВладельца . Имя , РеквизитВладельца . Имя );
КонецЦикла;

МассивПодчиненных . Добавить ( Элемент . Имя );

Если НайтиВсехВладельцев = Истина Тогда
ДобавитьСвязанныйЭлементВладельцаНаФорму ( Форма , ЭлементВладельца , НайтиВсехВладельцев , МассивПодчиненных );
КонецЕсли;

Прервать;
КонецЦикла;
КонецЕсли;

Функция ДобавитьВРеквизитыФормы ( Форма , Имя , Тип , Путь = Неопределено, Заголовок = Неопределено, СохраняемыеДанные = Неопределено) Экспорт

Реквизит = Новый РеквизитФормы ( Имя , Тип , Путь , Заголовок , СохраняемыеДанные );

МассивРеквизитов = Новый Массив ;
МассивРеквизитов . Добавить ( Реквизит );
Форма . ИзменитьРеквизиты ( МассивРеквизитов );

Функция ДобавитьЭлементНаФорму ( Форма , Имя , ТипЭлемента , Родитель = Неопределено, ПутьКДанным = Неопределено) Экспорт

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

Процедура ЗадатьСвязьЭлементаФормы ( Элемент , Имя , ПутьКДанным , ИзменениеЗначения = Неопределено, ЗамещатьРанееУстановленные = Истина) Экспорт

МассивСвязи = Новый Массив ;

Если ТипЗнч ( ИзменениеЗначения ) <> Тип ( "РежимИзмененияСвязанногоЗначения" ) Тогда
ИзменениеЗначения = РежимИзмененияСвязанногоЗначения . Очищать ;
КонецЕсли;

Если ЗамещатьРанееУстановленные <> Истина Тогда
СкопироватьМассив ( Элемент . СвязиПараметровВыбора , МассивСвязи );
КонецЕсли;

МассивСвязи . Добавить (Новый СвязьПараметраВыбора ( Имя , ПутьКДанным , ИзменениеЗначения ));

Элемент . СвязиПараметровВыбора = Новый ФиксированныйМассив ( МассивСвязи );

Процедура СкопироватьМассив ( Источник , Приемник ) Экспорт

Для Каждого ЗаписьМассива Из Источник Цикл Приемник . Добавить ( ЗаписьМассива ) КонецЦикла;

Читайте также: