Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Текущее повторение
Пользователь: reaef (IP-адрес скрыт)
Дата: 25, January, 2012 18:13

Очень стыдно спрашивать, но не понимаю язык форматирования до конца.
Например: Есть поле 907. В нем несколько повторений. Я делаю форму, вывести имя работника, если этап работы ПК.
Вот что я делаю if v907^C='ПК' (ничего не находит, меняю = (равно) на : (содержится) тогда работает).
Второе, как мне вывести именно то имя, которое надо? Например есть три повторения
#907/1:_^CПК^A20111115^Birina
#907/2:_^CКТ^A20111116^BNata
#907/3:_^Cobrzv^A20111116^BNata
Вывести имя, где ^c='ПК' (Nata)
Чувствую себя далеким от программирования(((



Редактировано 1 раз. Последний раз 25.01.2012 18:38 пользователем reaef.

Re: Текущее повторение
Пользователь: Gena (IP-адрес скрыт)
Дата: 25, January, 2012 18:29

(if p(v907) then if v907^C='ПК' then v907^B fi fi/)

Re: Текущее повторение
Пользователь: reaef (IP-адрес скрыт)
Дата: 25, January, 2012 18:37

Я точно так же делаю, не ищет! Поэтому и спросил)

Вложения: 1.jpg (62.7KB)  
Re: Текущее повторение
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 25, January, 2012 18:49

Формат свой покажите. Или прикрепите вашу форму.

Re: Текущее повторение
Пользователь: reaef (IP-адрес скрыт)
Дата: 25, January, 2012 18:52

Попытаюсь сформулировать. Надо чтобы осуществлялся поиск по всем повторениям. При нахождении соответствия надо чтобы выводилось имя. Дальше поиск продолжается до окончания повторений в записи.
Если я пишу if v907^C='ПК' то не находит совпадения, но оно точно есть! Почему?

Re: Текущее повторение
Пользователь: reaef (IP-адрес скрыт)
Дата: 25, January, 2012 18:54

Пишу формат с нуля, чтобы разобраться. Это будет использоваться при выводе стат. форм.

Re: Текущее повторение
Пользователь: Gena (IP-адрес скрыт)
Дата: 25, January, 2012 19:11

Покажите как вы делаете отбор

Re: Текущее повторение
Пользователь: reaef (IP-адрес скрыт)
Дата: 25, January, 2012 19:13

Вот

Вложения: 1.jpg (249.7KB)  
Re: Текущее повторение
Пользователь: Gena (IP-адрес скрыт)
Дата: 25, January, 2012 20:18

Еще раз внимательно обратите внимание на мой пример и на скобки, которые его обрамляют. Скобки - признак поочередного перибора повторений.

Re: Текущее повторение
Пользователь: reaef (IP-адрес скрыт)
Дата: 25, January, 2012 20:39

Спасибо, нигде не видел эту информацию, очень полезно. Если не сложно, ответьте еще на вопрос: почему конструкция с = не работает (if v907^C='ПК')? СоДержится работает (if v907^C:'ПК'). Проверяю условием if if v907^C='ПК' then 'yes' else 'no' fi



Редактировано 1 раз. Последний раз 26.01.2012 08:09 пользователем reaef.

Re: Текущее повторение
Пользователь: Gena (IP-адрес скрыт)
Дата: 26, January, 2012 10:46

#907/1:_^CПК^A20111115^Birina
#907/2:_^CКТ^A20111116^BNata
#907/3:_^Cobrzv^A20111116^BNata

Привожу два формата:

(if p(v907) then if v907^c='ПК' then ... fi fi/)

if v907^c='ПК' then ... fi

Первый формат работает по отдельным строкам, а значит на каждой из трех строк он по очереди берет подполе "С" и сравнивает с заданным значение на знак равенства. Отрабатывает это так:
Первый заход. Взял поле "#907/1:_^CПК^A20111115^Birina ", выдернул из него поле "С" - ПК, сравнил, дал результат.
Второй заход. Взял поле "#907/2:_^CКТ^A20111116^BNata", выдернул из него поле "С" - КТ, сравнил, дал результат.
Третий заход. Взял поле "#907/3:_^Cobrzv^A20111116^BNata", выдернул из него поле "С" - obrzv, сравнил, дал результат.

Второй формат не разбирает строки, а значит он сравнивает не поочередно содержимое подполя "С", а берет содержимое сразу всех повторений этого подполя и выдает вам на сравнение. Этот же формат отрабатывает так:
Взял все повторения поля, выдернул из них подполе "С" - ПККТobrzv и выдал на сравнение.

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

Re: Текущее повторение
Пользователь: reaef (IP-адрес скрыт)
Дата: 26, January, 2012 12:12

Еще раз спасибо, теперь понял как делать поочередный перебор. Всегда хотел цикл ввести)



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