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

Доступность реквизита

Автор Mro, 24 авг 2016, 15:01

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

Mro

Добрый день!

Продолжаю разбираться с конфигурированием 1С, возник следующий вопрос: есть некий документ с табличной частью (Материалы) в которой реквизиты "ИспользованиеМатериала" (булево) и "Материал" (СправочникСсылка.Номенклатура)

В форме документа они называются МатериалыИспользованиеМатериала (вид - поле флажка) и МатериалыМатериал (вид - поле ввода)

Я хочу, чтобы по умолчанию при создании документа поле МатериалыМатериал было недоступно для заполнения, но, если поставить галочку в поле МатериалыИспользованиеМатериала - то МатериалыМатериал становилось бы доступно. И в обратную сторону.

как мне это сделать?

1С:Предприятие 8.3 (8.3.7.1860)
1С:ERP Управление предприятием 2 (2.1.3.82)

Заранее спасибо.

xdto

Для начало установите в свойстве МатериалыМатериал галочку только просмотр
Тут все просто пишите обработчик события при изменений реквизита ИспользованиеМатериала

Mro

Цитата: xdto от 24 авг 2016, 15:16
Тут все просто пишите обработчик события при изменений реквизита ИспользованиеМатериала

Что я сделал:

1. У поля формы "Материал" убрал доступность
2. Для поля формы "Использование" написал событие при изменении :

&НаКлиенте
Процедура МатериалыИспользованиеПриИзменении(Элемент)
   // Вставить содержимое обработчика.
   Элементы.МатериалыМатериал.Доступность=Истина
КонецПроцедуры

3. В режиме отладки создаю документ, поле "Материал" изначально недоступно;
4. Ставлю галочку в поле "Использование", поле "Материал" становится доступным для ввода;
5. Убираю галочку в поле "Использование" поле "Материал" по прежнему остается доступно для ввода.

Как сделать, чтобы поле "Материал" становилось недоступно, если я снимаю галочку с поля "Использование"?


xdto

Уважаемый вам нужно проверять условие флажка
Если Объект.ИспользованиеМатериала Тогда
.........
Иначе
....
КонецЕсли

Mro

Цитата: xdto от 24 авг 2016, 15:37
Уважаемый вам нужно проверять условие флажка
Если Объект.ИспользованиеМатериала Тогда
.........
Иначе
....
КонецЕсли

переименовал реквизиты табличной части "Материалы", теперь это просто "Использование" и "Материал", в форме документа соответственно МатериалыИспользование и МатериалыМатериал

Написал вот так

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

В отладчике ставлю галочку на поле "Использование", выскакивает ошибка:

{Документ.ТестовыйДокумент.Форма.ФормаДокумента.Форма(5)}: Поле объекта не обнаружено (Использование)
   Если Объект.Использование Тогда

Что я делаю не так?(

xdto

Будьте внимательны у вас же реквизит называется МатериалыИспользование
Вот и выдает ощибку
Не мудрите дайте конкретику и все будет работать

Mro

Цитата: xdto от 24 авг 2016, 16:03
Будьте внимательны у вас же реквизит называется МатериалыИспользование
Вот и выдает ощибку
Не мудрите дайте конкретику и все будет работать

Во вложении скрины со свойствами полей формы

Пишу код вот так:

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

Ошибка: {Документ.ТестовыйДокумент.Форма.ФормаДокумента.Форма(5)}: Поле объекта не обнаружено (МатериалыИспользование)
   Если Объект.МатериалыИспользование Тогда

xdto

У вас реквизит находиться в табличной части тогда нужно писать не объект
а Элементы.МатериалыИспользование

Mro

Цитата: xdto от 24 авг 2016, 16:24
У вас реквизит находиться в табличной части тогда нужно писать не объект
а Элементы.МатериалыИспользование

Исправил код на:

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

Теперь когда хочу поставить галочку, выскакивает ошибка: {Документ.ТестовыйДокумент.Форма.ФормаДокумента.Форма(5)}: Преобразование значения к типу Булево не может быть выполнено
   Если Элементы.МатериалыИспользование Тогда

SGIRG

Процедура МатериалыИспользованиеПриИзменении(Элемент)
    Элементы.МатериалыМатериал.Доступность = Элементы.Материалы.ТекущиеДанные.Использование;
КонецПроцедуры
Нажимайте "Спасибо", так приятнее))

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск