Ограничение Queue:Browse по количеству строк в списке
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ограничение Queue:Browse по количеству строк в списке
Добрый день! Хочу использовать структуру Очереди в Browse для отчета.
Отчет пишу ручками (для дальнейшей передачи данных по назначению )
!-----------------------------------------------------------------------------------------
LOOP i# = 1 TO RECORDS(Queue:Browse)
GET(Queue:Browse,i#)
!-----------------------------------------------------------------------------------------
Но в этой очереди количество записей ограничено количеством строк в списке Browse.
Как обмануть это ограничение ? Хотелось бы поиметь полную очередь. Зарание спасибо !!!
Отчет пишу ручками (для дальнейшей передачи данных по назначению )
!-----------------------------------------------------------------------------------------
LOOP i# = 1 TO RECORDS(Queue:Browse)
GET(Queue:Browse,i#)
!-----------------------------------------------------------------------------------------
Но в этой очереди количество записей ограничено количеством строк в списке Browse.
Как обмануть это ограничение ? Хотелось бы поиметь полную очередь. Зарание спасибо !!!
-
- ✯ Ветеран ✯
- Сообщения: 1040
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
Ограничение Queue:Browse по количеству строк в списке
...подумать?
определитесь, что и где нужно, ну и потом
:
1.
2.
определитесь, что и где нужно, ну и потом
...пишу ручками...

1.
- видимо для вывода на только на экран?Но в этой очереди количество записей ограничено количеством строк в списке Browse
2.
- видимо для вывода только в отчёт?...Хотелось бы поиметь полную очередь
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Ограничение Queue:Browse по количеству строк в списке
Логично что для того что бы в очереди появились все записи - очередь нужно заполнить полностью!?
Соответственно выводы. Убрать перед отчетом фильтры и ограничения бровза. Перечитать очередь и вывести в отчет.
Но IMHO это костыль ненужный.
Помнится была процедура типа Process. Аналог бровза (с фильтрами ключами и т.д.) без вывода очереди на экран.
Соответственно выводы. Убрать перед отчетом фильтры и ограничения бровза. Перечитать очередь и вывести в отчет.
Но IMHO это костыль ненужный.
Помнится была процедура типа Process. Аналог бровза (с фильтрами ключами и т.д.) без вывода очереди на экран.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 1040
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
Ограничение Queue:Browse по количеству строк в списке
Ещё до кучи - некоторые пользователи (бухгалтерия, плановый,...) любят вместо отчета видеть все (бровз) в табл.процессорах - типа Excel..., а там "...мы сами все...", так что если потребуется - всё есть на форуме 

Ограничение Queue:Browse по количеству строк в списке
Вы видимо используете генератор приложений. Для того чтобы очередь содержала все записи нужно в шаблоне в опции Loading method указывать File.
Любить и обещать ничего не стоит
Ограничение Queue:Browse по количеству строк в списке
Я конечно понимаю что многим хочется поиздеваться. попробую объяснить поподробнее.
У меня есть список договоров 6 типов и есть 10 объектов, итого 60 основных вариантов.
+ фильтр по датам и еще хрен знает по чем, фильтр очень сложный и загоняется в переменную - GLO:Filt. Результатом фильтра служит строка: BRW1::View:Browse{Prop:Filter} = GLO:Filt
Дальше ряд процедур с учетом ограничения по фильтру выбирает некоторое число записей. Количество записей для выборки ограничено переменной BRW1::ItemsToFill (это и есть количество строк в списке на экране).
В результате заполняется очередь Queue:Browse, которая потом зачитывается и показывается на экран. Если в списке на экране 17 строк, то в очередь набирается 17 записей. А на самом деле договоров отвечающим условию фильтра например 35.
Я хотел-бы создать отчет из уже готовой очереди Queue:Browse, т.к. это как раз те отфильтрованные данные которые мне нужны.
Вопрос в том: где идет проверка переменной BRW1::ItemsToFill и как сделать так чтобы эта проверка не выполнялась?
У меня есть список договоров 6 типов и есть 10 объектов, итого 60 основных вариантов.
+ фильтр по датам и еще хрен знает по чем, фильтр очень сложный и загоняется в переменную - GLO:Filt. Результатом фильтра служит строка: BRW1::View:Browse{Prop:Filter} = GLO:Filt
Дальше ряд процедур с учетом ограничения по фильтру выбирает некоторое число записей. Количество записей для выборки ограничено переменной BRW1::ItemsToFill (это и есть количество строк в списке на экране).
В результате заполняется очередь Queue:Browse, которая потом зачитывается и показывается на экран. Если в списке на экране 17 строк, то в очередь набирается 17 записей. А на самом деле договоров отвечающим условию фильтра например 35.
Я хотел-бы создать отчет из уже готовой очереди Queue:Browse, т.к. это как раз те отфильтрованные данные которые мне нужны.
Вопрос в том: где идет проверка переменной BRW1::ItemsToFill и как сделать так чтобы эта проверка не выполнялась?
Ограничение Queue:Browse по количеству строк в списке
Артуру...
Я использую шаблоны Синявского, Clarion 6.3
Я использую шаблоны Синявского, Clarion 6.3
-
- ✯ Ветеран ✯
- Сообщения: 5169
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Ограничение Queue:Browse по количеству строк в списке
Возможно, это ограничение Ваших шаблонов. А почему нельзя передать репорту GLO:Filt? У репорта в легаси нет ограничения.
Ещё вариант. Перейти на ABC, тут нет ограничения на отображение очереди (обычно программеры против, наваяли кучу кода, всё переписывать, но возможностей на порядок больше).
Ещё вариант. Обратиться к Синявскому.
Ещё вариант. Перейти на ABC, тут нет ограничения на отображение очереди (обычно программеры против, наваяли кучу кода, всё переписывать, но возможностей на порядок больше).
Ещё вариант. Обратиться к Синявскому.

We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 1040
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
Ограничение Queue:Browse по количеству строк в списке
mpn2 писал(а):Я конечно понимаю что многим хочется поиздеваться. попробую объяснить поподробнее.

Как спросили - так и отвечают, телепатов тут нет, я думаю... Надо было сразу писать подробнее. Да и вообще - проблема по работе?, дали направления для осмысливания, думайте/ищите на форуме - за это зряплата идет

PS Посмотрите исходный код и поищите там BRW1::ItemsToFill ...
PSS "Издевательство" - не наш метод, просто побуждаем посмотреть/подумать/посмотреть... Без обид?
up - попробуйте глобальный фильтр применить в отчете...
-
- ✯ Ветеран ✯
- Сообщения: 5169
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Ограничение Queue:Browse по количеству строк в списке
Да что толку смотреть-то? Вот оно ограничение:Ал писал(а):PS Посмотрите исходный код и поищите там BRW1::ItemsToFill ...
Код: Выделить всё
BRW1::ItemsToFill = ?List{Prop:Items}
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 1040
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
Ограничение Queue:Browse по количеству строк в списке
Написали бы про легаси сразу - я б не вломился в топик...
А так в ABC должно сработать как-то так:
Т.е. - хотите видеть в бровз - построили - увидели постранично, надо в репорт все - построили!! заново - увидели...
Или менять подход как выше намекали - хотя бы с "костылем" - если нужен юзеру бровз для предварительного просмотра - выдали, а если отчет - выдали или в копию очереди бровза но уже полный список или в csv или ... http://forum.clarionlife.net/phpbb/view ... rect+excel
А так в ABC должно сработать как-то так:
Код: Выделить всё
! GLO:BrowseFilter = 'TestIdOK(HPR:ProjectId)'
IF GLO:BrowseFilter
ThisReport.SetFilter(GLO:BrowseFilter)
ThisReport.ApplyFilter()
! GLO:BrowseFilter = '' !Clear the var
END
Или менять подход как выше намекали - хотя бы с "костылем" - если нужен юзеру бровз для предварительного просмотра - выдали, а если отчет - выдали или в копию очереди бровза но уже полный список или в csv или ... http://forum.clarionlife.net/phpbb/view ... rect+excel
Ограничение Queue:Browse по количеству строк в списке
В ABC есть методы Brw1.next() и Brw1.previous() для прохода по Browse с заполнением всех нужных полей, независимо от того, что есть на экране.
Может быть, поискать аналоги и в легаси?
Может быть, поискать аналоги и в легаси?
Ограничение Queue:Browse по количеству строк в списке
Ребята Всем большое спасибо за участие. Почитал ваши предложения и еще пообщался с людьми которые пишут по старинке (на шаблонах Синявского). Моя ошибка была в том, что я пытался получить данные из очереди, а надо было из структуры VIEW.
!--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SET(BRW1::View:Browse)
LOOP
NEXT(BRW1::View:Browse)
IF ERRORCODE() THEN BREAK.
!--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Все прекрасно работает и даже на фильтр повторно указывать не надо он уже висит в памяти.
!--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SET(BRW1::View:Browse)
LOOP
NEXT(BRW1::View:Browse)
IF ERRORCODE() THEN BREAK.
!--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Все прекрасно работает и даже на фильтр повторно указывать не надо он уже висит в памяти.
Последний раз редактировалось mpn2 25 Февраль 2015, 14:33, всего редактировалось 1 раз.
-
- ✯ Ветеран ✯
- Сообщения: 5169
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Ограничение Queue:Browse по количеству строк в списке
Ну, явный костыль, второй раз делаешь цикл по вьюхе. А репорт потом третий раз то же самое делает? Хорошо, что записей всего 35. Было бы 3500, пользователи сказали бы большущее спасибо
.

We are hard at work… for you. 

Ограничение Queue:Browse по количеству строк в списке
kreator зря вы так.
На самом деле у меня есть файл 16 000 записей (расход строительных матемриалов по объекту), а так как структура View висит в памяти то цикл отрабатывает мгновенно (при нажатии кнопки). А репорт я вообще не делаю (по моему мнению он в Клашке убогий), я передаю данные сразу в Excel. Тормоза больше там.....процедура передачи данных в Ехcel формирует таблицу из 1000 записей примерно 12 секунд. Но пользователям очень нравиться смотреть как Ехcel формирует табличку т.к. раньше они формировали отчет вручную 2 дня.
Да .... большое Спасибо Артуру ..... это он натолкнул меня на мысль читать записи из View.
На самом деле у меня есть файл 16 000 записей (расход строительных матемриалов по объекту), а так как структура View висит в памяти то цикл отрабатывает мгновенно (при нажатии кнопки). А репорт я вообще не делаю (по моему мнению он в Клашке убогий), я передаю данные сразу в Excel. Тормоза больше там.....процедура передачи данных в Ехcel формирует таблицу из 1000 записей примерно 12 секунд. Но пользователям очень нравиться смотреть как Ехcel формирует табличку т.к. раньше они формировали отчет вручную 2 дня.
Да .... большое Спасибо Артуру ..... это он натолкнул меня на мысль читать записи из View.