1с установить курсор на строке таблицы
Есть проблема с установкой курсора на нужную строку в таблице управляемой формы (ТаблицаФормы - данные находятся в реквизите формы типа ТаблицаЗначений), проблема в том что для изменения некоторых полей(колонок) таблицы в коде прописано :
СтрИсх= ТаблицаФормы.ТекущаяСтрока;
ТаблицаЗначений=ДанныеФормыКоллекция.Выгрузить();
манипуляции с полученной ТаблицейЗначений
ДанныеФормыКоллекция.Загрузить(ТаблицаЗначений);
ТаблицаФормы.ТекущаяСтрока= СтрИсх ;
и курсор естественно перескакивает на 1 запись. (без манипуляций с ТаблицаФормы.ТекущаяСтрока), но к примеру он стоял на 2-й, тогда все не очень хорошо получается . Манипуляции со свойством ТаблицаФормы.ТекущаяСтрока=СтрИсх ни к чему не приводят, в этом случае курсора строки просто нет.
вот фрагмент кода на сервере:
НашаТаблицаЗначений = ГлавнаяТаблицаЗначений [ Элементы . ГлавнаяТаблицаЗначений . ТекущаяСтрока ] . НашаТаблицаЗначений . Выгрузить ( ) ;СтрокаВсеОрганизации = НашаТаблицаЗначений . Найти ( ПоВсемПредставление ( ) , "Организация" ) ;
Если СтрокаВсеОрганизации < > Неопределено Тогда
Для каждого Колонка Из НашаТаблицаЗначений . Колонки Цикл
Если ТипЗнч ( СтрокаВсеОрганизации [ Колонка . Имя ] ) = Тип ( "Булево" ) и СтрокаВсеОрганизации [ Колонка . Имя ] Тогда
НашаТаблицаЗначений . ЗаполнитьЗначения ( Ложь , Колонка . Имя ) ;
СтрокаВсеОрганизации [ Колонка . Имя ] = Истина ;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
поз = Элементы . НашаТаблицаЗначений . ТекущаяСтрока ;
ГлавнаяТаблицаЗначений [ Элементы . ГлавнаяТаблицаЗначений . ТекущаяСтрока ] . НашаТаблицаЗначений . Загрузить ( НашаТаблицаЗначений ) ;
Элементы . НашаТаблицаЗначений . ТекущаяСтрока = поз ;
Дело в том, что таблица, которая в форме, элемент формы, и таблица, которая в реквизите (ДанныеФормыКоллекция) - это разные таблицы. Это две разные коллекции.
Они, конечно, однозначно связаны между собой. То есть зная строку одной таблицы можно получить соответствующую ей строку другой таблицы.
Но эта связь не такая, как вы ее себе представляете:
ГлавнаяТаблицаЗначений [ Элементы . ГлавнаяТаблицаЗначений . ТекущаяСтрока ]ТекущаяСтрока у таблицы в форме это не индекс таблицы в реквизите.
Эти две таблицы связаны через Идентификатор.
У таблицы в форме идентификатор можно получить как раз через текущую строку:
Идентификатор = Элементы . ГлавнаяТаблицаЗначений . ТекущаяСтрока ;У таблицы в реквизите (ДанныеФормыКоллекция) есть метод НайтиПоИдентификатору(Идентификатор), который вернет вам строку, соответствующую текущей строке в таблице формы.
В обратную сторону аналогично. Если вы знаете строку у таблицы в реквизите, вы можете найти (или установить курсор на) строку, соответствующую ей в таблице в форме.
У строки таблицы в реквизите (ДанныеФормыЭлементКоллекции) есть метод ПолучитьИдентификатор():
Идентификатор = СтрокаГлавнойТаблицыЗначений . ПолучитьИдентификатор ( ) ;А у таблицы в форме - известное уже свойство ТекущаяСтрока:
Элементы . ГлавнаяТаблицаЗначений . ТекущаяСтрока = Идетнификатор ;Таким образом перед выполнением манипуляций вам нужно узнать, какая строка в таблице реквизита соответствует текущей строке в таблице формы. Каким-то образом запомнить, что это за строка.
После выполнения манипуляций в таблице реквизита вам нужно найти эту запомненную строку, получить ее идентификатор и таблице в форме сказать, что ее текущая строка должна быть равна этому идентификатору.
1. создал обычный документ-список "Талоны" с несколькими реквизитами.
2. На форму скинул табличное поле.
3. присвоил полю источник
4. все работает, показывает список документов. Отлично.
5. Понадобилось по кнопке перевести курсор в табличном поле
с текущей строки на следующую, чтоб записать туда текущие данные
колонки "Вес".
И вот тут - что не делал- никак!!
Конешно, можно пронумеровать, отсортировать, и поиском по номеру
устанавливать.
Однако это не подходит, потому что нужно переводить курсор именно
по строкам табличного поля в текущем порядке.
Помощь в написании контрольных, курсовых и дипломных работ здесь
Программно передвинуть курсор в Edit
Всем привет, пишу программу на WinApi. Мне нужно программно передвинуть курсор в Edit (как в.
Как перевести курсор в файле на следующую строку (ifstream)?
как перевести курсор в файле на следующую строку при работе с потоком ifstream?
Поле со списком: как программно установить курсор на первой записи
Народ подскажите, как программно установить курсор на первой записи поля со списком
Попробуйте такой код (вместо Тз подставьте имя вашей таблицы):
Выдает ошибку:
<Документ.МаршрутныеЛисты_d_op_ml.Форма.ФормаВедущая.Форма(1 01)>: Преобразование значения к типу Число не может быть выполнено
ЭлементыФормы.Талоны.ТекущаяСтрока = ИндексТекСтр + 1;
Добавлено через 10 минут
Mikolamail, попробовал Ваш вариант.
Выдает ошибку:
<Документ.МаршрутныеЛисты_d_op_ml.Форма.ФормаВедущая.Форма(1 01)>: Преобразование значения к типу Число не может быть выполнено
ЭлементыФормы.Талоны.ТекущаяСтрока = ИндексТекСтр + 1;
Это наверное потому, что у меня все реквизиты документа созданы в самом документе
а не в табличной части документа. Она в данном случае пустая.
Читайте также: