АЦК. Вывести информацию по прикрепленным файлам


Если нужно вывести список прикрепленных файлов к ЭД, то можно использовать скрипт ниже. Сортировка идет по полю attach_name.
SELECT d.document_id AS "Документ ID",
       dk.caption AS "Класс ЭД",
       dc.doc_number AS "Номер ЭД",
       dc.doc_date AS "Дата ЭД",
       d.attach_name AS "Название файла",
       su.realname AS "Тот кто прицепил файл",
       d.action_date AS "Когда прицепили",
       d.file_size AS "размер файла"
FROM DOCATTACHEX d
LEFT JOIN document dc ON dc.id = d.document_id
LEFT JOIN documentclass dk ON dk.id = dc.documentclass_id
LEFT JOIN sysuser su ON su.id = d.author
ORDER BY d.attach_name;

Если при этом нужно узнать, в каких ЭД используется один и тот же файл (считаем что один и тот же файл - это файл с одним наименованием), то необходимо выполнить скрипт ниже.
SELECT d.document_id AS "Документ ID",
       dk.caption AS "Класс ЭД",
       dc.doc_number AS "Номер ЭД",
       dc.doc_date AS "Дата ЭД",
       d.attach_name AS "Название файла",
       su.realname AS "Тот кто прицепил файл",
       d.action_date AS "Когда прицепили",
       d.file_size AS "размер файла"
FROM DOCATTACHEX d
LEFT JOIN document dc ON dc.id = d.document_id
LEFT JOIN documentclass dk ON dk.id = dc.documentclass_id
LEFT JOIN sysuser su ON su.id = d.author
WHERE d.attach_name IN
    (SELECT d1.attach_name
     FROM DOCATTACHEX d1
     GROUP BY d1.attach_name
     HAVING COUNT(*) > 1)
ORDER BY d.attach_name;

Если при этом нужно вывести список аттачей за определенное число, то нужно добавить условие по дате ниже.
.....
WHERE
.....
  AND CAST(d.action_date AS DATE) ='24.01.2019'
ORDER BY d.attach_name;

Получение информации по хранению файла в хранилище в Финансах:
SELECT d.document_id AS "Документ ID",
dk.caption AS "Класс ЭД",
dc.doc_number AS "Номер ЭД",
dc.doc_date AS "Дата ЭД",
d.attach_name AS "Название файла",
dl.DEVICE_NAME AS "Хранилище",
dl.REAL_FILENAME AS "Файл в хранилище"
FROM DOCATTACHEX d
JOIN document dc ON dc.id = d.document_id
JOIN documentclass dk ON dk.id = dc.documentclass_id
JOIN docattach_link dl ON dl.DOCATTACH_ID = d.ID
ORDER BY d.attach_name;

Для ГЗ:

SELECT d.document_id AS "Документ ID",

dk.caption AS "Класс ЭД",

dc.doc_number AS "Номер ЭД",

dc.doc_date AS "Дата ЭД",

d.id,

d.attach_name AS "Название файла",

dl.DEVICE_NAME AS "Хранилище",

REPLACE(dl.FOLDER,'/','\')||'atch#'||dl.FILE_NAME AS "Файл в хранилище"

FROM DOCATTACHEX d

JOIN document dc ON dc.id = d.document_id

JOIN documentclass dk ON dk.id = dc.documentclass_id

JOIN FILEFOLDER dl ON dl.FILE_NAME = TO_CHAR(d.ID)

WHERE dc.id in (<document_id>)

ORDER BY dc.id;

Комментарии

Популярные сообщения из этого блога

Linux (РедОС). Сброс пароля

TRUNCATE / DELETE / DROP или как очистить таблицу

КБК. КВФО - Код вида финансового обеспечения (деятельности)

SQL Error [53200]: ОШИБКА: нехватка разделяемой памяти Подсказка: Возможно, следует увеличить параметр max_locks_per_transaction

РедОС. Подключение к сетевой папке