Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Каталогизатор :  ИРБИС Irbis
 
Глобальная корректировка
Пользователь: Dragon (IP-адрес скрыт)
Дата: 24, November, 2006 08:48

Видимо из за моего недочета с конвертированным записям присвоил ся КСУ (910^U) номер 2006/121 (последний номер), надо его поменять на 2006/1. Я ещё плохо разбираюсь в глоб. корректировке.
Как не пробовал так и неполучилось его изменить с помощью команды CHA, пробовал с помощью REP но почему он начал вставляла все повторения подполя сразу.

Как это можно сделать.

Re: Глобальная корректировка
Пользователь: Куделя (IP-адрес скрыт)
Дата: 24, November, 2006 08:59

REP
910^U
*
(if p(v910) then if v910^u='2006/121' then '2006/1' else v910^u fi/)

или

CHA
910^U
F
(if p(v910) then if v910^u='2006/121' then '21' else # v910^u fi/)
(if p(v910) then if v910^u='2006/121' then '' else # v910^u fi/)

только ради Бога - проверяйте не на рабочей базе ;)



Редактировано 1 раз. Последний раз 24.11.2006 09:00 пользователем Куделя.

Re: Глобальная корректировка
Пользователь: Dragon (IP-адрес скрыт)
Дата: 24, November, 2006 09:44

Попробовал на тестовой первы вариант.
Где есть несколько сведений о экземплярах получается следующая вещь
0119^DСФ^E20.00^U2006/12006/12006/12006/12006/12006/12006/12006/1^C2006010
т.е. сколько есть повторений поля он столько каждый раз в подполе и вставил.
Второй ещё не пробовал, но непонял как это должно работать? Сначала где условие выполняется присваем 21 (зачем?)

Re: Глобальная корректировка
Пользователь: Куделя (IP-адрес скрыт)
Дата: 24, November, 2006 09:51

Ой,да. Стыдобища :) Забыл группы fi закрыть.

REP
910^U
*
(if p(v910) then if v910^u='2006/121' then '2006/1' else v910^u fi fi/)

или

CHA
910^U
F
(if p(v910) then if v910^u='2006/121' then '21' else # v910^u fi fi/)
(if p(v910) then if v910^u='2006/121' then '' else # v910^u fi fi/)

Оператор CHA заменяет данные. Т.е. ему сначала (в первом формате) надо обязательно указать ЧТО надо заменить. А если ничего заменять не будем, то необходима вставка пустого перехода на новую строку #, потому что '' приведет просто к дописыванию добавляемой информации.



Редактировано 1 раз. Последний раз 24.11.2006 09:52 пользователем Куделя.

Re: Глобальная корректировка
Пользователь: Dragon (IP-адрес скрыт)
Дата: 05, December, 2006 08:08

Спасибо болшое, помогло

Re: Глобальная корректировка
Пользователь: А. Роман (IP-адрес скрыт)
Дата: 08, December, 2006 10:32

Объясните, пожалуйста, почему очень медленно работает Г.К.?

64.6.1.D1-D4, БД - 64000, не ЭК, 4 поля, задание: автоактуализация, CHA ',' на '.'

FST - две строчки:
910 0 ("IN="v910/)
200 0 "T="v200, " - "v210/

Время выполнения - более 30 минут!!!



Редактировано 2 раз. Последний раз 08.12.2006 10:36 пользователем А. Роман.

Re: Глобальная корректировка
Пользователь: ochagova (IP-адрес скрыт)
Дата: 08, December, 2006 17:17

Во-первых, вы запустили с актуализацией на 64000 записей. Во-вторых, возьмите из обновления IRBIS64_61D5 программу IrbisGlob, теперь есть возможность отключать формирование протокола (раньше он создавался или в файл, или на экран). Напишите, изменилось ли что.

Re: Глобальная корректировка
Пользователь: Dragon (IP-адрес скрыт)
Дата: 13, December, 2006 10:45

Ещё вопрос появился оказалось что ещё надо установить все поля где есть поле 910, но в ней не указан номер КСУ (910^U). Как это сделать, так как как я понял если указать для обработки подполе 910^U Irbis как проигнорирует для обработки те поля у которых это подполе не указано.

Re: Глобальная корректировка
Пользователь: ochagova (IP-адрес скрыт)
Дата: 13, December, 2006 14:50

Если вам надо внести в повторение поля 910 подполе ^U, когда его нет, то это можно сделать следующим образом (вносим 2006/1):
REP
910
F
(if p(v910) then v910,if a(v910^U) then '^U2006/1' fi fi/)

Re: Глобальная корректировка
Пользователь: Dragon (IP-адрес скрыт)
Дата: 14, December, 2006 10:50

Спасибо

Re: Глобальная корректировка
Пользователь: Arthemyi (IP-адрес скрыт)
Дата: 09, November, 2022 13:49

Здравствуйте.

Редактируем часть фонда, которая в своё время была заведена в Ирбис без номеров КСУ. Т. е. без поля 910^U. Оно не пустое - его вообще нет.
Мы проверяем экземпляры по документам и присваиваем им нужную КСУ.

Поэтому возникают задачи:

1. Присвоить экземпляру, у которого отсутствует поле 910^U, нужный номер КСУ, причем так, чтобы у других экземпляров, у которых есть уже свой номер КСУ или он отсутствует, ничего в этом смысле не изменилось.

2. Заменить номер КСУ (910^U) на части экземпляров на нужный, но так, чтобы при этом у других экземпляров, у которых есть уже свой номер КСУ или он отсутствует, ничего в этом смысле не изменилось.

Выше приводилась ГК, которая решает проблему замены одного номера КСУ другим:


REP
910^U
*
(if p(v910) then if v910^u='2006/121' then '2006/1' else v910^u fi fi/)



Но она не учитывает, что часть экземпляров может не иметь поля 910^U, и записывает в них новый номер КСУ.
Как можно поправить эту ГК, чтобы она смогла решать задачи, описанные выше?
Я так понимаю, это должны быть две отдельные ГК.

Ирбис64+ 2022 (D3)
Сервер Турбо Про

Re: Глобальная корректировка
Пользователь: Arthemyi (IP-адрес скрыт)
Дата: 10, November, 2022 07:23

Подсказали, что ГК для решения второй задачи стандартна:

CHA
910^U
*
'2006/121'
'2006/1'


Теперь бы с первой разобраться.

Ирбис64+ 2022 (D3)
Сервер Турбо Про

Re: Глобальная корректировка
Пользователь: ochagova (IP-адрес скрыт)
Дата: 10, November, 2022 10:38

По первой задаче - а что вы имеете на входе? Как вы предполагали задавать соответствие - к какому инв.ном. приписать КСУ. В зависимости от этого надо придумывать решение.
Например, можно сделать справочник инв.ном.-номер КСУ.

Re: Глобальная корректировка
Пользователь: Arthemyi (IP-адрес скрыт)
Дата: 11, November, 2022 06:45

На входе мы просто вручную отбираем нужные наименования и затем, убедившись, что экземплярам с отсутствующими полями КСУ необходимо присвоить определенный № КСУ, присваиваем его.
Т. е. этот процесс у нас не получится до конца автоматизировать. Мы понимаем, что работу ГК, которую просим, мы должны будем контролировать, а на каких-то записях, чтобы она не обработала лишние экземпляры, и вовсе отказываться от неё и вводить данные вручную. Но всё же на значительной части записей она бы нам помогла и ускорила процесс.

Нам предложили такую ГК для 1-й задачи:

REP
910
F
(if p(v910) then v910 if v910^u='' then ‘^U2006/1’ fi fi/)

Ирбис64+ 2022 (D3)
Сервер Турбо Про

Re: Глобальная корректировка
Пользователь: ochagova (IP-адрес скрыт)
Дата: 11, November, 2022 10:58

Это правильная глобальная. Но она приписывает ко ВСЕМ экземплярам КСУ, если его нет. И всегда одно и то же КСУ.
Чтобы "до конца" автоматизировать, можно было бы сделать соответствие в справочнике: инв.ном - КСУ. И глобальную построить, используя этот справочник.

Re: Глобальная корректировка
Пользователь: Arthemyi (IP-адрес скрыт)
Дата: 11, November, 2022 11:20

В приведенную выше ГК вкралась ошибка: в конце кавычки не те. Вот исправленный вариант:

REP
910
F
(if p(v910) then v910 if v910^u='' then '^u2006/1' fi fi/)


А как справочник должен выглядеть? В виде чередующихся строк?
Так:

Инвентарный номер
Номер КСУ


Где он должен лежать?
И как тогда ГК с ним будет выглядеть?

Ирбис64+ 2022 (D3)
Сервер Турбо Про

Re: Глобальная корректировка
Пользователь: ochagova (IP-адрес скрыт)
Дата: 14, November, 2022 10:49

Структура такая как вы привели. Лежать файл должен либо в папке БД, либо в deposit.
Для работы со справочниками есть ф-ция &uf('K..... - раскодировка через меню. Пример
&unifor('K',v991^B,'!',v111),,,,
где v991^B имя справочника, v111 код, который надо раскодировать.
Пример использования - RepWithMnu в БД VUZ, в котором значения специальностей, факультетов.... заменяются по справочнику.

Re: Глобальная корректировка
Пользователь: Arthemyi (IP-адрес скрыт)
Дата: 14, November, 2022 10:54

Спасибо!

Будем разбираться.

Ирбис64+ 2022 (D3)
Сервер Турбо Про



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