Страница 1 из 2
Помогите разобраться с подборкой
Добавлено: 19 июл 2007, 13:08
Александр
Опять репликация...
Ситуация следующая - нужно помочь юзерам набирать объекты в подборку для репликации
Сначала думал создать специальное дерево которое называется подборка для репликации и чтобы юзер нажимая на кнопку привязывал объекты в это дерево - а админ потом все эти объекты от разных юзеров бросал в подборку и передавал в другой филиал
Но проблема в том что когда юзер привязывает какой нибудь объект в это дерево - то автоматически туда же попадают все дочерние объекты - что совершенно не нужно
А просто в подборку можно уложить произвольный объект без учета связей
Никто не подскажет - как положить объекты в дерево проекта без учета связей (дочерних и родительских)?
а лучше всего - как напрямую через SQL запихнуть нужные объекты в существующую подборку?
в таблицу lsdbo.user_collect - правда тут опять id генерить
может кто делал (техподдержка пока этого делать не хочет-расширять функцию для помещения объектов в существующую подборку)
Нужно позарез - выручайте SQL-ем
Добавлено: 19 июл 2007, 15:25
Anderyt
юзеры добавляют объект в подборку РУКАМИ? или через действие?
насчет действия сказать не могу - не пробовал, но если руками - то добавить объект БЕЗ его потомков - не проблема (сложнее добавить с потомками

)
Добавлено: 19 июл 2007, 15:37
Александр
да в том то им дело что через кнопку - чтобы юзер не задумывался какие объекты может передать а какие нет, точнее какие нужно а какие нет (дело даже не в правах и в видимости объектов)
дело осложняется еще и тем что
- в Лоции нет общих подборок - все они уникальны для каждого Usera
- единственная функция в Лоции добавляет только один объект и только в новую подборку
- в ближайшее время функционал в данную сторону не двинется-а нам нужно работать уже сейчас
вобщем засада полная
единственный выход напрямую писать в существующую подборку на SQL - вобщем работает - но нужно генерить id а как это делается в Лоции так и не разобрался до конца
сейчас конечно в ручную набирать объекты - но представь что это значит
-или юзер должен зайти под админом и заполнять его подборку
-или говорить админу - добавь дорогой вот все эти объекты в подборку сам
одно хуже другого....
Добавлено: 19 июл 2007, 15:48
Anderyt
юзеры могут добавлять объекты в общий ОБЪЕКТ. а админ потом можно просто добавить все объекты, входящие в этот общий объект, в подборку (да, руками, но это ж админ, он опытный, и не так часто это будет нужно

)
здесь уж точно можно игнорировать объекты, которые входят в добавляемые объекты...
получается, что пока нужные объекты не пройдут через руки админа, они будет не в подборке, а в каком то объекте...
Добавлено: 20 июл 2007, 11:20
Disillusioned
Объекты предназначенные для репликации можно помечать неким атрибутом, потом по значению этого атрибута добавлять в подборку.
Конечно, если объекты предназначенные для добавления в подборку защищены от изменения, такой подход не сгодится.
Добавлено: 20 июл 2007, 11:24
Anderyt
о, сколько вариантов...
Александр, выбор за вами!

Добавлено: 20 июл 2007, 11:36
Disillusioned
Что если в условиях поиска указать "объекты входящие хотя бы в один проект" и в "только проекты указанного типа" указать тип объекта-папки, где лежат объекты для репликации.
Добавлено: 23 июл 2007, 06:30
Александр
2 Anderyt
К сожалению ручные операции не подходят..
с одной стороны - делать это нужно довольно часто 1-2 раза в день
с другой придется мозги напрягать - что хотел передать юзер на ту сторону
т.е. есть дерево объектов - Клиент
Код: Выделить всё
1. Клиент
1.1 Контактные лица клиента
1.1.1 Контактное лицо 1
1.1. -----
1.1.n Контактное лицо n
1.2 Запросы клиента
1.2.1 Запрос 1
1.2. -----
1.2.n Запрос n
(Это упрощенная структура нашего дерева для передачи, но тем не менее)
мне нужно передать за один раз следующие объекты
Код: Выделить всё
1. Клиент
1.1 Контактные лица клиента
1.1.5 Контактное лицо 5
1.2 Запросы клиента
1.2.31 Запрос 31
Если делать общий объект для предварительного формирования объектов репликации то получается следующее
-добавили в него объект 1.2.31 Запрос 31 - все Ок
-добавили в него объект 1.2 Запросы - и все приплыли

данный объект потянул за собой все свои дочерние объекты включая и уже добавленный 31 запрос
Так что общий объект не подходит-подборка лучше- ведь это
просто таблица в которой перечислены id объектов в ней находящихся и для автоматизации отбора мы поставили кнопки на 4 типа объектов для репликации и планировали - например - такую схему - передать 1.2.31 Запрос 31 - нажали на нем и он сам добавился-потом вышел на уровень вверх 1.2 добавил его-посмотрел какое контактное лицо сделало запрос - 1.1.5 - добавил и его-поднялся на уровень выше...добавил 1.1 контактные лица и т.д.
В общем мы наверно поступим также как и в случае с самодельными массивами на атрибутах. т.е.
-заведем таблицу свободных id
-в действии будем отбирать все объекты для репликации
-в каждом отобранном объекте будем ставить отметку -кто его послал на репликацию
-все id найденных объектов будем помещать в подборку через хп подставляя id записей из своей таблицы (чтоб не генерить их)
ну или попробуем обратиться к руководству Лоции чтобы Сделали подборки (хотя бы одну) общедоступными для всех и дописали функционал их заполняющий

Добавлено: 23 июл 2007, 06:46
Александр
2 Disillusioned
вот это мне нравится больше - зайти с другой стороны
т.е.
- мы взводим в действии (или как то еще...) всем нужным объектам флаг (атрибут) - 'Для репликации'
- всем объектам для репликации прописываем в атрибуте 'репликация' кто и когда их подготовил для репликации
- для отчета/истории - в объекте 'Репликация' - создаем объект 'Пакет репликации' - в котором в виде строкового атрибута указываем все описания объектов, их id, дату/время подготовки, и автора - инициатора репликации
- админ с какой-то периодичностью (утро/вечер) делает добавление в подборку Всех Объектов у которых флаг репликации - установлен в '1' после чего сохраняет подборку и сбрасывает флаг в '0' для всех объектов подборки
- собственно сама репликация подборки и последующее ее удаление
...
и объекты переданы и история общения в виде отдельных объектов сохранена и история самого объекта в атрибуте сохранена
в общем то нормально на первое время

наверно так и сделаем - но в итоге все равно придеться писать свою хп для автоматизации сохранения/удаления/наполнения подборки
Добавлено: 23 июл 2007, 07:08
Александр
Добавлено: 23 июл 2007, 08:38
Disillusioned
Подробно опишу подход, который я пытался изложить в своем предыдущем посте.
1.Объекты предназначенные для репликации добавляются в состав объекта-папки со специально созданным для этих целей типом (например, назовем этот тип объекта Подборка реплицируемых объектов).
2.Создаем подборку. Добавляем в нее объекты через пункт "Добавить объект...". В окне поиска объектов на вкладке "Дополнительные условия" указываем что нам нужны "Объекты входящие хотя бы в один проект" и "Только в проекты указанного типа". В списке типов объектов указываем тип объекта-папки, указанный в п.1.
В результате мы получим объекты предназначенные для репликации без их потомков. И защищенность объектов нас волновать не будет, как в случае с маркировкой объектов спец.атрибутами.
Добавлено: 23 июл 2007, 08:58
Александр
извини, никак не пойму твою хитрую мысль
Родительский объект Подборка реплицируемых объектов есть (в него могут входить все типы объектов)
а что дальше? нужно же набрать этот проект? а как?
как только я в него привязываю родительский объект-так сразу получаю и всех детей. Или не нужно набирать этот проект?-тогда зачем он нужен?
в чем смысл? можешь на примере той структуры которую я нарисовал выше показать... что нужно делать? (для особо бестолковых)
...
или нужно сам объект
Подборка реплицируемых объектов подвязывать в виде
Дочернего объекта к объектам предназначенным для репликации и делать отбор по всем родителям объекта
Подборка реплицируемых объектов ???
Добавлено: 23 июл 2007, 09:23
Disillusioned
Добавляя объект, предназначенный для репликации, в специально созданный для этого объект-папку, естественно, тянем за ним всех потомков. Задача в том, чтобы в подборку попали только потомки объекта-папки первого уровня. Это возможно при помощи описанного мною поиска. Обращаю внимание на то, что добавление объектов в подборку осуществляется через "Добавить объект..." (добавление объектов удовлетворяющих условиям поиска БЕЗ ПОТОМКОВ), а не через "Добавить проект..." (добавление объектов удовлетворяющих условиям поиска С ПОТОМКАМИ), т.е. объект-папка выступает не как добавляемый проект, а как условие для поиска его потомков первого уровня.
Добавлено: 23 июл 2007, 09:39
Anderyt
не нужно добавлять в подборку ПРОЕКТ объекта "объекты для репликации". нужно добавить туда ОБЪЕКТЫ, который входят в этот объект. при добавлении проекта добавляется ВЕСЬ проект, со всеми потомками, а при добавлении объекта - только сам объект. если на вкладке "дочерние объекты" объекта "объекты для репликации" выделить все строки и зацепить их ЛЕВОЙ кнопкой и перенести на подборку - добавятся только сами объекты, без их потомков
Добавлено: 23 июл 2007, 09:54
Александр
слушай покажи на примере...
нужно передать
родительский объект и один из дочерних
на счет добавить объект/добавить проект я в курсе но при ситуации
Код: Выделить всё
1. Клиент
1.1 Контактные лица клиента
1.1.5 Контактное лицо 5
1.2 Запросы клиента
1.2.1 Запрос 1
1.2. -----
1.2.31 Запрос 31
1.2.n Запрос n
когда сначала привязали объект
1.2.31 Запрос 31 а потом привязали объект
1.2 Запросы клиента (подразумевая что мы хотим использовать объекты первого уровня мы получаем дерево
Подборка реплицируемых объектов не в виде
Код: Выделить всё
1.2.31 Запрос 31
1.2 Запросы клиента
1.2.1 Запрос 1
1.2. -----
1.2.31 Запрос 31
1.2.n Запрос n
чтобы передать 2 объекта 1го уровня
а в виде
Код: Выделить всё
1.2 Запросы клиента
1.2.1 Запрос 1
1.2. -----
1.2.31 Запрос 31
1.2.n Запрос n
т.е. один объект первого уровня
да еще и с сообщением об ошибке при привязке
1.2 Запросы клиента о том что дочерний объект
1.2.31 Запрос 31привязанный ранее уже существует
так что никак
не получается напрямую привязать и родительский объект и один из его дочерних и иметь их в виде объектов первого уровня в проекте Подборка реплицируемых объектов
Если речь идет об этом - смысла в объекте
Подборка реплицируемых объектов вообще нет и отбор в подборку лучше производить напрямую через поиск всех
объектов со значением атрибута -
для репликации