Имя: Пароль:
1C
1С v8
ОФ и ТП: передНачаломИзменения
0 Зая Бусечка
 
23.06.16
15:07
Поймала такую картину.
На ТП документа висит событие передНачаломИзменения.
Если открыть документ и кликнуть в поле - оно срабатывает.
А если отредактировать одну колонку, а потом перещёлкнуть в другую - уже нет.
И как мне поймать такой момент?
Если что, 1с 8.2.19.130, режим совместимости 8.1, обычные формы, форма документа, на ней - РегистрСведенийСписок.
1 Mort
 
23.06.16
15:22
Смотря что нужно сделать.
2 FIXXXL
 
23.06.16
15:24
(0) перещелкнуть в одной строке?
3 lxs
 
23.06.16
15:44
ПриАктивизацииЯчейки() не подойдет?
4 Зая Бусечка
 
23.06.16
15:48
(2) Да.
(3) надо попробовать, правда, я пошла по другому пути, но этот тоже проверю...
5 Зая Бусечка
 
23.06.16
15:49
(1) Нужно запретить редактирование ячейки при соблюдении определенных условий в документе и пользователе.
6 FIXXXL
 
23.06.16
16:43
(4) ну тогда все правильно
передНачаломИзменения - это на всю строку
внутри строки - другие обработчики
7 Зая Бусечка
 
23.06.16
16:48
(6) И какое событие на ПередНачаломИзменения для поля? Чтобы войти туда нельзя войти было?
8 lxs
 
23.06.16
16:59
(7) Ну вот пример:


Процедура СписокПриАктивизацииЯчейки(Элемент)
    Если Не Элемент.ТекущиеДанные = Неопределено Тогда
        Если Элемент.ТекущаяКолонка.Имя = "ДатаРождения" Тогда
            Элемент.ТекущаяКолонка.Доступность = Не Элемент.ТекущиеДанные.ФизическоеЛицо.Пустая();
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
9 Зая Бусечка
 
23.06.16
17:03
(8) И оно на каждый чих и движение по таблице будет вызываться.. ?
10 lxs
 
23.06.16
17:04
(9) yeap)
11 FIXXXL
 
23.06.16
17:06
(7) ну можешь на ПриАктивизацииСтроки блоки навешивать на колонки
при "пробежке" будет лочить-разлочить
12 Зая Бусечка
 
23.06.16
17:06
(10) nop, sir, i do not want this...
13 Зая Бусечка
 
23.06.16
17:06
(11) см 99)
14 FIXXXL
 
23.06.16
17:07
(13) ну а как ты хочешь? это ж не эксель :)
15 lxs
 
23.06.16
17:08
(12) Я так и не понял тогда, чего же ты добиваешься.. Моя процедура управляет доступностью на редактирование определенной ячейки при определенном условии (условие настраивается опционально)..
16 Зая Бусечка
 
23.06.16
17:10
(14) Я хочу событие ПередНачаломРедактированияПоля
17 lxs
 
23.06.16
17:15
Процедура СписокПриАктивизацииЯчейки(Элемент)
    Отказ = Ложь;
    СписокПередНачаломИзменения(Элемент, Отказ);
КонецПроцедуры


Процедура СписокПередНачаломИзменения(Элемент, Отказ)
    
    Если Не Элемент.ТекущиеДанные = Неопределено Тогда
        Если Элемент.ТекущаяКолонка.Имя = "ДатаРождения" Тогда
            Элемент.ТекущаяКолонка.ТолькоПросмотр = Элемент.ТекущиеДанные.ФизическоеЛицо.Пустая();
        КонецЕсли;
    КонецЕсли;        
    
КонецПроцедуры
18 Зая Бусечка
 
23.06.16
17:22
(17) см (9)
19 lxs
 
23.06.16
17:26
(18) Сама догадаешься?
20 lxs
 
23.06.16
17:27
(19)+ Можешь заменить процедуру ПриАктивизацииЯчейки() на ПриАктивизацииКолонки(), например, чтобы уменьшить количество "чихов", но так, как тебе надо, 1С не умеет)
21 lxs
 
23.06.16
17:28
(20)+ Если я всё же верно тебя понял.
22 Зая Бусечка
 
23.06.16
17:30
(20) "так, как тебе надо, 1С не умеет"
Вот именно такой ответ мне и надо было... я ужо обошла другим путём... Но за заботу - спасибо.
23 lxs
 
23.06.16
17:31
Интересно было бы узнать, каким)
Да пожалуйста) Сколько угодно)
24 Зая Бусечка
 
23.06.16
17:34
(23) Тупо. При активизации закладки - проверяю условия и делаю доступность колонки....
А если права есть - тогда уже отдельные права (например, на даты в строке) - делаю в Передначаломизменения...
25 aleks_default
 
23.06.16
17:42
Если условия не завязаны на значение в ячейке или вообще в таб.части, то нет смысла использовать события таблия\чной части. Используйте события всей формы.
26 Зая Бусечка
 
23.06.16
17:43
(25) Условий 2: на данные документа и права пользователя, и на данные в текущей строке, пытаемой редактироваться.
27 aleks_default
 
23.06.16
17:57
В строке или в ячейке?
И на то и на другое есть свои события. И "чихов" будет ровно столько сколько нужно.
28 youalex
 
23.06.16
17:59
(24) У оформления ячейки есть свойство ТолькоПросмотр
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн