Имя: Пароль:
1C
1С v8
ПриАктивизацииПоля, УФ
0 rowvg
 
naïve
05.10.20
09:04
У документа есть табличная часть ОтработанныеЧасы. Мне надо при активизации поля в табличной части получать его значение чтобы потом сравнивать с отредактированным. Делаю вот так:

&НаКлиенте
Процедура ОтработанныеЧасыПриАктивизацииПоля(Элемент)
    ИмяТекущегоЭлемента = Элемент.ТекущийЭлемент.Имя;
    Если ИмяТекущегоЭлемента <> "ОтработанныеЧасыНомерСтроки" Тогда
        ЗначениеПоля = Элемент.ТекущиеДанные[ИмяТекущегоЭлемента];
    КонецЕсли;
КонецПроцедуры

Все бы хорошо, но обработчик ПриАктивизацииПоля вызывается и при открытии формы документа и Элемент.ТекущийЭлемент.Имя возвращает "ОтработанныеЧасыНомерСтроки", а не имя данных активной колонки. Приходится выкручиваться проверкой Если ИмяТекущегоЭлемента <> "ОтработанныеЧасыНомерСтроки" Тогда ...  Но как - то очень некрасиво это выглядит.

Подскажите, пожалуйста, как правильно получить значение поля при его активизации?
1 Fish
 
05.10.20
09:13
Используй ПриАктивизацииЯчейки
2 Fish
 
05.10.20
09:16
(1) А вообще, обработчик всё правильно тебе возвращает.
3 rowvg
 
naïve
05.10.20
09:22
(1) ПриАктивизацииЯчейки происходит все в точности так, и при ПриАктивизацииПоля. Никаких отличий.

Я и не говорю что неправильно. Мне непонятно какой обработчик задействовать, чтобы получать значение ячейки табличного документа по имени колонки, в которой эта ячейка находится?
4 rowvg
 
naïve
05.10.20
09:40
Еще вопрос: какой обработчик вызывается при потере ячейкой фокуса?
5 Fedor-1971
 
05.10.20
10:24
(0) Несколько неправильный подход, более корректный:
ПередНачаломИзменения (или ПриНачалеРедактирования) - пишем в структуру все контролируемые данные (Номенклатура, Количество, Цена, НДС или что там нужно)
ПриОкончанииРедактирования - проверяем чего наисправляли


Событие Активизации ячейки ТЧ в раскладе Контроля изменений не лучший вариант т.к. строка редактируется целиком, ты запомнил данные, например, Количества, а изменили Количество и Цену.
Кроме того, активация строки/ячейки при переключении вкладок на форме не изменяется, что то же иногда вызывает проблемы

(4) нет такого
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн