Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Администратор :  ИРБИС Irbis
 
Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 30, March, 2021 16:54

Здравствуйте, уважаемые разработчики системы!
См. скриншот. 910_полеФилиала.jpg
В базе книг я через последовательный поиск выбрал записи конкретного филиала. (910 поле, Место хранения = ф. 6)
Система выдала этот список.
1. Вопрос:
Как сделать так, чтобы при входе в БД книг формировался уже этот список, т.е книги только Филиала 6.
Очень не удобно ежедневно формировать поиск с требуемым списком книг.
И можно ли это вообще сделать, если условия Последовательного поиска указать в параметрах ini.файла пользователя. Если да, то какие параметры должны быть прописаны?
2. Конкретная книга и в поле 910:Свободные экземпляры система выдала все экземпляры этой книги во всех филиалах.
Как сделать (какую настройку и где) так, чтобы Филиал 6 видел только свои экземпляры? (есть подполе "Место хранения = ф. 6")
Эту вынужденную меру, необходимо реализовать, чтобы филиалы не удаляли и не портили чужие записи.
Либо сделать так, чтобы могли редактировать только свои записи ("Место хранения = ф. 6"), а остальные только просмотр. (но это наверное сложнее реализовать).

Спасибо!

С уважением,
Прокофьев Дитрий
программис ЦСДБ г. Ярославля

Вложения: 910_полеФилиала.jpg (584.6KB)   верисяIRBIS.jpg (28.5KB)  
Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 01, April, 2021 14:03

Я правильно понимаю, что условия отбора записей автоматически будут выполняться (при открытии Каталогизатора) в файле autoin.gbl?
Во вложении пример отбора записей через Последовательный поиск (см. поиск.jpg) и как результат только нужные записи (см. результат_поиска.jpg)
Но как увидеть код такого писка, если его делать не через объекты, а программно, командами в глобальном файле (который рисует интерфейс при открытии формы)?

Спасибо.

Вложения: поиск.jpg (47.3KB)   результат_поиска.jpg (318.4KB)  
Re: Только свой список записей подполей в поле
Пользователь: Gena (IP-адрес скрыт)
Дата: 01, April, 2021 15:31

Того, что вы хотите, в Ирбисе реализовать нельзя.

Что можно:
1. в ини-файлах пользователя в секции, например, MAIN добавить параметр, в котором будет указано место хранения, которое доступно для корректировки данному пользователю.
2. отредактировать файл dbnflk.pft так, что бы в момент сохранения проверялись значения ИЗМЕНЕННЫХ полей 910, их место хранения и оно сравнивалось с неким параметром в ини-файле пользователя. Если меняли только те поля, в которых правильное место хранения, то сохранение изменений пройдет нормально. Если была попытка изменить поле с другим местом хранения - будет выдано сообщение, что изменения не сохраняться.
3. Отредактировать формат !910.pft так, что бы проверка изменений в поле происходила не только в момент сохранения записи, но и в момент перехода от одного поля к другому.

...

4. Очень сильно мучаться при каждом обновлении системы, потому что все эти изменения нужно будет переносить вручную и ничего не терять.

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 01, April, 2021 16:33

Спасибо, Gena! Я уже и так мучаюсь, поскольку хотелки библиотекарей реально сложны. Сейчас из-за этого каждый ведет свою отдельную БД! А их у меня уже 15 штук и грядут еще + 15!!! Я повешусь.
Хочу свести все в одну БД, но так, чтобы каждый мог править и видеть только свои файлы.
Т.е. БД - 100 000 книг, а филиал - 3 000 книг. При этом экземпляров каждой книги у каждого свое количество! Вот и проблема, чтобы филиал видел из этих 100 000 книг только свои 3 000 книг при этом в поле 910:Экземпляры работник мог редактировать и удалять только свои экземпляры книг (по подполю ^D = ф. 6).
В АРМ Админисратор, в Редакторе РЛ поле можно сделать либо чтение либо редактирование и + ФЛК. Это я уже видел.
Ваша мысль понятна, но печально в том, что библиотекарь будет долго редактировать записи и в результате она не даст сохранить изменения и придется делать все по новой. А в чем ошибка она не поймет. :)))
Спасибо! Буду пробовать!

Re: Только свой список записей подполей в поле
Пользователь: Gena (IP-адрес скрыт)
Дата: 01, April, 2021 17:02

Уу.... у вас на самом деле проблем выше головы. Вести отдельные базы для каждого филиала - это путь в никуда. Теряется сам смысл работы над созданием каталога, так как читателю такой инструмент будет неудобен. К тому же, объединить все 15 баз вместе, в которых уже точно есть дублетные описания, - то же развлечение не для слабых нервов.

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 02, April, 2021 11:15

Доброе утро, Gena, вопрос не по этой теме, но не отказался бы от совета :)
В статистике подсчет читателей идет по году (от даты рождения берутся первые четыре цифры). Т.е. возраст считается по календарному году.
Т.е. не год рождения читателя, и например, если в этом году читателю уже 14 лет, и не важно в каком месяце ему исполнится. А по факту день рождения будет летом, т.е. ему 13 лет, а летом будет 14 лет.
Статистика уже его считает как 14 летнего, поскольку родился в 2007 году.

Суть понятна. А в ИРБИСЕ подсчет всегда идет по году? В системе нет подсчета полной даты? Как в 1С, система сама уже умеет складывать, вычетать и рассчитывать даты (с учетом высокосных готов и 28 февраля и т.п.).

Спасибо!

Re: Только свой список записей подполей в поле
Пользователь: Gena (IP-адрес скрыт)
Дата: 02, April, 2021 11:51

Тут вопрос в том, что:
1. хранить полную дату рождения с учетом маразмов с персональными данными - просто не безопасно для нервной системы
2. во многих библиотеках исторически так не заморачивались, по этому и задачи особой не было вдумываться в такие нюансы, как переход из группы в группу в течении года.

В вообще, все это возможно. Вот список дополнительных команд на обработку данных:

[wiki.elnit.org]

А из них конкретно вам нужна группа вот этих команд для работы с датами:
Функции для работы с датой и временем
Выдача данных, связанных с датой и временем – &uf('3…


Сразу оговорюсь, что вот эта, на первый взгляд замечательная команда, не совсем то, что нужно, так как она показывает разницу в количестве дней между двух дат:
3СГГГГММДД/ГГГГММДД – вычесть из одной даты в виде ГГГГММДД другую дату в виде ГГГГММДД и вернуть разницу в виде количества дней.


На ходу попробовал собрать вот такую конструкцию для определения возраста на текущую дату:
f(val(&uf('3C' &uf('3') '/'v21)) / 365,0,0)

Но конструкция не учитывает высокосные года. Так что она не подойдет. Правильнее будет вычесть отдельно года, а потом отдельно сравнить текущие месяц и дату с месяцем и датой рождения

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 02, April, 2021 13:55

Спасибо, Gena, ясно :)

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 06, April, 2021 16:40

Здравствуйте, Gena!
Вопрос по Вашей рекомендации: "2. отредактировать файл dbnflk.pft так, что б..." - такой файл есть и в БД Книг (IBIS) и в БД Читателя RDR, но в базах только два других файле:
- dbnflc.pft
- dbnflck.pft
какой из них именно указывали Вы (dbnflk.pft)?

я в файле dbnflck.pft БД RDR (там тоже такой есть) добавил просто в конец следующую секцию:
if p(v910) then if v910^D<>pMHRKV /'1Ошибка: Редактировались записи другого филиала. ' fi fi/ (см. скриншот)

В файле irbisc_f06.ini в секции [MAIN] добавил параметр: pMHRKV=ф. 06
У пользователя, который работает с БД в 910^D = ф. 06 (см. скриншот)

И когда я удаляю чужие записи (не ф. 06) в поле 910, то система спокойно сохраняет изменения!

Я не там условия пишу? (может нужно писать в БД KNNN (это наш аналог БД IBIS :) , чтобы системную БД не портить.

Спасибо!

Вложения: 910_D.jpg (313.1KB)   dbnflck.jpg (77.3KB)   irbisc_f06ab.jpg (23.1KB)  
Re: Только свой список записей подполей в поле
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 07, April, 2021 04:35

dbnflc.pft - для каждой бд свой. ищите в папке с именем БД. его и редактируйте.
потом тут if v910^D<>pMHRKV - явная ошибка. обращение к параметрам ини файла пользователя
следует делать через unifor
Вернуть параметр из INI-файла – &uf('I…

Вид функции: I.

Назначение: Вернуть параметр из INI-файла.

Формат (передаваемая строка):

I<SECTION>,<PAR_NAME>,<DE-FAULT_VALUE>

Примеры:

&unifor('IPRIVATE,NAME,NONAME')

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 08, April, 2021 10:50

Спасибо, GLUKa!
Очень подробный и обстоятельный ответ, РЕСПЕКТ за это!
Попробую :)

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 08, April, 2021 15:16

Здравствуйте, GLUKa!
Не судите строго, мои эксперимент, я в файле dbnflc.pft вставил вот такой код:
if p(v910) then if v910^D<>&uf('IPRIVATE,pMHRKV,NONAME) then /'1Ошибка: редактировались записи другого филиала. ',v910,ref(v910^D) fi fi/

и ИРБИС просто подвис :) ... думает, а вот изменения не случились, когда я попытался изменить не свою запись в поле 910 (см. скриншот).

И по совету Gena этот же код прописал в файле !910.pft в БД книг.

Я ведь правильно понимаю, что если условия не выполняются, то значение '1' а если все хорошо, то значение получается '0'?
Т.е. система сама реагирует на эти значения и выполняет откат или продолжает работу кода дальше?

Спасибо!

С уважением,
Прокофьев Дмитрий
программист ЦСДБ г. Ярославль

Вложения: 910.jpg (137.7KB)   dbnflt.jpg (127.7KB)  
Re: Только свой список записей подполей в поле
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 08, April, 2021 18:05

Давайте разбираться дальше.
1 -- поле у Вас повторяющиеся, а повторяющейся группы нет(Повторяющаяся группа состоит из набора команд форматирования, заключенных в круглые скобки).
2 -- /'1Ошибка: редактировались записи другого филиала. '

первый символ результата форматирования определяет результат ФЛК, а именно:
0 - означает положительный результат контроля;
1- означает отрицательный результат и обнаруженные ошибки считаются непреодолимыми, т.е. подлежат обязательному устранению;
2 - означает отрицательный результат, но при этом ошибки считаются преодолимыми, т.е. их можно не исправлять.
остальной результат форматирования (начиная со второго символа) в случае отрицательного контроля выдается пользователю в качестве сообщения.

а у вас переход строки


3 -- ref(v910^D) - тоже ошибка, функция используется не верно.

синтаксис функции
Функция REF(выражение, формат)
Первый аргумент –это числовое выражение, дающее MFN альтернативной записи которая должна быть выбрана, а второй аргумент –это формат, который должен быть применен к этой записи.

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ



Редактировано 1 раз. Последний раз 08.04.2021 18:09 пользователем GLUKa.

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 09, April, 2021 12:32

спасибо, GLUKa, за подробное пояснение.
Попробую разобраться, с учетом рекомендации.

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 09, April, 2021 15:22

И снова, здравствуйте,

исправил свой бред на другой, менее бред :)
if v910<>'' then if (|, |+910^D,&uf('IPRIVATE,pMHRKV,NONAME))<>&uf('IPRIVATE,pMHRKV,NONAME) then /'1' else

как и куда (см. вложение).

У меня возникли две особенности:
1. Тот же код в файле dbnflc.pft в БД книг ни как не влияет на работу в БД книг.
2. Система реагирует на этот код только в файле !910.pft в той же БД книг.

При любых изменения в подполях поля 910 система говорит, что изменения не будут сохраняться!
Т.е. для своих записей (это для ^D = ф. 6 ) система должна разрешать, а вот другие, где ^D <> ф. 6 должна не сохранять изменения!

Она же вообще не дает сохранять никакие изменения!

Я понимаю, что у меня бред при сравнении одно и того же, т.е. &uf('IPRIVATE,pMHRKV,NONAME) <> &uf('IPRIVATE,pMHRKV,NONAME) и жто БРЕД мой, а вот если я убираю в if вот именно это:&uf('IPRIVATE,pMHRKV,NONAME), то система просто циклиться.
Наверное нужно один параметр как то зафиксировать, а сравнивать с каждым новым из следующих строк перебора.
Я это понимаю, но синтаксис я не знаю как написать.

:((((

Спасибо, если подскажите, как это сделать!

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

Вложения: 910pft.jpg (106.1KB)  
Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 10, April, 2021 11:26

написал даже вот так:
if &uf('Q'v910^D.4)<>&uf('IPRIVATE,pMHRKV,') then /'1' else...

система все равно не дает делать любые изменения в 910 поле и подполе и в любом его повторении.

Как тяжело работать без точек останова и отладки кода. :(((
Тыкать пальцем в небо и догадываться почему и где не так работает.

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 10, April, 2021 12:10

и в добавок я вижу, что система проходит все повторения!
(см. вложение) начиная с первого повторения 910 поля!
Я же изменил только первую запись, а она проверяет сразу все...
Может поэтому она и не дает вообще ничего редактировать?

Хотя записи 12 и 13 (это записи ф. 6) должны быть доступны пользователю.

Как сделать, чтобы система проверяла только изменения текущей записи при переходе на другую?

Спасибо!

Вложения: ошибка.jpg (440KB)  
Re: Только свой список записей подполей в поле
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 13, April, 2021 14:07

давайте свои варианты флк форматов прикрепите сюда

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 14, April, 2021 11:07

Добрый день, GLUKa!
Во вложении ФЛК.
(база KNNN этот тоже самое что и IBIS :))

Спасибо!

Вложения: 910ws.jpg (96.3KB)   !910.PFT (5.1KB)  
Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 15, April, 2021 17:10

Здравствуйте, GLUKa!
эмпирическим методом, у меня получилось разместить проверку действия пользователя с полем 910, так, чтобы сообщение об ошибке выводилось только по текущей строке! (см. вложение)
Но, система не дает редактировать подполя даже для своих записей!
(проверка с условием if &uf('Q'v910^D.4)<>&uf('IPRIVATE,pMHRKV,')
т.е. подполе ^D (филиал) не равно значению параметра pMHRKV у пользователя этого филиала (файл mhrm.mnu) или файл mhr.mnu (путаница какая то)...
wss 910 поля тоже есть 910m.wss 910k.wss 910pr.wss я просто уже путаюсь что и кто отурывается...
Может я код не только в !910.pft должен править?
Не вижу в папке БД файл mhrm.mnu и как я понимаю в нем должна быть строка равная значению параметра pMHRKV.
Может ошибка из-за этого, что параметр не совпадает, поскольку значения не те берутся?

Вложения: 910pft.jpg (200KB)   f06INI.jpg (14.9KB)   Подполе_Dm.jpg (92.6KB)  
Re: Только свой список записей подполей в поле
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 15, April, 2021 20:24

Evgenie_cdb написал(а):
-------------------------------------------------------
> Добрый день, GLUKa!
> Во вложении ФЛК.
> (база KNNN этот тоже самое что и IBIS :))
>
> Спасибо!


рекомендуемый формат для корректировки записей, в которых место хранения соответствует введенному в параметр. и запрета корректировки записей если не в одном повторении поля 910(экземпляры) нет места заданного в параметре.

А еще Вы путаете понятие запись и повторение поля.

В бд каталога одно библиографическое описание документа -это одна запись. А в рамках одной записи относительно поля имеющего несколько повторений это номер повторения поля.

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ



Редактировано 3 раз. Последний раз 15.04.2021 20:32 пользователем GLUKa.

Вложения: !910.PFT (5.1KB)  
Re: Только свой список записей подполей в поле
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 15, April, 2021 20:26

> Не вижу в папке БД файл mhrm.mnu
файлы общие для всех бд хранятся в директории deposit

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 19, April, 2021 12:54

Здравствуйте, GLUKa!
Спасибо за помощь и ответы!!!

Файл mhrm.mnu в Deposit нет, зато есть в папке БД :)
Я в нем прописал параметр (см. вложение, самый первый параметр, как раз то значение, что в подполе 910^D = ф. 6), но результат без изменения, система запрещает редактировать любые изменения в 910 поле.

Наверное какой то мелкий нюанс и я его не вижу, то ли прописать еще где то нужно или закавырку поставить... я уже не знаю (чтобы враг не догадался!!! :)


P.s.: Ваше замечание по поводу Записи и Поля (Подполя, повторяющегося и не только) я учту. Скорее всего просто путаница в терминах записи и поля.

Спасибо, GLUKa! !

Вложения: mhrm.mnu (179 bytes)   910m.wss (1.7KB)  
Re: Только свой список записей подполей в поле
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 19, April, 2021 15:10

стандартно для описания многотомных и однотомных изданий (рабочие листы SPEC и PAZK) для ввода экземпляров используется 910.wss , которое использует для ввода мест хранения справочник mhr.mnu. который и находится в директории deposit. справочник этот необходим. когда Вы описываете экземпляры издания. параметры же вы прописываете в профили арма конкретного пользователя.
Дело не в том чтоб никто не догадался, а необходимо изучать внимательно документацию к системе. И не пробовать что-то сделать с наскоку.

и самое важное точно и правильно определить. Что же Вы в итоге хотите получить. от флк по Вашему параметру в профиле арма для пользователя.

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ



Редактировано 1 раз. Последний раз 19.04.2021 15:13 пользователем GLUKa.

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 19, April, 2021 16:28

GLUKa, всё что Вы сказали, я уже знал, и прежде чем работать с системой, изучил единственную в библиотеке руководство по ирбис 2002 года!
Других документаций у меня нет :(
Разработчики проводили 2 года назад вебинары для администраторов системы.
Очень многое стало понятным, но нюансы как всегда умалчиваются, либо забываются и говорят так: по всем вопросам на форум :)))
Вот я и на форуме, конкретный вопрос!

1. В стандартном интерфейсе АРМ Каталогизатор я у пользователя убрал всё лишнее, оставил только те вкладки и поля, с которыми ему разрешено работать (см. скриншот). Всего две кладки.
2. 910 поле - это отдельная вкладка.
3. Мне требуется так, чтобы работник ИРБИС мог редактировать только свои записи в 910 поле! (вкладка экземпляры) Т.е. согласно учетной записи (f06ab - это абонемент филиала №6) может удалять или добавлять только новые записи и удалять свои записи (в подполе ^D = ф. 6)
Для остальных повторяющихся полях 910 со значением 910^D <> ф. 6 система должна ругаться: "Это не ваши записи!" и откат изменений данной строки!

Как то так :)

В этой переписке мне сначала подсказывал Gena, что где и как... и потом подключились Вы :)
Как скрыть поле, или запретить поле - я уже понял, а вот как сделать так, чтобы система реагировало по значению ПОДПОЛЯ!? Вот тут мои знания уже тю-тю!

Вроде как то понятно объяснил, надеюсь :))

А вот код, который я добавил в файле !910.pft писал уже чисто научным тыком, согласно форума, вебинара и божьей помощью!

Логика присутствует, но не всегда понятна логика программиста, который писал этот код :)
Она очень сильно отличается от логики стандартного программирования!
А больше всего меня выводит из равновесия, то, что я не могу в коде поставить точку останова и отследить в цикле по шагам какая переменная получает какое-либо значение! ... ну ладно, это уже риторика :))

Спасибо!

Вложения: интерфейс.jpg (234.7KB)   910.png (20.4KB)  
Re: Только свой список записей подполей в поле
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 19, April, 2021 17:42

Evgenie_cdb написал(а):
-------------------------------------------------------
> GLUKa, всё что Вы сказали, я уже знал, и прежде
> чем работать с системой, изучил единственную в
> библиотеке руководство по ирбис 2002 года!

документация идет с версией в word-ом файле в папке с клиентами

кроме общей документации есть файл с изменениями к каждой версии и дополнительными данными

http://irbis.elnit.org/file.php?7,file=21243

> Других документаций у меня нет :(
> Разработчики проводили 2 года назад вебинары для
> администраторов системы.
> Очень многое стало понятным, но нюансы как всегда
> умалчиваются, либо забываются и говорят так: по
> всем вопросам на форум :)))
> Вот я и на форуме, конкретный вопрос!
>
> 1. В стандартном интерфейсе АРМ Каталогизатор я у
> пользователя убрал всё лишнее, оставил только те
> вкладки и поля, с которыми ему разрешено работать
> (см. скриншот). Всего две кладки.
> 2. 910 поле - это отдельная вкладка.
> 3. Мне требуется так, чтобы работник ИРБИС мог
> редактировать только свои записи в 910 поле!


но это не записи. это повторения поля 910

> (вкладка экземпляры) Т.е. согласно учетной записи
> (f06ab - это абонемент филиала №6) может удалять
> или добавлять только новые записи и удалять свои
> записи (в подполе ^D = ф. 6)
> Для остальных повторяющихся полях 910 со значением
> 910^D <> ф. 6 система должна ругаться: "Это не
> ваши записи!" и откат изменений данной строки!
>
> Как то так :)
>
> В этой переписке мне сначала подсказывал Gena, что
> где и как... и потом подключились Вы :)
> Как скрыть поле, или запретить поле - я уже понял,
> а вот как сделать так, чтобы система реагировало
> по значению ПОДПОЛЯ!? Вот тут мои знания уже
> тю-тю!
>
> Вроде как то понятно объяснил, надеюсь :))
>
> А вот код, который я добавил в файле !910.pft
> писал уже чисто научным тыком, согласно форума,
> вебинара и божьей помощью!
>
> Логика присутствует, но не всегда понятна логика
> программиста, который писал этот код :)
> Она очень сильно отличается от логики стандартного
> программирования!
> А больше всего меня выводит из равновесия, то, что
> я не могу в коде поставить точку останова и
> отследить в цикле по шагам какая переменная
> получает какое-либо значение!

