Страница 3 из 4

Re: Как в действии по объекту анализировать документ архива

Добавлено: 18 янв 2011, 13:49
vlad_simple
gali писал(а):думаю, вполне реализуемое желание. Если можно "руками" установить захват, а в списке функций такой нет, надо обратиться к авторам с соответствующей просьбой
Не совсем понял.
Вы уверены, что такой функции нет??
Или не уверены, но предлагаете обратится к авторам когда я убежусь что нет??

Re: Как в действии по объекту анализировать документ архива

Добавлено: 18 янв 2011, 14:00
gali
у меня такой задачи не было, поэтому своим опытом порадовать не могу.
я сейчас пробежалась по списку функций, относящихся к файлам архива - не нашла чего-то похожего. Функция, открывающая файл архива, практически без параметров.
Обычно я о своих желаниях, выходящих за рамки предоставляемых возможностей, сообщаю в техподдержку. И очень часто через некоторое время получаю нужный мне инструмент.

Re: Как в действии по объекту анализировать документ архива

Добавлено: 18 янв 2011, 14:15
vlad_simple
Я вообще немного в шоке.
Функция открытия документа архива есть, а вот функции получения документа по объекту нет!!
Отсюда непонятно как возможно открыть документ из действия.

Re: Как в действии по объекту анализировать документ архива

Добавлено: 18 янв 2011, 14:30
Александр
в шоке это не в этом форуме - здесь есть все :wink:
http://www.lplm.ru/phpBB2/viewtopic.php?f=2&t=634делаешь запросец и получаешь все что нужно :wink:
например

Код: Выделить всё

select --st1.id storage_id, 
--       fl1.file_name,
       fl1.object_reference_id object_id, 
       fv1.ver_label,
       fl1.cd,
       st1.Path + Empl.name+'\'+
             case when patindex('%.%_',fl1.file_name)=0 then fl1.file_name+fv1.ver_label
                  else substring(fl1.file_name, 1, patindex('%.%_',fl1.file_name)-1)+
                       fv1.ver_label+substring(fl1.file_name, patindex('%.%_',fl1.file_name),
                       len(fl1.file_name)-patindex('%.%_',fl1.file_name)+1) end,
  --     fl1.id file_id, 
  --     fv1.id ver_id, 
       fv1.orig_filepath
  from LSDBO.File1 fl1 left join LSDBO.EmplUsers Empl on fl1.author_id=Empl.id 
       inner join LSDBO.file_ver fv1 on fl1.id=fv1.file_id
       inner join LSDBO.Storage st1 on fl1.storage_id=st1.id 
       
--       where fl1.object_reference_id=100001470100039 --несколько документов
   --    where fl1.object_reference_id=100000001200013  --версии
   --      where fl1.object_reference_id in(100001470100039,100000001200013)
  
       order by fv1.ver_label desc, fl1.cd desc

Re: Как в действии по объекту анализировать документ архива

Добавлено: 18 янв 2011, 14:38
gali
да, согласна, я тоже не всегда могу смириться с предложенной логикой.
На самом деле все можно, только не вполне традиционным способом :)
и да, верно подсказывает Александр - все могут запросы

Re: Как в действии по объекту анализировать документ архива

Добавлено: 18 янв 2011, 16:35
Anderyt
vlad_simple писал(а): Функция открытия документа архива есть, а вот функции получения документа по объекту нет!!
в этом нет ничего странного, это следует из структуры данных. документ привязан к ОДНОМУ объекту, поэтому однозначно определить объект по документу можно одной функцией. то же самое - с определением документа по версии, такая функция есть.
а вот обратно - нет. в одном объекте может быть несколько документов. в одном документе - несколько версий. какую из них должна вернуть функция?? а открывать функцией можно тот документ, который юзер выберет в стандартном интерфейсе (хотя не помню, чтобы такое у нас использовалось :-) )
можно говорить о случае с одним документом и одной версией и функции для этого случая, но... ;-)
запросом это вытаскивается без проблем.
пример Александра меня немного пугает ;-), но для получения единственного документа из объекта в действии можно использовать вот такую функцию:

Код: Выделить всё

Doc = SetById (number( f_ExecSQLSelect_2 (select top 1 id from lsdbo.file_v where object_reference_id = ' +a_Object , '','') ))
, где a_object - текущий объект, Doc - переменная типа Документ архива
ну это мы получим документ, а не его версию. хотя, в случае с единственной версией у документа этот запрос возвращает как раз ее ИД.
а вот когда документов в объекте несколько - там уже могут быть вариации..

Re: Как в действии по объекту анализировать документ архива

Добавлено: 18 янв 2011, 16:58
gali
в работах я достаю версии файлов из объекта так:
f_ExecSQLSelect ( 'select lsdbo.file_ver_v.id
from lsdbo.file_ver_v, lsdbo.file_v
where lsdbo.file_ver_v.file_id = lsdbo.file_v.id
and lsdbo.file_v.object_reference_id = ' + ObjStart.ID , '', ',')

а потом разбираю
f_StringToArray ( ver_ids , ',' )

таким же образом можно делать и в действии

Re: Как в действии по объекту анализировать документ архива

Добавлено: 18 янв 2011, 19:42
Старик Крупский
vlad_simple писал(а):Я вообще немного в шоке.
Функция открытия документа архива есть, а вот функции получения документа по объекту нет!!
Отсюда непонятно как возможно открыть документ из действия.
Вы чё, ребята! Заработались что ли? :mrgreen: В свойствах переменной типа версия уже сто лет как есть условие отбора по объекту. Всего дело-то. Включил условие и в форму с автозавершением. А получать документ по объекту бессмысленно. Объект один, а документов может быть хоть немерено.

Re: Как в действии по объекту анализировать документ архива

Добавлено: 19 янв 2011, 06:20
Anderyt
опа...
:-)
а когда это появилось?
и как работает, для поиска версии в объекте достаточно сделать переменную типа Версия документа и поставить в ней нужный объект в поле Объект документа?
или надо все равно идти через документ, то есть и его еще цеплять на форму со своими условиями поиска?
а вообще.. вряд ли эта фишка появилась ДО того, как заработавшиеся ребята и девушки начали активно использовать запросы для вытаскивания версий ;-)
тем более, версий может быть несколько и иногда надо их все перебрать..
а у нас вообще есть небольшая процедура и получение строки версий выглядит совсем кратко:

Код: Выделить всё

Var_array_version_IDs = Set ( f_ExecSQLSelect_2 ('execute lsdbo.custom_proc_get_ver_ids_of_object '+a_Object, '',';')+';' )
и форма для этого не нужна ;-)
возня с ";" была сделана для анализа строки через поиск этого символа, хотя в действиях над объектами можно сделать и через вырезание кусков определенной длины (в работах такое вроде не проходит, для f_StringToArray нужно использовать какой-то символ для разделения ИД, как в примере gali)

Re: Как в действии по объекту анализировать документ архива

Добавлено: 19 янв 2011, 10:29
Старик Крупский
Ой, давно... Пару лет - точно. Работает так же, как условия отбора для объектов. Только для объектов указывается тип и/или атрибуты, а для версии объект или документ. Смотря, что известно. У версии все равно ведь один документ и один объект, так что здесь выбора для юзера никакого нет. Но если у объекта несколько документов и несколько версий, откроется, как обычно, окно выбора.

Хотя я тоже юзаю SQL. Он же совсем простой...

Re: Как в действии по объекту анализировать документ архива

Добавлено: 20 янв 2011, 13:11
gali
Старик Крупский прав. Эта фишка существует давно. Раньше, чем я познакомилась с лоцией - это точно. Мне из техподдержки ее посоветовали для решения простенькой задачки. К сожалению, этого оказалось не достаточно для всего многообразия желаний. Пришлось прибегать к запросам.

Re: Как в действии по объекту анализировать документ архива

Добавлено: 24 янв 2011, 13:00
vlad_simple
Всем спасибо большое.
Есть большое поле для размышления.
Через фильтр версий пока не получается, хоть версия всего одна. Пока получаю через SQL.
Наверное просто пока опыта обращения не хватает.
Теперь у меня еще вопросик.
А как все-таки организовать захват документа, а не его открытие?
Так чтоб можно было выбрать куда его класть локально и как назвать файл.
Возможно есть какой-то недокументированный параметр DocVerOpen?
Или совсем другая функция?

Re: Как в действии по объекту анализировать документ архива

Добавлено: 25 янв 2011, 09:55
gali
я тут снова перечитывала документацию по методам...
что если настроить метод открытия, указав автозахват?
тогда из действия обычной командой.
Правда, ни место, ни имя файла задать не удастся

Re: Как в действии по объекту анализировать документ архива

Добавлено: 25 янв 2011, 10:39
vlad_simple
А хочется вот такого странного.
Возможно по-другому - экспортом (DOCExport).
ТОгда можно указать куда класть и как назвать, но нельзя указать в базе что файл захвачен на редактирование.
А механизм захвата не описан, поэтому прописать в базе вручную не получится.
Получается, самому надо заводить флаг захвата, атрибут "захватчика"....
Обидно, что вроде как имеем мощный продукт надо такие примитивные вещи делать вручную.

Кстати, по-поводу SQL-запросов в формах атрибутов объектов.
Это только у меня мигает курсор циклично переключаясь с песочных часов на стрелку и обратно?
Такое ощущение, что программа постоянно повторяет эти запросы чтоб иметь на форме актуальную информацию.

Re: Как в действии по объекту анализировать документ архива

Добавлено: 25 янв 2011, 10:48
gali
я бы порекомендовала обратиться в поддержку со своими странными :) желаниями.
Мой опыт обращений имеет положительный баланс.
Относительно запросов на форме, совершенно верно, они выполняются постоянно. Я как-то сделала форму с запросом - это катастрофа.
По мне, так лучше на форму кнопку, а к ней действие с запросом