Имя: Пароль:
1C
 
ТабличнаяЧасть Документа - Как передать фокус нужному столбцу?
0 AleksandrKulik
 
03.09.18
15:37
Здравствуйте.
Работаю с табличной частью документа. При выборе в первой колонке нужного адреса абонента в зависимости от типа абонента  остальные столбцы в строке табличной части подтягиваются из среза последних из РС... Это реализовано и работает нормально. Но есть тип абонентов при котором все столбцы будут с нулями, а заполнить нужно только последние две колонки в строке табличной части ПоказаниеСчетчика и Тариф (предполагается ввод в ручную оператором). Уперся в то что не знаю как передать программно фокус в уже выбранной строке ТЧ к нужному мне столбцу ("ПоказаниеСчетчика") таким образом, чтобы поле было не просто подсвечено как выбранное, а уже выбрано для ввода значения (нужный эффект при работе достигается двойным кликом на ячейке)?

Помогите пожалуйста кто знает, я уже пару дней ищу и безрезультатно...
1 Малыш Джон
 
03.09.18
16:03
(0) если уж нужно ткнуть пользователя куда и что ему вводить, я обычно список значений формирую и через ВыбратьИзСписка() пользователя тыкаю в нужное место формы.
2 AleksandrKulik
 
03.09.18
16:41
(1) Не подойдет... Объем ввода у оператора большой, и важна скорость ввода. Однотипных Ситуаций с абонентами у меня всего пять, четыре типа уже вводятся как надо без проблем причем буквально двумя кликами мыши из выпадающего списка, осталась последняя пятая ситуация где нужно именно передача фокуса нужной колонке в редактируемой строке и активация этой ячейки до готовности ввода значения.

То есть оператор кликнул по галочке - выбрал в списке адрес и сразу ввел цыфры показаний счетчика, все значения подставились автоматом кроме значений счетчика, и здесь реально для скорости работы нужно это реализовать.

:-(((
3 hhhh
 
03.09.18
16:59
(2) ну, Элементы.ВашеТабполе.ТекущаяКолонка = ТомуТо;
4 dmt
 
03.09.18
17:11
+ к (3), только .ТекущийЭлемент = ПолеВвода1
У ПоляВвода1 свойство Режим редактирования = Вход при вводе
5 AleksandrKulik
 
03.09.18
19:58
(3) Ну прописал как вы предлагаете ...
в моем случае будет так:
Элементы.ТабличнаяЧасть1.ТекущаяКолонка = Qов;
где:
ТабличнаяЧасть1 - ТЧ документа;
Qов - реквизит этой табличной части
(это и есть "ПоказаниеСчетчика")

при проверке выводит

{Документ.Начисление.Форма.ФормаДокумента.Форма(61,46)}: Переменная не определена (Qов)
            Элементы.ТабличнаяЧасть1.ТекущаяКолонка = <<?>>Qов; (Проверка: Тонкий клиент)

(4) свойство Режим редактирования = Вход при вводе установлен.
6 AleksandrKulik
 
03.09.18
20:01
Вообщем не выходит....

Вот целиком процедура на всякий случай для лучшего представления ситуации:

&НаКлиенте
Процедура ТабличнаяЧасть1ЛокацияПриИзменении(Элемент)
    // проверяем как считаем по счетчику или по площади
    СтрокаТабличнойЧасти = Элементы.ТабличнаяЧасть1.ТекущиеДанные;
    Объект.Сч = Ложь;
    Если ПолучИзРСКоэф.ПроверкаСпособаРасчета(Объект.Дата, СтрокаТабличнойЧасти.Локация)
        Тогда
            // значит в РС СпоНач значение ресурса ПоПлощади стоит галочка, т.е. значение Истина.
            ПлощадьОтапливаемая = ПолучИзРСКоэф.ПолучитьПоследнийПлощадь (Объект.Дата, СтрокаТабличнойЧасти.Локация);
            //Сообщить ("Отапливаемая площадь = " + ПлощадьОтапливаемая + " м2;");
            НОТ = 0.11082 * ПлощадьОтапливаемая / 12;
            //Сообщить ("ГКАЛ = " + НОТ + ";");
            Если ПолучИзРСКоэф.ПроверкаСпособаРасчета2(Объект.Дата, Объект.НазваниеАбонента)
                
                Тогда
                    // этот блок для формулы по начислению бюджетникам и юрлицам по площади
                    СтрокаТабличнойЧасти.Qb    = ПолучИзРСКоэф.ПолучитьПоследнийQ(Объект.Дата, СтрокаТабличнойЧасти.Локация);
                    СтрокаТабличнойЧасти.T     = ПолучИзРСКоэф.ПолучитьПоследнийT(Объект.Дата, СтрокаТабличнойЧасти.Локация);
                    СтрокаТабличнойЧасти.tвн   = ПолучИзРСКоэф.ПолучитьПоследнийtвн(Объект.Дата, СтрокаТабличнойЧасти.Локация);
                    СтрокаТабличнойЧасти.tфнв  = ПолучИзРСКоэф.ПолучитьПоследнийtфнв(Объект.Дата, СтрокаТабличнойЧасти.Локация);
                    СтрокаТабличнойЧасти.tрнв  = ПолучИзРСКоэф.ПолучитьПоследнийtрнв(Объект.Дата, СтрокаТабличнойЧасти.Локация);
                                        
                    СтрокаТабличнойЧасти.Qов   = СтрокаТабличнойЧасти.Qb*((СтрокаТабличнойЧасти.tвн-СтрокаТабличнойЧасти.tфнв)/(СтрокаТабличнойЧасти.tвн-СтрокаТабличнойЧасти.tрнв))*СтрокаТабличнойЧасти.T;
                    СтрокаТабличнойЧасти.Тариф = ПолучИзРСКоэф.ПолучитьПоследнийТариф(Объект.Дата, СтрокаТабличнойЧасти.Локация);
                    СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Qов * СтрокаТабличнойЧасти.Тариф;
                Иначе
                    // этот блок для формулы по начислению населению по площади
                    СтрокаТабличнойЧасти.Qb    = 0.00;
                    СтрокаТабличнойЧасти.T     = 0.0;
                    СтрокаТабличнойЧасти.tвн   = 0.0;
                    СтрокаТабличнойЧасти.tфнв  = 0.0;
                    СтрокаТабличнойЧасти.tрнв  = 0.0;
                    СтрокаТабличнойЧасти.Qов   = 0.11082*ПлощадьОтапливаемая/12;
                    СтрокаТабличнойЧасти.Тариф = ПолучИзРСКоэф.ПолучитьПоследнийТариф(Объект.Дата, СтрокаТабличнойЧасти.Локация);
                    СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Qов * СтрокаТабличнойЧасти.Тариф;

            КонецЕсли;
    Иначе
            // значит в РС СпоНач значение ресурса ПоПлощади не стоит галочка, т.е. значение Ложь. Значит считаем по счетчику.
            Объект.Сч = Истина;
            СтрокаТабличнойЧасти.Qb   = 0.00;
            СтрокаТабличнойЧасти.T    = 0.0;
            СтрокаТабличнойЧасти.tвн  = 0.0;
            СтрокаТабличнойЧасти.tфнв = 0.0;
            СтрокаТабличнойЧасти.tрнв = 0.0;
            СтрокаТабличнойЧасти.Qов  = 0.00;
            СтрокаТабличнойЧасти.Тариф = ПолучИзРСКоэф.ПолучитьПоследнийТариф(Объект.Дата, СтрокаТабличнойЧасти.Локация);
            СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Qов * СтрокаТабличнойЧасти.Тариф;
            //ПолучИзРСКоэф.ПереходКQов();
            Элементы.ТабличнаяЧасть1.ТекущаяКолонка = Qов;
            

    КонецЕсли;

    Объект.ИнфОБюджете = Лев(ПолучИзРСКоэф.ТипБюджета(Объект.Дата, Объект.НазваниеАбонента),1);
    Объект.СоздалПользователь = ПодстЗначений.ПолучТекущПольз ();
    
КонецПроцедуры
7 dmt
 
03.09.18
20:24
(6) Элементы.<ИмяТаблицы>.ТекущийЭлемент = Элементы.<ИмяПоляВвода>
8 AleksandrKulik
 
03.09.18
23:57
(7) Спасибо! Получилось... но столько времени вокруг да около бродил...Работает в таком виде
Элементы.ТабличнаяЧасть1.ТекущийЭлемент = Элементы.ТабличнаяЧасть1Qов;