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

Не работает процедура вызванная из ПриОткрытии в форме документа

Автор Sasha1C, 28 мая 2024, 11:05

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

Sasha1C

Добрый день, подскажите пожалуйста почему такой код работает. А вообще задача при создании нового документа делать ТЧ недоступной до заполнения реквизита "Книжный магазин"
&НаКлиенте
Процедура ПриОткрытии(Элемент, Отказ)


Элементы.ПроданныеКниги.Доступность = Ложь;


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

А второй код более читаемый по моему мнению, не хочет работать

&НаКлиенте
Процедура ПроверкаЗаполненияКнижногоМагазина(Элемент)

Если ЗначениеЗаполнено(Объект.КнижныйМагазин) Тогда
Элементы.ПроданныеКниги.Доступность = Ложь;
КонецЕсли;

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


&НаКлиенте
Процедура ПриОткрытии(Элемент, Отказ)

ПроверкаЗаполненияКнижногоМагазина(Элемент);

КонецПроцедуры
Процедура ПроверкаЗаполненияКнижногоМагазина работает, так как корректно отрабатывается вызываемая процедурой "ПриИзменении"
может быть, я где-то не так понял синтаксис и специфику работы события "ПриОткрытии"? Заранее спасибо.

LexaK

Sasha1C, так не работа кода в чем проявляется?

проверьте обработчики событий, При изменении книжного магазина - задан? работает?
если помогло нажмите: Спасибо!

Sasha1C

LexaK, Поле ТЧ остается доступным, а если Вызвать процедуру ПриИзмененииКнижногоМагазина, то ТЧ становится недоступной
&НаКлиенте
Процедура КнижныйМагазинПриИзменении(Элемент)

ПроверкаЗаполненияКнижногоМагазина(Элемент);

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

Sasha1C

Все вопрос снимается. Я не заметил что "не" убрал перед выражением, и контекст поменялся, а когда переделал. Эврика :bleh:

LexaK

Sasha1C, у вас не симметричная конструкция проверки

попробуйте на форме заполнить магазин а затем очистить
и в обоих случаях проверьте доступ к ТЧ,

вот такая конструкция установки доступа будет правильнее
&НаКлиенте
Процедура ПроверкаЗаполненияКнижногоМагазина(Элемент)

//работает сразу для двух вариантов
    Элементы.ПроданныеКниги.Доступность = ЗначениеЗаполнено(Объект.КнижныйМагазин);

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

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

Sasha1C


Sasha1C

LexaK, Но объясните пожалуйста, как это работает, просто исходя из текста здесь происходит простое сравнение. Пока что не могу понять, как вообще работает данный синтаксис? (Сама логика ясна, но синтаксис нет :dfbbdrfb:
 

LexaK

Sasha1C, вот это

ЗначениеЗаполнено(Объект.КнижныйМагазин);

всегда возвращает Булево (Истина или Ложь)!
вот это булево и назначаем Доступности

если перевести на классический код равно этому
Если ЗначениеЗаполнено(Объект.КнижныйМагазин) Тогда
Элементы.ПроданныеКниги.Доступность = Истина;
Иначе
Элементы.ПроданныеКниги.Доступность = Ложь;
КонецЕсли;

равно одной команде
   Элементы.ПроданныеКниги.Доступность = ЗначениеЗаполнено(Объект.КнижныйМагазин);

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

Теги:

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

Рейтинг@Mail.ru

Поиск