Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
 изучение глобалов, списков, функций для работы с ними  [new]
lisica198808
Member

Откуда: Донецк
Сообщений: 7
изучаем Caché. Сейчас у нас работа со списками, глобалами, возможно подпрограммами.
Дали задание
В списке хранится информация о фамилии, имени, отчестве читателя, книгах, отделах библиотеки, истории выдачи книг (журналов).

Первое задание: получить список выданных книг на заданную дату… И уже мрак.. Новичок-дурачек.. вроде и понимаю, как надо делать, и в то же время - ошибки.. Правильно ли мысли идут и как правильно все подправить, чтоб работало?

biblioteka() PUBLIC
{
	Set ^Departament = "Отдел библиотеки"
	
	Set ^Departament("Художественная литература","книги")=$ListBuild("Пушкин Александр Сергеевич") //автоор
	Set ^Departament("Художественная литература","книги","П12/1238")=$ListBuild($ListBuild("Капитанская дочь"),$ListBuild("2000")) //данные книг
	Set ^Departament("Художественная литература","книги","П12/1235")=$ListBuild($ListBuild("Капитанская дочь"),$ListBuild("1993")) //данные книг
	Set ^Departament("Художественная литература","книги","П12/1236")=$ListBuild($ListBuild("Капитанская дочь"),$ListBuild("1996")) //данные книг

	Set ^Departament("Художественная литература","книги")=$ListBuild("Хаггард Генри")
	Set ^Departament("Художественная литература","книги","Х16/1672")=$ListBuild($ListBuild("Копи царя Соломона"),$ListBuild("1996"))
	Set ^Departament("Художественная литература","книги","Х16/1670")=$ListBuild($ListBuild("Копи царя Соломона"),$ListBuild("1988"))

	Set ^Departament("Художественная литература","книги")=$ListBuild("Толстой Лев Николаевич")
	Set ^Departament("Художественная литература","книги","Т1/123")= $ListBuild($ListBuild("Война и мир"),$ListBuild("1992"))
 	 	
	Set ^Departament("Художественная литература","книги")=$ListBuild("Кристи Агата")
	Set ^Departament("Художественная литература","книги","К1/168")=$ListBuild($ListBuild("Восточный экспресс"),$ListBuild("1984"))
 	Set ^Departament("Художественная литература","книги","К1/202")=$ListBuild($ListBuild("Восточный экспресс"),$ListBuild("2000"))

	Set ^Departament("Художественная литература","книги")=$ListBuild("Налепина Алла Леонидовна")
	Set ^Departament("Художественная литература","книги","С0/045")=$ListBuild($ListBuild("Сказки народов мира"),$ListBuild("1986"))

    Set ^Departament("Художественная литература","журналы") =$ListBuild("Дворовский Петр Иванович")
    Set ^Departament("Художественная литература","журналы","ПиС/38") =$ListBuild($ListBuild("Проза и стихотворения современных писателей"),$ListBuild("1996"))
    Set ^Departament("Художественная литература","журналы","ПиС/38","24") =$ListBuild("1р20коп")
    Set ^Departament("Художественная литература","журналы","ПиС/45") =$ListBuild($ListBuild("Проза и стихотворения современных писателей"),$ListBuild("1997"))
    Set ^Departament("Художественная литература","журналы","ПиС/45","45") =$ListBuild("1р00коп")

	Set ^Departament("Научно-техническая литература","книги")=$ListBuild("Кендал Скотт")
	Set ^Departament("Научно-техническая литература","книги","К/120")=$ListBuild($ListBuild("С44 UML.Основные концепции"),$ListBuild("2002"))
	Set ^Departament("Научно-техническая литература","книги","К/121")=$ListBuild($ListBuild("С44 UML.Основные концепции"),$ListBuild("2002"))

	Set ^Departament("Научно-техническая литература","книги")=$ListBuild("Майо Джозеф ")
	Set ^Departament("Научно-техническая литература","книги","М/0359")=$ListBuild($ListBuild("C# Искусство программирования.Энциклопедия программиста"),$ListBuild("2002"))
	
	Set ^Departament("Научно-техническая литература","журналы")=$ListBuild("Иваненко Мария Сергеевна")
	Set ^Departament("Научно-техническая литература","журналы","НТ/036")=$ListBuild($ListBuild("Наука и техника"),$ListBuild("2012"))
	Set ^Departament("Научно-техническая литература","журналы","НТ/036","36")=$ListBuild("11р00коп")
	Set ^Departament("Научно-техническая литература","журналы","НТ/022")=$ListBuild($ListBuild("Наука и техника"),$ListBuild("2012"))
	Set ^Departament("Научно-техническая литература","журналы","НТ/022","22")=$ListBuild("11р00коп")
 //---------------------------------------------------------------------------------------------------//

	Set ^Reader = "Читатель"  
    Set ^Reader("00037")=("Боярский Михаил Сергеевич") //дата рождения
    Set ^Reader("00037", "dateBirtday")=("12/05/1967")
    Set ^Reader("00037","dateBirtday","dateRegistration")=("28/01/2017") //дата регистрации
    //выдача
    Set ^Departament("Художественная литература","книги","П12/1236",^Reader("00037"))= $ListBuild($ListBuild("28/01/2017"), $ListBuild("13/02/2017" ))
 	Set ^Departament("Художественная литература","книги","К1/202",^Reader("00037"))= $ListBuild($ListBuild("28/01/2017"), $ListBuild("13/02/2017" ))

    
    Set ^Reader("01087")=("Сорокина Анна Валерьевна") //fio
    Set ^Reader("01087", "dateBirtday")= ("10/11/1998")
    Set ^Reader("01087","dateBirtday","dateRegistration") =("14/04/2016") //дата регистрации
   //выдача
    Set ^Departament("Художественная литература","книги","П12/1236",^Reader("01087"))= $ListBuild($ListBuild("03/02/2017"), $ListBuild("18/02/2017" ))
    Set ^Departament("Художественная литература","книги","С0/045",^Reader("01087"))= $ListBuild($ListBuild("03/02/2017"), $ListBuild("18/02/2017" ))
	Set ^Departament("Научно-техническая литература","журналы","НТ/03",^Reader("01087"))= $ListBuild($ListBuild("03/02/2017"), $ListBuild("08/04/2017" ))    
    
    
    Set ^Reader("00108")=("Васильченко Роман Дмитриевич") //fio
    Set ^Reader("00108", "dateBirtday")= ("13/08/1988")
    Set ^Reader("00108","dateBirtday","dateRegistration")=("28/12/2017") //дата регистрации
   //выдача 	
    Set ^Departament("Художественная литература","книги","Х16/1672",^Reader("00108"))=$ListBuild($ListBuild("28/12/2017"),$ListBuild("13/01/2015"))
    Set ^Departament("Художественная литература","книги","П12/1236",^Reader("00108"))= $ListBuild($ListBuild("28/12/2017"), $ListBuild("13/01/2017" ))
	Set ^Departament("Научно-техническая литература","книги","К/120",^Reader("00108"))=$ListBuild($ListBuild("28/12/2017"), $ListBuild("13/01/2018" ))

    Set ^Reader("01016")=("Васильченко Алена Дмитриевна") //fio
    Set ^Reader("01016", "dateBirtday")= ("13/08/1984")
    Set ^Reader("01016","dateBirtday","dateRegistration")=("03/03/2003") //дата регистрации
   //выдача  
    Set ^Departament("Научно-техническая литература","журналы","НТ/022",^Reader("01016")) = $ListBuild($ListBuild("26/11/2017"), $ListBuild("10/12/2017" ))
    Set ^Departament("Художественная литература","книги","П12/1236",^Reader("01016"))= $ListBuild($ListBuild("28/11/2017"), $ListBuild("13/12/2017" ))
    

    Set ^Reader("00567")=("Никитина Алена Викторовна") //fio
    Set ^Reader("00567", "dateBirtday")= ("21/12/2002")
    Set ^Reader("00567","dateBirtday","dateRegistration")=("12/11/2015") //дата регистрации
   //выдача
	Set ^Departament("Научно-техническая литература","книги","М/0359",^Reader("00567"))=$ListBuild($ListBuild("12/11/2015"), $ListBuild("27/11/2015" ))
    Set ^Departament("Художественная литература","журналы","ПиС/38",^Reader("00567"))=$ListBuild($ListBuild("12/11/2015"), $ListBuild("27/11/2015" ))
 //---------------------------------------------------------------------------------------------------//

  // do ABONEMENT() //выводим все абонементы

  write !, "На какую дату получить список выданных книг? "
  Read day
  set dday=$ZDATEH(day,4)
  do toGiveDate(dday) //Получить список выданных книг на заданную дату…
}  

#;ABONEMENT() PUBLIC    
#;    { write "Номер абонемента читателя:"
#;	  Set x=""
#;      For {
#;       Set x=$Order(^Reader(x)) //выводим все абонементы
#;       Quit:x=""
#;       Write !,x
#;          }
#;    }

	
toGiveDate(d)  //Получить список выданных книг на заданную дату…
{ 	for 
	{ set ot=""
	  set k="" //книга
	  set inv="" //инв.номер
	  set chit="" //читатель
	  set data=""
	   
	   
	   Set ot=$Order(^Departament(ot)) //Рассматриваем отделлы, список отделов
	   Quit:ot=""
          for
          {Set k=$Order(^Departament(ot,k)) //Рассматриваем книги или журналы по отделам, 
		Quit:k=""
          for
          {
	    Set inv=$Order(^Departament(ot,k,inv)) //Рассматриваем названия, инв номер книги в отделе
		Quit:inv=""
          for 
          { Set chit=$Order(^Departament(ot,k,inv,chit)) //Рассматриваем названия, инв номер книги в отделе
		    Quit:chit=""
	          
	          
	          
       Set DateLength = $ListLength(^Departament(ot,k,inv,chit)) //Получаем длину списка с датами
	   for i=1:1:DateLength //Идем по этому списку
		{ set data = $Piece(^Departament(ot,k,inv,chit),1) // рассматриваем все даты
		  set ch=$ZDATE(data,4) // встречая дату переводим ее во внутренний часовой формат 
		   if ch=d // если введенная дата совпадает с указанной  в выдаче (их внутренний часовой формат одинаков)
		   	//	{   
		     set ot=$List(^Departament(ot,k,inv,chit),1) // запоминаем отдел из которого відана книгаа
		     set k=$List(^Departament(ot,k,inv,chit),2)  //запоминаем название книги
		   	//	}
			else 
		      write !, "В указанную дату книги не выдавались"
	   }
          }
          }  }
	   
	   
	   	
	}
 write !,"В этот день выдана книга: " , k, "из отдела ",ot
}
29 ноя 17, 22:07    [20993740]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
П.С.М.
Member

Откуда: Из СССР
Сообщений: 450
lisica198808
 ...
 write !,"В этот день выдана книга: " , k, "из отдела ",ot

Начну с конца)))
А у вас всего одна книга может быть выдана за день?
29 ноя 17, 22:35    [20993786]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
П.С.М.
Member

Откуда: Из СССР
Сообщений: 450
set ch=$ZDATE(data,4) // встречая дату переводим ее во внутренний часовой формат 

Имеет смысл сразу хранить дату/время в формате удобном для программной обработки, а не заниматься конвертацией в цикле.

Set DateLength = $ListLength(^Departament(ot,k,inv,chit)) //Получаем длину списка с датами

Сейчас здесь (в ^Departament(ot,k,inv,chit)) спиок. Хорошо.
set data = $Piece(^Departament(ot,k,inv,chit),1) // рассматриваем все даты

А теперь вдруг строка с разделителями???? Как? Вы уж определитесь, что у Вас там))).
Да, и прочитайте про $Piece и список принимаемых параметров.

Сей кусок, есть непонимание что происходит с переменными в цикле:
        for 
	{ set ot=""
	  set k="" //книга
	  set inv="" //инв.номер
	  set chit="" //читатель
	  set data=""
	   
	   
	   Set ot=$Order(^Departament(ot)) //Рассматриваем отделлы, список отделов
	   Quit:ot=""
          for
          {Set k=$Order(^Departament(ot,k)) //Рассматриваем книги или журналы по отделам, 
		Quit:k=""
          for
          {
	    Set inv=$Order(^Departament(ot,k,inv)) //Рассматриваем названия, инв номер книги в отделе
		Quit:inv=""
          for 
          { Set chit=$Order(^Departament(ot,k,inv,chit)) //Рассматриваем названия, инв номер книги в отделе
		    Quit:chit=""
	          
	         


Индексные переменные с помощью функции $order нужно обходить так:
 set variable=""  ; переменная цикла инициализируется начальным значением перед циклом а не в теле.
 for {
      set variable=$order(^global(variable))
      Q:variable=""
      // какие-то  действия.
      ...
      // если есть вложенный цикл, опять же, перед ним определяем переменную цикла
      set var=""
      for {
           set var=$order(^global(variable,var))
           Q:var=""
          
      }
 }
29 ноя 17, 23:03    [20993854]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
П.С.М.
Member

Откуда: Из СССР
Сообщений: 450
lisica198808,
Ну и к модели данных вопросы:
Создаем читателя с идентификатором 01087
Set ^Reader("01087")=("Сорокина Анна Валерьевна") //fio


Однако:
Set ^Departament("Художественная литература","книги","П12/1236",^Reader("01087"))="бла-бла-бла"

Вы понимаете, что такая запись равносильна:
Set ^Departament("Художественная литература","книги","П12/1236","Сорокина Анна Валерьевна")="бла-бла-бла"

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

Ну и конструкция:
$ListBuild($ListBuild("28/12/2017"),$ListBuild("13/01/2015"))

Список списков из одного элемента.
Дело, конечно, хозяйское, но Вы уверены что Вам именно такая конструкция нужна?
29 ноя 17, 23:40    [20993949]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
П.С.М.
Member

Откуда: Из СССР
Сообщений: 450
Скопировал не посмотрев:
П.С.М.
Set ^Reader("01087")=("Сорокина Анна Валерьевна") //fio


Присваивание значения должно быть без круглых скобок. Т.е.:
Set ^Reader("01087")="Сорокина Анна Валерьевна" //fio
29 ноя 17, 23:47    [20993962]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
ну я
Member

Откуда: Stalingrad
Сообщений: 1146
biblioteka() PUBLIC
{
	Set ^Departament("Художественная литература","книги")=$ListBuild("Пушкин Александр Сергеевич") //автоор
	Set ^Departament("Художественная литература","книги")=$ListBuild("Хаггард Генри")

Тут второе присваивание перезаписывает результат первого. Видимо, это должно лечь в разные имена.
И Пушкин написал не "Капитанская дочь", а "Капитанская дочка".
И зачем столько магических строк дублировать, пишите константы однократно, используйте косвенность имен, можно же легко опечататься.
30 ноя 17, 12:31    [20994950]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
EvLaUy
Member

Откуда: Москва
Сообщений: 2150
Ух ты! В моем родном вузе продолжают изучать Cache? Здорово. Только вот в котором из двух - в Донецке или Покровске. По-существу тут уже все разъяснили, добавить нечего, тем более, помощь оказал такой корифей M-технологий как ну я. ТС, внимательно прислушайтесь к его советам.
2 дек 17, 16:25    [21000666]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 885
lisica198808,
ну я
И зачем столько магических строк дублировать, пишите константы однократно

Воспользуемся же хорошим советом хорошего человека и превратим это
Set ^Departament("Художественная литература","книги")=$ListBuild("Пушкин Александр Сергеевич") //автоор
	Set ^Departament("Художественная литература","книги","П12/1238")=$ListBuild($ListBuild("Капитанская дочь"),$ListBuild("2000")) //данные книг
	Set ^Departament("Художественная литература","книги","П12/1235")=$ListBuild($ListBuild("Капитанская дочь"),$ListBuild("1993")) //данные книг
	Set ^Departament("Художественная литература","книги","П12/1236")=$ListBuild($ListBuild("Капитанская дочь"),$ListBuild("1996")) //данные книг
в код
	s global = $name(^Departament), @global = "Отдел библиотеки"
	s section = "Художественная литература", type = "книги"
	
	s author = "Пушкин Александр Сергеевич"
	s @global@(section,type,author)=$lb(author) //автор
	s items = $name(@global@(section,type,author))
	
	s title = "Капитанская дочка"
	s code = "П12/1238", year = 2000, @items@(code)=$lb(title,year)
	s code = "П12/1235", year = 1993, @items@(code)=$lb(title,year)
	s code = "П12/1236", year = 1996, @items@(code)=$lb(title,year)
	
	zw @global
3 дек 17, 12:59    [21002021]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
lisica198808
Member

Откуда: Донецк
Сообщений: 7
П.С.М.
Для чего тогда нужен идентификатор пользователя? Да и как в таком случае быть с учетом выдачи книг полным тёзкам?

Это что-то типа номера читательского абонемента


Вот с датами немного запуталась..
П.С.М.
Имеет смысл сразу хранить дату/время в формате удобном для программной обработки, а не заниматься конвертацией в цикле.



Спасибо за ответы всем - пытаюсь навести порядок в своем "муравейнике", благодаря вашим ответам.
12 дек 17, 20:39    [21028632]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
П.С.М.
Member

Откуда: Из СССР
Сообщений: 450
lisica198808
П.С.М.
Для чего тогда нужен идентификатор пользователя? Да и как в таком случае быть с учетом выдачи книг полным тёзкам?

Это что-то типа номера читательского абонемента



Да это понятное дело. Но вопрос был с намеком)))
Но для чего вообще библиотека выдает читателю билет/абонемент?
Наверное чтобы библиотека могла отличить одного Иванова Ивана Ивановича от другого Иванова Ивана Ивановича и знать какой Иванов Иван Иванович что читает/какими книгами пользуется))) Для этих целей библиотека и вводит уникальный идентификатор читателя в виде читательского билета.
13 дек 17, 15:13    [21030917]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
lisica198808
Member

Откуда: Донецк
Сообщений: 7
Я это понимаю)сама в библиотеку хожу и поэтому АБОНЕМЕНТ - это для меня изначально понятно, что у всех различное, не смотря на ФИО,и все другие схожести..
П.С.М.
Но для чего вообще библиотека выдает читателю билет/абонемент?
Наверное чтобы библиотека могла отличить одного Иванова Ивана Ивановича от другого Иванова Ивана Ивановича

мини-отчет так сказать. кусочно,но так и правда аккуратнее читается:
   s glav = $name(^Reader), @glav = "Читатель"
  	s dateRegistration="28/01/2017",  abonement = "00038" // в этот день зарегестрировался абонемент 
	s person = "Сурганова Светлана Яковлевна" //на  имя
	s @glav@(dateRegistration, abonement)=$lb(person) // список зарегестрированных в этот день
	s item = $name(@glav@(person)) // читатель с ФИО ,зарегестрированного в этот день
	s dateBirtday ="14/11/1968", pasport = "паспортные данные", @item@(abonement)=$lb(dateBirtday,pasport)// хар-стика читателя, дополнительные данные о нем

	zw @glav

в сторону вопроса про абонемент...

пишу вот так:
	s gl = $name(^ToGiveTheBooks), @gl = "Выдача книг"
	s dateGive = "28/01/2017" // в этот день была выдана 
	s @gl@(dateGive)=$lb(abonement) // следующим читателям из списку абонемента
	s it=$name(@gl@(abonement))
 	s @it@("00038")= @items@("К1/202",title) // следующая книга с инв.номером К1/202 выдана читателю с абонементом  00038
	zw @gl


компилятор не понимает того, как я абонемент пытаюсь вывести здесь
s @it@("00038")
, говорит мне <UNDEFINED>
что опять перемудрила?
14 дек 17, 23:11    [21035291]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
П.С.М.
Member

Откуда: Из СССР
Сообщений: 450
lisica198808
Я это понимаю)

Раз понимаете, зачем же тогда используете ФИО как уникальный ключ???
lisica198808
s @it@("00038")

[/src], говорит мне <UNDEFINED>
что опять перемудрила?


Ну так посмотрите чему равны все переменные участвующие в "проблемном" присваивании))
zw it,items,title
w !,$data(@items@("К1/202",title))

s @it@("00038")= @items@("К1/202",title)
15 дек 17, 09:47    [21035807]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
lisica198808
Member

Откуда: Донецк
Сообщений: 7
продолжаю доставать добрых и умных людей, своими глупыми и незрелыми вопросами)

вот так выглядит примерно глобал с читателями:
	s glav = $name(^Reader), @glav = "Читатель"

	s dateRegistration="28.01.2017",  abonement = "00037"
	s person = "Боярский Михаил Сергеевич"
	s @glav@(dateRegistration, person)=$lb(abonement) // в такой-то день зарегестрировался человек с ФИО
	s item = $name(@glav@(abonement)) // на такой-то абонемент
	s dateBirtday ="12.05.1967", pasport = "паспортные данные", @item@(person)=$lb(dateBirtday,pasport) //данные этого человека
	 

    s abonement = "01087",dateRegistration="14.04.2016"
    s person = "Сорокина Анна Валерьевна"
	s @glav@(dateRegistration, person)=$lb(abonement) // в такой-то день зарегистрировался человек с ФИО
	s item = $name(@glav@(abonement)) // на такой-то абонемент
	s dateBirtday ="10.11.1998", pasport = "паспортные данные", @item@(person)=$lb(dateBirtday,pasport) //данные этого человека
	 zw @glav

нужно вывестти все ФИО теперь. понимаю что нужно посчитать длину списка глобала и двигаться по нему.. Пишу вот так

FIO()
{  //w $ListLength(@glav)
  for i=1:1:$ListLength(glav)
  { s chit=$List(glav,i)
  //  zw chit
    s dReg=$List(chit,1) 
    s nameReader=$List(chit,2)
    w nameReader,!
   }

не воспринимается.. UNDEFINED!!
знаю,что можно вот так писать-
$ListLength(^Dvizh('Logging'))
- но здесь чуть по-другому. Как правильно передавать глобал тогда?
16 дек 17, 22:24    [21039857]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 340
lisica198808,
Не путайте список и глобал.
Глобал - это дерево.
Список -это строка, состояшая из полей, может быть узлом глобала.
Посмотрите на Ваш глобал:
^Reader="Читатель"
^Reader("00037","Боярский Михаил Сергеевич")=$lb("12.05.1967","паспортные данные")
^Reader("01087","Сорокина Анна Валерьевна")=$lb("10.11.1998","паспортные данные")
^Reader("14.04.2016","Сорокина Анна Валерьевна")=$lb("01087")
^Reader("28.01.2017","Боярский Михаил Сергеевич")=$lb("00037")

а список это
$lb("12.05.1967","паспортные данные")
.
ФИО у Вас находятся не в списках, а в индексах глобала. Для получения ФИО потребуется обход дерева,
как Вам уже писали. Например:
 set nomabon=""  ; номер абонемента
 for {
      set nomabon=$order(^Reader(nomabon))
      Q:nomabon=""
      // если есть вложенный цикл, опять же, перед ним определяем переменную цикла
      set FIO=""
      for {
           set FIO=$order(^Reader(nomabon,FIO))
           Q:FIO=""
          w !,nomabon,"   ",FIO
      }
 }

Результат:
 
00037   Боярский Михаил Сергеевич
01087   Сорокина Анна Валерьевна
14.04.2016   Сорокина Анна Валерьевна
28.01.2017   Боярский Михаил Сергеевич

У нас повторились ФИО, это результат неудачного проектирования глобала.
ИМХО, журнал посещения библиотеки надо вынести в отдельный глобал:
^Journal("14.04.2016","Сорокина Анна Валерьевна")=$lb("01087")
^Journal("28.01.2017","Боярский Михаил Сергеевич")=$lb("00037")

А еще лучше:
^Journal("14.04.2016","01087")=""
^Journal("28.01.2017","00037")=""
17 дек 17, 10:29    [21040293]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 885
lisica198808, в догонку - цикл в цикле плохо, а для списков есть $LISTNEXT
26 дек 17, 20:53    [21064715]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
Бредятина
Member

Откуда: Москва
Сообщений: 2413
lisica198808, Вы не сможете изучить Cache, потому что не знаете - что это такое:( Так что, не переживайте, и по-проще к этому отнеситесь.
26 дек 17, 22:24    [21064867]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
lisica198808
Member

Откуда: Донецк
Сообщений: 7
Бредятина
Вы не сможете изучить Cache, потому что не знаете - что это такое:( Так что, не переживайте, и по-проще к этому отнеситесь.

Я вообще не переживаю, мне просто контрольную сделать надо и оценку получить потом.
Я более-менее что-то "натворила", компилит, запускается но между строк на выводе попадает что-то вроде ..
<SUBSCRIPT>+242^llllll ^Departament("Художественная литература","книги","Хаггард Генри","")


что значит этот SUBSCRIPT?почему его выбивает?
2 янв 18, 00:11    [21077906]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
Бредятина
Member

Откуда: Москва
Сообщений: 2413
lisica198808,
Вот и хорошо:)
Просто обратиться к переживающим и все. Они же все равно переживают, куда им деваться:)
2 янв 18, 08:35    [21078103]     Ответить | Цитировать Сообщить модератору
 Re: изучение глобалов, списков, функций для работы с ними  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3752
lisica198808,

Ошибка SUBSCRIPT из-за пустого индекса. По умолчанию они запрещены.
2 янв 18, 21:51    [21079364]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить