Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Часто задаваемые вопросы (FAQ) :  ИРБИС Irbis
Исключительно важный раздел форума, который необходимо прочитать всем, кто только начинает работать с Ирбисом. Если ваши знания не так широки, как вам хотелось бы, тогда обязательно прочитайте этот раздел. Если вы не нашли, что искали, то воспользуйтесь поиском по форуму, и, скорее всего, вы найдете ответ на свой вопрос среди существующих сообщений. 
Глобальные переменные
Пользователь: Van (IP-адрес скрыт)
Дата: 08, August, 2013 10:11

Насколько глобальные переменные глобальны?
Они действуют в пределах одного формата или действительно глобальные (и если в одном файле *.pft использована глобальная переменная с одним номером, то в другом формате для других целей необходимо использовать глобальную переменную с другим номером).
Заранее благодарю.

Re: Глобальные переменные
Пользователь: Gena (IP-адрес скрыт)
Дата: 08, August, 2013 10:24

Глобальные переменные передаются во всех форматах. Я часто на их базе делаю вложенные циклы с помощью вызова внутри повторяющейся группы другого формата. Пример работы глобальных переменных в нескольких вложенных форматах - подсчет количества экземпляров и распределения их по филиалам

Re: Глобальные переменные
Пользователь: Van (IP-адрес скрыт)
Дата: 08, August, 2013 12:13

А если мы внутри фрейма (Web-ИРБИС) при помощи <!FORMAT=@first > добавили обращение к файлу first.pft с глобальной переменной ХХ в которую внесли какое-то значение, а затем далее при помощи <!FORMAT=@second > вставили файл формата second.pft, то можем ли мы в этом втором формате дать указание прочитать глобальную переменную ХХ, записанную в процессе выполнения формата first.pft? Вот что меня интересует. И если такое обращение возможно, то как избежать путаницы?

Re: Глобальные переменные
Пользователь: Gena (IP-адрес скрыт)
Дата: 08, August, 2013 12:23

Если я не ошибаюсь, то можно. Я так понимаю, что в начале считываются все фреймы, к ним пдтягиваются форматы, а потом это все выполняется. Грубо говоря, очистка глобальных переменных происходит после того, как формат/фрейм со вложенными файлами отрабатывает до конца. Что бы не путаться я стараюсь контралировать номера переменных. Например, в основном файле используются глобальные переменные с номерами 10ХХХ, в первом вложенном - 11ХХХ, во втором вложенном 12ХХХ и так далее.

Re: Глобальные переменные
Пользователь: Van (IP-адрес скрыт)
Дата: 08, August, 2013 12:33

Спасибо

Re: Глобальные переменные
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 25, February, 2015 02:54

Использование глобальных переменных в табличных формах.
Как сделать опсутошение глобальных переменных при переборе терминов после сортировки один раз?
+
Необходимо очистить глобальные переменные один раз в самом начале перебора значений из файла sortlstN.txt.



Редактировано 1 раз. Последний раз 25.02.2015 03:37 пользователем woodyfon.

Re: Глобальные переменные
Пользователь: Alio (IP-адрес скрыт)
Дата: 25, February, 2015 09:32

woodyfon написал(а):
-------------------------------------------------------
> Использование глобальных переменных в табличных
> формах.
> Как сделать опсутошение глобальных переменных при
> переборе терминов после сортировки один раз?
> +
> Необходимо очистить глобальные переменные один раз
> в самом начале перебора значений из файла
> sortlstN.txt.
Нельзя понять, что Вы имеете в виду...
Во-первых, работа с глобальными переменными возможна ТОЛЬКО в контексте формата.
Во-вторых, нельзя очистить ВСЕ глобальные переменные - ТОЛЬКО конкретные.

Re: Глобальные переменные
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 25, February, 2015 12:48

Цитата:
Во-вторых, нельзя очистить ВСЕ глобальные переменные - ТОЛЬКО конкретные.
В инструкции к языку форматирования данных приведена функция &uf('+7') - опустошение глобальных переменных. Под выражением все глобальные переменные понимаю переменные, которые были определены ранее.
Цитата:
Нельзя понять, что Вы имеете в виду...
В табличной форме использую глобальные переменные. Если диалог печати не закрыть, а снова запустить выполнение формы, то глобальная переменная содержит данные, которые были сформированы при предыдущем выполнении табличной формы. Мне необходимо перед печатью выходной формы предварительно сделать очистку глобальных переменных. Один раз в самом начале.

Re: Глобальные переменные
Пользователь: Alio (IP-адрес скрыт)
Дата: 25, February, 2015 14:02

Каюсь, забыл про &uf('+7')...

Re: Глобальные переменные
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 25, February, 2015 14:36

Но конструкция &uf('+7') не работает таким образом, как бы хотелось. Опустошение переменных происходит во время вывода каждой записи. Грубо говоря, переменная "общая" для всех записей.

Re: Глобальные переменные
Пользователь: Alio (IP-адрес скрыт)
Дата: 25, February, 2015 15:02

Никакого иного способа выполнить &uf('+7'), кроме как в формате, нет

Re: Глобальные переменные
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 25, February, 2015 15:11

Интересно, что такого эффекта как использование данных в переменной из предыдущих выполнений выходной формы из одного диалога печати в версии 2010 не наблюдается. Такой эффект обнаружен в версии 2014.1 при запуске клиента АРМ-каталогизатор на машине, где установлен сервер.

Re: Глобальные переменные
Пользователь: Alio (IP-адрес скрыт)
Дата: 26, February, 2015 09:28

Этому есть объяснение, но слишком долго объяснять...
Вы должны исходить из следующего:
ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ ДЕЙСТВУЮТ В ПРЕДЕЛАХ ТОЛЬКО ОДНОГО ФОРМАТА!!!

Re: Глобальные переменные
Пользователь: Gena (IP-адрес скрыт)
Дата: 26, February, 2015 09:42

Alio написал(а):
-------------------------------------------------------
> Этому есть объяснение, но слишком долго
> объяснять...
> Вы должны исходить из следующего:
> ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ ДЕЙСТВУЮТ В ПРЕДЕЛАХ ТОЛЬКО
> ОДНОГО ФОРМАТА!!!


Александр Иосифович, вот это не понятно. Дело в том, что глобальные переменные в ряде случаев используются для передачи информации между вложенными форматами. С помощью глобальных переменных делаются вложенные циклы. И они спокойно перетягивают данные между разными форматами, вложенными в один формат. Причем, вложение может быть как через юнифор 6, так и с помощью символов вложения. Кроме этого, в табличных формах, которые состоят из разных файлов есть возможность с помощью глобальных переменных перебрасывать данные между файлами srv, tbu, pft. Вот это как-то не укладывается в описанную вами модель

Re: Глобальные переменные
Пользователь: Alio (IP-адрес скрыт)
Дата: 26, February, 2015 11:30

Когда я говорю о формате, то я имею в виду ЕГО и ВСЕ, что в него вложено...
То, что глобальные переменные могут сохраняться между разными форматами, - это ЧАСТНЫЙ эффект, объяснять который слишком долго.

Re: Глобальные переменные
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 27, February, 2015 10:04

woodyfon написал(а):
-------------------------------------------------------
> Использование глобальных переменных в табличных
> формах.
> Как сделать опсутошение глобальных переменных при
> переборе терминов после сортировки один раз?
> +
> Необходимо очистить глобальные переменные один раз
> в самом начале перебора значений из файла
> sortlstN.txt.

Попробуйте записать &uf('+7') как формат первого заголовка (или в его начало)

Не проверяла, но предполагаю, что отработает

Re: Глобальные переменные
Пользователь: Gena (IP-адрес скрыт)
Дата: 27, February, 2015 10:24

Я для очистки глобальных переменных чаще использую сортировку. Ставлю &uf('+7') первым оператором в строке ключа сортировке.

Re: Глобальные переменные
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 27, February, 2015 10:56

Гена, Вы правы.
Я еще раз перечитала проблему - я понимала ее так, что нужно очистить все глобальные после завершения сортировки. Ошиблась.



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