Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 21:30

Не могу определить владельца договора

Автор Spankytoto, 10 июл 2017, 15:00

0 Пользователей и 1 гость просматривают эту тему.

Spankytoto

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

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

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

Если Объект.ФизическоеЛицо  И Объект.Владелец ("Поставщики") Тогда   
Сообщить ("Ошибка! Только для физ.лиц"); 
Отказ = Истина;                               

КонецЕсли;                       
КонецПроцедуры

Выходит ошибка - метод объекта не обнаружен. Пробовал записывать: Объект.Владелец = Справочники.Контрагенты.НайтиПоНаименованию("Поставщики"). Такая же ошибка.

Подскажите, пожалуйста, новичку, как правильно сослаться в коде на Справочник - Контрагенты - Поставщики или Партнеры?

alex0402

Цитата: Spankytoto от 10 июл 2017, 15:00Поставщики или Партнеры
это что? группы?

тогда
Цитата: Spankytoto от 10 июл 2017, 15:00Если Объект.ФизическоеЛицо  И Объект.Владелец ("Поставщики") Тогда
можно заменить на


Если Объект.ФизическоеЛицо  И Объект.Владелец.Родитель.Наименование = "Поставщики"
Спасибо за Сказать спасибо

Spankytoto

Добрый день. Да, в справочнике Контрагенты две группы - Поставщики и Партнеры. Написал так, как вы указали. Вышла ошибка.

{Справочник.Договоры.Форма.ФормаЭлемента.Форма(5)}: Поле объекта не обнаружено (Родитель)
   Если Объект.ФизическоеЛицо И Объект.Владелец.Родитель.Наименование = "Поставщики" Тогда     

Когда сохраняю договор - все сохраняется, несмотря на ошибку. Может надо как-то иначе сослаться?

alex0402

Цитата: Spankytoto от 10 июл 2017, 15:29{Справочник.Договоры.Форма.ФормаЭлемента.Форма(5)}: Поле объекта не обнаружено (Родитель)
   Если Объект.ФизическоеЛицо И Объект.Владелец.Родитель.Наименование = "Поставщики" Тогда     
это отработает только на сервере.
Спасибо за Сказать спасибо

Spankytoto

Тогда как выполнить эту проверку на сервере? Просто добавить наверху &НаСервере?

alex0402

Спасибо за Сказать спасибо

Spankytoto

Зашел в событие "ПередЗаписьюНаСервере". Ввел все так, как вы говорили. Все заработало, большое спасибо!

Такой вопрос - почему нужно делать именно на сервере в этом случае? Почему не на клиенте? Я пока что еще не дошел до этого.

alex0402

С базой данных система работает только на сервере.
Объект.Владелец.Родитель.Наименование - два запроса к данным - получить Родитель владельца и получить Наименование родителя.
Поэтому код кривой, в рабочих системах нужно делать запросом.
Спасибо за Сказать спасибо

Spankytoto

Цитата: alex0402 от 11 июл 2017, 08:16
С базой данных система работает только на сервере.
Объект.Владелец.Родитель.Наименование - два запроса к данным - получить Родитель владельца и получить Наименование родителя.
Поэтому код кривой, в рабочих системах нужно делать запросом.

Окей, спасибо! Если я буду в таких случаях делать запрос к БД и добавлять "НаСервере", это будет правильный подход?

alex0402

Цитата: alex0402 от 10 июл 2017, 15:15Наименование = "Поставщики"

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

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск