Текущее время: Ср, апр 24 2024, 18:41

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Ср, авг 10 2011, 21:23 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, май 31 2005, 20:23
Сообщения: 362
Добрый день! Такая вот проблема.
Почитал форумы, нашел подходящий код для подсуммировки по листу.
Code:
var i = 0
var p = $layout.page(ref($))
var d = 0
for i = 0 upto (page2.Table.Table2.BodyRow.all.length - 1) step 1 do
  d = $layout.page(ref(page2.Table.Table2.BodyRow[i].POSNUM))
  if ( d == p ) then
      page2.Table.Table2.PageTotal.PLACES = page2.Table.Table2.PageTotal.PLACES + page2.Table.Table2.BodyRow[i].PLACES
      page2.Table.Table2.PageTotal.BRGEW = page2.Table.Table2.PageTotal.BRGEW + page2.Table.Table2.BodyRow[i].BRGEW
      page2.Table.Table2.PageTotal.NETWR = page2.Table.Table2.PageTotal.NETWR + page2.Table.Table2.BodyRow[i].NETWR
      page2.Table.Table2.PageTotal.VAT = page2.Table.Table2.PageTotal.VAT + page2.Table.Table2.BodyRow[i].VAT
      page2.Table.Table2.PageTotal.WRBTR = page2.Table.Table2.PageTotal.WRBTR + page2.Table.Table2.BodyRow[i].WRBTR
  elseif ( d > p ) then
    break
  endif
endfor


Вроде на первый взгляд все ок. Все красиво выводится. Стал проверять суммы, и выяснилось, что по каким-то неведомым причинам для последних строк таблицы на листе определяется другой номер страницы, т.е. на экране строка, например, вывелась на странице 2, а в формуляре для этой строки определился номер страницы 3. И следовательно эти строки не попадают в сумму по этому листу.
Причем количество этих строк все время разное. Может одна строка не попасть, может 2, а может и 3 и т.д.
Что с этим делать? Может кто-то сталкивался с такой проблемой?
Буду очень признателен за помощь.


Последний раз редактировалось QWERT Вт, авг 16 2011, 10:45, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Пн, авг 15 2011, 15:31 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, апр 05 2008, 22:12
Сообщения: 63
Пол: Мужской
есть какие-то динамически расширяемые элементы? типа ячейки таблицы на несколько строк или группировки? как вариант - попробуйте смену ориентации листа(с похожей проблеймой помогло...)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Вт, авг 16 2011, 10:44 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, май 31 2005, 20:23
Сообщения: 362
Да, есть. Высота строки подгоняется под название материала. Из-за этого и приходится суммировать в формуляре, а не в программе, т.к. неизвестно сколько строк на листе получится. Названия материалов бывают очень длинные. Стандартных кратких текстов не хватает.
Для них мы завели отдельные пользовательские поля.

Ориентация страницы нужна альбомная. Это ИНВ-3. И так все еле-еле влезло.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Вт, авг 16 2011, 12:38 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, апр 05 2008, 22:12
Сообщения: 63
Пол: Мужской
как я понимаю это глюк дизайнера - он не правильно отрабатывает переходы на след. страницу в случае расширяемых полей
можно попробовать:
1. различные версии дизайнера - просто выкинуть таблицу на форму, поставить свойство расширения на ячейку
2. сделать ячейку статичной и расширить чтобы все точно влезло - но это не очень красиво
3. пробовать через скрипт вытащить номер страницы на неправильно перенесенной строке(я пробовал - не нашел)
4. долбать суппорт адоба и ждать патчей
5. совсем некрасивый способ - считать в абапе на сколько строк у нас разобьется текст...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Ср, авг 17 2011, 12:29 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, май 31 2005, 20:23
Сообщения: 362
k1lc0m написал:
как я понимаю это глюк дизайнера - он не правильно отрабатывает переходы на след. страницу в случае расширяемых полей
можно попробовать:
1. различные версии дизайнера - просто выкинуть таблицу на форму, поставить свойство расширения на ячейку
2. сделать ячейку статичной и расширить чтобы все точно влезло - но это не очень красиво
3. пробовать через скрипт вытащить номер страницы на неправильно перенесенной строке(я пробовал - не нашел)
4. долбать суппорт адоба и ждать патчей
5. совсем некрасивый способ - считать в абапе на сколько строк у нас разобьется текст...


1. Не очень понял этот способ. Поясните, что Вы имели в виду?
2. Так уже сделано причем в комбинации с 5 способом. Но есть такие длиннеы тексты, то на страницу максимум 10 строк влезет. ПЛохо.
3. Не понял
4. Долго. Нужно сделать форму сейчас =(
5. Так уже сделано.

Спасибо за помощь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Ср, авг 17 2011, 13:31 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, апр 05 2008, 22:12
Сообщения: 63
Пол: Мужской
1. ALD изобилует багами, в каждой версии что-то исправлют и что-то появляется. возможо в какой-то из версий дизайнера такой перенос отрабатывал бы нормально, соответственно можно попробовать 7 или 8 версии программы. Но это очень очень ненадежный способ. Просто на сколько помню в 8ой версии группировки отрабатывали не правильно, а в 7 и 9 - все ок.
3. смысл скрипта который вы привели выше - он проверяет на текущей ли странице ячейка со значением - если да, то суммирует ее, иначе идет дальше.
попробуйте в своей таблице сделать ячейку, которая будет хранить номер страницы, на которой эта ячейка хранится и увидите что в вашем случае этот скрипт будет отрабатывать неправильно. дизайнер считает что строка на предыдущей странице, например, хотя вывелась она на следующей


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Чт, авг 18 2011, 20:21 
Начинающий
Начинающий

Зарегистрирован:
Вт, янв 22 2008, 17:21
Сообщения: 17
Пол: Женский
Мне когда-то коллеги помогли в суммами в адобе постранично таким кодом.
Не знаю что там и как, я только Абап умею - но я себе скопировала на будущее. Помню только, что делала специальное отдельное поле, куда вводила ето значение из кода. Может поможет?

Bisherige Summen pro Seite ausgeben (Hierarchie)
(Сумма на каждои странице "по нарастающеи", которая накопилась с пред. страниц и на етои.)
Im Layout-Ready vom Summenfeld auf der Masterseite oder im Fußüberlauf der Tabelle
var sum = 0;

actPage = xfa.layout.absPage(this);


// get pages less/equal than actual page

for (var i = 0; i <= actPage; i++)

{

// get all fields on page

var oFields = xfa.layout.pageContent(i, "field");

var nodesLength = oFields.length;

for (var j = 0; j < nodesLength; j++)

{

if (oFields.item(j).name == "KWMENG")

{

sum = sum + oFields.item(j).rawValue;

}

}

}


this.rawValue = sum;
----------------------------------------------------------------------

Summe pro Seite ausgeben (Hierarchie) (Сумма постранично (без учета предыдущих страниц)
Im Layout-Ready vom Summenfeld auf der Masterseite:


var sum = 0; //Important with 0

// for every actual page

var oFields = xfa.layout.pageContent(xfa.layout.absPage(this), "field");

var nNodesLength = oFields.length;


if (nNodesLength > 0) {

for (var i=0; i < nNodesLength ; i++) {

//field “NETWR” is in the table on the actual page

if (oFields.item(i).name == "NETWR")

{

sum = sum + oFields.item(i).rawValue;

}

}

}



this.rawValue = sum;


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Пн, авг 17 2020, 13:09 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 28 2006, 00:24
Сообщения: 18
k1lc0m написал:
1. ALD изобилует багами, в каждой версии что-то исправлют и что-то появляется. возможо в какой-то из версий дизайнера такой перенос отрабатывал бы нормально, соответственно можно попробовать 7 или 8 версии программы. Но это очень очень ненадежный способ. Просто на сколько помню в 8ой версии группировки отрабатывали не правильно, а в 7 и 9 - все ок.
3. смысл скрипта который вы привели выше - он проверяет на текущей ли странице ячейка со значением - если да, то суммирует ее, иначе идет дальше.
попробуйте в своей таблице сделать ячейку, которая будет хранить номер страницы, на которой эта ячейка хранится и увидите что в вашем случае этот скрипт будет отрабатывать неправильно. дизайнер считает что строка на предыдущей странице, например, хотя вывелась она на следующей


Столкнулся с той же самой проблемой. Посмотрел обсуждение. В нашем случае, считать в абапе не получится, поскольку пользователь имеет возможность корректировать значения в таблице.
последний код в этой беседе, тоже не работает, потому что неверное определяется номер страницы, на которой находится ячейка . Версия дизайнера 11


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подсуммировка по листу в PDF-формуляре на языке FormCalc
СообщениеДобавлено: Пн, авг 24 2020, 13:23 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 11 2018, 14:09
Сообщения: 8
Привет. Могу только на JS код привести.
На днях делал подсуммировку по листу.


Code:
var fields = xfa.layout.pageContent(xfa.layout.page(this)-1, "field", 0);
var total = 0;
for (var i=0; i <= fields.length-1; i++) {
if (fields.item(i).name == "MENGE") {
total = parseInt(total) + parseInt(fields.item(i).rawValue);
}
}
this.rawValue = total;


Код на FormCalc для суммы по всем листам(может пригодится).

Code:
sum (SUBTOTAL[*].MENGE_SUM)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB