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

При выборе тип договора отображался только тип контрагента

Автор s13x, 01 фев 2022, 16:08

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

s13x

Уважаемые программисты, нужна ваша помощь.
В общем, есть 2 справочника Контрагенты и ДоговорыКонтрагентов. Есть такое условие: Тип договора не должен противоречить значению стандартного реквизита "Владелец", например, договор с видом "Прочее" не может быть заключен с контрагентом с типом "Клиент". Т.е. Если "Владелец"(договора) = "Клиент", значит и договор может быть создан только "СКлиентом". Не понимаю как это можно решить.
Порпобовал так, ничего не происходит:

&НаКлиенте
Процедура ВидДоговораПриИзменении(Элемент)
         
   Если Объект.Владелец = ПредопределенноеЗначение("Перечисление.ТипыКонтрагентов.Клиент") Тогда   
   Объект.ВидДоговора = ("Перечисление.ВидыДоговоров.СКлиентом");
   КонецЕсли;
   
КонецПроцедуры

С скд никак не разберусь(

antoneus

&НаКлиенте
Процедура ВидДоговораПриИзменении(Элемент)
         
   Если Объект.Владелец = ПредопределенноеЗначение("Перечисление.ТипыКонтрагентов.Клиент") Тогда   
   Объект.ВидДоговора = ПредопределенноеЗначение("Перечисление.ВидыДоговоров.СКлиентом");
   КонецЕсли;
   
КонецПроцедуры

И не понял, при чем тут скд.
А вообще, это решается параметрами выбора у поля выбора договора.

s13x

antoneus, мне нужно чтобы при создании договора на основании поля Объект.Владелец, которое имеет тип СправочникСсылка.Контрагенты поле Обьект.ВидДоговора (перечисление) заполнялось.
Т.е. допустим, есть Контрагент Володя (ТипКонтрагента = Перечисления.ТипыКонтрагентов.Клиент), который занесён в справочник Контрагенты. При создании договора в справочнике ДоговорыКонтрагентов, в поле Обьект.ВидДоговора (перечисления) для выбора был доступен только клиент или выбор производился автоматически.
Пс формулировка идиотская, но я по другому не могу обьяснить.

LexaK

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

в модуле справочника Договоры
Процедура ПередЗаписью(Отказ)

Если Владелец.ТипКонтрагента = Перечисления.ТипыКонтрагентов.Клиент Тогда
лкВидДоговора = Перечисления.ВидыДоговоров.СКлиентом;
ИначеЕсли Владелец.ТипКонтрагента = Перечисления.ТипыКонтрагентов.Партнер Тогда
лкВидДоговора = Перечисления.ВидыДоговоров.СПартнером;

//ИначеЕсли - и так далее перебрать все типы Контрагентов

Иначе
лкВидДоговора = Перечисления.ВидыДоговоров.ПустаяСсылка();
Сообщить("Не поддерживаемый тип контрагента: " + Владелец.ТипКонтрагента);
КонецЕсли;

Если ВидДоговора <> лкВидДоговора Тогда
//произошла смена типа владельца
ВидДоговора = лкВидДоговора;
КонецЕсли;

КонецПроцедуры

если помогло нажмите: Спасибо!

s13x

LexaK, большое спасибо, но появилась такая ошибка во всех условиях
{Справочник.ДоговорыКонтрагентов.МодульМенеджера(6,12)}: Переменная не определена (Владелец)
   ИначеЕсли <<?>>Владелец.ТипКонтрагента = Перечисления.ТипыКонтрагентов.Поставщик Тогда (Проверка: Сервер)


s13x

LexaK, пробовал в модуле формы, тоже самое, и в модуле обьекта, там вообще нет каких либо ошибок, при этом ничего не происходит

LexaK

s13x, как вы читаете ответы???  :xfbnsdfb:
написано же в Модуле справочника!!!
есть еще Менеджер и формы,

блин три сосны, ну уж самые элементарные вещи, хотя бы почитайте, что для чего!
если помогло нажмите: Спасибо!

Ивашка

s13x, так это в модуле объекта надо делать, а не в модуле менеджера

s13x

LexaK, Я сделал в модуле объекта, в поле ВидДоговора, поставил только просмотр. Ничего не происходит. Ни ошибок, ни изменений.

LexaK

все правильно, в процессе работы/редактирования ни чего и не будет происходить,
оно правильно заполнится само, когда вы нажмете кнопку Записать (записать и выйти)
Запишите и переоткройте ваш договор, и это поле будет заполнено.
(если все сделали правильно)
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск