Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Общие вопросы Ирбис64 :  ИРБИС Irbis
 
Вывод содержимого одного поля в tbu
Пользователь: Алексей Артемьев (IP-адрес скрыт)
Дата: 01, August, 2019 13:48

В общем, очередной наверняка глупый вопрос.

Есть файл tbu, в котором считаются поля. С суммами всё ясно, однако тут есть недочёт: поле с указанием нормы тоже суммируется, хотя не должно. Какой формат надо использовать для этого?

Re: Вывод содержимого одного поля в tbu
Пользователь: ochagova (IP-адрес скрыт)
Дата: 01, August, 2019 14:27

Что такое "поле с указанием нормы"? Что такое норма? Пример?

Re: Вывод содержимого одного поля в tbu
Пользователь: Алексей Артемьев (IP-адрес скрыт)
Дата: 01, August, 2019 14:40

ochagova написал(а):
-------------------------------------------------------
> Что такое "поле с указанием нормы"? Что такое
> норма? Пример?

100^A 2.0

Например. Это норма времени, которая должна выводится в форме. Проблема в том, что одна и та же форма используется для печати как одиночной записи, так и для печати группы записей. Во втором случае это поле так же суммируется, чего быть не должно.

Re: Вывод содержимого одного поля в tbu
Пользователь: ochagova (IP-адрес скрыт)
Дата: 01, August, 2019 15:02

Может кто-то понял, но я ничего не поняла. Можете приложить файл tbu и на нем конкретно объяснить?

Re: Вывод содержимого одного поля в tbu
Пользователь: Алексей Артемьев (IP-адрес скрыт)
Дата: 01, August, 2019 15:26

ochagova написал(а):
-------------------------------------------------------
> Может кто-то понял, но я ничего не поняла. Можете
> приложить файл tbu и на нем конкретно объяснить?

Вот он.

Возьмём для примера v100^A. В секции суммирования оно находится под номером 27.

Строкой
if V1<>'0' then '\par ',V27,'\par\par ' fi,
мы выводим это поле, и в случае печати одной записи всё нормально, однако в начале документа-отчёта приводится форма по ВСЕМ записям в бд, и такая форма вывода суммирует поле 100 подполе А всех записей, в результате получаются неправильные цифры (не смертельно, но исправить надо).

Для справки: БД это отчётность по выполненным работам. Каждое поле содержит четыре подполя:
- норма времени (проблемное подполе ^A)
- единица нормы времени
- количество работ
- трудозатраты
И если последнее и должно суммироваться при печати всех записей, то подполе с нормой времени на выполнение работы - нет.

Вложения: SVOD1-1.tbu (17.7KB)  
Re: Вывод содержимого одного поля в tbu
Пользователь: ochagova (IP-адрес скрыт)
Дата: 01, August, 2019 16:44

Т.е. не должно быть суммирования поля 100^A по записям? А зачем же вы его вставили в сумматоры? Все форматы секции [sum] являются сумматорами, они выполняются на записях и результаты суммируются.
Про это поле вам нужно что-то другое показывать. Сформулируйте что. Таблица формируется на нескольких записях, в каждой свое поле 100^A, и что вы хотите видеть в итоговой строке об этих полях?

Re: Вывод содержимого одного поля в tbu
Пользователь: Алексей Артемьев (IP-адрес скрыт)
Дата: 02, August, 2019 07:36

ochagova написал(а):
-------------------------------------------------------
> Т.е. не должно быть суммирования поля 100^A по записям?
Да, не должно быть.

> А зачем же вы его вставили в сумматоры?
По аналогии с другими формами, не подумав о последствиях...

> что вы хотите видеть в итоговой строке об этих полях?
Всё то же самое, но без суммирования подполя 100^A.

Re: Вывод содержимого одного поля в tbu
Пользователь: ochagova (IP-адрес скрыт)
Дата: 02, August, 2019 10:33

А подполе 100^A какой записи, если таблица формируется на нескольких записях?
Мне кажется вы неверно истолковываете секцию SUM - данные сибираются в течении всего формирования, а выдаются 1 раз в конце. Я предполагаю, что и другие форматы у вас чрезмерные - ф-цию rsum() надо использовать, если в записи поле повторяющееся и вы суммируете все повторения одной записи. Если поля неповт-ся, то никакого rsum() не надо, просто пишите VNNN

Re: Вывод содержимого одного поля в tbu
Пользователь: Алексей Артемьев (IP-адрес скрыт)
Дата: 02, August, 2019 10:39

ochagova написал(а):
-------------------------------------------------------
> А подполе 100^A какой записи, если таблица формируется на нескольких записях?
Таблица отрабатывается один раз для всех записей бд, а затем по одному разу для каждой записи. Одна запись - отчёт по время затратам одного филиала.

> Мне кажется вы неверно истолковываете секцию SUM -
> данные сибираются в течении всего формирования, а
> выдаются 1 раз в конце. Я предполагаю, что и
> другие форматы у вас чрезмерные - ф-цию rsum()
> надо использовать, если в записи поле
> повторяющееся и вы суммируете все повторения одной
> записи. Если поля неповт-ся, то никакого rsum() не
> надо, просто пишите VNNN
Пишу, в случае с одиночной записью всё нормально, а вот когда один раз надо вывести сумму трудозатрат по всем филиалам / отделам - поле в таблице пустое.

Re: Вывод содержимого одного поля в tbu
Пользователь: ochagova (IP-адрес скрыт)
Дата: 02, August, 2019 13:39

А сформулируйте свой вопрос без "трудозатрат", "филиалов" и др. частностей.
Файл tbu -> номер поля, которое не так формируется, как не так, что хотелось бы.

Re: Вывод содержимого одного поля в tbu
Пользователь: Алексей Артемьев (IP-адрес скрыт)
Дата: 05, August, 2019 07:36

ochagova написал(а):
-------------------------------------------------------
> А сформулируйте свой вопрос без "трудозатрат",
> "филиалов" и др. частностей.
> Файл tbu -> номер поля, которое не так
> формируется, как не так, что хотелось бы.

Как вывести поле (вообще любое, по его номеру), что бы при печати формы по списку записей оно не возвращало пустое значение.

Re: Вывод содержимого одного поля в tbu
Пользователь: ochagova (IP-адрес скрыт)
Дата: 05, August, 2019 10:35

Однозначного ответа нет, но есть варианты.
Список не предназначен для вывода одного поля, непонятно - поле какой записи, если это список записей? Но есть возможности:
- Перед таблицей - напечатать текст с выводом разных полей, файл из *.hdr
- После таблицы - как правило - это результаты суммирования, но можно через ref и поле 991 обратиться к определенной записи и взять из нее поле.
Вы не путаете таблицу и формат отображения? В формате можно вывести любое поле в любом виде конкретной записи.
А таблица выводит набор записей. Ваше - "Как вывести поле (вообще любое, по его номеру)" - для таблицы это вывод поля из каждой записи в соотв-й строке.

Re: Вывод содержимого одного поля в tbu
Пользователь: Алексей Артемьев (IP-адрес скрыт)
Дата: 05, August, 2019 11:18

ochagova написал(а):
-------------------------------------------------------
> Список не предназначен для вывода одного поля, непонятно - поле какой записи, если это список записей?

Да хоть первой... Дело в том, что в нужном подполе хранятся неизменные данные, которые не должны суммироватся, но которые нужны для вычислений. Посему такая проблема и возникла.

Re: Вывод содержимого одного поля в tbu
Пользователь: ochagova (IP-адрес скрыт)
Дата: 05, August, 2019 16:17

Значит, никакого сумматора не надо для этого поля, а в файле TBU вставляете строку - см. 11. Смысл строки: по какому-то префиксу+значение (т.е. термин словаря) находите запись, в которой есть поле 27 и выводите его.

Вложения: 11.png (44.2KB)  


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