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

Администратор словаря данных - вижу фигу....

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> АРМы
Предыдущая тема :: Следующая тема  
Автор Сообщение
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеПн Июл 01, 2013 14:11   Администратор словаря данных - вижу фигу.... Ответить с цитатой
Полезность: Нет оценки
Добрый вечер.
Подскажите новичку - может где-чё включить надо, чтобы на вкладке
"Реквизиты" в Администраторе словаре данных появилась нужная мне информация.
В настройках что-то повключал - к наименованию и короткому имени реквизита появился "Тип"
А видеть хочется, для начала, такие поля:

Код:
select c.has_instances, c.agregate, c.base_class_id, c.target_class_id from classes c where c.id = ....

Ну и дальше, если реквизит объекта является массивом (коллекцией), то хотелось видеть чем является элемент этого массива (ссылкой или самостоятельной структурой).
Дело в том, название типам даются не всегда в соответствии с их типами - сильно зависит от проектанта.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Июл 02, 2013 08:20   Re: Администратор словаря данных - вижу фигу.... Ответить с цитатой
Полезность: Нет оценки
Damir пишет:
Добрый вечер.
Подскажите новичку - может где-чё включить надо, чтобы на вкладке
"Реквизиты" в Администраторе словаре данных появилась нужная мне информация.
В настройках что-то повключал - к наименованию и короткому имени реквизита появился "Тип"
А видеть хочется, для начала, такие поля:

Код:
select c.has_instances, c.agregate, c.base_class_id, c.target_class_id from classes c where c.id = ....

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

Бить пректанта по шее зарплатой не помогает?

Обычно окончание _REF означает, что мы имеем дело со ссылкой, _ARR - с массивом, _REF_ARR - с массивом ссылок. Сразу оговорюсь, что массивы ссылок - persona non grata.
Простые типы нужно просто запомнить.
Все остальные - структуры.

И вообще, кода долго работаешь над одним и тем же проектом, запоминаешь типы, если сомневаешься, ну ткнул пару раз мышкой на нужном поле. Или выполнил запрос к БД.

А тащить всю информацию в окошко - сильно много разных буковок, глаза устают, не нужно это ИМХО.

Тем более, что тех колонок, которые Вы хотите видеть, всё равно не настроить никак.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеВт Июл 02, 2013 10:30   Re: Администратор словаря данных - вижу фигу.... Ответить с цитатой
Полезность: Нет оценки
Random пишет:
Бить пректанта по шее зарплатой не помогает?

Последние разбегуться тада. Wink Итак вокруг одни 1С-ники Laughing
А если серъездно - раритета достаточно много, а я ЦФТ в глаза увидел только 2 месяца как.
Тык мышкой на поле дает неоднозначную интерпретацию (например, в случае Ссылки, Класса без возможности иметь экземпляры, Массива объектов - вот во всех случаях открывается окошко Класса).
Мне было бы удобнее напротив реквизита увидеть 'REFERENCE', 'STRUCTURE' или 'COLLECTION' и в случае массива - массив чего (ссылок или объектов)

Random пишет:

Сразу оговорюсь, что массивы ссылок - persona non grata.


А вот тут очень интересно узнать мнение спеца - почему?
В нашей системе массивов ссылок достаточно много


Random пишет:

Тем более, что тех колонок, которые Вы хотите видеть, всё равно не настроить никак.


Придется себе самому тулсятину писать - не так уж и сложно.
Просто это уж совсем инструмантальные средства - их лучше централизованно разрабатывать.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Июл 03, 2013 06:40   Re: Администратор словаря данных - вижу фигу.... Ответить с цитатой
Полезность: Нет оценки
Damir пишет:
Мне было бы удобнее напротив реквизита увидеть 'REFERENCE', 'STRUCTURE' или 'COLLECTION' и в случае массива - массив чего (ссылок или объектов)

Привыкнешь Smile
Увы, но это факт - что есть, то и кушаем. Сподвигнуть что-то поменять - это реально подвиг...
Damir пишет:

Random пишет:

Сразу оговорюсь, что массивы ссылок - persona non grata.


А вот тут очень интересно узнать мнение спеца - почему?
В нашей системе массивов ссылок достаточно много

Ну это же достаточно просто.
Вот раньше у клиента был массив ссылок кодов ОКАТО, или как-то так.
Через несколько времени стал нужен приоритет, какой из кодов предпочтительней.
Массивы ссылок не расширяются вообще никак.
Пришлось разрабатывать структуру со ссылкой на код окато и признаком MAIN. И заменять везде одно на другое. И писать операции конвертации, перегоняющие данные из одной таблички в другую. И куча ошибок.
Зато, когда встала задача сделать привязку того же кода ОКАТО к клиенту историчным, никаких проблем - на уже существующей структуре добавили реквизит DATE_BEG и всё.

