Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Задачки для любознательных :  ИРБИС Irbis
 
Подсчет данных в формате
Пользователь: ochagova (IP-адрес скрыт)
Дата: 27, March, 2011 12:25

Вопрос от пользователя, думаю что можно сделать через глобальные, но со временем туго и может кто-то из знатоков?
Есть поле:
Услуга-62^b Кол-во-62^d Сумма-62^e

Форматом сделана таблица таблица:
Услуга Кол-во Сумма
1 5 10
2 10 20
1 8 40
А надо:
Услуга Кол-во Сумма
1 13 50
2 10 20

Re: Подсчет данных в формате
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 27, March, 2011 14:31

Людмила Николаевна.

Не понятно условие задачи. Опишите ее подробнее и прикрепите запись в TXT, а то и данные-то не ясны.

Re: Подсчет данных в формате
Пользователь: ochagova (IP-адрес скрыт)
Дата: 28, March, 2011 10:13

Имеестся повторяющееся поле 62:
^B1^D5^E10
^B2^D10^E20
^B1^D8^E40
Надо вывести уникальный значения ^B и для каждого подсчитать сумму значений в подполях ^D и ^E
Т.Е. в данном случае:

1 13 50
2 10 20

Re: Подсчет данных в формате
Пользователь: PRM (IP-адрес скрыт)
Дата: 28, March, 2011 10:51

Добрый день.

Вариант решения задачи.

Вложения: itogi.pft (1.1KB)  
Re: Подсчет данных в формате
Пользователь: ochagova (IP-адрес скрыт)
Дата: 28, March, 2011 11:43

Класс!! Спасибо. Отошлю пользователю.

Re: Подсчет данных в формате
Пользователь: ukntb (IP-адрес скрыт)
Дата: 28, March, 2011 14:37

Добрый день!
Спасибо за помощь, но этот вариант не подходит.
Попробую еще раз объяснить задачу:
Есть повторяющееся поле
62^a-Дата
62^b-Услуга
62^d-Кол-во
62^e- Сумма

Я сделал табличную форму генератором табл. форм, где,:
1 столбец- дата, формируется форматом (if p(v62) then if val(v62^a)>=val(&uf('Av991^a#1')) and val(v62^a)<= val(&uf('Av991^b#1')) then v62^a|\par | fi fi/)
2 столбец-услуга, формируется форматом (if p(v62) then if val(v62^a)>=val(&uf('Av991^a#1')) and val(v62^a)<= val(&uf('Av991^b#1')) then v62^b|\par | fi fi/)
3 столбец- кол-во, формируется форматом (if p(v62) then if val(v62^a)>=val(&uf('Av991^a#1')) and val(v62^a)<= val(&uf('Av991^b#1')) then v62^d|\par | fi fi/)
4 столбец Сумма, формируется форматом (if p(v62) then if val(v62^a)>=val(&uf('Av991^a#1')) and val(v62^a)<= val(&uf('Av991^b#1')) then v62^e|\par | fi fi/)

Этот вариант работает нормально , но мне бы хотелось чтобы каждое повторение поля не выводилось отдельной строкой, а группировалось
Например у нас сейчас так:

Дата Услуга Кол-Во Сумма
20110101 Выдача 50 100
200110102 Выдача 100 1000

Необходим следующий вариант:
Дата Услуга Кол-Во Сумма
201101 Выдача 150 1100
Заранее благодарен.

Re: Подсчет данных в формате
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 28, March, 2011 19:28

А где прикрепленные файлы формы и записи?

Re: Подсчет данных в формате
Пользователь: ukntb (IP-адрес скрыт)
Дата: 29, March, 2011 07:45

Извиняюсь!!!!

Вложения: 1.TXT (1.2KB)   Akt.hdr (22 bytes)   Akt.pft (1.5KB)  
Re: Подсчет данных в формате
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 01, April, 2011 16:21

ukntb написал(а):
-------------------------------------------------------
> Добрый день!
> Спасибо за помощь, но этот вариант не подходит.
> Попробую еще раз объяснить задачу:
> Есть повторяющееся поле
> 62^a-Дата
> 62^b-Услуга
> 62^d-Кол-во
> 62^e- Сумма
>
> Я сделал табличную форму генератором табл. форм,
> где,:
> 1 столбец- дата, формируется форматом (if p(v62)
> then if val(v62^a)>=val(&uf('Av991^a#1')) and
> val(v62^a)<= val(&uf('Av991^b#1')) then v62^a|\par
> | fi fi/)
> 2 столбец-услуга, формируется форматом (if p(v62)
> then if val(v62^a)>=val(&uf('Av991^a#1')) and
> val(v62^a)<= val(&uf('Av991^b#1')) then v62^b|\par
> | fi fi/)
> 3 столбец- кол-во, формируется форматом (if p(v62)
> then if val(v62^a)>=val(&uf('Av991^a#1')) and
> val(v62^a)<= val(&uf('Av991^b#1')) then
> v62^d|\par | fi fi/)
> 4 столбец Сумма, формируется форматом (if p(v62)
> then if val(v62^a)>=val(&uf('Av991^a#1')) and
> val(v62^a)<= val(&uf('Av991^b#1')) then v62^e|\par
> | fi fi/)
>
> Этот вариант работает нормально , но мне бы
> хотелось чтобы каждое повторение поля не
> выводилось отдельной строкой, а группировалось
> Например у нас сейчас так:
>
> Дата Услуга Кол-Во Сумма
> 20110101 Выдача 50 100
> 200110102 Выдача 100 1000
>
> Необходим следующий вариант:
> Дата Услуга Кол-Во Сумма
> 201101 Выдача 150 1100
> Заранее благодарен.

Попробуйте так (проверяла только форматом, но не в табличной форме)
Формат для столбца 1
&uf('+7W1#'(if p(v62) then if val(v62^a)>=val(&uf('Av991^a#1')) and val(v62^a)<= val(&uf('Av991^b#1')) then |^a|v62^a.6,|^B|v62^b fi fi/)), &uf('+7G1'),&uf('+7T1'),(if p(g1) then g1^a '\par 'fi)
Формат для столбца 2
(if p(g1) then g1^b '\par 'fi),
Формат для столбца 3
(if p(g1) then &uf('+7W3#'g1),&uf('6v3') '\par 'fi),
Формат для столбца 4
(if p(g1) then &uf('+7W4#'g1),&uf('6v4') '\par 'fi)

Кроме того создайте 2 формата V3 и V4
Формат V3
f(rsum((if p(v62) then if v62^a:&uf('Ag3^a#1') and v62^b:&uf('Ag3^b#1') then v62^d|;| fi fi)),0,0)
Формат V4
f(rsum((if p(v62) then if v62^a:&uf('Ag4^a#1') and v62^b:&uf('Ag4^b#1') then v62^e|;| fi fi)),0,0)



Редактировано 1 раз. Последний раз 05.04.2011 11:35 пользователем Дунаевская.

Re: Подсчет данных в формате
Пользователь: ukntb (IP-адрес скрыт)
Дата: 04, April, 2011 07:51

Светлана Михайловна, спасибо за подсказку.
Попробовал Ваш вариант.
Получил ошибку: FORMAT_ERROR@C:\AKTFORMAT_ERROR_END

Re: Подсчет данных в формате
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 04, April, 2011 10:59

Пришлите Ваши файлы таблицы

Re: Подсчет данных в формате
Пользователь: ukntb (IP-адрес скрыт)
Дата: 05, April, 2011 13:50

Светлана Михайловна, огромное спасибо за подсказку.
Все работает.

Re: Подсчет данных в формате
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 05, April, 2011 15:24

Сергей. Большая просьба. Прикрепить к сообщению ту форму, которая у вас получилась. А то ветка получается не законченной.

Re: Подсчет данных в формате
Пользователь: ukntb (IP-адрес скрыт)
Дата: 06, April, 2011 14:15

Вот что получилось

Вложения: Akt.tbg (1.8KB)  


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