Наша команда имеет несколько действующих проектов. Мы оказываем следующие услуги:   Разработка программного обеспечения. Также обслуживаем и автоматизируем программы на платформе 1С. Сайт проекта: moscowsoft.com Разработка графического дизайна: дизайн сайтов, продукции, упаковки, визитки, журналы. Смотрите сайт проекта. Оказание услуг по оформлению праздников и мероприятий: designvanilla.ru.

 

You are hereКак установить курсор на необходимую строку 1C 8.2

Как установить курсор на необходимую строку 1C 8.2


Есть проблема с установкой курсора на нужную строку в таблице управляемой формы (ТаблицаФормы - данные находятся в реквизите формы типа ТаблицаЗначений), проблема в том что для изменения некоторых полей(колонок) таблицы в коде прописано :

 

СтрИсх= ТаблицаФормы.ТекущаяСтрока;

ТаблицаЗначений=ДанныеФормыКоллекция.Выгрузить();

...

манипуляции с  полученной ТаблицейЗначений

...

ДанныеФормыКоллекция.Загрузить(ТаблицаЗначений);

ТаблицаФормы.ТекущаяСтрока= СтрИсх ;

 

и курсор естественно перескакивает на 1 запись....(без манипуляций с ТаблицаФормы.ТекущаяСтрока), но к примеру он стоял на 2-й, тогда все не очень хорошо получается . Манипуляции со свойством ТаблицаФормы.ТекущаяСтрока=СтрИсх ни к чему не приводят, в этом случае курсора строки просто нет.

 

вот фрагмент кода на сервере:

 

НашаТаблицаЗначений= ГлавнаяТаблицаЗначений[Элементы.ГлавнаяТаблицаЗначений.ТекущаяСтрока].НашаТаблицаЗначений.Выгрузить();
   
    СтрокаВсеОрганизации=НашаТаблицаЗначений.Найти(ПоВсемПредставление(), "Организация");
    Если СтрокаВсеОрганизации<>Неопределено Тогда
        Для каждого Колонка Из НашаТаблицаЗначений.Колонки Цикл
            Если ТипЗнч(СтрокаВсеОрганизации[Колонка.Имя])= Тип("Булево") и СтрокаВсеОрганизации[Колонка.Имя] Тогда
                НашаТаблицаЗначений.ЗаполнитьЗначения(Ложь, Колонка.Имя);
                СтрокаВсеОрганизации[Колонка.Имя]=Истина;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;          
поз=Элементы.НашаТаблицаЗначений.ТекущаяСтрока;
ГлавнаяТаблицаЗначений[Элементы.ГлавнаяТаблицаЗначений.ТекущаяСтрока].НашаТаблицаЗначений.Загрузить(НашаТаблицаЗначений);
Элементы.НашаТаблицаЗначений.ТекущаяСтрока=поз;

Дело в том, что таблица, которая в форме, элемент формы, и таблица, которая в реквизите (ДанныеФормыКоллекция) - это разные таблицы. Это две разные коллекции.

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

Но эта связь не такая, как вы ее себе представляете:

ГлавнаяТаблицаЗначений[Элементы.ГлавнаяТаблицаЗначений.ТекущаяСтрока]

ТекущаяСтрока у таблицы в форме это не индекс таблицы в реквизите.

 

Эти две таблицы связаны через Идентификатор.

У таблицы в форме идентификатор можно получить как раз через текущую строку:

Идентификатор = Элементы.ГлавнаяТаблицаЗначений.ТекущаяСтрока;

У таблицы в реквизите (ДанныеФормыКоллекция) есть метод НайтиПоИдентификатору(Идентификатор), который вернет вам строку, соответствующую текущей строке в таблице формы.

В обратную сторону аналогично. Если вы знаете строку у таблицы в реквизите, вы можете найти (или установить курсор на) строку, соответствующую ей в таблице в форме.

У строки таблицы в реквизите (ДанныеФормыЭлементКоллекции) есть метод ПолучитьИдентификатор():

Идентификатор = СтрокаГлавнойТаблицыЗначений.ПолучитьИдентификатор();

А у таблицы в форме - известное уже свойство ТекущаяСтрока:

Элементы.ГлавнаяТаблицаЗначений.ТекущаяСтрока = Идетнификатор;

 

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

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

Реклама

 

 

 Стоматологическое оборудование и расходные материалы