PS: Про код ОКАТО и клиентов - это фантазия чисто для примера. Но факт - в ЦФТ по регламенту новый массив ссылок практически не имеет шансов попасть в дистрибутив.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеЧт Июл 04, 2013 05:33   Re: Администратор словаря данных - вижу фигу.... Ответить с цитатой
Полезность: Нет оценки
Random пишет:

Увы, но это факт - что есть, то и кушаем. Сподвигнуть что-то поменять - это реально подвиг...

Ужос.....
Будет время - наваяю по-бырому для себя гляделку реквизитов в виде операции ЦФТ-шной и выложу в форум. Нихай вашим ядерщикам потом в нос тычут.
Пока вот (другим топиком) выложу свои мысли по логированию изменений - на всеобщее обсуждение.

Random пишет:

Массивы ссылок не расширяются вообще никак.
................
Зато, когда встала задача сделать привязку того же кода ОКАТО к клиенту историчным, никаких проблем - на уже существующей структуре добавили реквизит DATE_BEG и всё.

PS: ... в ЦФТ по регламенту новый массив ссылок практически не имеет шансов попасть в дистрибутив.

Ясн. Пасиб.
Ну, по-сути, те же яйца только в профиль.
Вместо массива ссылок имеем расширяемую структуру ссылок.
Я уж было испугался, что пользовать можно только массивы объектов.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеЧт Июл 04, 2013 12:47   Re: Администратор словаря данных - вижу фигу.... Ответить с цитатой
Полезность: Нет оценки
Damir пишет:
Пока вот (другим топиком) выложу свои мысли по логированию изменений - на всеобщее обсуждение.

Можно подробнее? А то у меня есть что-то на эту тему...

Damir пишет:

Я уж было испугался, что пользовать можно только массивы объектов.

Ну да, так и есть. Просто в данном случае объект - структура со ссылкой.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеПн Июл 15, 2013 12:23   Re: Администратор словаря данных - вижу фигу.... Ответить с цитатой
Полезность: Нет оценки
Damir пишет:

Будет время - наваяю по-бырому для себя гляделку реквизитов в виде операции ЦФТ-шной и выложу в форум. Нихай вашим ядерщикам потом в нос тычут.

Ну вот сделал для себя 2 PL+ представления.
1-ое на основе таблицы CLASSES, второе на основе таблички class_attributes.
Второе представление прилагаю - собс-но мне не хватало поля SELF_KIND_TREE в Администраторе словаря при просмотре реквизитов.
Код:

type main is
   select ca(
        ca.CLASS_ID       : IBSO_CLASS_ID
      , ca.ATTR_ID       : ATTR_ID
      , ca.SELF_CLASS_ID    : SELF_CLASS_ID
      , ca.NAME          : NAME
      , ca.REQUIRED       : REQUIRED
      , ca.POSITION       : POSITION
      , ca.FILTERABLE    : FILTERABLE
      , ca.BROWSEABLE    : BROWSEABLE
      , ca.SEQUENCED       : SEQUENCED
      , ca.MODIFIED       : MODIFIED
      , ( select c1(
            max(sys_connect_by_path(c1.id, ' \ ')) : qq
         ) in classes%rowtype
         connect by prior c1.target_class_id = c1.id
         start c1.id =  ca.SELF_CLASS_ID         
      )               : SELF_CLASS_TREE
      
      , ( select c(
            max(sys_connect_by_path(
            --c.id
               case
                  when c.base_class_id = 'OLE'                                         then 'OLE объекты'
                  when c.base_class_id = 'TABLE'                                       then 'Вложенные массивы'
                  when c.base_class_id = 'DATE'                                        then 'Даты'
                  when c.base_class_id = 'BOOLEAN'                                     then 'Логические'                                                           
                  when c.base_class_id = 'COLLECTION'                                  then 'Массивы'
                  when c.base_class_id = 'STRING'                                      then 'Строки'             
                  when c.base_class_id = 'REFERENCE'                                   then 'Ссылки'
                  when c.base_class_id = 'STRUCTURE'  and c.agregate = 'VARIANT'       then 'Варианты'
                  when c.base_class_id = 'STRUCTURE'                                   then 'Структуры'
                  when c.base_class_id = 'MEMO'                                        then 'Текстовые'
                  when c.base_class_id = 'NUMBER'                                      then 'Числа'                           
                  else 'unknown'
               end --: KIND
            , ' \ ')) : qq
         ) in classes%rowtype
         connect by prior c.target_class_id = c.id
         start c.id =  ca.SELF_CLASS_ID         
      )               : SELF_KIND_TREE
      
   )in class_attributes%rowtype
   order by ca.class_id, ca.position   
