![]() |
|
Динамический список в 8.2 | ☑ | ||
---|---|---|---|---|
0
Poky
06.06.11
✎
10:12
|
Нужна помощь с 8.2. У меня есть форма списка (динамический список). Как можно програмного перебрать строки этого списка. В нем могут быть отборы и т.п.
|
|||
1
Poky
06.06.11
✎
10:24
|
Ап
|
|||
2
Dzenn
гуру
06.06.11
✎
10:26
|
попробуй закрыть и <зачеркнуто>открыть</зачеркнуто> больше не открывать конфигуратор
|
|||
3
Poky
06.06.11
✎
10:29
|
(2) Лучше б по существу вопроса помогли...
|
|||
4
Поручик
06.06.11
✎
10:31
|
Выделенные строки можешь перебрать.
|
|||
5
Poky
06.06.11
✎
10:33
|
(4) Выделенные - это понятно. Но как-то не хорошо каждый раз просить пользователя выделять все строки.
|
|||
6
3V
06.06.11
✎
10:33
|
сталкивался с подобной задачей
получаешь все отборы которые используются для вывода этого списка, формируешь запрос по данным отбора и перебираешь на здоровье, т.к. сам список не содержит толком набора строк ЗЫ могу ошибаться |
|||
7
Poky
06.06.11
✎
10:35
|
(6) "Формируешь запрос по данным отбора" - это как?
|
|||
8
SerMaxim
06.06.11
✎
10:35
|
Не уверен что работает в УФ, попробуй объект ПостроительЗапроса. В качестве источника кидай в него свой дин.список на форме.
|
|||
9
3V
06.06.11
✎
10:37
|
(7) в запрос вставляешь условия для отбора данных, которые у тебя выводятся в список, чтобы получить аналогичный список данных только уже в табличном варианте
(8) не уверен что взлетит |
|||
10
Poky
06.06.11
✎
10:39
|
(8) Вы имеете ввиду это?
Построитель = Новый ПостроительОтчета; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Список); Выборка = Построитель.Результат.Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); КонецЦикла; Не работает, пишет что параметр не верный ОписаниеИсточникаДанных(ДокументСписок) |
|||
11
SerMaxim
06.06.11
✎
10:39
|
(10) ПостроительЗапроса
|
|||
12
Poky
06.06.11
✎
10:43
|
(11) Построитель запроса тоже не катит:
Ошибка при вызове конструктора (ОписаниеИсточникаДанных) Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Список); по причине: Несоответствие типов (параметр номер '1') |
|||
13
detec
06.06.11
✎
10:44
|
(0) Если у тебя таблица с данными, которую нужно перебирать, то нельзя использовать динамический список. Создай в форме реквизит "Таблица Значений" и будут доступны методы обхода и пр.
|
|||
14
Poky
06.06.11
✎
10:48
|
(9) т.е. вручную обходить коллекцию элементов отбора компоновки данных и модифицировать запрос, добавляя в него условия?
Тогда точно так же нужно обходить и коллекцию значений параметров. И порядок применить тот же. И группировку. |
|||
15
Poky
06.06.11
✎
10:51
|
(13) так для того чтобы обходить таблицу значений, ее сначала нужно заполнить данными точно таким же образом как и динамический список.
Используя те же отборы, параметры, порядок и группировки. А вот как это сделать? |
|||
16
Defender aka LINN
06.06.11
✎
10:56
|
(15) Так же, как в (10), только использовать не Построитель, а СКД. Только вот нафига?
|
|||
17
Poky
06.06.11
✎
10:58
|
(15) Ну например надо распечатать документы, те которые в списке. Чтобы не в каждый заходить а групповой обработкой.
А как привинтить все это к СКД? Скиньте примерчик пожалуйста. |
|||
18
Defender aka LINN
06.06.11
✎
11:04
|
(17) Рекурсивно обойти отбор и скопировать.
|
|||
19
Poky
06.06.11
✎
11:08
|
(18) Рекурсивно? Тут без примерчика точно никак =)))
Вообще мне кажется эта задача довольно частая должна быть - странно что нет какого-то простого способа. |
|||
20
Defender aka LINN
06.06.11
✎
11:26
|
(19) В типовых, во всяком случае в 8.1, есть процедура готовая: ТиповыеОтчеты.СкопироватьЭлементы
|
|||
21
Reaper_1c
06.06.11
✎
11:34
|
(17) А нажать ctrl+A и вызвать команду печати уже не православно?
|
|||
22
Defender aka LINN
06.06.11
✎
12:12
|
(17) Выделяешь и тыкашь команду печати. ВНЕЗАПНО, да?
|
|||
23
Poky
06.06.11
✎
12:35
|
Итак резюме.
Делал в конфигурации Управление торговлей, редакция 11.0 (11.0.6.7) через СКД. Список - наш динамический список, доступный в контексте модуля формы на сервере СхемаКомпоновки = Новый СхемаКомпоновкиДанных(); Источник = СхемаКомпоновки.ИсточникиДанных.Добавить(); Источник.Имя = "Источник1"; Источник.СтрокаСоединения=""; Источник.ТипИсточникаДанных = "local"; НаборДанных = СхемаКомпоновки.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); Если Список.ПроизвольныйЗапрос Тогда НаборДанных.Запрос = Список.ТекстЗапроса; Иначе НаборДанных.Запрос = "ВЫБРАТЬ | * |ИЗ | " + Список.ОсновнаяТаблица; КонецЕсли; НаборДанных.Имя = "Запрос"; НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина; НаборДанных.ИсточникДанных = "Источник1"; НастройкиКомпоновки = МобильныеПриложения.СкомпоноватьНастройки(СхемаКомпоновки); ОбщегоНазначенияУТКлиентСервер.СкопироватьЭлементы(НастройкиКомпоновки.Отбор, Список.Отбор); ОбщегоНазначенияУТКлиентСервер.СкопироватьЭлементы(НастройкиКомпоновки.Порядок, Список.Порядок); МакетКомпоновки = ОбщегоНазначенияУТ.ПолучитьМакетКомпоновки(СхемаКомпоновки, НастройкиКомпоновки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки); ТЗ = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТЗ); ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий(); Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда Прервать; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных); КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); // ну и далее можем обходить ТЗ и делать что нам нужно: печатать, перепроводить, изменять реквизит и т.п. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |