Текущее время: Вт, авг 26 2025, 13:13

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Иерархическая переменная в FOX
СообщениеДобавлено: Чт, ноя 10 2011, 18:29 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Чт, июл 09 2009, 15:15
Сообщения: 14
Пол: Мужской
Добрый день всем.
Хочу в функции планирования использовать значение узла, которое в запросе определяется иерархической переменной выбора. При попытке обратиться к переменной с помощью оператора VARV моделер запрашивает значение параметра HIENM. Подскажите как определить это значение? Не в смысле "Где найти имя иерархии?", а как присвоить значение этому параметру. Или обойти его.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Чт, ноя 10 2011, 19:01 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, сен 21 2010, 23:23
Сообщения: 83
Пример кода:
FOREACH PLB IN VARIABLE GNO_GLI_BDDS11 это переменная иерархии иерархии, HIENM=GHO_GLI_BDDS3 - это сама иерархия.
SUM = SUM + {GAMNT_RU, QUART, YEAR, '#', PLB, '0418'}.
ENDFOR.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Чт, ноя 10 2011, 19:17 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, сен 21 2010, 23:23
Сообщения: 83
я бы даже сказал в ноте 1086496 более подробная информация.
If you use hierarchy node variables in formulas, you must specify additional context information in the FOREACH statement. You must always specify the hierarchy name. To do this, write HIENM = 'Variable for the hierarchy names' as an additional argument. If the hierarchy is time-dependent, you must specify a variable for the time. To do this, write: DATETO = 'Name for the date variable'. If the hierarchy is version-dependent, you must specify a variable for the version. To do this, write: VERSION = 'Name for the version variable'. You must specify the information in the form of a global variable, that is, not with a variable that is defined as local in the formula. The syntax is as follows, for example:



FOREACH GES IN VARIABLE HIERVARBER, HIENM = HIE_NAM_1, VERSION= HIER_VERS.

The hierarchy is version-dependent in the example.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Вт, апр 02 2013, 11:24 
Начинающий
Начинающий

Зарегистрирован:
Вт, апр 02 2013, 10:38
Сообщения: 2
Коллеги, добрый день!
Не могу разобраться с подобным вопросом.
Я хочу использовать значение узла иерархии в FOX (Мне надо присвоить локальной переменной значение узла иерархии).
То есть, например, у меня есть иерархия:
УЗЕЛ 1
- Подчиненная статья 1.1
- Подчиненная статья 1.2
- Подчиненная статья 1.3
...
- Подчиненная статья 1.n
УЗЕЛ 2
- Подчиненная статья 2.1
- Подчиненная статья 2.2
- Подчиненная статья 2.3
...
- Подчиненная статья 1.m
Мне нужно посчитать значение VAL = УЗЕЛ 1 - УЗЕЛ 2, где УЗЕЛ1 = Подчиненная статья 1.1 + Подчиненная статья 1.2 + Подчиненная статья 1.3 + ... + Подчиненная статья 1.n, аналогично считается УЗЕЛ 2. Подчиненных статей очень много и их состав меняется.
Я создала глобальные переменные для узла иерархии (Z_NODE) и для самой иерархии (Z_HIER).
Далее пробую 3 варианта.

Первый:
DATA BLNITM TYPE ZBLNITM.
FOREACH BLNITM IN Z_NODE, HIENM = Z_HIER.
...
Выдает ошибку "Ошибка формулы: ожидалось REFDATA".

Второй:
DATA BLNITMHIER TYPE ZBLNITM.
BLNITMHIER = VARV(Z_NODE,HIENM = Z_HIER).
VAL = {ZSUMMLC,BLNITMHIER}.
Функция планирования сохраняется буз ошибок, но последовательность планирования не отрабатывает, выдает ошибку "Переменная Z_NODE должна быть ограниченна отдельным значением".

Третий:
DATA BLNITM TYPE ZBLNITM.
DATA BLNITMHIER TYPE ZBLNITM.
BLNITMHIER = VARV(Z_NODE,HIENM = Z_HIER).
FOREACH BLNITM IN BLNITMHIER, HIENM = Z_HIER.
...
Также выдает ошибку "Ошибка формулы: ожидалось REFDATA".

Что я делаю не так?
Возможно существует еще какое-нибудь решение?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Вт, апр 02 2013, 11:41 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
http://sapboard.ru/forum/viewtopic.php?p=456178#p456178

Цитата:
If you use hierarchy node variables in formulas, you must specify additional context information in the FOREACH statement. You must always specify the hierarchy name. To do this, write HIENM = 'Variable for the hierarchy names' as an additional argument. If the hierarchy is time-dependent, you must specify a variable for the time. To do this, write: DATETO = 'Name for the date variable'. If the hierarchy is version-dependent, you must specify a variable for the version. To do this, write: VERSION = 'Name for the version variable'. You must specify the information in the form of a global variable, that is, not with a variable that is defined as local in the formula. The syntax is as follows, for example:



FOREACH GES IN VARIABLE HIERVARBER, HIENM = HIE_NAM_1, VERSION= HIER_VERS.

The hierarchy is version-dependent in the example.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Вт, апр 02 2013, 11:55 
Начинающий
Начинающий

Зарегистрирован:
Вт, апр 02 2013, 10:38
Сообщения: 2
Air_demon, спасибо!

Хочу также поделится работающим решением конкретно моей проблемы:

DATA BLNITM TYPE ZBLNITM.
DATA VAL1 TYPE F.
DATA COUNT TYPE I.
DATA INDEX TYPE I.

COUNT = VARC(Z_NODE,HIENM = Z_HIER).
INDEX = 0.
VAL1 = 0.
DO.
INDEX = INDEX + 1.
BLNITM = VARI(Z_NODE,HIENM = Z_HIER,INDEX).
VAL1 = VAL1 + {ZSUMMLC,BLNITM}.
IF INDEX = COUNT.
EXIT.
ENDIF.
ENDDO.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Ср, апр 17 2013, 15:31 
Ассистент
Ассистент

Зарегистрирован:
Ср, июл 25 2007, 14:20
Сообщения: 41
Коллеги, написан цикл:
Foreach porgunit in variable pvar_porgunit_h6, hienm = porgkpgo1.
...
Возникает синтаксическая ошибка: переменная porgkpgo1 неактивна.
Чтобы оно значило. Porgkpgo1 - вполне себе существующее имя иерархии.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Ср, апр 17 2013, 17:49 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
Zabava написал(а):
Коллеги, написан цикл:
Foreach porgunit in variable pvar_porgunit_h6, hienm = porgkpgo1.
...
Возникает синтаксическая ошибка: переменная porgkpgo1 неактивна.
Чтобы оно значило. Porgkpgo1 - вполне себе существующее имя иерархии.


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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Чт, апр 18 2013, 10:48 
Ассистент
Ассистент

Зарегистрирован:
Ср, июл 25 2007, 14:20
Сообщения: 41
DATA QTY TYPE F.
DATA PORGUNIT TYPE PORGUNIT.
 
FOREACH PORGUNIT IN VARIABLE PVAR_PORGUNIT_H6, HIENM = PVAR_PORGUNIT_H8.
QTY = QTY+{PQUANTITY, PORGUNIT}.
ENDFOR.
MESSAGE I002(/SEM/004) WITH QTY.
{PQUANTITY, L_PORG} = QTY.
Имя иерархии в кавычках подпихнуть нельзя, просит переменную.
В приведенном выше куске кода PVAR_PORGUNIT_H6 - переменная типа узел иерархии, PVAR_PORGUNIT_H8 - переменная типа имя иерахии. Обе переменные созданы в BExe.
При этом вновь возникает синтаксическая ошибка: переменная PVAR_PORGUNIT_H8 неактивна.
Какие-нибудь еще идеи?
Что это должна быть за переменная, которую можно использовать в foxe для имени иерархии


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Чт, апр 18 2013, 11:00 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
Zabava написал(а):
Что это должна быть за переменная, которую можно использовать в foxe для имени иерархии

Изображение
Изображение
Изображение
Изображение


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Чт, апр 18 2013, 12:51 
Ассистент
Ассистент

Зарегистрирован:
Ср, июл 25 2007, 14:20
Сообщения: 41
Да, именно такую переменную я и создала, но ... Ээ.. В фоксе спутала имя переменной типа имя иерархии. Сейчас все ок.
Но родился другой вопрос. Цикл по узлу я делаю, для того, чтобы суммировать значения, сохраненные на листах, и вообще говоря записать эту сумму на значение орг.единицы, соответствующее узлу.
Как можно реализовать запись на узловое значение (то есть на самом деле не на узловое, а соответсвующее узлу)?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Иерархическая переменная в FOX
СообщениеДобавлено: Чт, апр 18 2013, 13:06 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
Zabava написал(а):
Как можно реализовать запись на узловое значение (то есть на самом деле не на узловое, а соответсвующее узлу)?

Задайте узловое значение как переменную обычную (например, для ручного ввода), а от нее в Exit задавайте узел иерархии (переменная PVAR_PORGUNIT_H6).


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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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