Имя: Пароль:
1C
1С v8
Центрируется текущая строка в табличной части
0 Автосервис
 
07.06.19
13:05
Добрый день!
Платформа 8.3.12.1567
Есть документ с табличной частью (номенклатура, цены, количество и т.п.), есть реквизит на форме типа "надпись". Логика проста: активизируем какой-либо элемент из табличной части и в надпись выводится некая информация о выбранной  номенклатуре, динамика увеличения/снижения цены и т.п.
Изначально делал так:


&НаКлиенте
Процедура ЗапасыПриАктивизацииСтроки(Элемент)
    Элементы.ИнформацияОНоменклатуре.Заголовок = ПолучитьИнформационнуюСтроку(Элементы.Запасы.ТекущиеДанные.Номенклатура);
КонецПроцедуры


Процедура "ПолучитьИнформационнуюСтроку" выполняется на сервере. После ее внедрения 1С теперь всегда пытается спозиционировать текущую строку в центре экрана, что неочень удобно пользователям. Прочитал в СП:

Синтаксис:
ПриАктивизацииСтроки()
Примечание:
В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.

Ладно, согласен, далеко не оптимально каждый раз обращаться к серверу когда пользователь просто так тыкает по строкам. В табличную часть формы добавил еще одну колонку "ИнформацияОНоменклатуре", описал ее заполнение при открытии и обновление при редактировании строки. В итоге получилось так:


&НаКлиенте
Процедура ЗапасыПриАктивизацииСтроки(Элемент)
    Элементы.ИнформацияОНоменклатуре.Заголовок = Элементы.Запасы.ТекущиеДанные.ИнформацияОНоменклатуре;
КонецПроцедуры


Все-равно центрирует, хотя уже вроде нет серверных обращений. Если закомментировать эту строку, то центрирование исчезает. Или обращение к текущим данным и есть серверное обращение?
1 RomanYS
 
07.06.19
13:18
Посмотри описание Заголовок в СП.
Вероятно там будет:
"Изменение свойства на клиенте может потребовать обращения к серверу."
2 singlych
 
07.06.19
13:19
Изменение заголовка приводит к перерисовыванию формы, поэтому текущая строка сбрасывается. Попробуй вместо заголовка заюзать текстовый реквизит формы с элементом типа поле надписи.
3 Автосервис
 
07.06.19
13:23
(1),(2) Я понял. Спасибо за подсказку. Сейчас попробую. Отпишусь о результатах.
4 Автосервис
 
07.06.19
13:27

&НаКлиенте
Процедура ЗапасыПриАктивизацииСтроки(Элемент)
    Элементы.ИнформацияОНоменклатуре.Заголовок = "123";
КонецПроцедуры

Так не центрирует, хотя заголовок обновляется.
5 singlych
 
07.06.19
13:31
(4) Рандомные заголовки позадавай.
6 Автосервис
 
07.06.19
13:35
Спасибо за советы, помогли. Создал реквизит формы, путь к данным указал как "Элементы.Запасы.ТекущиеДанные.ИнформацияОНоменклатуре". Все нормально работает. Осталось только оформить подобающе :)
Независимо от того, куда вы едете — это в гору и против ветра!