Имя: Пароль:
1C
1С v8
Событие перед записью не срабатывает, когда меняем цвет на форме...
,
0 EvgeniuXP
 
10.07.14
08:57
Код следующий, модуль формы:

&НаКлиенте
Перем Цвет;

&НаКлиенте
Процедура ПолеВводаНаФормеПриИзменении()

    Если Цвет = Неопределено Тогда
        Цвет = Истина;
    КонецЕсли;
    Цвет = НЕ Цвет;

    // Поменять цвет
    ПоменятьЦвет(Цвет);

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

&НаКлиенте
Процедура ПоменятьЦвет(Цвет)
    Перем ЦветФона;
    Если Цвет Тогда
        ЦветФона = Новый Цвет(255, 0, 0);
    Иначе
        ЦветФона = Новый Цвет(0, 255, 0);
    КонецЕсли;

    ЭлементыФормы.ГруппаФормыГдеНаходитсяПолеВвода.ЦветФона = ЦветФона;

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

&НаКлиенте
Процедура ПередЗаписью()

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

Всё, в отладчике ставим точку останова в событии ПередЗаписью() открываем форму, вводим что-нибудь в поле ввода, ОСТАВИВ ТАМ КУРСОР сразу же нажимаем кнопку ЗАПИСАТЬ - событие перед записью не срабатывает. Да и вабще срабатывать не будет :)))), т.к. цвет постоянно меняется.

Это фича такая у 1С теперь?
1 EvgeniuXP
 
10.07.14
08:58
забыл написать, платформа 8.3.5.1068.
2 EvgeniuXP
 
10.07.14
08:59
проверял на форме документа.
3 ДенисЧ
 
10.07.14
09:02
Не совсем понял, а что, изменение цвета фона теперь является изменением содержимого реквизита?
4 EvgeniuXP
 
10.07.14
09:02
Если поменять &НаСервер у процедуры ПоменятьЦвет(Цвет) - будет тоже самое.
5 BuHu
 
10.07.14
09:02
а в процедуре ПередЗапсиью есть хоть одна строчка кода?
6 EvgeniuXP
 
10.07.14
09:03
(3) я менял цвет у группы, а в этой группе лежит реквизит строкового типа - но возможно без разницы, где цвет меняем.
7 EvgeniuXP
 
10.07.14
09:04
(5) она не нужна, ставим точку останова на КонецПроцедуры :)

ПриЗаписи - много строчек - там тоже естественно не останавливается :)
8 Escander
 
10.07.14
09:05
(7) Это не серверная база с выключенной отладкой?
9 EvgeniuXP
 
10.07.14
09:07
(8) серверная, debug включен, если курсор перевести на другое поле после ввода - то останавливается.
10 EvgeniuXP
 
10.07.14
09:10
(+6) еще хуже, если любое свойство меняем у формы - и перед записью не будет срабатывать, если клавиши TAB не нажимаем или не кликаем в другое поле - не проверял еще...
11 EvgeniuXP
 
10.07.14
09:11
(11) т.е. у элементов формы.
12 Escander
 
10.07.14
09:17
(9) проверил на локальной копии - всё норм! И в старом интерфейсе и в такси и для
Совместимость по коду = Не использовать и для = 8.3.4

У тебя не отвязалась процедура при записи от события формы?
13 EvgeniuXP
 
10.07.14
09:17
... вместо фона подставил высоту - устанавливал каждый раз разную высоту элемента формы при изменении реквизита - тоже не работает...

надо сваливать с 8.3.5 :)

(10) подтвердилось...
14 EvgeniuXP
 
10.07.14
09:19
(12) нет, она работает, при втором нажатии на кнопку Записать - стандартная на форме.

используется клиент-сервер, SQL2008 R2. Проверяю локально на своей машине - трехзвенка - всё на одной.
15 EvgeniuXP
 
10.07.14
09:20
могу выложить конфу с одной формой и одним документом
16 Escander
 
10.07.14
09:23
(15) я что не на подобной конфе проверяю?
17 Escander
 
10.07.14
09:24
(13) >надо сваливать с 8.3.5 :)
да она для работы и не раздаётся...
18 Escander
 
10.07.14
09:25
+ (17) рабочую базу запускать на 8.3.5... смело
19 RomaH
 
naïve
10.07.14
09:25
ОСТАВИВ ТАМ КУРСОР сразу же нажимаем кнопку ЗАПИСАТЬ
может тут собака порылась?
что-то ввел, не подтвердив воод (ентер/таб/выход из поля в общем)

выход делаешь кликом мышкой - этот клик вроде всегда обрабатывается как выход - т.е. нажатия кнопки не будет

а так как у тебя идет обновление формы при изменении - то ...
20 RomaH
 
naïve
10.07.14
09:27
я не удивлюсь если данная конструкция не работает (аналогично работает) и на других релизах платформы?
21 EvgeniuXP
 
10.07.14
09:33
(19) если цвет не ставим программно, запись срабатывает нормально при изменении строки на форме не выходя из поля.

Интерфейс, кстати, Такси.
22 RomaH
 
naïve
10.07.14
09:34
воспроизводится и на 8.2
где-то было написано, что перед записьи или при записи нельзя обновлять форму
23 EvgeniuXP
 
10.07.14
09:36
(22) т.е. всё что сделает пользователь на форме - получается ее нельзя обновлять? т.к. в любой момент пользователь может нажать кнопку "Записать" и при этом оставить форму открытой... плохо.
24 RomaH
 
naïve
10.07.14
09:36
(21) тут суть в обновлении формы - клик не доходит до кнопки

вспоминая VB - события клика - нажатие кнопки
и отпускание кнопки
(а кнопка "Записать" НАЖИМАЕТСЯ при отпускании кнопки мыши)
25 RomaH
 
naïve
10.07.14
09:38
&НаКлиенте
Процедура Реквизит1ПриИзменении(Элемент)
    
    Если Элементы.Реквизит1.Высота = 1 Тогда
        Элементы.Реквизит1.Высота = 2;
    Иначе
        Элементы.Реквизит1.Высота = 1;
    КонецЕсли;
    
КонецПроцедуры


&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("2");
КонецПроцедуры



это на 8.2
26 EvgeniuXP
 
10.07.14
09:40
(25) понятно, тогда кнопку Записать лучше убирать с форм, которые обновляются... спс, делать записать и закрыть.
27 EvgeniuXP
 
10.07.14
09:41
(26) если и это не пройдет, тогда придется два раза жать... ой как не удобно...
28 RomaH
 
naïve
10.07.14
09:48
(27) взять за правило - все изменения вызывающие обновления формы выносить в ПодключитьОбработчикОжидания
29 RomaH
 
naïve
10.07.14
09:50
+(28) или вообще не менять форму - там глюки еще те всплывают