Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Разбираемся с Языком форматирования
Пользователь: PetrOFF (IP-адрес скрыт)
Дата: 24, June, 2009 16:52

Здравствуйте, накопилось пару вопросов по форматированию.
Мне надо было сделать изменения в выводе каталожных карточек, я так понял что за них отвечает файл !kkkbo.pft.
Возник вопрос а можно создавать таблицы с помощью языка Ирбиса, если да то приведите пожалуйста пример. А то надо сделать чтоб авторский знак и шифр стояли справа, а вся остальная информация слева.

Re: Разбираемся с Языком форматирования
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 24, June, 2009 18:38

Язык форматирования предназначен исключительно для вывода данных из записи. Как эти данные будут интерпретироваться - задача выходного текста. Имеется возможность использовать RTF-команды форматирования или HTML-тэги. Итам и там есть возможность рисовать таблицы.
Другое дело, что таблица в РЕЬД - дело 1 минуты, а для верстки таблицы в RTF потребуется как минимум 15 при условии, что вы знаете RTF-конструкции наизусть :)

Re: Разбираемся с Языком форматирования
Пользователь: PetrOFF (IP-адрес скрыт)
Дата: 25, June, 2009 10:21

Хорошо, пойдем быстрым путем. Не могли бы вы дать ссылку на примеры по "РЕЬД - дело 1 минуты", а то у меня есть мануал, но там не слова про таблицы.

Re: Разбираемся с Языком форматирования
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 25, June, 2009 11:17

В каталоге нужной базы переименуйте файлы

PFTW.OPT в PFTW_RTF.OPT
Pftw_H.opt в PFTW.OPT

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

Re: Разбираемся с Языком форматирования
Пользователь: Alio (IP-адрес скрыт)
Дата: 25, June, 2009 12:48

Одно замечание.
Режим ПЕЧАТЬ КК НЕ поддерживает ни RTF-конструкции ни HTML.
Поэтому - повторял это неоднократно - НЕ ИСПОЛЬЗУЙТЕ режим ПЕЧАТЬ КК (это атавистический режим, он поддерживается только ради преемственности).
Используйте режимы ПЕЧАТЬ и ПЕЧАТЬ ТЕКУЩЕГО.

Re: Разбираемся с Языком форматирования
Пользователь: PetrOFF (IP-адрес скрыт)
Дата: 10, July, 2009 11:42

подскажите пожалуйста что означает вот это "/"\\$A0,11$B\\"?

Re: Разбираемся с Языком форматирования
Пользователь: Alio (IP-адрес скрыт)
Дата: 10, July, 2009 13:43

ЭТО СПЕЦИАЛЬНЫЕ - УЖЕ УСТАРЕВШИЕ - КОНСТРУКЦИИ, КОТОРЫЕ НЕ ИМЕЮТ ОТНОШЕНИЯ К ЯЗЫКУ ФОРМАТИРОВАНИЯ И РАБОТАЮТ ТОЛЬКО В РЕЖИМЕ ПЕЧАТЬ КК АРМа Каталогизатор

Re: Разбираемся с Языком форматирования
Пользователь: PetrOFF (IP-адрес скрыт)
Дата: 13, July, 2009 15:38

К сожаленияю я работаю именно с КК, и вот после того как я добавли оператор условия умення пропало, жирное начертание текста :(

Re: Разбираемся с Языком форматирования
Пользователь: Alio (IP-адрес скрыт)
Дата: 13, July, 2009 16:09

Указанная Вами конструкция должна ОБЯЗАТЕЛЬНО находиться в начале строки.

Re: Разбираемся с Языком форматирования
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 13, July, 2009 21:15

Язык форматирования абзаца КК - см. [irbis.gpntb.ru]



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

Re: Разбираемся с Языком форматирования
Пользователь: PetrOFF (IP-адрес скрыт)
Дата: 30, July, 2009 11:41

Так попробывал сделать выделение, между управляющими операторами вставил символы выделения
then /'\\$A9,6\\',mhl, ' E',v200^a,'F',mpl else
Выделилось но как то не так вместо того чтоб выделить только поле v200^a, выделение залезло на другие поля тоже.

51
П 27
Перестюк , Микола Олексійович.
Алгебра і початки аналізу : 10 кл. / М. О. Перестюк , В. А. Вишенський. - Кам'янець-Подільський : Аксіома, 2006. - 283 с. - ISBN 966-8642-61-9
УДК 512(075.3)
к Инв.355359

А так же подскажите как убрать кол-страниц в формулярах искал в файле !kkkfw, но ничего не нашел.

Re: Разбираемся с Языком форматирования
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 30, July, 2009 12:02

Проверьте парность ' E' и 'F' вне приведенного фрагмента.
В файле !kkkfw их и нет - в формуляре страницы не выводятся.

Re: Разбираемся с Языком форматирования
Пользователь: PetrOFF (IP-адрес скрыт)
Дата: 03, August, 2009 18:01

В том и дело что, парность соблюдена, да и как может половина фамилии автора быть выделена а другая нет?

Re: Разбираемся с Языком форматирования
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 03, August, 2009 23:01

Покажите запись (ISO или TXT) и Ваш формат.
назовите версию.
Все должно работать правильно.

Re: Разбираемся с Языком форматирования
Пользователь: PetrOFF (IP-адрес скрыт)
Дата: 22, September, 2009 16:21

Продолжаем ... :)

Вообшем с горем пополам удалось наладить печать в нужной форме через "Печать КК".
Но так-как до конца хорошо не получилось, то решено было перейти на прогрессивный вид печати :)

Значит в "Катологизаторе" выбираем "Печать-Таблицы-!!КК". Все работает. Теперь пытаюсь разобратся что-где, тут начинаются проблемы. Я так понял каждая таб.форма состоит из 4 файлов. Нахожу 4 файла
!!KK.PFT
!!kk.srw
!!KK.HDR
Почему-то нет !!КК.тав?!
есть tit какие-то с расширениями mnu tbu wss
Все файлы кроме сортировочного !!kk.srw, почти пустые, что-там редактировать я незнаю, языка cds/isis там практически нету за исключением файла сортировки.
В каком месте мне надо проводить изменения, для таких простых действий как например добавить после поля 700 вывести поля 200?
Вобшем где можно посмотреть простых примеров для изменения вида выходной таб. формы?

Re: Разбираемся с Языком форматирования
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 22, September, 2009 18:10

PetrOFF написал(а):
-------------------------------------------------------
> Продолжаем ... :)
>
> Вообшем с горем пополам удалось наладить печать в
> нужной форме через "Печать КК".
> Но так-как до конца хорошо не получилось, то
> решено было перейти на прогрессивный вид печати
> :)
>
> Значит в "Катологизаторе" выбираем
> "Печать-Таблицы-!!КК". Все работает. Теперь
> пытаюсь разобратся что-где, тут начинаются
> проблемы. Я так понял каждая таб.форма состоит из
> 4 файлов. Нахожу 4 файла
> !!KK.PFT
> !!kk.srw
> !!KK.HDR
> Почему-то нет !!КК.тав?!
> есть tit какие-то с расширениями mnu тbu

!!КК.тbu в ИРБИС64 - это аналог файла !!КК.тав в ИРБИС32

> wss
> Все файлы кроме сортировочного !!kk.srw,
В данной форме - это основной файл, в него можно вносить и все правки.
Но это сложный формат.

почти
> пустые, что-там редактировать я незнаю, языка
> cds/isis там практически нету за исключением файла
> сортировки.
> В каком месте мне надо проводить изменения, для
> таких простых действий как например добавить после
> поля 700 вывести поля 200?
так ли вам необходимы изменения, ведь КК формируются в соответствии с ГОСТом.
Используете ли Вы все возможности настройки вида КК для получения разных вариантов?

> Вобшем где можно посмотреть простых примеров для
> изменения вида выходной таб. формы?
Ищите, в частности, на форуме - эти вопросы обсуждались неоднократно.

Re: Разбираемся с Языком форматирования
Пользователь: PetrOFF (IP-адрес скрыт)
Дата: 24, September, 2009 15:53

Во вложении - сверху так как нам требуется, снизу так как по умолчанию.
С !!KK.srw немного разобрался, как я понимаю в [HeaderFormat] собирается скрипты форматирования карточки (!!kk3prk. !!kk0shk. и т.д) у меня получается менять, добовлять поля, но там их слишком много файлов, где то видел у Вас информацию за что отвечает каждый из этих файлов, сейчас к сожалению не могу найти опять, не могли бы Вы указать ее опять.
Не могу понять зачем служить [KeyOptions] там изменения вызывают крах вывода информации :)

Вложения: kk.jpg (96.4KB)  
Re: Разбираемся с Языком форматирования
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 20, February, 2010 14:59

Не хотелось бы создавать отдельную тему, поэтому опишусь здесь.
Необходимо разобраться с языком форматирования данных. Я так понимаю это своеобразный язык программирования. Путем проб и ошибок определил,что за краткое БО отвечает файд brief.pft. Хотел бы уточнить правильно ли это или нет?
Приведу начальный код файлика brief.pft

*************
mhl,
v503^a". ",
v461^x,
if s(v461^x)<>''then'. 'fi,
v461^c,
| [|v461^2|]|,
if p(v461) then
if a(v461^2) then &unifor('+1W1'''),
if p(v101)then &unifor('+1W1#'&unifor('Kjzk.mnu|'&unifor('Av101#1'))) else &unifor('+1W1#0') fi,
" ["d900^t,
if &unifor('+1R1')<>''then &unifor("Koomr.mnu|"v900^t) else &unifor("Koomi.mnu|"v900^t) fi,"]"d900^t,
if a(v900^t) then
if s(v230v337v135)<>''then
if &unifor('+1R1')<>''then' [Электронный ресурс] ' else' [Electronic resource]'fi
else
if s(&unifor('IPRIVATE,FPS,'),v905^s)<>'' then else
if &unifor('+1R1')<>''then ' [Текст]' else ' [Text]' fi fi fi fi fi,
**************
Сейчас опишу, что я разобрал.
mhl-режим вывода заголовка поля/подполя без преобразования букв;
v503^a". "-если подполе а поля 503 не пустое, то вывести содержимое и в конце добавить точку с пробелом;
v461^x-вывести подполе х поля 461;
if s(v461^x)<>''then'. 'fi-если подполе х поля 461 не пустое, то вывести точку с пробелом, в противном случае ничего не выводить;
v461^c-вывод подполя с поля 461;
| [|v461^2|]|-полностью не разобрался, узнал, что это повторяющиеся литерал и скорее всего подполе 2 поля 461 будет заключено в квадратные скобки;
if p(v461)-если запись содержит один экземпляр поля или подполя, то истина;
a(v461^2)-если в подполе 461 поля 2 имеется какие-то данные, то истина, т. е. a=not p;
&unifor('+1W1''')-подпрограмма вывода данных, с форматом типа '+1W1''' возникли большие трудности. В Приложении 4 Общего описания системы об этом операнде нет ни слова, по крайней мере я не нашел. Расскажите что это значит. Подобные трудности и с операндом &unifor('+1R1'). Если можно, то предоставьте, пожалуйста, подробное описание языка форматирования данных. Интересует в частности язык форматирования формат-программ.



Редактировано 2 раз. Последний раз 20.02.2010 15:50 пользователем woodyfon.

Re: Разбираемся с Языком форматирования
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 20, February, 2010 15:59

Вы практически все поняли правильно. Небольшие уточнения:
p(...) - проверка на существование. Если формат, указанный в параметре вернет что-то, то TRUE
a(...) - проверка на отсутствие. Если формат, указанный в параметре вернет ничего :), то TRUE.

По поводу +1. Этот юнифор описан в релизах. В новой документации описание этой подпрограммы присутствует. Если вкратце, то это работа с глобальными переменными. Однако более удобнее использовать uf('+7...'), поскольку она эмулирует переменные-поля (могут быть повторяющимися). Юнифор +1 создает не повторяющиеся глобальные переменные.

Re: Разбираемся с Языком форматирования
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 20, February, 2010 16:46

Панев Максим,
Дело в том, что эта конструкция &unifor('+1W1''') применяется еще в Irbis 4.2. Описания в текущей документации нет. Если это переменная, то она должна где-то быть заранее определена. Возможно, за эту конструкцию отвечает так называемый модуль, но вручную проглядывать все pft-файлы очень и очень не рационально. Если бы кто-то привел пример что получается в результате, было хорошо. И по поводу brief.pft я прав или нет?

Re: Разбираемся с Языком форматирования
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 20, February, 2010 18:40

По поводу brief.pft. Этот формат отвечает за отображение записи в области списка записей. Для Ирбис64 этот список находится в левой нижней области, а для Ирбис32 этот список находится на закладке "Просмотр/вывод". А уж то это, что вам нужно или нет, я не знаю. Задачу вы не описали.

По поводу языка. Это не язык программирования! Это язык форматирования. Или другими словами - скрипт выборки данных из записи.
Переменные тут не определяются. Советую прежде чем делать какие-то заявления, почитать документацию по языку. Не нужно додумывать, откройте маны и прозрейте :).

ЗЫ. Чтобы эффективно освоить язык форматирования, нужно забыть все программирование, о котором вы знаете. Это тоже самое, что и не стоит заниматься программированием в JS, опираясь на привычное ООП.

Re: Разбираемся с Языком форматирования
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 20, February, 2010 19:35

Перед созданием топика я несколько раз прочитал приложение 4. Язык форматирования можна назвать в какой-то степени языком программирования - уж сильно он смахивает на Pascal. Я же не говорю, что это полноценный язык программирования. Мне нужно узнать какой файл pft отвечает за вывод краткого БО в кладке Просмотр/Вывод. По поводу +1 отошлите по ссылке к документации, пожалуйста, или привидите наглядный пример или описание, чтобы можно было понять. Документация, по крайней мере IRBIS1.doc ничем не отличается от документации Irbis 9.x.

Re: Разбираемся с Языком форматирования
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 21, February, 2010 18:20

Кроме 6-и букв, составляющих 2 ключевых слова (if then), в языке форматирования нет ничего общего с Pascal :).
Для своей задачи вы файл определили правильно. Это выводит сведения о записи на закладке "Просмотр/Вывод".
Последняя документация доступна на открытом FTP по адресу [ftp.gpntb.ru] (6,5Mb)



Редактировано 1 раз. Последний раз 21.02.2010 18:28 пользователем Панев Максим.

Re: Разбираемся с Языком форматирования
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 22, February, 2010 17:43

Да ладно кроме 6 букв: забыли указать еще else, and... :)
А за ссылку на документацию огромное спасибо. Но опять таки не сильно понятно. Может, Максим, давайте вместе разберемся.
Отрывок из кода:
if a(v461^2) then &unifor('+1W1'"),
Читаю: Если подполе 2 (общее обозначение материала) поля 461 (основные сведения) не заполнено, то переменной W1 присвоить ''(пустая строка).
В основном в отрывке кода формат записи R/W обычно следующий:
&unifor('+1W1#'&unifor('Kjzk.mnu|'&unifor('Av101#1')))
Т. е. я так понимаю +1W-Запись в глобальные переменные, +1W1номер первой переменной далее идет решетка (#). Но как узнать, что записывается в переменные. Хотелось увидеть еще пару вариантов "чтения" формата R/W.

Re: Разбираемся с Языком форматирования
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 22, February, 2010 20:59

if a(v461^2) then &unifor('+1W1'"),...
Читаю: если в поле 461 отсутствует подполе 2 (или равно '', т.е. пусто), то записать в глобальную переменную с номером 1 то, что идет после #. В приведенном примере формат &uf('+1W') не корректен, поскольку решетки после W1 нет.
&unifor('+1W1#'&unifor('Kjzk.mnu|'&unifor('Av101#1')))
Читаю: записать в глобальную переменную с номером 1 (&uf('+1W1...')), расшифрованное через справочник jzk.mnu (&uf('K...')) значение первого повторения поля 101 (&uf('Av101#1')).

Re: Разбираемся с Языком форматирования
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 23, February, 2010 02:26

Отрывок кода &unifor('+1W1'") взят из файлика brief.pft irbis 4.2. Скорее всего, может, описанеи команды изменилось?

Re: Разбираемся с Языком форматирования
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 23, February, 2010 12:09

Нет, описание не изменилось. Там даже синтаксис ЯФ (языка форматирования) не верный. Двойные кавычки внутри параметра не закрыты (если это, конечно, двойные кавычки).

Re: Разбираемся с Языком форматирования
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 23, February, 2010 13:25

Сорри, это не двойные кавычки, а одинарные.



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