Как получить данные текущей строки 1с
Перейти к содержимому

Как получить данные текущей строки 1с

  • автор:

Вывод связанной информации по текущему объекту из списка

Часто возникает необходимость вывести связанную информацию для текущего объекта из списка, например, элемента справочника или документа. Это может быть остаток товара на складе, долг контрагента, автор документа, общая сумма и валюта документа и т.д. Рассмотрим, какие существуют способы решения этой задачи в 1С:Предприятии 8.1.

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

2-й способ. Системная кнопка «Перейти» или подобные кнопки, разработанные программистом, вызывающие отчеты или другие окна со связанной информацией по текущему объекту. Неудобство данного способа заключается в том, что часто информация должна быть еще более доступна, т.е. прямо в этом же окне, без лишних щелчков мыши и других окон.

3-й способ. Обработчик события «ПриАктивизацииСтроки». Это самый желательный способ, потому что он не сильно нагружает систему дополнительной работой и вполне удовлетворительно справляется с задачей в большинстве случаев. Обычно внизу или вверху формы располагается надпись, в которую выводится дополнительная информация о текущем объекте.

Например, обработчик события ПриАктивизацииСтроки в форме списка справочника Номенклатура:

 

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

4-й способ. Обработчик события ПриВыводеСтроки.

Событие ПриВыводеСтроки вызывается всякий раз, когда система формирует строки табличного поля. Это происходит при открытии списка, его прокрутке (формируются новые строки), при выборе группы (родителя), при нажатии на кнопку «Обновить текущий список» и т.д. При простой перерисовке формы (например, одна форма была перекрыта другой), данное событие не возникает.

ВНИМАНИЕ. В версии 1С:Предприятия 8 в колонке табличного поля не может располагаться выражение на встроенном языке! Для решения подобных задач можно использовать событие ПриВыводеСтроки .

Следующий пример демонстрирует получение связанной информации по элементам справочника из периодического регистра сведений:

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

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

Кэширование данных средствами встроенного языка

В некоторых случаях для ускорения работы со списком можно организовать кэширование средствами встроенного языка, при котором уже выбранная из базы данных информация сохраняется в памяти (например, в объекте типа «Соответствие» или «ТаблицаЗначений»), а при последуещем формировании строки информация выбирается из импровизированного кэша, а не из базы данных.

Ниже приведен пример кэширования с использованием объекта «Соответствие»:

  Предмет   Статус  

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

1С 8.x : Табличное поле ~ Как установить текущую строку в табличном поле?

Распечатать

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

 // у второй строки индекс равен одному 
НужнаяСтрока = Товары[1];

Или мы знаем, что во второй строке в колонке Номенклатура у элемента Код равен «001» тогда мы используем конструкцию:
Код 1C v 8.х

 // сначала находим элемент справочника Номенклатура по коду 
// а затем ищем его в Табличной части «Товары»
НужнаяСтрока = Товары.Найти(Справочники.Номенклатура.НайтиПоКоду(«001»));

2. Установить значением текущей строки найденную строку
Теперь нам нужно присвоить значение переменной НужнаяСтрока свойству табличного поля ТекущаяСтрока:
Код 1C v 8.х

 // если табличное поле у нас тоже называется Товары 
ЭлементыФормы.Товары.Текущаястрока = НужнаяСтрока;

Или
Код 1C v 8.х

 // если табличное поле называется ТабличноеПоле1 
ЭлементыФормы.ТабличноеПоле1.Текущаястрока = НужнаяСтрока;

В итоге строки кода могут выглядеть вот так:
Код 1C v 8.х

 НужнаяСтрока = Товары.Найти(Справочники.Номенклатура.НайтиПоКоду(«001»)); 
ЭлементыФормы.ТабличноеПоле1.Текущаястрока = НужнаяСтрока;

Разместил: E_Migachev Версии: | 8.x | Дата: 01.11.2011 Прочитано: 99416

Распечатать

Возможно, вас также заинтересует

Похожие FAQ

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:

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

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