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

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

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

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

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

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

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

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

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

Источник

Как в 1с открыть форму программно

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

Также можете ознакомиться с более простыми, но менее гибкими способами открыть форму по ссылке: Как в 1с открыть ссылку.

Метод ОткрытьФорму по имени

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

Следует заметить, что метод ОткрытьФорму является клиентским. Т.е его можно использовать либо в общих модулях с установленным флагом Клиент, либо в процедурах (функциях) форм с директивой &НаКлиенте.

Рассмотрим параметры метода и приведем необходимые примеры.

ИмяФормы

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

Пример 1. Путь к форме выбора по умолчанию, справочника Номенклатура.

Пример 2. Путь к форме СменаПочты справочника Пользователи, по ее имени.

Параметры

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

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

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

Пример 3. Открыть форму объекта справочника Пользователи, используя ссылку на объект.

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

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

Данным способом можно отобрать значения, используя вид сравнения Равно или ВСписке. Для отбора ВСписке следует добавить в структуру Массив, ФиксированныйМассив, либо СписокЗначений. Следует заметить, что отбор ВИерархии установить данным способом не выйдет.

Владелец

В данный параметр передается элемент формы или форма клиентского приложения (управляемая форма) полностью. Используется для указания подчинения открываемой формы.

Это может потребоваться для многих целей, например для:

Пример 5. Реализовать программный выбор элемента Номенклатура, в поле ввода.

В данном случае необходимо:

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

Уникальность

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

По умолчанию, платформа сама генерирует ключ уникальности. Поэтому помимо использования собственного ключа, в параметре Уникальность, можно регулировать использование стандартного. Если передать в него значение Ложь, то будет использован стандартный ключ, если значение Истина, то ключ не будет использоваться совсем. Т.е. будет создаваться новая форма, при каждом использовании метода ОткрытьФорму. Значением по умолчанию является Ложь, поэтому специально задавать его не требуется.

Пример 6. Одновременно открыть две формы объекта справочника Пользователи, по одной и той же ссылке.

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

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

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

НавигационнаяСсылка

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

ОписаниеОповещенияОЗакрытии

В параметр передается описание процедуры, которая будет вызвана после закрытия открываемой формы. Тип параметра: ОписаниеОповещения.

Пример 8. В 1с открыть форму программно. Использовать форму объекта справочника Пользователи. После ее закрытия сообщить, что карточка пользователя закрыта.

Используемые в примере параметры описания оповещения:

Описанная процедура обязательно должна иметь два параметра:

Также описанная процедура должна быть экспортной.

РежимОткрытияОкна

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

Метод ОткрытьФорму по форме

Существует еще один вариант синтаксиса метода ОткрытьФорму.

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

Пример 9. Получить форму списка справочника Номенклатура, а затем в 1с открыть форму программно.

Источник

Поиск владельца формы

Из реквизита, расположенного на форме документа, открывается форма выбора справочника (стандартным механизмом 1С через поле ввода). Как в форме выбора справочника определить форму исходного документа, из которого открыта форма выбора?

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

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

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

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

Вот 1С-цы сволочи. Есть в менеджера документов функция «ПолучитьФормуНовогоДокумента» для получения формы нового документа (хотя это можно было бы решить и просто созданием нового документа объекта и получения его формы). Но зачем же тогда ПолучитьФорму(«ФормаДокумента») тоже возвращает форму нового документа, вместо того, чтобы как и для других форм произвести поиск всех открытых форм (ибо Ключ по умолчанию = Ложь).

Тогда тут остаётся только дело за ручным отслеживанием открываемых форм. Можно ли это событие отловить из одного общего места?

Цитирование СП является ответом на него.

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

Источник

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

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

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

установить владельца формы 1с. Смотреть фото установить владельца формы 1с. Смотреть картинку установить владельца формы 1с. Картинка про установить владельца формы 1с. Фото установить владельца формы 1с

Вопрос Как программно установить связь по владельцу в форме

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

Допустим, поле «ЕХ» списка регистра нужно связать с владельцем-полем «Транспортная единица» (которое тоже является элементом справочника «Номенклатура»), если транспортная единица заполнена, а если не заполнена, то владелецем нужно считать значение в поле «Номенклатура» — см. указатель №3 на рисунке.

Как это реализовать?

Дело в том, что в таком случае поле 1 «Связь по владельцу» заполнять не нужно.
Зато нужно в поле 2 «Начало выбора» указать процедуру, в которой будет программно определяться связь по владельцу с помощью директивы «ВыборПоВладельцу».

Как программно добавить новый элемент справочника, если у него есть владелец

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

admin

6 thoughts on “ Как программно установить связь по владельцу в форме. Как программно добавить новый элемент справочника, если у него есть владелец (1С: Программисту) ”

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

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

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

Воспрос остался непонятен.
При создании элемента формы (спасибо Евгении за подсказку) Вы назначаете ему Тип.
Допустим, Тип — это Справочник, у которого есть Владелец.
Если мы правильно поняли, вопрос в том, как назначить конкретного Владельца этому содаваемому элементу формы, чтобы при попытке выбора пользователем, открывался список, подчиненный заданному Владельцу?

Вообще, выбор по владельцу задается в процедуре «ПриНачалеВыбора» командой вида
Элемент.ВыборПоВладельцу = Владелец;

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

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

Если НЕ ЭтоНовый() Тогда
ПолеРегистра.Значение.Прочитать();
КонецЕсли;

ПолеРегистра.Верх = 30;
ПолеРегистра.Лево = 6;
ПолеРегистра.Ширина = ЭлементыФормы.ОсновнаяПанель.Ширина — 14;
ПолеРегистра.Высота = ЭлементыФормы.ОсновнаяПанель.Высота — 56;
ПолеРегистра.ТолькоПросмотр = Ложь;
ПолеРегистра.ИзменятьПорядокСтрок = Истина;
ПолеРегистра.ИзменятьСоставСтрок = Истина;

ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Верх,
КоманднаяПанельРегистра,
ГраницаЭлементаУправления.Низ);
ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Низ,
ЭлементыФормы.ОсновнаяПанель,
ГраницаЭлементаУправления.Низ);
ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Право,
ЭлементыФормы.ОсновнаяПанель,
ГраницаЭлементаУправления.Право);

Если Метаданные.РегистрыНакопления[СтрокаТаблицы.Имя].ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда

КолонкаВидДвижения = ПолеРегистра.Колонки.Вставить(1, «Вид движения»);
КолонкаВидДвижения.Имя = «ВидДвиженияРегистраНакопления»;
КолонкаВидДвижения.УстановитьЭлементУправления(Тип(«ПолеВвода»));
КолонкаВидДвижения.Данные = «ВидДвижения»;
КолонкаВидДвижения.ЭлементУправления.КнопкаВыбора = Истина;
КолонкаВидДвижения.ЭлементУправления.ВыбиратьТип = Ложь;

ПолеРегистра.Колонки.Регистратор.Видимость = Ложь;
ПолеРегистра.Колонки.Период.Видимость = Ложь;
ПолеРегистра.Колонки.НомерСтроки.Видимость = Ложь;

Источник

Как определить/установить владельца для формы справочника

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

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

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

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

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

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

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

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

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

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

Источник

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

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