установить текущую строку таблицы формы 1с управляемые формы

Использование свойства Текущая строка 1С

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

Применение свойства Текущая строка 1С

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

Изменение текущей строки таблицы

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

Пример 1. Для динамического списка справочника Номенклатура, создать процедуру изменяющую текущую строку списка. В качестве новой текущей строки, использовать ссылку на элемент справочника, переданную в параметре.

Заметим, что если строки с указанной ссылкой не будет найдена в таблице формы, то свойство ТекущаяСтрока примет значение Неопределено. Что означает отсутствие текущей строки таблицы.

Получение строки источника

Так как свойство ТекущаяСтрока является идентификатором, его можно использовать в качестве параметра метода НайтиПоИдентификатору. При помощи данного метода можно получить строку источника таблицы формы (нельзя использовать для динамического списка). Так как строку источника можно искать и использовать не только на клиенте, но и на сервере, это дает некоторое преимущество, над свойством таблицы формы ТекущиеДанные.

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

Источник

Табличное поле

Как установить текущую строку в табличном поле?

Схема программной установки нужной нам строки активной.
Для начала хочу напомнить, что данные табличной части документа(или таблицы значений) и табличное поле – это разные объекты. Для того чтобы сделать какие-то визуальные действия мы работаем с табличным полем. В данном случае, мы будем использовать его свойство «ТекущаяСтрока», как раз оно и отвечает за то, какая строка активна.
Чтобы выделить в табличном поле необходимую нам строку понадобится два шага:
1. Найти нужную нам строку в объекте данных которые отображает табличное поле
Подчеркну что здесь понадобиться именно объект данных. Например, у нас имеется документ РеализацияТоваровУслуг у которого есть табличная часть «Товары» и мы решили сделать активной 2-ю строку на форме документа. Тогда в модуле формы документа мы напишем:
Код 1C v 8.х
Или мы знаем, что во второй строке в колонке Номенклатура у элемента Код равен «001» тогда мы используем конструкцию:
Код 1C v 8.х
2. Установить значением текущей строки найденную строку
Теперь нам нужно присвоить значение переменной НужнаяСтрока свойству табличного поля ТекущаяСтрока:
Код 1C v 8.х
Или
Код 1C v 8.х
В итоге строки кода могут выглядеть вот так:
Код 1C v 8.х

Информация взята с сайта http://helpf.pro

установить текущую строку таблицы формы 1с управляемые формы. Смотреть фото установить текущую строку таблицы формы 1с управляемые формы. Смотреть картинку установить текущую строку таблицы формы 1с управляемые формы. Картинка про установить текущую строку таблицы формы 1с управляемые формы. Фото установить текущую строку таблицы формы 1с управляемые формы

г. Москва, 115280, ул. Ленинская Слобода, д. 21, к. 1, этаж 2

Источник

Установить текущую колонку в таблице управляемой формы

Всем привет!
Создал программно таблицу на форме. Добавил колонки. (колонок много)
Теперь, если удаляю колонку, начиная с конца, после удаления колонки происходит активизация самой первой колонки в таблице формы, а хотелось бы, что бы курсор оставался на предыдущей колонке.

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

Вот фрагмент удаления колонки:

мТЗ = РеквизитФормыВЗначение(«Характеристики», Тип(«ТаблицаЗначений»));

Если 1=0 Тогда
мТЗ = Новый ТаблицаЗначений;
КонецЕсли;

МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(«Характеристики.» + УдаляемаяКолонка);
ИзменитьРеквизиты(, МассивРеквизитов);
ЗначениеВРеквизитФормы(мТЗ, «Характеристики»);

Проблема с полосой прокрутки. Она уходит к первой колонке и пользователь заново прокручивает мышкой к нужной колонке.

Понимаю. Опишу:
Таблица формы создана программно. Колонок +50.
Далее пользователь удаляет ненужные колонки, активируя любую строку в удаляемой колонке.

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

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

а не возможно понять, какую колонку будет удалять пользователь.
Пользователю выводится перечень доп.реквизитов, которые будут использоваться в справочнике. Далее пользователь сам удаляет ненужные колонки. В оставшиеся колонки загружаются значения и все это сохраняется к справочнику в доп реквизиты.

