Имя: Пароль:
1C
1C 7.7
v7: Напомните, как победить фичу 77 при выборе реквизита ТЧ ссылочного типа
0 2S
 
15.03.20
21:43
срабатывает дважды. Первый раз - при выборе как и положено, второй - перед окончанием редактирования строки, когда пытаюсь снять фокус с поля таблицы
вот элементарный код
Процедура ПриВыбореПартии()

    Если Материал.Выбран() = 1 Тогда
        Если Вопрос("Какой-то нужный вопрос. Продолжить?", "Да+Нет") = "Да" Тогда
            ТекМатериал = СоздатьОбъект("Справочник.Материалы");
            ТекМатериал.НайтиЭлемент(Материал);
            //чего-то делаем
            ТекМатериал.Записать();  
            Форма.Обновить();
        КонецЕсли;  
        
    КонецЕсли;    
    
КонецПроцедуры
1 Garykom
 
гуру
15.03.20
22:07
(0) Условием победи
2 Garykom
 
гуру
15.03.20
22:07
(1)+ Через Перем
3 Злопчинский
 
15.03.20
22:08
пока немного в сторону...
меня напрочь вымораживают много этажные конструкции. в которых не поймешь что делается пока не дойдешь до конца.
я (имхо) пишу линейнее
.
Процедура ПриВыбореПартии()

    Если Материал.Выбран() = 0 Тогда Возврат; КонецЕсли; //уже все ясно
    Если Вопрос("Какой-то нужный вопрос. Продолжить?", "Да+Нет") <> "Да" Тогда Возврат; КонецЕсли; //уже все ясно

    ТекМатериал = СоздатьОбъект("Справочник.Материалы");
    ТекМатериал.НайтиЭлемент(Материал);
    //чего-то делаем
    ТекМатериал.Записать();  
    Форма.Обновить(); //это мне сильно не нравится

КонецПроцедуры
4 Злопчинский
 
15.03.20
22:09
"перед оконанием" - нет такого, есть после окончания редактирования, когда фокус ушел
5 Злопчинский
 
15.03.20
22:10
(0) ПриВыбореПартии() - отрабатывает на последнем реквизите ввода по строке?
6 2S
 
15.03.20
22:13
(3) Сергей, те же яйца
Форма.Обновить не влияет, проверено.
Нужно программно менять наименование ТМЦ, поэтому и обновляем форму.
(5) Да, крайний реквизит в ТЧ, но это тоже не панацея.
7 2S
 
15.03.20
22:13
(1) не, я помню, была какая-то микстура
8 Сияющий в темноте
 
15.03.20
22:19
а почему при выборе,а не при начале выбора?
9 Злопчинский
 
15.03.20
22:21
(6) это ж понятно что те же яйца, это ж не по сути проблемы замечание...
10 Злопчинский
 
15.03.20
22:22
проверил, действительно 2 раза срабатывает.. занятно, никогда не сталкивался...
.
я вообще по строке ввоожу только тривиальные вещи типа "классификаторов".
.
вводить в форме элемента - не выход?
11 2S
 
15.03.20
22:23
(8) вооот, что-то похожее на отмену стандартной обработки было...

но уже сделано в лоб, как Garykom посоветовал
Процедура ПриНачалеРедактированияСтроки()  
    
    ПартияВыбрана = 0;
    
КонецПроцедуры


Процедура ПриВыбореПартии()

    Если (ПартияВыбрана = 0) И (Материал.Выбран() = 1) Тогда

и т.д.

закрываем, спасибо
12 Злопчинский
 
15.03.20
22:24
(8) тут хз, ТС же не указывает ПриВыбореПартии() - на каком реквизите и когда отрабатывает и как связан с другими реквизитами.
Если ПриВыбореПартии() - на реквизите "Материал" - то ПриНачале - очевидно - не покатит.. ибо материал еще не выбран/не изменен.