• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Проблема с разделом "Материалы и сортаменты" справочника УТС

Автор StarGate33, 25.12.13, 11:31:50

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

StarGate33

Здравствуйте. Я совсем недавно начал работать за Вертикаль 3.0 и занимаюсь её администрированием. В УТС есть справочник "Заготовка", в котором приведены полные наименования заготовок по ГОСТу (например, Круг 8-h11ГОСТ 7417-90/А12-В-Н ГОСТ 1414-73) для их вставки в технологический процесс. При добавлени новых заготовок возникла проблема: при совпадении типа сортамента у разных марок материалом происходит перезаписывание наименования заготовки. В данном разделе УТС, есть возможность ведения подобных заготовок, но в результате получается, что приходится два раза добавлять объект класса ZAGOTOV.SORTAMENT и это приводит к неудобному поиску нужной заготовки и вообще выглядит как замусоривание самого справочника избыточными данными. Я испробовал несколько способов устранить данную проблему и пока что пришел к выводу, что необходимо копаться в сервере (база данных УТС расположена на сервере). Если у кого-то были подобные проблемы, подскажите  пожалуйста, что можно сделать?

teplinskiy

ЦитироватьПри добавлени новых заготовок возникла проблема: при совпадении типа сортамента у разных марок материалом происходит перезаписывание наименования заготовки.
Взял 2 разные марки метериалов:
- Сталь 10 ГОСТ 1050-88;
- Сталь 20ХГСА ГОСТ 4543-71.
Один для всех тип сортамента:
- Круг г/катаный
На основе типоразмера 150, добавил заготовки.
Перезаписывание наименования заготовки не увидел. Что делаю не так?

Цитироватьприходится два раза добавлять объект класса ZAGOTOV.SORTAMENT
Объекты (атрибуты) этого класса связаны с объектами (атрибутами) справочника УТС "Сортамент", а потому, по заложенной архитектуре в справочник "Заготовка", должны лишь отображать данные.
Если Вам нужен новый объект класса ZAGOTOV.SORTAMENT, такой объект должен сначала быть добавлен в справочник "Сортамент", а уже после заимствуйте его в справочнике "Заготовка".

Вячеслав

Цитата: StarGate33 от 25.12.13, 11:31:50
Я испробовал несколько способов устранить данную проблему и пока что пришел к выводу, что необходимо копаться в сервере (база данных УТС расположена на сервере).

Я таки думаю, что за уроки администрирования Вам нужно немножечко поговорить с местным офисом.

Да, и еще: а чем Вас не устроил корпоративный справочник Материалы и Сортаменты?

StarGate33

Цитата: teplinskiy от 26.12.13, 08:40:25
Взял 2 разные марки метериалов:
- Сталь 10 ГОСТ 1050-88;
- Сталь 20ХГСА ГОСТ 4543-71.
Один для всех тип сортамента:
- Круг г/катаный
На основе типоразмера 150, добавил заготовки.
Перезаписывание наименования заготовки не увидел. Что делаю не так?

Если честно, я тоже так делал многократно, но факт остаётся фактом - происходит перезаписывание. Сейчас расскажу поподробнее.
В справочнике заготовка на нижнем уровне иерархии классов есть три класса ZAGOTOV.SORTAMENT, ZAGOTOV.TYPESIZE, ZAGOTOV.EXEMPLAR. Выше всех расположен класс ZAGOTOV.SORTAMENT, который хранит идентификатор марки материала из класса ZAGOTOV.MARKA плюс берет из раздела "Сортамент" справочника УТС идентификатор типа сортамента материала (тот же круг г/катанный). Ниже по уровню расположен ZAGOTOV.TYPESIZE, который хранит внешний идентификатор равный идентификатору сортамента материала из класса ZAGOTOV.SORTAMENT. Класс ZAGOTOV.EXEMPLAR в самом низу, именно он формирует конечное имя заготовки. Данный класс хранит идентификатор материала и идентификатор сортамента. Идентификатор материала берется из класса ZAGOTOV.SORTAMENT, а идентификатор сортамента из класса ZAGOTOV.TYPESIZE. Все три класса обмениваются между собой идентификаторами при помощи методов SQL-запросов.
         Поясню, вкратце, как я понимаю, что происходит.
         Так вот, допустим мы выбираем типоразмер для стали А12-В-Н в форме Круга г/катанного, выбираем 8, например, но, если то же самое сделать при переходе к Сталь 20-б в форме Круга г/катанного и попытаемся выбрать типоразмер 8, то при переходе на заготовку мы увидим не Круг 8 ГОСТ..../Сталь 20-б, а увидим Круг 8 ГОСТ..../ А12-В-Н. Типоразмеры намертво привязаны к типу сортамента, а сама заготовка жестко привязана к типу типоразмера. Поэтому я и говорю, чтобы добавить заготовки с одинаковыми сортаментами нужно ДВА РАЗА добавить строки "Круг г/катанный".

tur

Перезаписывание заготовки происходит в Вертикали?
А скрины Вертикали выложить не можете?

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

teplinskiy

Цитироватьпри переходе на заготовку мы увидим не Круг 8 ГОСТ..../Сталь 20-б, а увидим Круг 8 ГОСТ..../ А12-В-Н.
То, что видно при переходе на заготовку это "составной" атрибут "NAME" класса "EXEMPLAR", значение которого по умолчанию получается на основе следующей конструкции:
:ZAGOTOV.SORTAMENT.PROFIL (пробел) :ZAGOTOV.TYPESIZE.SIZE_ZAG (пробел) :ZAGOTOV.SORTAMENT.GOST (символ "/") :ZAGOTOV.MARKA.MARKA (пробел) :ZAGOTOV.MARKA.GOST

Если разложить этот составной атрибут "" на части то получим:
- атрибут "PROFIL" класса "SORTAMENT";
- атрибут "SIZE_ZAG" класса "TYPESIZE";
- атрибут "GOST" класса "SORTAMENT";
- атрибут "MARKA" класса "MARKA";
- атрибут "GOST" класса "MARKA";

Пойдем по порядку.
Рассмотрим, например, атрибут "PROFIL":
- это вычисляемый атрибут класа "SORTAMENT" справочника "Заготовка". И так как он вычисляемый, то значения этого атрибута справочник "Заготовка" не содержит вообще, а получаются эти значения с помощью функции динамически, а именно на основе следующего запроса:
"SELECT PROFIL FROM ZAGOTOV2 WHERE GUID = ':ZAGOTOV.SORTAMENT.GUID_ZAGOTOV2' "
Как видно из запроса значение атрибута "PROFIL" получается из таблицы "ZAGOTOV2", которая является таблицей для класса "MARKA" из справочника "Сортамент", о как! Но получается не просто так, а по условию совпадения идентификатора записи о "марке сортамента" и значения атрибута "GUID_ZAGOTOV2" класа "SORTAMENT" справочника "Заготовка".
Так что же это за атрибут "GUID_ZAGOTOV2":
- это атрибут, который имеет внешнюю связь на справочник "Сортамент", а именно он потребляет значение атрибута "ID" от класса "MARKA" из этого справочника.
На разборе одного атрибута пожалуй остановлюсь, если пожелаете, разберетесь с остальными атрибутами в наименовании заготовки самостоятельно.
Обозначу лишь то, что:
- атрибут "SIZE_ZAG" класса "TYPESIZE" -  имеет странного вида значения идентифкаторов, похоже он составной, а значит учавствует в связи с внешними данными (таблицей/ми)
- атрибут "GOST" класса "SORTAMENT" - вычисляемый, получает значение по умолчанию на основе запроса.

В общем часть наименования любой заготовки до символа "/" получается из информации, которую справочник "Заготовка"  физически не содержит, да сообственно и не должен, такова заложенная в него архитектура.
Потому будет ошибкой, в Вашем случае, добавлять записи на этих уровнях справочника, а затем пытаться их увидеть на последнем уровне в наименовании заготовки.

И не происходит, в Вашем случае, перезаписи наименования, так как работают только SELECTы.
Просто часть наименования заготовки (до символа "/") собирается на черти пойми каких запросах, поскольку не понятно, какие именно идентификаторы туда передаются.
Остальная часть наименования заготовки (после символа "/") выводит информацию из атрибутов класса, который находится выше всех остальных, что учавствуют в формировании наименования заготовки. А потому что-то очень сомневаюсь, что если начать навигацию по справочнику с узла марки материала "Сталь 10", получим у заготовки в конце "Сталь 20ХГСА"

StarGate33

Цитата: tur от 27.12.13, 10:06:37
Перезаписывание заготовки происходит в Вертикали?
А скрины Вертикали выложить не можете?

Пробовал повторить у себя - не получилось по техническим причинам.
Пожалуйста, смотрите.
На первом скрине я просто перешел в УТС на заготовку из Сталь 10 Круг калиброванный. На втором скрине я перешел на А12 Круг калиброванный и вы можете видеть, что там торчит Сталь 10. На третьем скрине я меняю марку стали Сталь 10 ГОСТ 1050-88 на А12 ГОСТ 1414-75. На четвертом скрине я уже перешел обратно к Сталь 10 и мы видим, то что происходит у меня в справочнике "Заготовка" УТС.





Цитата: teplinskiy от 27.12.13, 10:36:17
И не происходит, в Вашем случае, перезаписи наименования, так как работают только SELECTы.
Просто часть наименования заготовки (до символа "/") собирается на черти пойми каких запросах, поскольку не понятно, какие именно идентификаторы туда передаются.
Остальная часть наименования заготовки (после символа "/") выводит информацию из атрибутов класса, который находится выше всех остальных, что учавствуют в формировании наименования заготовки. А потому что-то очень сомневаюсь, что если начать навигацию по справочнику с узла марки материала "Сталь 10", получим у заготовки в конце "Сталь 20ХГСА"

В класса ZAGOTOV.SORTAMENT есть метод TextSQL:

SELECT *FROM LINKS_MATL4_ZAGOTOV2
WHERE GUID_ZAGOTOV2=':ZAGOTOV.TYPESIZE.FGUID' AND GUID_MATL4=':ZAGOTOV.EXEMPLAR.ID_MATL'

Из этого кода следует, что класс SORTAMENT  берет идентификаторы материала и сортамента для хранения из объектов классов, которые ещё предстоит создать. Но, если уже есть какие-то записи объектов классов TYPESIZE и EXEMPLAR, то данный метод, который кстати обрабатывается системой УТС сразу же при переходе на соответствующий уровень справочника, берет эти идентификаторы из имеющихся на сервере таблиц.
Класс TYPESIZE имеет уже два метода:
TextSQL:

SELECT *FROM ZAGOTOV_SIZE
WHERE FGUID=':ZAGOTOV.SORTAMENT.GUID_ZAGOTOV2'

TextSqlUp:

SELECT *FROM ZAGOTOV_SIZE
WHERE GUID=':ZAGOTOV.EXEMPLAR.ID_SORTAM'


Класс EXEMPLAR имеет только один метод:
TextSQL:

SELECT *FROM ZAGOTOV_EXEMPLAR E
WHERE E.GUID_MATL=':ZAGOTOV.MARKA.ID' AND
E.GUID_SORTAM=':ZAGOTOV.TYPESIZE.ID'


Вполне возможно, что вы и правы, что справочник берет данные из фиг пойми какого места. Однако, смею заметить, что система методов в разделе "Заготовка" мне кажется несколько избыточной. Если обратить внимание, то можно заметить что классы TYPESIZE и EXEMPLAR пихают друг в дуга аттрибут GUID_SORTAM, постоянно его перезаписывая. Вообще, если разобраться, то можно устранить эту проблему, но я пока не знаю как это сделать. Сейчас, в данный момент, как компромисный вариант, я просто создал новый справочник "Заготовки моего предприятия", в котором я убрал эти селекты и перезаписывания не происходит. Правда самое интересное в справочнике "Заготовка" УТС это, что большинство заготовок в поле аттрибута NAME класса EXEMPLAR форма их записи не соответствует ГОСТам.

tur

Я конечно могу ошибаться - но может просто не обновляется окно УТС (Например после перхода на дуругой материал нажать F5).

StarGate33

Спасибо всем за ответы. В данный момент я уже нашел решение этой проблемы, не слишком изобретательное, но деваться некуда.