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

Запрет редактирования поля по условию

Автор Анна Анисимова, 23 мая 2020, 21:38

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

Анна Анисимова

Цитата: antoneus от 25 мая 2020, 16:39
Почему. Вы. Игнорируете. Мой. Код? Вот этот:

Цитата: antoneus от 23 мая 2020, 23:31
Привязываем обработчик события элемента формы Автотранспорт ПриИзменении:

&НаКлиенте
Процедура АвтотранспортПриИзменении(Элемент)
    АвтотранспортПриИзмененииНаСервере()
КонецПроцедуры

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


Процедура проверки должна вызываться из процедуры изменения реквизита, а не табличной части ДопРекв. Просто допишите эту строчку в процедуру ТранспортПриИзмененииНаСервере. В общем, вот.

К сожалению не могу открыть вашу базу данных, так как у меня версия 8.3.13.
Не знаю, почему вы считаете, что я игнорирую ваши советы. Я делаю, как вы говорите, но нужного результата это не дает.
Сейчас у меня ошибка : "{Документ.НормыТоплива.Форма.ФормаДокумента.Форма(20)}: Поле объекта не обнаружено (Автотранспорт)
Элементы.НормаВремя.Доступность = Объект.Автотранспорт.ТипАвторанспорта = Перечисления.ТипыТранспорта.Трактор"

antoneus

&НаКлиенте
Процедура ТранспортПриИзменении(Элемент)
    ТранспортПриИзмененииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ТранспортПриИзмененииНаСервере()
   
    Объект.ДопРекв.Очистить();
    Для каждого Об Из Объект.Транспорт.ДанныеТранспорта Цикл
        НСтр=Объект.ДопРекв.Добавить();
        НСтр.ГосНомер=Об.ГосНомер;
        НСтр.Марка=Об.Автотранспорт;
        НСтр.Топливо=Об.ТипТоплива;
        НСтр.ТипАвтотранспорта=Об.ТипАвтотранспорта;
    КонецЦикла;
    Элементы.НормаВремя.Доступность = Объект.ДанныеТранспорта.ТипАвторанспорта = Перечисления.ТипыТранспорта.Трактор//вот эту строчку надо просто перенести из той процедуры в эту

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

Анна Анисимова

Цитата: antoneus от 25 мая 2020, 17:33
&НаКлиенте
Процедура ТранспортПриИзменении(Элемент)
    ТранспортПриИзмененииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ТранспортПриИзмененииНаСервере()
   
    Объект.ДопРекв.Очистить();
    Для каждого Об Из Объект.Транспорт.ДанныеТранспорта Цикл
        НСтр=Объект.ДопРекв.Добавить();
        НСтр.ГосНомер=Об.ГосНомер;
        НСтр.Марка=Об.Автотранспорт;
        НСтр.Топливо=Об.ТипТоплива;
        НСтр.ТипАвтотранспорта=Об.ТипАвтотранспорта;
    КонецЦикла;
    Элементы.НормаВремя.Доступность = Объект.ДанныеТранспорта.ТипАвторанспорта = Перечисления.ТипыТранспорта.Трактор//вот эту строчку надо просто перенести из той процедуры в эту

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


{Документ.НормыТоплива.Форма.ФормаДокумента.Форма(21)}: Поле объекта не обнаружено (ДанныеТранспорта)
Элементы.НормаВремя.Доступность = Объект.ДанныеТранспорта.ТипАвторанспорта = Перечисления.ТипыТранспорта.Трактор

antoneus

Да, не Объект.ДанныеТранспорта, а Объект.Транспорт, конечно. Копипаст мало кого доводил до добра.

Анна Анисимова

Цитата: antoneus от 25 мая 2020, 17:50
Да, не Объект.ДанныеТранспорта, а Объект.Транспорт, конечно. Копипаст мало кого доводил до добра.
В Объект.Транспорт отображается название транспорта, например RENAULT DUSTER. Тип автотранспорта в табличной части.
Если я делаю как вы сказали, то норма недоступна при любом значении, так как значения трактор там нет.

antoneus

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

Элементы.НормаВремя.Доступность = Объект.Транспорт.ДанныеТранспорта[0].ТипАвторанспорта = Перечисления.ТипыТранспорта.Трактор

Теги:

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

Рейтинг@Mail.ru

Поиск