• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

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

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Не могу определить Владельца справочника

  • Автор темы tigrem
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

tigrem

Привет Всем.

Помогите плиз решить проблемку.

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

т.е.

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

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


Спасибо.
 
I

Isabela

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

tigrem

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

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

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

Isabela

Сейчас некогда вспоминать, попробуй посмотреть, как устроен справочник "Цены" (подчинен номенклатуре)
 
T

tigrem

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

В результате пришлось сделать все более стандартно, примерно также как спр. "Цены", и не так хитро как было задумано вначале :).

Спасибочки за подсказки
 
V

vitfil

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

tigrem

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

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

Я думаю, что это происходит потому, что просто в подчиненном справочнике нет "ТекущегоЭлемента()" еще, и в этом случае 1С не предоставляет функций для определения "Владельца" справочника. :)

Вот так вот получается :)
 
L

LSH

А если попробовать:

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

Если не поможет, то предварительно попробуйте записать вновь созданный элемент.
 
T

tigrem

А если попробовать:

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

Если не поможет, то предварительно попробуйте записать вновь созданный элемент.
А я почему-то не обратил на метод "ИспользоватьВладельца()" должного внимания :( и всегда использовал этот метод для установки владельца справочника. Это мой большой промах... :(

И действительно метод "ИспользоватьВладельца()" используемый без параметров, возвращает Владельца справочника даже если справочник пустой.

Теперь можно будет сделать как я хотел :)

Спасибо огромное LSH
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!