Вход | Регистрация

1С:Предприятие ::

Метки: 

ТабличнаяЧасть Документа - Как передать фокус нужному столбцу?

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

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

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

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

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

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

(4) свойство Режим редактирования = Вход при вводе установлен.
   AleksandrKulik
 
6 - 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);
    Объект.СоздалПользователь = ПодстЗначений.ПолучТекущПольз ();
    
КонецПроцедуры
   dmt
 
7 - 03.09.18 - 20:24
(6) Элементы.<ИмяТаблицы>.ТекущийЭлемент = Элементы.<ИмяПоляВвода>
   AleksandrKulik
 
8 - 03.09.18 - 23:57
(7) Спасибо! Получилось... но столько времени вокруг да около бродил...Работает в таком виде
Элементы.ТабличнаяЧасть1.ТекущийЭлемент = Элементы.ТабличнаяЧасть1Qов;


Список тем форума
Рекламное место пустует Рекламное место пустует
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует