1с получить данные динамического списка
Затупил над простым вопросом. На УФ есть динамический список с основной таблицей в виде РС подчиненного регистратору. Надо получить значения из определенных колонок выделенных пользователем строк. В ТЧ это решается через получение ИД строк и метода:
У динамического списка такового нет. Как быть?
salt7; An-Aleksey; i.c.h; MariusUrsus; Serega-artem; Sashares; + 6 – Ответить(19)Понятно.
Сначала надо в отдельный массив выделенные строки добавить.
А потом уже его обходить для получения данных.
(1) ВыделенныеСтроки (SelectedRows)Использование:
Только чтение.
Описание:
Тип: Массив.
Содержит массив идентификаторов выделенных строк. (2) Так ИД получить не проблема, проблема получить данные по этим ИД. (6) Вы вопрос читали? Нет у динамического списка НайтиПоИдентификатору() ! (4) В выделенные строки заглядывали? Идентификаторами для динамического списка, основная таблица которого – РС, являются ключи записи этого РС. (11)А если убрать основную таблицу, то просто число.
Поэтому не суть что там. На УФ есть динамический список с основной таблицей в виде РС подчиненного регистратору. (13)Это я видел.
Я к тому, что из ключей ничего получить нормально нельзя. (14) Как раз из данных строки вы ничего не получите, точнее получите значения отображаемых колонок. При работе с ДС всегда следует работать с идентификаторами строк (ТекущаяСтрока / ВыделенныеСтроки). Надо получить значения из определенных колонок выделенных пользователем строк.
Именно это можно сделать из текущих данных, как предложено в (10)
При работе с ДС всегда следует работать с идентификаторами строкПока ничего полезного по теме вы не сказали.
Вот у вас идентификатор КлючЗаписи регистра, дальше что?
(16) Ваш вариант работает, но как-то странно: выводится информация только по части строк, причем закономерности особой не вижу! Буду копать дальше.
Про КлючЗаписи знаю, игрался долго с ним перед тем как задать вопрос на форму, но ничего путного не получил.
(19)Понятно.
Сначала надо в отдельный массив выделенные строки добавить.
А потом уже его обходить для получения данных.
(23)Сложно))И максимум, что увижу - измерения.
А если надо ресурс или реквизит - предлагаете заново читать по ключу? (26) Вы получите Набор значений, однозначно идентифицирующих запись регистра. Этого более чем достаточно.
(27)
Если нужно получить значение из списка, который показывается пользователю на форме, считаю, что получать ключи регистра, потом по ключам читать записи регистра - не адекватное решение.
Если же нужно получить данные записей РС, которых нет в колонках списка, то ваш вариант, бесспорно, подходит.
(28) Это работает точно так же как с динамическим списком справочника или документа. Если вам понадобится получить какой-либо реквизит документа из выделенной строки списка, вы вряд ли будете его вытаскивать из данных строки – вы возьмете ссылку документа и на сервере получите его значение в запросе. Иначе вам необходимо предусмотреть наличие этой колонки в списке, пользовательскую видимость или включенное свойство реквизита ДС "Использовать всегда". (1)Если не указывать основную таблицу (если она регистр сведений), то в целом можно.(5)Предыдущий комментарий не корректный. Извиняюсь.
Можно так:
Взять выделенные строки списка.
В цикле устанавливать текущей строкой - одну из выделенных.
Из ТекущихДанных брать значение.
Динамический список 1С предназначен для вывода на форму любых данных в произвольном виде. Эти данные могут быть представлены в виде списка, таблицы или дерева. Динамический список позволяет делать сортировку выводимых данных, отбор, группировку, условное оформление и т.д. Причём, отбор, группировку и прочее может делать как разработчик, так и пользователь.
Динамический список 1С можно создать в качестве реквизита управляемой формы. Для этого достаточно, типу реквизита присвоить значение ДинамическийСписок.
В моем примере динамический список создан на основной форме обработки.
Для того, чтобы динамический список выводил какие-то данные, нам следует или указать основную таблицу в свойствах динамического списка, или написать произвольный запрос на языке запросов 1С.
Динамическому списку можно назначить основную таблицу. Основная таблица – это произвольный объект метаданных (документ, справочник, регистр значения и т.д.), данные которого должны отобразиться в динамическом списке.
Например, в качестве основной таблицы выберем справочник Номенклатура.
И поместим динамический список на форму в виде таблицы, не забыв добавить колонки при размещении.
Если мы сейчас откроем обработку в пользовательском режиме 1С: Предприятия, то на основной форме обработки будет номенклатура в виде иерархического списка.
Можно сделать отображение списка в виде дерева. Для этого можно изменить режим просмотра таблицы на форме в пользовательском режиме.
Либо, поменять значение свойства Отображение таблицы формы, в которой был размещен динамический список.
После этого, динамический список на форме будет в виде дерева.
Произвольный запрос динамического списка 1С
Помимо использования основной таблицы, можно также динамический список сделать на основании запроса. Причем, можно взять за основу основную таблицу. Для примера, выведем вместе с номенклатурой цены, которые хранятся в периодическом регистре сведений Цены номенклатуры. Если мы в свойстве Произвольный запрос динамического списка установим флаг, при уже выбранной основной таблице, то у нас основная таблица будет взята за основу при формировании запроса.
Чтобы посмотреть на запрос, следует нажать на гиперссылку Открыть свойства НастройкаСписка.
В случае произвольного запроса мы можем изменить набор данных, который должен отображаться в динамическом списке. Но в этом случае все равно рекомендуется указывать основную таблицу, необходимо это делать для того, чтобы платформа могла определить, какая информация в этом динамическом списке главная, а какая второстепенная, и исходя из этого настроить стандартные команды. В том случае, если у Вас несколько таблиц и они связаны каким-то соединением, то все равно рекомендуется всегда указывать основную таблицу, потому что в противном случае производительность основного списка будет желать лучшего.
Свяжем справочник Номенклатура с виртуальной таблицей срез последних регистра сведений Цены номенклатуры.
Для этого, вызовем конструктор запроса из окна динамического списка, и добавим в список таблиц запроса виртуальную таблицу СрезПоследних. У виртуальной таблицы выберем ресурс Цена, который поместим в список полей, применив к этому полю функцию ЕстьNULL.
Свяжем левым соединением таблицу номенклатуры с виртуальной таблицей СрезПоследних регистра сведений.
И исправим имя поля Цена.
Наш запрос готов.
Обратите внимание на свойства «Динамическое считывание данных», которое есть и в свойствах динамического списка, когда указана основная таблица, и в том случае, когда указан произвольный запрос . Если это свойство установлено, то считывание данных происходит порциями, т.е. выбираются только те данные, которые необходимы для отображения на экране. В целях улучшения производительности, лучше всегда это свойство устанавливать.
Поскольку, мы переделывали существующий динамический список, то поле цена в таблице формы не отобразилось. Добавим это поле.
После такой доработки динамического списка, на в таблице на форме будут отображаться цены у номенклатуры.
Очень подробно работа с динамическими списками дается в моей книге «Основы разработки в 1С: Такси».
В этой книге вы научитесь:
- Настраивать динамические списки;
- Работать с поиском в динамическом списке;
- Программировать динамические списки (программная установка параметров, отборов, группировок, сортировок и условного оформления).
У вас, как у читателя блога, есть скидка 15 % по промо-коду: 48PVXHeYu
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.
В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком
Для моих читателей, купон на скидку 25%: hrW0rl9Nnx
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Читайте также: