|
СообщениеПользователю для каждой текущей строки в 8.3.13 УФ | ☑ | ||
---|---|---|---|---|
0
poddex
10.12.18
✎
07:46
|
Добрый день, уважаемые специалисты, эксперты и гости форума.
Накатал такой код Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Неверная точность. Этот показатель имеет точность " + Строка(ТекущаяСтрока.Точность) + " знаков после запятой"; Сообщение.Поле = "Объект.ТаблицаПоказателей["+Объект.ТаблицаПоказателей.Индекс(ТекущаяСтрока)+"].План"; Сообщение.Сообщить(); Для первой строки Сообщение отрабатывает КАК НАДО (подсказка-баллон вылетает в нужной ячейке, ячейка подкрашивается красным, + сообщение текстом внизу окна). А вот для остальных строк код уже не отрабатывает до конца, несмотря на то, что индекс строки исправно передается. "До конца" означает, что текст внизу формы появляется и ячейка подкрашивается красной чертой, НО подсказка-баллон не появляется совсем. Что мог сделать не так? Всем заранее спасибо. Платформа 8.3.13 УФ. |
|||
1
poddex
10.12.18
✎
07:47
|
Не пояснил - ТаблицаПоказателей - это Табличная часть документа.
|
|||
2
SleepyHead
гуру
10.12.18
✎
07:50
|
Объект.ТаблицаПоказателей.Индекс(ТекущаяСтрока)
А что у тебя в ТекущаяСтрока? И как ты получаешь ее значение? Лучше организуй цикл типа Для Сч=0 По Объект.ТаблицаПоказателей.Количество()-1 Цикл и формируй Сообщение.Поле по переменной Сч. |
|||
3
poddex
10.12.18
✎
07:55
|
Фишка придумана так: СообщениеПользователю повешено на ПриИзменении() ячейки табличной части.
Процедура ТаблицаПоказателейПланПриИзменении(Элемент) //Получаем текущую строку ТекущаяСтрока = Элементы.ТаблицаПоказателей.ТекущиеДанные; //бла-бла, операции с введенными данными //если не прошел проверку, то Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Неверная точность. Этот показатель имеет точность " + Строка(ТекущаяСтрока.Точность) + " знаков после запятой"; Сообщение.Поле = "Объект.ТаблицаПоказателей["+Объект.ТаблицаПоказателей.Индекс(ТекущаяСтрока)+"].План"; Сообщение.Сообщить(); Цикл тут не катит (по задумке). |
|||
4
poddex
10.12.18
✎
07:56
|
По идее, все правильно написано. НО НЕ РАБОТАЕТ! Отрабатывает только для первой строки. Для второй, третьей и так далее баллон не появляется :(
|
|||
5
hhhh
10.12.18
✎
08:12
|
(3) ТекущаяСтрока - это не индекс, а идентификатор строки.
|
|||
6
poddex
10.12.18
✎
08:16
|
Объект.ТаблицаПоказателей.Индекс(ТекущаяСтрока) - в отладчике Индекс отсюда получается правильно.
|
|||
7
hhhh
10.12.18
✎
08:21
|
(6) ну инргда совпадает. Но если вдруг пользоватедь удалит строку или поменяет их местами, вас ждет засада. Поэтому лучше сразу выкинуть этот ваш быдлокод и делать правильно.
|
|||
8
poddex
10.12.18
✎
08:26
|
Поэтому лучше сразу выкинуть этот ваш быдлокод и делать правильно.
Ок, понял. Вопрос в другом - я проверял раз 10, каждый раз индекс выводился верно - но баллон все равно не выводится. Вопрос - почему не выводится баллон? Индекс теряется по пути к Клиенту, баг? У меня других предположений уже нет. Ведь для первой строки работает правильно. Не работает для остальных, хотя все то же самое. |
|||
9
poddex
10.12.18
✎
08:31
|
Есть еще такой момент. Иногда, после перезапуска Клиента, этот же код отрабатывает тоже неверно, но по-другому: баллон вылетает не в ячейке ввода, как должен, а в заголовке колонки (вне зависимости от номера строки). Так бывает раз в 2-3 запуска Клиента.
Короче, волшебная ботва, видимо, ошибка. Ну или не могу свою ошибку в коде. |
|||
10
D3O
10.12.18
✎
09:55
|
(2) не правильный подход. индекс строки в УФ - это не номер по порядку. в процессе редактирования он может очень сильно перекашиваться.
правильнее Для каждого ... Цикл и вот как и в (0) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |