Установить владельца формы 1с

Обновлено: 07.07.2024

Есть справочник "Сотрудники", и справочник "ИндивидуальныйГрафик". Справочник "ИндивидуальныйГрафик" подчинен спр. "Сотрудники". В справочнике "ИндивидуальныйГрафик" есть реквизит "Период" (тип "Дата"). Этот реквизит должен быть уникальным (т.е. пользователю нельзя давать возможность его редактировать). Но в тоже время пользователь должен иметь возможность выбирать дату периода, которую он хочет ввести. Для этого я делаю обработку "ВводГрафика", которую вызываю в процедуре "ПриВводеСтроки()" .
Возникла такая проблема, когда я открываю форму обработки в процедуре "ПриВводеСтроки()" я должен передать Владельца справочника "ИндивидуальныйГрафик", но Владелец всегда = null если справочник пустой.

Процедура ПриВводеСтроки()
ф = ОткрытьФормуМодально("Обработка._ВводГрафика", Владелец, 0);
СтатусВозврата(0);
КонецПроцедуры

"Обработка._ВводГрафика" проверяет наличие записи в справочнике, и если не находит, то добавляет новую.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

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

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

Изменение поля Владельца справочника
Имеется два справочника: "спр1" с дополнительным реквизитом "Доп"; "спр2" подчинен "спр1". .

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

Похоже, надо так :
Процедура ПриВводеСтроки()
Владелец = ТекущийЭлемент();
ф = ОткрытьФормуМодально("Обработка._ВводГрафика", Владелец, 0);
СтатусВозврата(0);
КонецПроцедуры Похоже, надо так :
Процедура ПриВводеСтроки()
Владелец = ТекущийЭлемент();
ф = ОткрытьФормуМодально("Обработка._ВводГрафика", Владелец, 0);
СтатусВозврата(0);
КонецПроцедуры

Спасибо за ответ.

Но данный вариант не подходит, потому что обработка запускается из спр. "_ИндивидуальныйГрафик" и ТекущегоЭлемент будет значить элемент этого же справочника, а мне необходимо передать Элемент спр. "Сотрудники" (т.е. Владельца спр. "_ИндивидуальныйГрафик".
Если спр. "_ИндивидуальныйГрафик" имеет хоть одну запись, то мой вариант работает, а если справочник пуст, то Владелец всегда null.

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

В обработчике события Нажатие для кнопки пишем:

При этом происходят довольно интересные вещи:

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

Если вы получили не форму подбора, а обычную форму (методом ПолучитьФорму или ПолучитьФормуСписка), то по умолчанию у нее не установлено свойство РежимВыбора. Нужно или установить это свойство в Истина, или оповещать о выборе элемента самостоятельно (см. метод формы ОповеститьОВыборе).

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

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

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

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

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

В свойствах формы должен быть назначен обработчик события "ОбработкаВыбора".

2. Множественный выбор

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

Тогда обработчик события ОбработкаВыбора можно написать так:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не могу определить Владельца справочника
Привет Всем. Помогите плиз решить проблемку. Есть справочник &quot;Сотрудники&quot;, и справочник.

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

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


Как программно определить тип формы справочника
Как определить, с какой формой в данный момент работает пользователь: формой элемента или формой.

DmitriyK0207, обычно при получении ссылки на форму, в методах Получить\Открыть форму параметром передается владелец

Из контекста открываемой формы так же доступно поле "Владелец" из которой эта форма была открыта

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

Как определить владельца формы?
Здравствуйте. Вообщем нужно определить владельца формы, и ему передать параметры. Параметры в.

Изменение поля Владельца справочника
Имеется два справочника: &quot;спр1&quot; с дополнительным реквизитом &quot;Доп&quot;; &quot;спр2&quot; подчинен &quot;спр1&quot;. .

Take ownership или Как Програмно установить владельца
function GetComputerNetName: string; var buffer: array of char; size: dword; begin size.

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

Задать владельца для формы из DLL
Здравствуйте. Есть dll, в ней форма. Dll писана в c++ Builder 2010, а прога, вызывающая dll в.

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

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