Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ПередОкончаниемРедактирования не всегда срабатывает

ПередОкончаниемРедактирования не всегда срабатывает
Я
   vicof
 
24.10.19 - 07:21
Есть таблица на форме.
В ней должны быть уникальные значения по двум колонкам.
Если редактировать эти две колонки, они ссылочные, все ок, не дает завершать редактирование, если указаны неуникальные строки.

Если редактировать третью числовую колонку, то возможны два варианта:
1. Если я не меняю значение в ней, все ок, ругается, не дает завершить редактирование.
2. Если меняю значение в ней, просто выходит из режима редактирования.

&НаКлиенте
Процедура ДолиПоСтатьямЗаработнойПлатыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
    
    Если Не НоваяСтрока Или НоваяСтрока И Не ОтменаРедактирования Тогда
        
        ТекущиеДанные = Элементы["ДолиПоСтатьямЗаработнойПлаты"].ТекущиеДанные;
    
        ПараметрыОтбора = Новый Структура;
        ПараметрыОтбора.Вставить("СтатьяКалькуляции", ТекущиеДанные.СтатьяКалькуляции);
        ПараметрыОтбора.Вставить("Судно",             ТекущиеДанные.Судно);
        
        НайденныеСтроки = ДолиПоСтатьямЗаработнойПлаты.НайтиСтроки(ПараметрыОтбора);
        Если НайденныеСтроки.Количество() > 1 Тогда
                    
            ТекстОшибки = "Строка со статьей калькуляции '%1' и судном '%2' уже указана в таблице";
            ТекстОшибки = СтрШаблон(ТекстОшибки, ТекущиеДанные.СтатьяКалькуляции, ТекущиеДанные.Судно);
            
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,,,,Отказ);
            
        КонецЕсли;
        
    КонецЕсли;    
            
КонецПроцедуры

Что может быть не так с этой последней колонкой?
 
 
   RomaH
 
1 - 24.10.19 - 08:10
другие обработчики перед этим в которых вызывается сервер?
   МимохожийОднако
 
2 - 24.10.19 - 08:11
(0) Некий аналог регистра сведений с двумя измерениями?
   vicof
 
3 - 24.10.19 - 08:31
(2) Что-то типа того. Но просто на форме. Смотрю похожую таблицу в типовом документе "ПлановаяКалькуляция", там все отрабатывает.
   vicof
 
4 - 24.10.19 - 08:31
(1) Нет, других обработчиков с вызовом сервера нет
   RomaH
 
5 - 24.10.19 - 08:38
(4) а без вызова?
   vicof
 
6 - 24.10.19 - 08:40
&НаКлиенте
Процедура ДолиПоСтатьямЗаработнойПлатыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
    
    Если Копирование Тогда
        
        Отказ = Истина;
        
    КонецЕсли;
            
КонецПроцедуры

&НаКлиенте
Процедура ДолиПоСтатьямЗаработнойПлатыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    ОбщегоНазначенияУТКлиент.КешироватьТекущуюСтроку(ЭтотОбъект, "ДолиПоСтатьямЗаработнойПлаты");
    
КонецПроцедуры
   Сияющий в темноте
 
7 - 24.10.19 - 08:42
насколько я помню,приоритет или и и одинаковый,раставь скобочки
   vicof
 
8 - 24.10.19 - 08:43
(7) Это не важно. Обработчик не вызывается, скобочки это уже дело десятое.
   Сияющий в темноте
 
9 - 24.10.19 - 08:44
ну и отказ=Истина не помешает,если нельзя.
   vicof
 
10 - 24.10.19 - 08:45
(9) Отказ в Истину там ставится, если внимательно посмотреть)
   Сияющий в темноте
 
11 - 24.10.19 - 08:46
у полей таблицы точно обработчиков нет
потому как логичнее проверять там,а не по окончании редактирования.
   RomaH
 
12 - 24.10.19 - 08:46
1. Если я не меняю значение в ней, все ок, ругается, не дает завершить редактирование.
2. Если меняю значение в ней, просто выходит из режима редактирования.

вот это дает основание полагать, что у поля назначен обработчик "приИзменении"
   vicof
 
13 - 24.10.19 - 08:56
Я все закомментил, оставил только три вышеописанных.
   vicof
 
14 - 24.10.19 - 09:06
(11) У полей точно нет обработчиков. Я таблицу создаю программно.
И обработчики назначаю программно.

Элементы[ИмяТаблицы].УстановитьДействие("ПередНачаломДобавления",        "ДолиПоСтатьямЗаработнойПлатыПередНачаломДобавления");
        Элементы[ИмяТаблицы].УстановитьДействие("ПриНачалеРедактирования",       "ДолиПоСтатьямЗаработнойПлатыПриНачалеРедактирования");
        Элементы[ИмяТаблицы].УстановитьДействие("ПередОкончаниемРедактирования", "ДолиПоСтатьямЗаработнойПлатыПередОкончаниемРедактирования");

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.