для отлаживания форматов мы можете использовать специальный инструмент арма администратор серверного - редактор форматов

и там есть маркеры начала и конца формата которые могут помочь в отладке
изображение редактора форматов

... ну ладно, это
> уже риторика :))
>
> Спасибо!

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ



Редактировано 2 раз. Последний раз 19.04.2021 17:44 пользователем GLUKa.

Re: Только свой список записей подполей в поле
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 19, April, 2021 19:54

Если все же говорить об изменении только тех повторений поля которые указаны в настройках профиля. то
тут необходимо обращаться к помощи unifor который работает с предыдущими копиями записи

Форматировать предыдущую копию текущей записи – &uf('4N…

Вид функции: 4N.

Назначение: Форматировать предыдущую копию текущей записи.

Присутствует в версиях ИРБИС с 2011.1.

Формат (передаваемая строка):

4N,Format

где:

N – номер копии (в обратном порядке, т.е. если N=1 – это один шаг назад, N=2 – два шага назад и т.д.). Может принимать значение * – это указывает на последнюю копию. Если N – пустое значение, то в случае повторяющейся группы в качестве значения N берется НОМЕР ТЕКУЩЕГО ПОВТОРЕНИЯ, в противном случае берется первая копия;
Format – формат; может задаваться непосредственно или в виде @имя_формата.

Если не задается ни N ни Format, т.е. &unifor('4'), то возвращается количество предыдущих копий. Если запись не имеет предыдущих копий, то &unifor('4') возвращает 0, а все остальные конструкции &unifor('4...') возвращают пустоту.

Примеры:

&unifor('41,@brief')
(...&unifor('4,v200^a')...)
&unifor('4*,(v910/)')



формат примерно будет таким. добавила условие что переменная g3 не пустая/ для случая нового повторения которого не было. но в таких случаях необходимо учитывать что новые повторения добавляем последними повторениями а не в середину.

&uf('+7w3#'),,&uf('+7u3#'&unifor('4,(v910/)')),
(if p(v910) then if g3^D<>&uf('IPRIVATE,pMHRKV,') and g3<>v910 and g3<>''and then '1 ошибка: что то не так! повторение ' &uf('+90')' инв. № 'v910^B/ else '0'/ fi fi)

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 20, April, 2021 11:13

Добрый день, GLUKa!

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

Теперь нужно переварить информацию и попробовать согласно Ваших рекомендаций!
Надеюсь всё получится!

Спасибо и отличного дня!

Берегите себя!

Re: Только свой список записей подполей в поле
Пользователь: Evgenie_cdb (IP-адрес скрыт)
Дата: 28, April, 2021 12:36

Здравствуйте, GLUKa!

ВАМ РЕСПЕКТ!!! СПАСИБО за код и помошь!
У меня все получилось!
В вписал ваш код с доп переменной g3 в файле !910.pft базы книг и всё работает, как я и хотел.
Записи редактируются только разрешенные данному пользователю ИРБИС.
На остальные изменения 910 поля система ругается :)
(см. файл).
Мне подошел вариант &uf('4,v910^D) для проверки подполя D в текущей записи.
А в остальном все понятно и грамотно!

Спасибо еще раз, так как сам бы я до этого бы не дошел бы!
Отличного Вам дня и погоды!!!

Вложения: результат910.jpg (268KB)  


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