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

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

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

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

Mro

Цитата: SGIRG от 29 авг 2016, 14:24
Цитата: Mro от 29 авг 2016, 13:25
Я так понимаю, что основная соль в том, что теперь это не поля табличной части,а поля формы.
заполнять информацию нужно не в поля формы а в документ, либо реквизит формы (не знаю как у Вас там организовано)
В свойствах элемента формы, где прописан путь к данным, туда и запихивайте значения.

У меня есть некий документ в котором две формы :1-я форма документа (с табличной частью), вторая - произвольная без табличной части, которая используется для заполнения каждой строки табличной части формы документа. Не спрашивайте, зачем это нужно.)))

Так вот. Я хочу организовать это условие доступности реквизита именно в форме добавления элемента (ФормаЭлемента), в которой все реквизиты - это реквизиты формы.
Добавлено: 29 авг 2016, 15:06


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

&НаКлиенте
Процедура АнтенаНаличиеПриИзменении(Элемент)
если
   АнтенаНаличие
Тогда
   Элементы.Антена.Доступность = Истина
Иначе
   Элементы.Антена.Доступность = ПредопределенноеЗначение("Справочник.Антена.ПустаяСсылка");
   Элементы.Антена.Доступность = Ложь;
конецесли;
КонецПроцедуры

Вылетает в части "Иначе" с ошибкой

{Документ.Тестовый.Форма.ФормаЭлемента.Форма(8)}: Ошибка при установке значения атрибута контекста (Доступность)
   Элементы.Антена.Доступность = "Справочник.Антена.ПустаяСсылка";
по причине:
Несоответствие типов
Добавлено: 29 авг 2016, 15:14


Изменил код на такой:

&НаКлиенте
Процедура АнтенаНаличиеПриИзменении(Элемент)
   Элементы.Антена.Доступность=АнтенаНаличие;
   Если НЕ Элементы.Антена.Доступность=АнтенаНаличие тогда
          Элементы.Антена = Неопределено;
         конецесли;

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

Управление доступностью работает, но когда снимаешь галочку - значение не затирается


Добавлено: 29 авг 2016, 15:35


С таким кодом тоже не затирает.(

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

КонецЕсли;

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

Добавлено: 29 авг 2016, 15:47


еще один вариант)))

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

КонецЕсли;

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


Ошибка - {Документ.Тестовый.Форма.ФормаЭлемента.Форма(7)}: Поле объекта недоступно для записи (Антена)
    Элементы.Антена=ПредопределенноеЗначение("Справочник.Антена.ПустаяСсылка");

SGIRG

Ну Вы хотя бы читайте тот текст, который набираете!
Элементы.Антена.Доступность=АнтенаНаличие;
   Если НЕ Элементы.Антена.Доступность=АнтенаНаличие тогда

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

&НаКлиенте
Процедура АнтенаНаличиеПриИзменении(Элемент)
    Элементы.Антена.Доступность=АнтенаНаличие;
    Если НЕ АнтенаНаличие Тогда
        //Элементы.Антена=ПредопределенноеЗначение("Справочник.Антена.ПустаяСсылка");
        Вот здесь пишите то, что прописано в "ПутьКДанным" для элемента формы "Антена" = ПредопределенноеЗначение("Справочник.Антена.ПустаяСсылка");
    КонецЕсли;
КонецПроцедуры

Mro

Цитата: SGIRG от 29 авг 2016, 16:22Если в первой строке кода вы в доступность вписали значение переменной, то вторая строка всегда вернет ложь!

Спасибо, эту ошибку я уже понял в процессе.)

Пока еще сильно плаваю в теории и логике, но, благодаря Вам, некоторые вещи встали на свои места в голове.:zebzdr:


Добавлено: 29 авг 2016, 16:46


Крайне интересная история этот 1С.))

Лариса198888


Теги:

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

Рейтинг@Mail.ru

Поиск