Тема: Ссылка на группу в TDMS 3

Доброго времени суток!

У меня возник вопрос.
При создании атрибутов объекта можно создать атрибут типа "ссылка на пользователя". Но мне нужна ссылка на группу пользователей! Есть ли возможность организовать такое в TDMS 3?

P/S/ Пробовал делать атрибут типа "ссылка на пользователя" и за тем в окне выбора пользователя выбирать группу, но TDMS ругается "Не выбрано ни одного пользователя"   :unsure:

Что делать?

Re: Ссылка на группу в TDMS 3

Аналогичная задача была: надо было отправить сообщения нескольким юзерам (нажатием кнопки). В окне выбора пользователя такой заманчивой была мысль выбрать сразу группу, но...

Теперь юзеры поочерёдно выбирают персону из списка, щёлкают по кнопке и т.д.  :P

Re: Ссылка на группу в TDMS 3

Теперь юзеры поочерёдно выбирают персону из списка, щёлкают по кнопке и т.д.

Это печально - в моем случае в группе может быть до 20 человек и надо будет выбирать несколько групп, пользователи замучаются мягко говоря так работать. Неужели нет возможности сделать ссылку на группу?

Re: Ссылка на группу в TDMS 3

Действительно в атрибут типа "ссылка на пользователя" поместить группу нельзя. Но отправить сообщение группе пользователей можно.
Пример:

Set SelGroup = ThisApplication.Dialogs.SelectUserDlg
If SelGroup.Show = True Then
  If SelGroup.Groups.Count > 0 Then
    Set tMessage = ThisApplication.CreateMessage
    For Each tGroup In SelGroup.Groups
      tMessage.ToAdd tGroup
    Next
    tMessage.Subject = Test
    tMessage.Send
  End If
End If

Re: Ссылка на группу в TDMS 3

Edhunter пишет:

Действительно в атрибут типа "ссылка на пользователя" поместить группу нельзя. Но отправить сообщение группе пользователей можно.
Пример:

Set SelGroup = ThisApplication.Dialogs.SelectUserDlg
If SelGroup.Show = True Then
  If SelGroup.Groups.Count > 0 Then
    Set tMessage = ThisApplication.CreateMessage
    For Each tGroup In SelGroup.Groups
      tMessage.ToAdd tGroup
    Next
    tMessage.Subject = Test
    tMessage.Send
  End If
End If

Дело в том, что мне нужно не сообщение отправить, а создать атрибут ОБЪЕКТА(!), в котором можно ссылаться на группу. Это как-нибудь можно сделать?   <_<

(изменено: Edhunter, 7 мая 2009г. 09:16:17)

Re: Ссылка на группу в TDMS 3

Как я уже писал выше, в атрибут типа "Ссылка на пользователя" поместить группу нельзя. Опишите задачу конкретнее, может быть смогу предложить обходной путь.

Re: Ссылка на группу в TDMS 3

Driver пишет:

Дело в том, что мне нужно не сообщение отправить, а создать атрибут ОБЪЕКТА(!), в котором можно ссылаться на группу. Это как-нибудь можно сделать?

Смотрите в сторону Ролей.  ;)

Re: Ссылка на группу в TDMS 3

Как я уже писал выше, в атрибут типа "Ссылка на пользователя" поместить группу нельзя. Опишите задачу конкретнее, может быть смогу предложить обходной путь.

Попробую объяснить. У меня есть объект типа "Задание". Задание поступает от одной строительной группы (группа пользователей) и предназначается другой. Соответсвенно при создании этого объекта типа "задание" пользователю надо указать группу от которой поступило это задание и группу, которой оно предназначается (2 отдельных атрибута - "Отправитель" и "Получатель"). Если в атрибут типа "Ссылка на пользователя" поместить группу нельзя, как тогда пользователю указывать группу? Можно конечно руками в текстовый атрибут вводить имя группы, но это не выход.   :mellow:

Смотрите в сторону Ролей.

А причем здесь роли?   :unsure:

Re: Ссылка на группу в TDMS 3

Driver пишет:

Попробую объяснить. У меня есть объект типа "Задание". Задание поступает от одной строительной группы (группа пользователей) и предназначается другой. Соответсвенно при создании этого объекта типа "задание" пользователю надо указать группу от которой поступило это задание и группу, которой оно предназначается (2 отдельных атрибута - "Отправитель" и "Получатель").

А причем здесь роли?   :unsure:

:) в Вашем случае будут 2 роли "Отправитель" и "Получатель". Назначьте на эти роли одной и другой строительным группам. И пользователи входящие в эти группы автоматически будут иметь соответствующие права на это задание.

Кстати, а состав этих строительных групп фиксированный или "плавающий"? Если фиксированный, то лучше смотреть в сторону структурного подразделения.  ;)

Re: Ссылка на группу в TDMS 3

Mishaf Вы меня не поняли.

в Вашем случае будут 2 роли "Отправитель" и "Получатель". Назначьте на эти роли одной и другой строительным группам. И пользователи входящие в эти группы автоматически будут иметь соответствующие права на это задание.

Кстати, а состав этих строительных групп фиксированный или "плавающий"? Если фиксированный, то лучше смотреть в сторону структурного подразделения.

Мне сейчас абсолютно не нужны права пользователей на эти объекты. В данный момент меня интересуют интересуют 2 атрибута объекта, в которых можно будет каким-либо образом указывать группу пользователей.

Чувствую это никак не сделать.   :(

Re: Ссылка на группу в TDMS 3

Я Вас прекрасно понял. Но в TDMS нет атрибута типа "ссылка на группу", т.к. группы пользователей используются в управлении правами доступа, а не формировании структуры организации. Поэтому и предложил 2 "обходных" варианта: Роли или Структурные подразделения.

Ссылку на структурное подразделение (атрибут типа классификатор) на форме ввода расположить можно. Более того "строительная группа" больше похожа именно на структурное подразделение.

Группы пользователей TDMS больше нужны для удобства назначения прав доступа, поэтому я и предложил второй вариант воспользоваться Ролями. Кроме того группы пользователей могут автоформироваться по структурным подразделениям, что опятьже упрощает задачу управления правами доступа.

Но так как Вам не нужно на данном этапе "рулить" правами на задания, то лучше будет воспользоваться классификатором структурных подразделений (2 раза: отравитель, получатель).  ;)

Re: Ссылка на группу в TDMS 3

Я бы использовал след. метод:

Сделать 2-а текстовых атрибута - один разместить на форме ввода (с св-вом readonly), второй не размещать.
На форму ввода поместить кнопку с описанием (Caption) = "..." (либо "Выбрать"), которую расположить рядом с нашим текстовым атрибутом.

По данной кнопке вызывать SelectUserDlg.
Далее, при выборе группы, в 1-й атрибут писать наименвоание группы, а во второй(скрытый на форме ввода) писать sysid группы.

Re: Ссылка на группу в TDMS 3

Спасибо за помощь, пока остановился на выборе стр. подразделений. Но второй способ с 2-мя атрибутами тоже хорош ). Буду думать.   ;)

(изменено: Jecka, 22 июня 2009г. 14:09:18)

Re: Ссылка на группу в TDMS 3

Anatoly пишет:

Я бы использовал след. метод:

Сделать 2-а текстовых атрибута - один разместить на форме ввода (с св-вом readonly), второй не размещать.
На форму ввода поместить кнопку с описанием (Caption) = "..." (либо "Выбрать"), которую расположить рядом с нашим текстовым атрибутом.

По данной кнопке вызывать SelectUserDlg.
Далее, при выборе группы, в 1-й атрибут писать наименвоание группы, а во второй(скрытый на форме ввода) писать sysid группы.

Сегодня же появилась мысль создать тему "Необходим новый тип данных атрибута - группа", как увидел, что задача уже стоит, мало того я третий, кто считает ее реализацию целесообразной!   :)

Предложенное вами решение напрашивается само собой, но у него есть недостаток...
1. sysName доступно на запись
скажем в моих конфигурациях при создании группы ее sysName переименовываются по определенным правилам и нет гарантий, что впоследствии sysname не будет переименован, если изменятся правила назначения sysname группам.