Почему сделано таблицей? Потому что строк может быть тоже много, типа пакетного редактора реквизитов

Разобрался как позиционировать полосу прокрутки:

Именно если устанавливать свойство АктивироватьПоУмолчанию, пр иперерисовки формы, полоса прокрутки сама перемещается к нужной колонке.

В примере я перемещаю полосу прокрутки к необходимой мне колонке. дальше дело техники. определять номер соседней колонки у удаляемой и делать ее активной.

Источник

Программирование в 1С для всех

В предыдущей статье мы узнали, как настраивать и конфигурировать табличные части объектов 1С 8.3. В этой статье мы изучим некоторые вопросы программной работы с табличными частями 1С.

Заполнение табличной части 1С 8.3

Очень часто встречается задача заполнить табличную часть какими-нибудь значениями, например результатом выполнения запроса. Для демонстрации реализуем пример, в котором выполняется заполнение табличной части. Сделаем небольшую учебную задачу: будем заполнять табличную часть документа всей номенклатурой, которая не помечена на удаление. Количество при этом будет равно 1. Для заполнения табличной части документа нам необходимо работать с одноименной таблицей реквизита Объект, который является основным реквизитом управляемой формы.

установить текущую строку таблицы формы 1с управляемые формы. Смотреть фото установить текущую строку таблицы формы 1с управляемые формы. Смотреть картинку установить текущую строку таблицы формы 1с управляемые формы. Картинка про установить текущую строку таблицы формы 1с управляемые формы. Фото установить текущую строку таблицы формы 1с управляемые формы

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

установить текущую строку таблицы формы 1с управляемые формы. Смотреть фото установить текущую строку таблицы формы 1с управляемые формы. Смотреть картинку установить текущую строку таблицы формы 1с управляемые формы. Картинка про установить текущую строку таблицы формы 1с управляемые формы. Фото установить текущую строку таблицы формы 1с управляемые формы

Исполнение команды будет выполняться в серверном контексте, поскольку объект Запрос не работает в клиентском контексте на тонком клиенте.

При обходе запроса, я использую метод Добавить табличной части объекта (вообще это метод объекта, который имеет тип ДанныйФормыКоллекция, именно в этот тип преобразуется табличная часть документа-объекта, при создании на сервере). Данный метод является функцией, которая создаёт и возвращает новую строку.

Обратите внимание, поскольку при обходе запроса и заполнения новой строки, я использую метод ЗаполнитьЗначенияСвойств, то поля в запросе должны называться так же, как и поля табличной части.

Очистка табличной части документа 1С 8.3

Если мы реализуем данный код, то он будет не совсем корректен: каждый раз при выполнении этого кода будут добавляться новые строки, а вполне возможно, что пользователю старые строки не нужны. Поэтому, будем очищать имеющиеся строки, перед добавлением новых строк. Для этого воспользуемся методом Очистить объекта СписокТоваров, который имеет тип ДанныйФормыКоллекция.

После выполнения этого метода вся табличная часть будет очищена.

Текущая строка табличной части 1С 8.3

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

установить текущую строку таблицы формы 1с управляемые формы. Смотреть фото установить текущую строку таблицы формы 1с управляемые формы. Смотреть картинку установить текущую строку таблицы формы 1с управляемые формы. Картинка про установить текущую строку таблицы формы 1с управляемые формы. Фото установить текущую строку таблицы формы 1с управляемые формы

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

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

установить текущую строку таблицы формы 1с управляемые формы. Смотреть фото установить текущую строку таблицы формы 1с управляемые формы. Смотреть картинку установить текущую строку таблицы формы 1с управляемые формы. Картинка про установить текущую строку таблицы формы 1с управляемые формы. Фото установить текущую строку таблицы формы 1с управляемые формы

Для того, чтобы отработать изменение текущего поля цены, создадим обработчик события ПриИзменении этого поля.

установить текущую строку таблицы формы 1с управляемые формы. Смотреть фото установить текущую строку таблицы формы 1с управляемые формы. Смотреть картинку установить текущую строку таблицы формы 1с управляемые формы. Картинка про установить текущую строку таблицы формы 1с управляемые формы. Фото установить текущую строку таблицы формы 1с управляемые формы

В этом обработчике напишем код, который будет пересчитывать значения полей текущей строки табличной части.

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

Теперь доработаем этот пример: после увеличения текущей строки будем сдвигать текущую строку на строку вниз. Для этого допишем предыдущий код:

В этом коде мы получаем идентификатор текущий строки при помощи свойства таблицы управляемой формы ТекущаяСтрока, и если мы не выходим за приделы таблицы, то сдвигаем нашу текущую строку на один шаг вниз.

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

В этом коде мы используем метод НайтиПоИдентификатору переменной Объект.СписокТоваров, которая имеет типа ДанныйФормыКоллекция, этот метод получает элемент коллекции по указанному идентификатору. Если этот элемент найден, то мы можем с ними работать, причем данные на форме изменяться автоматически.

Обход табличной части 1С

Часто возникают задачи обойти табличную часть и изменить какие-либо значения в столбцах. В предыдущих примерах мы изменяли текущую стоку таблицы, теперь реализуем пример, когда нужно изменить все строки. В этом случае нет необходимости обращаться к элементам формы, можно работать напрямую с основным реквизитом Объект.

Остальные статьи по теме конфигурирования в 1С:

Более подробно и основательно конфигурирование в 1С дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

установить текущую строку таблицы формы 1с управляемые формы. Смотреть фото установить текущую строку таблицы формы 1с управляемые формы. Смотреть картинку установить текущую строку таблицы формы 1с управляемые формы. Картинка про установить текущую строку таблицы формы 1с управляемые формы. Фото установить текущую строку таблицы формы 1с управляемые формы

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Промо-код на скидку в 15% — 48PVXHeYu

Источник

ОБРАБОТКИ.com

Управляемая форма 1С 8.2 – работа с таблицей на форме (управление текущей строкой, перемещение и удаление элементов)

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

Задача: реализовать две команды КурсорВверх и КурсорВниз, которые соответственно перемещают ТекущуюСтроку(Курсор) на предыдущую(следующую) строку.

Исходные данные: управляемая форма, ТЗОбъект — реквизит формы типа ТаблицаЗначений(конечно же правильней говорить о типе который моделирует Таблицу значений, а именно ДанныеФормыКоллекция), которая отображается на форме при помощи элемента формы ТЗОбъект типа Таблица(Не путать с одноименным реквизитом формы!). Предполагается, что ДанныеФормыКоллекция содержит некоторые данные, внесенные вручную или программно. Добавляем пару команд и пишем код, реализующей нужные действия, комментарии я дам ниже.

Теперь давайте разберемся что здесь к чему. Во первых следует уяснить, что ДанныеФормыКоллекция и Таблица формы это два совершенно разных объекта. Первый содержит данные, а второй является контейнером для их отображения. Элементы.ТЗОбъект.ТекущиеДанные предоставляет доступ к данным текущей строки и имеет тип ДанныеФормыЭлементКоллекции, он доступен только для чтения. С помощью метода Индекс(Элементы.ТЗОбъект.ТекущиеДанные) мы получаем индекс текущего элемента коллекции, далее осуществляем проверку выхода за границы коллекции. После чего с помощью метода ПолучитьИдентификатор() получаем идентификатор следующего(предыдущего) элемента коллекции и присваиваем его свойству Таблицы формы ТекущаяСтрока, которое как раз и содержит идентификатор текущей строки таблицы(на которую установлен курсор). Вот такая нетривиальная связь между вышеупомянутыми объектами.
Реализуем ещё несколько полезных команд: удаление текущего элемента, перемещение текущего элемента вверх(вниз). Несмотря на то, что эти команды являются стандартными(для объекта Таблица) и поддерживаются на уровне самой платформы, их альтернативная ПРОГРАММНАЯ реализация в некоторых случаях может быть очень полезна.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *