Имеется форма обработки с Таблицей значения которая заполнена данными, строк в ней максимум до 100, с периодичностью в 10 сек. данные в ТЗ обновляются процедурой ПолучитьСравнитьУстановитьЗначение(), которая вызывается из ПроцедурыНаКакуюНужноОбратитьВнимание (). Проблема в следующем:
Есть глобальная переменная гпМодифицированно, с помощью которой я узнаю модифицировалась ли ТЗ или нет (1 - Модифицирована, 0 - Нет) и если ТЗ модифицированна то я ее сортирую и устанавливаю строку туда на каком месте (а точнее Справочнике) она стояла, а если не модифицирована - не вижу смысла применения ТЗ.ТекущаяСтрока(). В таком варрианте ТекущаяСтрока() всегда стает 1. Почему, если ПолучитьСтрокуПоНомеру() нигде не применяется ?
Причиной "нехотения" применения метода ТекущаяСтрока() когда гпМодифицированно = 0 является то, что при позиционировании Форма "потпрыгивает" (Строка ТЗ устанавливается по центру экрана), хотел бы это обойти в случае когда модификация ТЗ не происходит. Код ниже:
Процедура ПолучитьСравнитьУстановитьЗначение(прСтрока,прКолонка, прЗначение)
лпНовЗначение = прЗначение;
лпЗначение = ТЗ.ПолучитьЗначение(прСтрока,прКолонка);
Если лпНовЗначение <> лпЗначение Тогда
ТЗ.УстановитьЗначение(прСтрока,прКолонка,лпНовЗначение);
гпМодифицированно = 1;
КонецЕсли;
КонецПроцедуры
Процедура НаКакуюНужноОбратитьВнимание ()
гпМодифицированно = 0;
лпСтрока = ТЗ.ТекущаяСтрока();
Если ТЗ.КоличествоСтрок() > 0 Тогда
лпЗнач = ТЗ.ПолучитьЗначение(лпСтрока,"НекийСправочник");
КонецЕсли;
лпСпр = СоздатьОбъект "Справочник.НекийСправочник";
лпСпр.ВыбратьЭлементы();
Пока лпСпр.ПолучитьЭлемент() = 1 Цикл
лпСтр = "";
Если ТЗ.НайтиЭлемент(лпСпр.ТекущийЭлемент(),лпСтр,"НекийСправочник") = 1 Тогда
ПолучитьСравнитьУстановитьЗначение(лпСтр,"НекаяКолонка", лпСпр.НекийРеквизит);
Иначе
ТЗ.НоваяСтрока();
ТЗ.НекийСправочник = лпСпр.ТекущийЭлемент();
ПолучитьСравнитьУстановитьЗначение(ТЗ.КоличествоСтрок(),"НекаяКолонка", лпСпр.НекийРеквизит);
КонецЕсли;
КонецЦикла
Если гпМодифицированно = 1 Тогда
ТЗ.Сортировать("НекийСправочник");
лпСтр = "";
лпТекСтрока = лпСтрока;
Если ТипЗначенияСтр(лпЗнач) = "Справочник" Тогда
лпСпр.НайтиЭлемент(лпЗнач);
Если ТЗ.НайтиЗначение(лпСпр.ТекущийЭлемент(),лпСтр,"НекийСправочник") = 1 Тогда
Если лпСтрока <> лпСтр Тогда
лпСтрока = лпСтр;
КонецЕсли;
КонецЕсли;
КонецЕсли;
лпСтрока = ?(лпСтрока=0,ТЗ.КоличествоСтрок(),лпСтрока);
Если лпТекСтрока <> лпСтрока Тогда
ТЗ.ТекущаяСтрока(лпСтрока);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)