Страница 1 из 2

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 24 Февраль 2015, 17:33
mpn2
Добрый день! Хочу использовать структуру Очереди в Browse для отчета.
Отчет пишу ручками (для дальнейшей передачи данных по назначению )
!-----------------------------------------------------------------------------------------
LOOP i# = 1 TO RECORDS(Queue:Browse)
GET(Queue:Browse,i#)
!-----------------------------------------------------------------------------------------
Но в этой очереди количество записей ограничено количеством строк в списке Browse.
Как обмануть это ограничение ? Хотелось бы поиметь полную очередь. Зарание спасибо !!!

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 24 Февраль 2015, 21:54
Ал
...подумать?
определитесь, что и где нужно, ну и потом
...пишу ручками...
:wink::
1.
Но в этой очереди количество записей ограничено количеством строк в списке Browse
- видимо для вывода на только на экран?
2.
...Хотелось бы поиметь полную очередь
- видимо для вывода только в отчёт?

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 2:16
Admin
Логично что для того что бы в очереди появились все записи - очередь нужно заполнить полностью!?
Соответственно выводы. Убрать перед отчетом фильтры и ограничения бровза. Перечитать очередь и вывести в отчет.
Но IMHO это костыль ненужный.
Помнится была процедура типа Process. Аналог бровза (с фильтрами ключами и т.д.) без вывода очереди на экран.

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 6:55
Ал
Ещё до кучи - некоторые пользователи (бухгалтерия, плановый,...) любят вместо отчета видеть все (бровз) в табл.процессорах - типа Excel..., а там "...мы сами все...", так что если потребуется - всё есть на форуме :)

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 8:30
Артур
mpn2 писал(а): Но в этой очереди количество записей ограничено количеством строк в списке Browse
Вы видимо используете генератор приложений. Для того чтобы очередь содержала все записи нужно в шаблоне в опции Loading method указывать File.

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 9:34
mpn2
Я конечно понимаю что многим хочется поиздеваться. попробую объяснить поподробнее.
У меня есть список договоров 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 по количеству строк в списке

Добавлено: 25 Февраль 2015, 9:40
mpn2
Артуру...
Я использую шаблоны Синявского, Clarion 6.3

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 10:20
kreator
Возможно, это ограничение Ваших шаблонов. А почему нельзя передать репорту GLO:Filt? У репорта в легаси нет ограничения.
Ещё вариант. Перейти на ABC, тут нет ограничения на отображение очереди (обычно программеры против, наваяли кучу кода, всё переписывать, но возможностей на порядок больше).
Ещё вариант. Обратиться к Синявскому. :idied:

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 10:36
Ал
mpn2 писал(а):Я конечно понимаю что многим хочется поиздеваться. попробую объяснить поподробнее.
:(
Как спросили - так и отвечают, телепатов тут нет, я думаю... Надо было сразу писать подробнее. Да и вообще - проблема по работе?, дали направления для осмысливания, думайте/ищите на форуме - за это зряплата идет :)
PS Посмотрите исходный код и поищите там BRW1::ItemsToFill ...
PSS "Издевательство" - не наш метод, просто побуждаем посмотреть/подумать/посмотреть... Без обид?
up - попробуйте глобальный фильтр применить в отчете...

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 10:56
kreator
Ал писал(а):PS Посмотрите исходный код и поищите там BRW1::ItemsToFill ...
Да что толку смотреть-то? Вот оно ограничение:

Код: Выделить всё

BRW1::ItemsToFill = ?List{Prop:Items}
Дальше что? Кто-нибудь может заставить легаси шаблоны грузить в очередь данные а-ля "Loading Method - File" (ABC)? Придётся перелопатить кучу кода и сделать новые шаблоны. Верю, что костыли можно приладить, но только до очередного изменения данных.

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 11:08
Ал
Написали бы про легаси сразу - я б не вломился в топик...
А так в 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 по количеству строк в списке

Добавлено: 25 Февраль 2015, 12:35
Yufil
В ABC есть методы Brw1.next() и Brw1.previous() для прохода по Browse с заполнением всех нужных полей, независимо от того, что есть на экране.
Может быть, поискать аналоги и в легаси?

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 14:12
mpn2
Ребята Всем большое спасибо за участие. Почитал ваши предложения и еще пообщался с людьми которые пишут по старинке (на шаблонах Синявского). Моя ошибка была в том, что я пытался получить данные из очереди, а надо было из структуры VIEW.
!--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SET(BRW1::View:Browse)
LOOP
NEXT(BRW1::View:Browse)
IF ERRORCODE() THEN BREAK.
!--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Все прекрасно работает и даже на фильтр повторно указывать не надо он уже висит в памяти.

Ограничение Queue:Browse по количеству строк в списке

Добавлено: 25 Февраль 2015, 14:25
kreator
Ну, явный костыль, второй раз делаешь цикл по вьюхе. А репорт потом третий раз то же самое делает? Хорошо, что записей всего 35. Было бы 3500, пользователи сказали бы большущее спасибо :D .

Ограничение Queue:Browse по количеству строк в списке

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