Имя: Пароль:
1C
1С v8
Глюк в ТЧ обработки ? 8.2 обычные формы
0 Aleks73
 
26.05.14
13:57
1С:Предприятие 8.2 (8.2.19.80). Обычные формы. Заполняю ТЧ из запроса, в ТЧ есть реквизит Разрешение тип булево.
Вывожу на форму в виде колонки с галочкой.

    ОформлениеСтроки.Ячейки.Разрешение.ОтображатьТекст = Ложь;
    ОформлениеСтроки.Ячейки.Разрешение.ОтображатьФлажок = Истина;

Обрабатываю  окончание редактирования строки ТЧ

Процедура ТПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если Не ОтменаРедактирования Тогда
ДоговорКонтрагента = Элемент.ТекущаяСтрока.ДоговорКонтрагента.ПолучитьОбъект();
Др = ложь ;
Если ДоговорКонтрагента.Разрешение <> Элемент.ТекущаяСтрока.Разрешение тогда
ДР =  истина ;
конецесли ;                

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

При этом при снятии галочки работает отлично, при установке - не работает, так как определяет ДоговорКонтрагента.Разрешение как истина, хотя если снять задачу из отладчика на этой строке - Разрешение ложь.

Что-то такое смутно вспоминаю, то ли в 8.0 то ли когда - была такая фича. Кто победил ? Что делать? Чем мы провинились перед Б.Нуралиевым и пр. ?
1 kosts
 
26.05.14
14:11
(0) Для галочки есть специальное событие, возможно будет получше.
2 kosts
 
26.05.14
14:11
(1) *Изменения галочки
3 Aleks73
 
26.05.14
14:13
(2) в данном случае эта функция недоступна, только что проверил.
4 kosts
 
26.05.14
14:15
(3) Предположу, что для колонки с галочкой не включен "Непосредственный" режим, попробуй.
5 Aleks73
 
26.05.14
14:22
(4) Если ты про режим редактирования - включен, увы...
6 Галахад
 
гуру
26.05.14
14:27
А строка заканчивает редактироваться?
7 Aleks73
 
26.05.14
14:29
(6) Раз в процедуру входит - ежу понятно что заканчивает.
8 Галахад
 
гуру
26.05.14
14:35
(7) Не факт.
9 Aleks73
 
26.05.14
14:44
(8) Отладчиком сидел, глазами смотрел, слушай, да ?!
10 Мимохожий Однако
 
26.05.14
14:50
Что это за переменная ДР ?!
11 Aleks73
 
26.05.14
14:53
(10) логическое условие записи реквизитов в регистр сведений...к проблеме отношения не имеет, ИМХО.
12 Мимохожий Однако
 
26.05.14
15:00
(11) Тогда не надо было выкладывать..)) ИМХО, сабж не соответствует разъяснениям,ИМХО.
13 Aleks73
 
26.05.14
15:06
(12) Хочется заняться мазохизмом ? Изволь...
Процедура ТПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    
Если Не ОтменаРедактирования Тогда
        
ДоговорКонтрагента = Элемент.ТекущаяСтрока.ДоговорКонтрагента.ПолучитьОбъект();
        Др = ложь ;
Если ДоговорКонтрагента.Разрешение <> Элемент.ТекущаяСтрока.Разрешение тогда
            ДР =  истина ;
        конецесли ;    
        ДоговорКонтрагента.ОбменДанными.Загрузка = Истина;
        ДоговорКонтрагента.Разрешение = Элемент.ТекущаяСтрока.Разрешение;
        ДоговорКонтрагента.КонтролироватьСуммуЗадолженности = Элемент.ТекущаяСтрока.КонтролироватьСуммуЗадолженности;
        ДоговорКонтрагента.ДопустимаяСуммаЗадолженности = Элемент.ТекущаяСтрока.ДопустимаяСуммаЗадолженности;
        ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности = Элемент.ТекущаяСтрока.КонтролироватьЧислоДнейЗадолженности;
        ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности = Элемент.ТекущаяСтрока.ДопустимоеЧислоДнейЗадолженности;
        
        делать = истина ;
        Попытка
            ДоговорКонтрагента.Записать();
        Исключение    
            Сообщить("Не удалось записать договор:  " + СокрЛП(ДоговорКонтрагента.Наименование) + "  (" + СокрЛП(ДоговорКонтрагента.Владелец.Наименование) + ")",СтатусСообщения.Внимание);
            делать = ложь ;
        КонецПопытки;            
Если Делать тогда
            НаборЗаписей = РегистрыСведений.ДоговорыДляАкцептования.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Контрагент.установить(ДоговорКонтрагента.Владелец);
НаборЗаписей.Отбор.Договор.установить(ДоговорКонтрагента.Ссылка);
            НаборЗаписей.Прочитать();
            надо = истина ;
            для каждого запись из НаборЗаписей цикл
            надо = Ложь ;
Если  Др тогда      
запись.ДатаАкцептования = текущаядата();
конецесли ;
запись.Разрешение   = ДоговорКонтрагента.Разрешение ;
        конеццикла ;
        Если надо тогда
        НЗ =  НаборЗаписей.Добавить();
        НЗ.Контрагент = ДоговорКонтрагента.Владелец;
        НЗ.Договор = ДоговорКонтрагента.Ссылка;
Если  Др тогда      
НЗ.ДатаАкцептования = текущаядата();
            конецесли ;
    нз.Разрешение   = ДоговорКонтрагента.Разрешение ;
            конецесли ;    
НаборЗаписей.Записать();
        конецесли ;    
        
        
    КонецЕсли;    
    
КонецПроцедуры
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший