1С развернуть динамический список

1С развернуть динамический список

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

  • упростить работу пользователю, выполнять 1 клик вместо 2;
  • явно дать понять ему, что есть вложенные группы.

В такой простой задаче может возникнуть стопор из-за особенностей динамического списка:

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

Решение проблемы:

Первое что необходимо сделать: проверить или установить свойство «Отображение» у таблице в значение «Дерево»

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

Код события при «АктивизацииСтроки»

тд = Элементы . Дерево . ТекущиеДанные ;
Если Не тд = Неопределено Тогда
Если Элементы . Дерево . Развернут ( Элементы . Дерево . ТекущаяСтрока ) = Ложь Тогда
Элементы . Дерево . Развернуть ( Элементы . Дерево . ТекущаяСтрока , Ложь ) ;
КонецЕсли ;
КонецЕсли ;

Для удобства пользователя добавим, авто раскрытие/сокрытие при выборе(двойном клике, по уже активной строке):

Код события «Выбор»

Процедура ДеревоВыбор ( Элемент , ВыбраннаяСтрока , Поле , СтандартнаяОбработка )

ТС = Элементы . Дерево . ТекущаяСтрока ;
Если Элементы . Дерево . Развернут ( ТС ) = Истина Тогда
Элементы . Дерево . Свернуть ( ТС ) ;
Иначе
Элементы . Дерево . Развернуть ( ТС , Ложь ) ;
КонецЕсли ;

Данная статья также применима к плану счетов, планам видов характеристик и расчетов (которые имеют иерархическую структуру).

Реклама — средство заставить людей нуждаться в том, о чем они раньше не слыхали.

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

Реализовано в версии 8.3.14.1565.

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

Динамическое считывание данных становится возможным благодаря тому, что списку указывается основная таблица. Ключевые поля этой таблицы используются платформой для однозначной идентификации строк списка. Например, если список отображает данные справочника или документа, то в качестве ключевого поля используется поле Ссылка. Если список отображает записи какого-нибудь регистра, то для идентификации отдельных строк платформа использует объекты, содержащие значения нескольких ключевых полей. Эти объекты имеют разные названия для разных таблиц, но у них есть общая часть – «КлючЗаписи». Например, РегистрСведенийКлючЗаписи. , РегистрРасчетаКлючЗаписи. и т.д.

Читайте также:  Nvidia geforce gt 240 512 мб

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

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

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

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

Как вы видите, для произвольного запроса динамического списка появились возможности указать вид ключа, выбрать ключевые поля (из тех, которые доступны в тексте запроса), и включить динамическое считывание данных.

Вид ключа может быть указан следующим образом:

  • ЗначениеПоля – для такого ключа вам нужно выбрать одно единственное ключевое поле, и поведение списка в этом случае будет таким же, как у списка, содержащего ссылочные объекты (список справочника, список документа и т.д.);
  • КлючСтроки – для такого ключа вам нужно выбрать одно или несколько ключевых полей, и поведение списка в этом случае будет таким же, как у списка, содержащего записи (список регистра накопления, список регистра сведений и т.д.);
  • НомерСтроки – это имитация того поведения, которое существовало раньше; в качестве ключа будет использоваться номер строки в выборке со всеми вытекающими из этого недостатками;
  • Авто – в этом случае платформа сама автоматически определит вид ключа как один из трех перечисленных выше: если ключевые поля не заданы, то будет НомерСтроки, если задано одно ключевое поле, то ЗначениеПоля, если более одного ключевого поля, то КлючСтроки.
Читайте также:  Xiaomi как говорить по русски

Таким образом, теперь, если вы выбираете для своего произвольного запроса вид ключа ЗначениеПоля или КлючСтроки, вам становятся доступны:

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

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

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

Рассмотрим работу с динамическими списками на примере конфигурации 1С.Управление торговлей. Для примера разберем динамический список для справочника «Контрагенты».

Запустим 1С в режиме «Конфигуратор».

В конфигурации найдем справочник «Контрагенты».

Откроем форму «Форма Списка».

Рассмотрим форму списка справочника. Реквизит «Список» имеет тип «ДинамическийСписок».

Двойным щелчком откроем свойства реквизита.

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

Нажмем теперь «Открыть» у свойства «Настройка списка».

Перед нами открывается окно настройки запроса динамического списка. Первая вкладка «Запрос».

Мы можем ка написать запрос вручную в поле «Запрос», так и воспользоваться кнопкой «Конструктор запросов».

На данной вкладке так же стоит обратить внимание на флаги «Динамическое считывание данных» и «Автозаполнение доступных полей».

Флаг «Динамическое считывание данных» определяет размер «части» возвращаемых запросом данных. Т.е. Если флаг установлен, то «части» имеют не большой размер, но при прокрутке динамического списка может происходить небольшое подвисания из-за до получения «частей». Если флаг не установлен, то возвращаемые данные мы получаем большими «частями». Это означает, что первоначально запрос может отрабатывать дольше, но подвисаний в процессе прокрутки не будет.

Читайте также:  Аэрофлот вай фай на борту

Флаг «Автозаполнение доступных полей» определяет поля доступные для отбора. Если флаг установлен, то поля верхней выборки становятся доступными для установки отбора.

Вторая вкладка «Настройки».

На данной вкладке мы можем установить некоторые отборы. Стоит обратить внимание на флаг «Включать в пользовательские настройки».

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

Так же на вкладке «Настройки» мы можем задавать «Порядок», «Группировки» и «Условное оформление.

В случае, если мы в запросе использовали какие-либо параметры, то необходимо заполнить их значения. Установим значение параметров в модуле формы в процедуре «ПриСозданииНаСервере». Для этого воспользуемся стандартным кодом для установки параметров.

Как оптимизировать работу с программой?

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

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

Вы еще не внедрили 1С или необходимо установить программу в новый филиал компании? Обратитесь за внедрением и настройкой к нам — вы сэкономите свое время и избежите возможных ошибок и проблем в дальнейшем.

Позвоните по номеру телефона, указанному на сайте или заполните форму обратной связи, чтобы наши сотрудники сориентировали по стоимости работ, подобрали оптимальное решение и рассказали, как начать сотрудничество. Ждем вас!

Ссылка на основную публикацию
1С открытие окон при завершении работы запрещено
В платформе "1С:Предприятие" версии 8.3.8 и выше без использования режима совместимости изменилась модель завершения работы приложения. Прежняя модель не поддерживала...
Adblock detector