Хотелось бы если честно в атрибуте иметь ссылку на группу
Какие у этого плюсы.
1. Ссылку не потеряешь если изменится ее sysName
2. Ссылка хранится в таблице БД и это даст возможность проще ею управлять.
Например создавать выборки, отчеты
3. Аудитор  (кто нить из вышестоящего начальства) если видит, что объект как-то слабо развивается, тыкает по ссылке -> открывается диалог группы -> получает список участников группы, их телефоны, паспортные данные и т.д., проводит воспитательные мероприятия.
Очень удобно с точки зрения навигации

Хранить подразделение в качестве ссылки тоже не годится, потому что, группа может состоять из 2-3 сотрудников, которые работают в подразделении численностью 10-15 чел.
Например за данный объект отвечает "Группа ГИПа Кузнецовой" -> Состав: ГИП и ее замы

Да кстати description группы могут переименовать, и нет событий это регистрирующих. Ну в общем ссылка она куда лучше.

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

Re: Ссылка на группу в TDMS 3

Jecka пишет:

скажем в моих конфигурациях при создании группы ее sysName переименовываются по определенным правилам и нет гарантий, что впоследствии sysname не будет переименован, если изменятся правила назначения sysname группам.

А есть ли у Вас гарантии, что не изменятся SysId атрибутов, форм ввода, команд и т.д? - Настройка то сразу слетит  :)))

Посмотрите что будет с атрибутом на форме ввода, если сменить его sysid  :)

Хотелось бы если честно в атрибуте иметь ссылку на группу
...
Было бы очень полезным развивать этот инструмент, создать события для группы: создание, удаление, переименование...

Вам, как и всем остальным, дана такая возможность.
Реализуйте группы при помощи объектной модели. Там можно и виртуальные группы придумывать.
Заведите тип объекта "Группа", тип объекта "Пользователь" - и вперёд!  И события будут все отрабатывать - просто бизнес-логику на до продумать.
PS. это не шутка.

Re: Ссылка на группу в TDMS 3

Anatoly пишет:

А есть ли у Вас гарантии, что не изменятся SysId атрибутов, форм ввода, команд и т.д? - Настройка то сразу слетит smile.gif))

Посмотрите что будет с атрибутом на форме ввода, если сменить его sysid smile.gif

Эта проблема лично в моих конфигурациях решена   :rolleyes: Хоть и пришлось потрудиться.
Могу безнаказанно переименовывать атрибуты, даже с учетом переноса данных из девелоперской конфигурации на предприятие.

По теме: преимущества ссылок очевидны, я просто привел одно из них.

Реализуйте группы при помощи объектной модели. Там можно и виртуальные группы придумывать.
Заведите тип объекта "Группа", тип объекта "Пользователь" - и вперёд! И события будут все отрабатывать - просто бизнес-логику на до продумать.

Решение интересное, но ... опять же заплатка.
Инструмент Группы в TDMS уже есть. Дублирование созданного ни к чему хорошему не приводит.

На самом деле, данная проблема некритична, ее можно решить приведенным вами способом.
Топик создан на тему "Куда может развиваться TDMS, как можно улучшить программу"
Я не первый год работаю с TDMS и очень заинтересован (как и многие на этом сайте   B)  ) в развитие ее функциональности.

Пройдемся по слабым местам:
- Писать про Интерфейс с Офисом уже бесполезно. Прошло больше года, а воз и ныне там. Он не работает и все!  Хоть весь форум испиши. Проще за выходные свой интерфейс написать!
- Про документацию буду писать постоянно, без нее никак.
- Про интерфейс пользователя необходимо писать глобально. Слишком много нужно развивать, причем требуется развитие именно функциональности. Красоты никто не требует.
   Надеюсь, от Сергея будет централизованный опрос.
Хочу заметить, что сейчас в условиях MS VS 2008 существуют все возможности для разработки мощных TreeView и DataGridView! Практически все уже написано и лежит в интернете в свободном доступе. Даже за неделю можно написать очень мощные компоненты.

- Заказчики просят сделать полновесную привязку к домену.
Сначала я с ними спорил, мол отстаньте да и так потянет! (Такой же "Футбол"  ;) Затем вошел в их положение, понял что в условиях текучести кадров администрировать 1000 человек сразу в двух системах проблематично.
Так что будем ждать развитие инструмента: синхронизация, поддержка доменных групп, групп MS SQL Server
Если потребуется, буду писать предложения (требования), поступившие от администраторов, если конечно будет в этом толк и результат...

Создание типа данных "Группа" тоже было бы полезным. Пусть и некритично, конечно. Но смысл в этом есть, аргументы приведены выше.

Re: Ссылка на группу в TDMS 3

Jecka пишет:

Эта проблема лично в моих конфигурациях решена   :rolleyes: Хоть и пришлось потрудиться.
Могу безнаказанно переименовывать атрибуты, даже с учетом переноса данных из девелоперской конфигурации на предприятие.

При проектировании/внедрении любой ИС, должны быть написаны регламенты.
Одним из регламентов, может быть "Присвоение имён системным элементам".
Например, все типы объектов должны начинаться с "OBJECT_",  а все атрибуты должны начинаться с "ATTR_OBJECT_"
И к каждой настройке администратору вы можете передать свои правила.
Более того, при коллективной разработке подобные правила/регламенты - обязательны (вплоть до размера табуляции).
Так что это не аргумент - это культура написания кода.

Решение интересное, но ... опять же заплатка.

Это не заплатка. Объектная модель намного гибче, чем любое другое представление. Всё зависит от задач.

Пройдемся по слабым местам:
- Писать про Интерфейс с Офисом уже бесполезно. Прошло больше года, а воз и ныне там. Он не работает и все!  Хоть весь форум испиши. Проще за выходные свой интерфейс написать!

Вот интересно.... у всех работает, у вас нет. Причём под всеми версиями офиса.

- Про документацию буду писать постоянно, без нее никак.

Она есть.

- Про интерфейс пользователя необходимо писать глобально. Слишком много нужно развивать, причем требуется развитие именно функциональности. Красоты никто не требует.

Вот новость.... я то думал, что требуется именно красота... точнее доработка до более удобного восприятия некоторых элементов.

Хочу заметить, что сейчас в условиях MS VS 2008 существуют все возможности для разработки мощных TreeView и DataGridView! Практически все уже написано и лежит в интернете в свободном доступе. Даже за неделю можно написать очень мощные компоненты.

Что ввы говорите!!! Вот новость! А мы то и не знали... что можно использовать халявный код, который неизвестно как себя поведёт...
Что Вам мешает подцепить ActiveX элемент? Что мешает написать свой и подцепить?

- Заказчики просят сделать полновесную привязку к домену.

Кто мешает? Используйте windows авторизацию и объектную модель - я это уже даааавно использую. И всё работает.

Создание типа данных "Группа" тоже было бы полезным. Пусть и некритично, конечно. Но смысл в этом есть, аргументы приведены выше.

А также типы данных "Реальное число" (с), "Папка Windows", "Элемент справки" и т.д.

(изменено: Jecka, 15 июля 2009г. 15:02:25)

Re: Ссылка на группу в TDMS 3

При проектировании/внедрении любой ИС, должны быть написаны регламенты.
Одним из регламентов, может быть "Присвоение имён системным элементам".

Да регламенты есть! Без них никак! Соблюдаются.
Просто бывают, что они не соответствуют реалиям, о которых не всегда знаешь.
И регламенты приходится иногда переписывать.
Вот пример. Недавно натолкнулись на то, что макс. длина поля Objectdef::descriptionFormat = 256 символов!
(Я уже писал про это на форум)
Одному типу объекта этой длины не хватило.
И знали бы вы сколько пришлось переделывать!
Нет гарантии, что такие вопросы больше не всплывут.

Это не заплатка. Объектная модель намного гибче, чем любое другое представление. Всё зависит от задач

Часто заплатки не кажутся таковыми до тех пор пока не встретишь задачу, которая не решится из-за этой самой заплатки.
Примеров много.

Вот интересно.... у всех работает, у вас нет. Причём под всеми версиями офиса.

Я говорю про версию 3.13, доступную на форуме (может выложенная на форум версия не актуальная?)
Работает только у тех пользователей, у кого права локального администратора на свою машину.

Попробуйте поработать с интерфейсом MS Word с правами гостя на ПК   ;)

- Про документацию буду писать постоянно, без нее никак.

Она есть. (документация)

Проблемы с документацией, существующие в настоящее время:
1. Неполная.
1.1 выборки
1.1.1 Отчеты (раздела нет)
1.2 действия при падения сервера
Предположим упал сервер, администратор восстановил сервер, установил заново SQL Server 200x? нашел резервную копию, восстановил backup, запускает TDMS, а он пишет про неправильный логин. Где написано, что необходимо провести обновление с помощью TDMS Administrator или выполнить такую-то процедуру.

2. Не в самом удобном виде.
см. соответсвующую тему.
3. в дистрибутивах лежит устаревшая справка, ее приходится по крохам собирать с форума, с дисков, с присланных релизов, сравнивать даты выпуска. Почему я должен этим заниматься???
Если честно из той кучи файлов справки, собранных в разных местах, я не до конца понимаю какой из них актуальный.
4. Ее толком не обновить на местах пользователей из-за бага, о котором написано в другой ветке.
см. соответсвующие тему.

Вот новость.... я то думал, что требуется именно красота... точнее доработка до более удобного восприятия некоторых элементов.

Кому что.  :) Лично для меня не хватает именно функциональности. Предложения по красоте оставлю для других.

Хочу заметить, что сейчас в условиях MS VS 2008 существуют все возможности для разработки мощных TreeView и DataGridView! Практически все уже написано и лежит в интернете в свободном доступе. Даже за неделю можно написать очень мощные компоненты.

Что ввы говорите!!! Вот новость! А мы то и не знали... что можно использовать халявный код, который неизвестно как себя поведёт...
Что Вам мешает подцепить ActiveX элемент? Что мешает написать свой и подцепить?

Я говорю как раз не про формы ввода.
Речь идет про:
- дерево объектов TDMS;
- список состава.

Если бы там была возможность использовать свои компоненты вместо штатных, то TDMS цены бы не было!
О проблемах и желаемых улучшениях этих компонентов, наверное стоит завести отдельную ветку.

Кто мешает? Используйте windows авторизацию и объектную модель - я это уже даааавно использую. И всё работает.

Мы тоже с радостью используем. Но работает не все.
См. соответствующую ветку.
Хотя нет, напишу здесь, с чем нам пришлось столкнуться за недолгий период.
1. Падение TDMS в случае, когда юзер вошел не в домен, а на локальную машину. (есть тема на форуме, обещают подправить)
2. Нет поддержки групп доменной политики.
3. Документация API по данной теме отсутствуют.
4. TDMS Administrator при операциях с БД, например "Очистка лог-файла", пускает только mssql-администратора, например, SA. Доменный юзер не имеет шансов выполнить операции при том, что у него есть права на MSSQLServer. Это вызывает недоумение у всех сисадминов без исключения. Оправдываться приходится нам.

5. Кстати Баг, о котором я не успел еще написать: при переходе с SQL 2000 на SQL 2005 права юзеров с windows-аутентификацией теряются. приходится переподключать юзеров из домена.

Re: Ссылка на группу в TDMS 3

Jecka пишет:

Вот пример. Недавно натолкнулись на то, что макс. длина поля Objectdef::descriptionFormat = 256 символов!
И знали бы вы сколько пришлось переделывать!

:))))
наверное одну строку в событие Object_Modified

Предположим упал сервер, администратор восстановил сервер, установил заново SQL Server 200x? нашел резервную копию, восстановил backup, запускает TDMS, а он пишет про неправильный логин. Где написано, что необходимо провести обновление с помощью TDMS Administrator или выполнить такую-то процедуру.

В той же теме я писал про курсы администраторов.

2. Не в самом удобном виде.

кому как. Тоже писал в той теме.

Я говорю как раз не про формы ввода.
Речь идет про:
- дерево объектов TDMS;
- список состава.
Если бы там была возможность использовать свои компоненты вместо штатных, то TDMS цены бы не было!

Бесплатная идея: не хотите ли свой TDMS написать? Можно использовать MS VS 2008! Там существуют все возможности для разработки мощных TreeView и DataGridView.

1. Падение TDMS в случае, когда юзер вошел не в домен, а на локальную машину. (есть тема на форуме, обещают подправить)

а) Проблема решается. б) а это разрешено политикой компании?

3. Документация API по данной теме отсутствуют.

Если Вы не заметили, то в АПИ некоторые методы были добавлены не более 2-х месяцев назад и проходят "обкатку".
Если Вас это не устраивает, то могу предложить вариант не использовать эти методы.