;   
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеПн Июл 15, 2013 13:15   Re: Администратор словаря данных - вижу фигу.... Ответить с цитатой
Полезность: Нет оценки
Damir пишет:

Ну вот сделал для себя 2 PL+ представления.
1-ое на основе таблицы CLASSES, второе на основе таблички class_attributes.
Второе представление прилагаю - собс-но мне не хватало поля SELF_KIND_TREE в Администраторе словаря при просмотре реквизитов.


Продублировал поле SELF_KIND_TREE в представлении на основании CLASSES - по-моему неплохо получилось.

Код:

type main is
      select c(
         c.KIND                : KIND
         , c.id               : IBSO_CLASS_ID   
         , level                : LVL
         , c.name            : NAME
         , c.entity_id          : ENTITY_ID
         , c.parent_id          : PARENT_ID
         , c.has_instances       : HAS_INSTANCES
         , c.init_state_id       : INIT_STATE_ID
         , c.agregate          : AGREGATE
         , c.base_class_id       : BASE_CLASS_ID
         , c.target_class_id    : TARGET_CLASS_ID
         , c.autonomous          : AUTONOMOUS
         , c.is_collection       : IS_COLLECTION
         , c.kernel             : KERNEL
         , c.param_group       : PARAM_GROUP
         , c.has_type          : HAS_TYPE
         , substr(SYS_CONNECT_BY_PATH ( c.id, '/' ), 1, 4000) : TREE_WAY
         , decode(c.KIND
            , 'OLE объекты'         ,  10
            , 'Варианты'         ,  15            
            , 'Вложенные массивы'   ,  20
            , 'Даты'            ,  30
            , 'Логические'          ,  40                                                 
            , 'Массивы'            ,  50
            , 'Строки'            ,  60
            , 'Ссылки'            ,  70   
            , 'Структуры'         ,  90
            , 'Текстовые'         , 100
            , 'Числа'            , 110                           
            , 'unknown'          , 120
         ) : KIND_4_SORT
         , ( select c1(
               max(sys_connect_by_path(c1.id, ' \ ')) : qq
            ) in classes%rowtype
            connect by prior c1.target_class_id = c1.id
            start c1.id =  c.ID         
         )               : SELF_CLASS_TREE
      
         , ( select c1(
               max(sys_connect_by_path(
               --c.id
                  case
                     when c1.base_class_id = 'OLE'                                         then 'OLE объекты'
                     when c1.base_class_id = 'TABLE'                                       then 'Вложенные массивы'
                     when c1.base_class_id = 'DATE'                                        then 'Даты'
                     when c1.base_class_id = 'BOOLEAN'                                     then 'Логические'                                                           
                     when c1.base_class_id = 'COLLECTION'                                  then 'Массивы'
                     when c1.base_class_id = 'STRING'                                      then 'Строки'             
                     when c1.base_class_id = 'REFERENCE'                                   then 'Ссылки'
                     when c1.base_class_id = 'STRUCTURE'  and c1.agregate = 'VARIANT'       then 'Варианты'
                     when c1.base_class_id = 'STRUCTURE'                                   then 'Структуры'
                     when c1.base_class_id = 'MEMO'                                        then 'Текстовые'
                     when c1.base_class_id = 'NUMBER'                                      then 'Числа'                           
                     else 'unknown'
                  end --: KIND
               , ' \ ')) : qq
            ) in classes%rowtype
            connect by prior c1.target_class_id = c1.id
            start c1.id =  c.id
         )               : SELF_KIND_TREE
         , 'A'   : ATTRIB
            
      ) in( --classes%rowtype
         select c(
            c%rowtype
            , to_char(c.id+0) : CLASS_ID
            , case
               when c.base_class_id = 'OLE'                                         then 'OLE объекты'
               when c.base_class_id = 'TABLE'                                       then 'Вложенные массивы'
               when c.base_class_id = 'DATE'                                        then 'Даты'
               when c.base_class_id = 'BOOLEAN'                                     then 'Логические'                                                           
               when c.base_class_id = 'COLLECTION'                                  then 'Массивы'
               when c.base_class_id = 'STRING'                                      then 'Строки'             
               when c.base_class_id = 'REFERENCE'                                   then 'Ссылки'
               when c.base_class_id = 'STRUCTURE'  and c.agregate = 'VARIANT'       then 'Варианты'
               when c.base_class_id = 'STRUCTURE'                                   then 'Структуры'
               when c.base_class_id = 'MEMO'                                        then 'Текстовые'
               when c.base_class_id = 'NUMBER'                                      then 'Числа'                           
               else 'unknown'
            end : KIND
         ) in classes%rowtype
      )
         connect by c.parent_id = prior c.id
         start c.parent_id is null
         order siblings by  c.base_class_id 
;
[/code]
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> АРМы Часовой пояс: GMT + 3
Страница 1 из 1

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