Имя: Пароль:
1C
 
Событие ОбработкаПроверкиЗаполнения
,
0 pro3ri
 
16.09.15
08:13
Добрый день!
На форме документа есть код:
Для каждого Субконто Из Объект.Счет.ВидыСубконто Цикл
    
        Если Строка(типзнч(Объект.Субконто1)) = Строка(Субконто.ВидСубконто.ТипЗначения) Тогда
            Элементы.Субконто1.Видимость = Истина;
        Иначе
            Элементы.Субконто1.Видимость = Ложь;
        КонецЕсли;

Но данный реквизит https://s.mail.ru/2wUjsuH6Nqke/img-2015-09-16-10-13-26.png Как сделать так, чтобы при изменении режима видимость на форме на ложь он исключался из Проверяемые реквизиты события ОбработкаПроверкиЗаполнения МО?
1 Апош
 
16.09.15
08:17
ОбработкаПроверкиЗаполнения не имеет никакого отношения к форме
2 Апош
 
16.09.15
08:21
>Строка(типзнч(Объект.Субконто1)) = Строка(Субконто.ВидСубконто.ТипЗначения)
а это что за фольклор?
3 pro3ri
 
16.09.15
08:24
(2) искал в Субконто.ВидСубконто ТипСправочник ссылка, не нашел.
4 Апош
 
16.09.15
08:26
помнится, я при конвертации назвал много разных слов, когда через сообщить(тип объекта) пытался увидеть, ссылка оно или объект
5 pro3ri
 
16.09.15
08:32
(1) так тоже не выходит:
Если Строка(типзнч(Объект.Субконто1)) = Строка(Субконто.ВидСубконто.ТипЗначения) Тогда
            Элементы.Субконто1.Видимость = Истина;
        Иначе
            Элементы.Субконто1.Видимость = Ложь;
            ДокОбъект = РеквизитФормыВЗначение("Объект",Тип("ДокументОбъект.Авизо"));
            ДокОбъект.метаданные().Реквизиты.Субконто1.ПроверкаЗаполнения = ПроверкаЗаполнения.НеПроверять;
            ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
6 alkorolev
 
16.09.15
08:34
ну это же условие впиши в ОбработкуПроверкиЗаполнения
7 Апош
 
16.09.15
08:35
перевожу на русский. проверке заполнения покласть на твою форму. совсем. и это правильно, я считаю
8 alkorolev
 
16.09.15
08:35
Если Строка(типзнч(Субконто1)) = Строка(Субконто.ВидСубконто.ТипЗначения) Тогда
ПроверяемыйРеквизиты.Удалить(ТвойРеквизит)
9 pro3ri
 
16.09.15
08:43
(8) заработало, спасибо!
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Для каждого Субконто Из Счет.ВидыСубконто Цикл
    
        Если Строка(типзнч(Субконто1)) = Строка(Субконто.ВидСубконто.ТипЗначения) Тогда
            
        Иначе
            ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Субконто1"));
        КонецЕсли;
    
        Если Строка(типзнч(Субконто2)) = Строка(Субконто.ВидСубконто.ТипЗначения) Тогда

        Иначе
            ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Субконто2"));

        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
10 Fedor-1971
 
16.09.15
08:44
(9) т.е. просто сравнить типЗнч(Объект.Субконто1)=ТипЗнч(Субконто.ВидСубконто) не получается?
11 pro3ri
 
16.09.15
08:45
(10) нет, т.к. до этого цикл:

Для каждого Субконто Из Объект.Счет.ВидыСубконто Цикл
    
        Если Строка(типзнч(Объект.Субконто1)) = Строка(Субконто.ВидСубконто.ТипЗначения) Тогда
            Элементы.Субконто1.Видимость = Истина;
        Иначе
            Элементы.Субконто1.Видимость = Ложь;
            //ДокОбъект = РеквизитФормыВЗначение("Объект",Тип("ДокументОбъект.Авизо"));
            //ДокОбъект.метаданные().Реквизиты.Субконто1.ПроверкаЗаполнения = ПроверкаЗаполнения.НеПроверять;
            //ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
            //Метаданные.Документы.Авизо.Реквизиты.Субконто1.ПроверкаЗаполнения = ПроверкаЗаполнения.НеПроверять;
        КонецЕсли;
    
        Если Строка(типзнч(Объект.Субконто2)) = Строка(Субконто.ВидСубконто.ТипЗначения) Тогда
            Элементы.Субконто2.Видимость = Истина;
        Иначе
            Элементы.Субконто2.Видимость = Ложь;
            //Метаданные.Документы.Авизо.Реквизиты.Субконто1.ПроверкаЗаполнения = ПроверкаЗаполнения.НеПроверять;

        КонецЕсли;
    КонецЦикла;
12 Fedor-1971
 
16.09.15
09:03
(11) т.е. простыми словами ты сравниваешь тип значения данных объекта и тип значения субконто счета (правда забыл, что и то и другое может быть составного типа)
Как то не могу придумать где может понадобиться такой функционал?
Может имеет смысл проверять ЗначениеЗаполнено(Объект.Субконто1) и ТипЗнч(Объект.Субконто1)=Тип("??") - при заполненном субконто имеющем определённый тип.
13 pro3ri
 
16.09.15
09:55
(12) Первоначально при вводе нового дока Объект.Субконто1 всегда не заполнен.
А вот субконто берется из счета. Из коллекции Объект.Счет.ВидыСубконто.
14 pro3ri
 
16.09.15
09:56
>> Как то не могу придумать где может понадобиться такой функционал?
Документ Авизо
15 Гёдза
 
16.09.15
10:00
(8) Только лучше не удалять, а добавлять.
Более безопасный вариант
16 Dmitrii
 
гуру
16.09.15
10:03
(0) И что произойдет, когда Субконто.ВидСубконто.ТипЗначения окажется составным (например, вид субконто СчетФактура с типом - куча всяческих ссылок на документы)?

Вообще задача - феерический бред.
Ошибка? Это не ошибка, это системная функция.