Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Администратор :  ИРБИС Irbis
 
Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 16, February, 2024 15:22

Здравствуйте, есть необходимость к табличной форме "Инвентарная книга" присоединить еще таблицу распределения экземпляров по разделу знаний и языкам, примерно как на приложенном рисунке.
Мне удалось написать такую форму, Но: Распределение экземпляров считается правильно при формировании формы на единственном экземпляре, если же кол-во отобранных экземпляров больше 1, то в распределение не попадает всегда самый первый экземпляр (по сортировке с наименьшим инвентарным номером).
Образец файлов прикладываю к сообщению. Чтобы можно было легко разобраться в коде, минимально изменила стандартную инв.книгу TAB4BW.
- В Headerфайл добавила обнуление используемых глобальных переменных,
- В SRV файле при выводе таблицы экземпляров добавила еще суммирование в глобальные переменные,
- в раздел Sum TBU-файла добавила вывод полученных глобальных переменных.

Помогите разобраться, почему в распределение не попадает первый экземпляр из таблицы инв.книги (причем если он единственный, то выводится без ошибки), ведь цикл осуществляется по v1 (по всем повторениям)?

Вложения: образец_формы.png (22.2KB)   Инв_книга_с_распред.zip (3.2KB)  
Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: ochagova (IP-адрес скрыт)
Дата: 19, February, 2024 12:25

А не могли бы вы сделать отдельными форматами строки в SRW для ключей и заголовков? А в файле SRW использовать &uf('6 или вложенный форматы? А сами форматы сделать "читабельными".
Иначе это надо делать, например, мне, чтобы увидеть проблему.

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 20, February, 2024 09:49

Спасибо, Людмила Николаевна, что откликнулись.
Добавленный мной код вынесла в отдельные файлы.

Вложения: Инв_книга_с_распред2.zip (4KB)  
Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: ochagova (IP-адрес скрыт)
Дата: 20, February, 2024 11:43

Мудрено. Я вставила отладку. Данные для суммирования зависят от переменной g1. Поэтому я вставила ее значение и у меня тоже все пусто. Но у меня оттого, что разделы знания не 01, 02, 03.... А 1,2,3..... И у себя, изменив проверку значений поля 60, я получила данные в таблице.
Может у вас тоже в поле 60 не 01, 02,...., а другие значения? Может поле 60 у вас повторяется?
Отладку приложила, попробуйте - какая у вас будет картинка?

Вложения: 1.rar (3.6KB)  
Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 20, February, 2024 16:23

Не все данные для суммирования зависят от g1. Например, кол-во экз., сумма цены не зависят от g1.
Немного изменила Отладку (и вложенный файл перенесла в начало цикла). В выходной форме видно, что в третьем экземпляре и далее происходит суммирование к данным предыдущего экземпляра, а вот во втором экземпляре не происходит суммирование к данным первого экземпляра.

Вложения: 2.zip (10.5KB)  
Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: ochagova (IP-адрес скрыт)
Дата: 21, February, 2024 11:34

Я поняла проблему. Получается она в том, что глобальные переменные, на которых все построено, где-то не сохраняются или очищаются.
Я избегаю таких сложных взаимосвязей разных форматов. Ведь мы можем не знать как сервер их обрабатывает. Сервер ведь многопроцессорный. Он может запустить новый процесс, а в начале процесса все глобальные опустошаются!
&uf('6... у меня всегда под подозрением, т.к. сервер может для его работы запустить новый процесс. Но я не серверный программист, а клиентский, здесь нужна серверная отладка, это Батрак, Арносси....
Мой совет - в файл *.srw в секцию [HeaderFormat] вставить ОДИН формат по &uf('6, и в нем реализовать в том числе логику &uf('6respr.
Кроме того, а где файл tab4bw_raspr.pft? Я понимаю, что он д.б. пустым, но он будет искаться и будет вырабатываться ошибка, что его нет. Советую добавить.
А еще мне нравится вариант - когда все данные считаются в *.srw, но в секции [KeyOptions]. Т.е. формируя ключи. Т.е. данные для суммирования вы готовите при формировании ключей и записываете их в разные подполя v1. Тогда они точно не пропадут и при работе [HeaderFormat] вы делаете суммирование в разные глобальные, которые потом используете в tab_spisokex_sum.

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 21, February, 2024 14:39

Спасибо, Людмила Николаевна. Попробую переделать так, как советуете.
Уже второй раз сталкиваюсь с ситуацией, когда глобальные переменные оказываются не достаточно глобальными :(

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: ochagova (IP-адрес скрыт)
Дата: 21, February, 2024 15:04

Да, для этого А.И. ввел целую БД для хранения действительно глобальных переменных. Но я этим не пользуюсь - очень громоздко, надеюсь на вариант g

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 21, February, 2024 18:02

Можете прислать записи партии ксу на которой можно проверить.

Милана А. написал(а):
-------------------------------------------------------
> Здравствуйте, есть необходимость к табличной форме
> "Инвентарная книга" присоединить еще таблицу
> распределения экземпляров по разделу знаний и
> языкам, примерно как на приложенном рисунке.
> Мне удалось написать такую форму, Но:
> Распределение экземпляров считается правильно при
> формировании формы на единственном экземпляре,
> если же кол-во отобранных экземпляров больше 1, то
> в распределение не попадает всегда самый первый
> экземпляр (по сортировке с наименьшим инвентарным
> номером).
> Образец файлов прикладываю к сообщению. Чтобы
> можно было легко разобраться в коде, минимально
> изменила стандартную инв.книгу TAB4BW.
> - В Headerфайл добавила обнуление используемых
> глобальных переменных,
> - В SRV файле при выводе таблицы экземпляров
> добавила еще суммирование в глобальные
> переменные,
> - в раздел Sum TBU-файла добавила вывод полученных
> глобальных переменных.
>
> Помогите разобраться, почему в распределение не
> попадает первый экземпляр из таблицы инв.книги
> (причем если он единственный, то выводится без
> ошибки), ведь цикл осуществляется по v1 (по всем
> повторениям)?

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 26, February, 2024 09:22

Доброе утро всем. Прикрепила.
Но эта табличная форма абсолютно на любых записях одинаково работает (по крайней мере считает кол-во экземпляров и сумма).

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



Редактировано 2 раз. Последний раз 26.02.2024 09:37 пользователем Милана А..

Вложения: 2024_17.TXT (188.2KB)  
Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 26, February, 2024 17:52

Милана ощущение такое что вы просто теряете, не считая последнюю строку v1. в своих глобальных переменных


я бы еще добавила последний блок сумм с глобальными из srw еще и в tbu до вывода переменных. у меня после такой манипуляции все верно считает

Милана А. написал(а):
-------------------------------------------------------
> Доброе утро всем. Прикрепила.
> Но эта табличная форма абсолютно на любых записях
> одинаково работает (по крайней мере считает кол-во
> экземпляров и сумма).
>
> Буду благодарна, если укажете пример какой-либо
> табличной формы, где присутствует множественный
> ключ сортировки (по экземплярам) и подсчет суммы.

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 27, February, 2024 09:09

GLUKa написал(а):
-------------------------------------------------------
> Милана ощущение такое что вы просто теряете, не
> считая последнюю строку v1. в своих глобальных
> переменных
>
>
> я бы еще добавила последний блок сумм с
> глобальными из srw еще и в tbu до вывода
> переменных. у меня после такой манипуляции все
> верно считает
>

Нет, теряется не последняя строка v1, а первая (это хорошо видно до сумме цен экземпляров, и по выводу отладки). И если сделать как вы советуете, последний экземпляр посчитается дважды, а первый также не посчитается.

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: ochagova (IP-адрес скрыт)
Дата: 27, February, 2024 10:46

По поводу примера таблицы. ListInvKsu - по-моему, та таблица, которую вы описали.

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 27, February, 2024 13:03

Спасибо.
Правильно начало считать после того, как я убрала объявление (обнуление) используемых переменных в файле-"шапке"...

Re: Табличная форма: Инвентарная книга с вычислением распределения
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 27, February, 2024 17:41

Век живи , век учись. интересный конечно момент попробую на турбо сервере ирбис64 с отладкой вашу форму посмотреть чтобы понять почему так.
Милана А. написал(а):
-------------------------------------------------------
> Спасибо.
> Правильно начало считать после того, как я убрала
> объявление (обнуление) используемых переменных в
> файле-"шапке"...

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.