CftClub.ru
Клуб специалистов ЦФТ-Банк

Как найти запись, из которой провалились в массив ссылок?
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеЧт Окт 01, 2015 07:39   Как найти запись, из которой провалились в массив ссылок? Ответить с цитатой
Полезность: Нет оценки
Уважаемые Знатоки!
Юзер только что вошел в Нафигатор, встал на запись в справочнике и провалился в МАССИВ ССЫЛОК, который на данный момент пуст. Он запускает конструктор, причем в экранной форме конструктора необходимо использовать сведения о ТОЙ ЗАПИСИ СПРАВОЧНИКА, из которой юзер провалился в массив. Каким образом можно "поймать" эту запись справочника? Ведь в момент работы экранной формы конструктора (даже при установке крыжа "простой конструктор") у THIS нет Collection_ID! Если бы это был массив структур - тут все ясно, в клиент-скрипте конструктора доступен Form1.CollectionID
Но как быть с массивом ссылок?..
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеЧт Окт 01, 2015 08:36   Re: Как найти запись... Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Уважаемые Знатоки!
Юзер только что вошел в Нафигатор, встал на запись в справочнике и провалился в МАССИВ ССЫЛОК, который на данный момент пуст. Он запускает конструктор, причем в экранной форме конструктора необходимо использовать сведения о ТОЙ ЗАПИСИ СПРАВОЧНИКА, из которой юзер провалился в массив. Каким образом можно "поймать" эту запись справочника? Ведь в момент работы экранной формы конструктора (даже при установке крыжа "простой конструктор") у THIS нет Collection_ID! Если бы это был массив структур - тут все ясно, в клиент-скрипте конструктора доступен Form1.CollectionID
Но как быть с массивом ссылок?..


Проверил на пользовательском типе в фин. счетах - создал конструктор, в проверке вывел this%collection - он был не пустой, независимо от галочки "простой конструктор". Не понимаю в чем проблема Smile
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеЧт Окт 01, 2015 08:59    Ответить с цитатой
Полезность: Нет оценки
Где создал конструктор? В пользовательском типе? Что за тип? Массив ссылок?
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеЧт Окт 01, 2015 09:00    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Где создал конструктор? В пользовательском типе? Что за тип? Массив ссылок?


Да, массив ссылок - ::[AC_FIN].[USER_TYPE].
Может у вас переход в этот массив в представлении сделан криво?
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеЧт Окт 01, 2015 10:15    Ответить с цитатой
Полезность: Нет оценки
Будьте тогда добры, приаттачьте хранилище с этим типом и конструктором, я взгляну.
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеЧт Окт 01, 2015 10:51    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Будьте тогда добры, приаттачьте хранилище с этим типом и конструктором, я взгляну.

Не могу, т.к. лицензия закончилась сегодня на этой тестовой БД, как оказалось Smile

В общем, проверяйте переход - при проваливании в массив ссылок, есть окончание "%Из: ..." в наименовании представления (этого массива)?
Если нет - все дело в этом, надо менять переход на автоматический.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеЧт Окт 01, 2015 11:41   Re: Как найти запись, из которой провалились в массив ссылок Ответить с цитатой
Полезность: Нет оценки
prankster пишет:
vek21 пишет:
Если бы это был массив структур - тут все ясно, в клиент-скрипте конструктора доступен Form1.CollectionID
Но как быть с массивом ссылок?..


Проверил на пользовательском типе в фин. счетах - создал конструктор, в проверке вывел this%collection - он был не пустой, независимо от галочки "простой конструктор". Не понимаю в чем проблема Smile

А какая разница, массив чего используется?! Чем ссылка такая особенная?
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеПт Окт 02, 2015 07:02    Ответить с цитатой
Полезность: Нет оценки
prankster пишет:
проверяйте переход - при проваливании в массив ссылок, есть окончание "%Из: ..." в наименовании представления (этого массива)?
Если нет - все дело в этом, надо менять переход на автоматический.

Есть, естественно, окончание. После "из..." всегда пишется содержимое первой колонки записи, из которой мы провалились в массив.Представление, с помощью которого я проваливаюсь в массив - обычное PL/Plus представление, переход там автоматический, без всяких ручных добавок. И вообще - какая разница, из какого представления я провалился в массив?! Я уже внутри! И запускаю конструктор...
Random, разница существенная, и состоит как раз в том, что при работе конструктора в массиве СТРУКТУР в валидаторе конструктора сразу имеется this%collection, а вот при работе конструктора В МАССИВЕ ССЫЛОК этот this%collection появляется только в теле конструктора! То есть при работе экранной формы конструктора у меня нет доступа к экземпляру, из которого я провалился в массив!
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеПт Окт 02, 2015 07:07    Ответить с цитатой
Полезность: Нет оценки
>То есть при работе экранной формы конструктора у меня нет доступа к экземпляру, из которого я провалился в массив
Имеется в виду, при работе валидаторной части конструктора.
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеПт Окт 02, 2015 08:48    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
prankster пишет:
проверяйте переход - при проваливании в массив ссылок, есть окончание "%Из: ..." в наименовании представления (этого массива)?
Если нет - все дело в этом, надо менять переход на автоматический.

Есть, естественно, окончание. После "из..." всегда пишется содержимое первой колонки записи, из которой мы провалились в массив.Представление, с помощью которого я проваливаюсь в массив - обычное PL/Plus представление, переход там автоматический, без всяких ручных добавок. И вообще - какая разница, из какого представления я провалился в массив?! Я уже внутри! И запускаю конструктор...
Random, разница существенная, и состоит как раз в том, что при работе конструктора в массиве СТРУКТУР в валидаторе конструктора сразу имеется this%collection, а вот при работе конструктора В МАССИВЕ ССЫЛОК этот this%collection появляется только в теле конструктора! То есть при работе экранной формы конструктора у меня нет доступа к экземпляру, из которого я провалился в массив!


Почему вы идете в штыки, задавая вопросы "Какая разница?!?!?"? Если вы не видите разницу, это не значит, что ее нет. Сделайте переход по условию - поймете в чем разница, но если в теле появляется коллекция - дело, конечно, не в этом.
Повторюсь - в ЦФТ Банк 15.4 () коллекция известна уже в валидаторе. Если у вас не так - ставьте отладку в pl/sql пакет, гляньте интерфейсный пакет класса-массива, можно и его отладить.

Посмотрите другие такие массивы:
Код:
select ca.class_id "Parent class", ca.attr_id "Attr", c.id "Child class"
  from classes c, class_attributes ca
 where c.BASE_CLASS_ID = 'COLLECTION'
   and c.HAS_INSTANCES = 0
   and exists (select 1
          from classes c1
         where c1.id = c.TARGET_CLASS_ID
           and c1.BASE_CLASS_ID = 'REFERENCE'
           and c1.HAS_INSTANCES = 1)
  and ca.self_class_id = c.id
order by ca.class_id


Проверьте их конструкторы (ну или создайте свои конструкторы для теста в этих массивах), сравните со своим проблемным
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПт Окт 02, 2015 09:20   Re: Как найти запись, из которой провалились в массив ссылок Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Уважаемые Знатоки!
встал на запись в справочнике и провалился в МАССИВ ССЫЛОК, который на данный момент пуст. Он запускает конструктор,


Может он не в массив проваливается.
Может у вас в представлении на этом столбце стоит переход по условию...
проверьте.
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеПт Окт 02, 2015 09:42    Ответить с цитатой
Полезность: Нет оценки
Нет, Alkov, совершенно точно - переход в представлении "автоматический", никаких условий нет.
prankster, извините - я вовсе не принимаю "в штыки"...
Кстати, у меня, если я проваливаюсь в массив "пользовательский тип" в фин.счетах, в валидаторе конструктора тоже есть collection_id. Непонятно, чем отличается этот массив ссылок от моего массива ссылок, но в валидаторе конструктора моего массива ссылок collection'a нет...
Alex294
Участник со стажем


Вступление в Клуб: 02.06.2013
СообщениеПт Окт 02, 2015 11:05    Ответить с цитатой
Полезность: Нет оценки
vek21 пишет:
Непонятно, чем отличается этот массив ссылок от моего массива ссылок, но в валидаторе конструктора моего массива ссылок collection'a нет...

Судя по всему в Вашем массиве нет ни одной записи - в таком случае ЦФТ его почему-то считает недомассивом. После появления хотя бы одной записи, массив начинает вести себя по другому.
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПт Окт 02, 2015 11:09    Ответить с цитатой
Полезность: Нет оценки
Alex294 пишет:
Судя по всему в Вашем массиве нет ни одной записи - в таком случае ЦФТ его почему-то считает недомассивом. После появления хотя бы одной записи, массив начинает вести себя по другому.


Он не может быть недомассивом. Он или создавался при помощи next_valUE('SEQ_ID') - тогда с ним будет все "ОК" или он не создан и тогда естественно будут проблемы
vek21
Участник со стажем


Вступление в Клуб: 20.09.2007
СообщениеПт Окт 02, 2015 12:19    Ответить с цитатой
Полезность: Нет оценки
А что значит "создавался при помощи next_valUE('SEQ_ID')"?
Еще раз:
1)Входим в Навигатор
2)Встаем на запись в справочнике
3)Проваливаемся в (пустой!) массив ссылок
4)Запускаем конструктор
Цель - чтобы в валидаторе конструктора был доступ к записи справочника, из которой провалились в массив.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru