# Полезные запросы sql **Category:** [Полезные запросы sql](https://community.tezis-doc.ru/c/poleznye-zaprosy-sql/78) **Created:** 2024-07-04 08:02 UTC **Views:** 626 **Replies:** 0 **URL:** https://community.tezis-doc.ru/t/poleznye-zaprosy-sql/324 --- ## Post #1 by @d.slepnev В разделе приведены примеры запросов к базе данных в наиболее часто встречающихся ситуациях. Все запросы приведены для СУБД PostgreSQL. ## Восстановление пароля пользователя admin Для новых баз, начиная с версии 4.0: ``` sql update sec_user set password = 'cc2229d1b8a052423d9e1c9ef0113b850086586a' where login = 'admin'; ``` Для старых баз: ``` sql update sec_user set password = '21232f297a57a5a743894a0e4a801fc3' where login = 'admin'; ``` ## Рассылка большого количества уведомлений на почту Если по каким-либо причинам сначала рассылка не работала, а сообщения накапливались, то при подключении почты будет начата отправка всех не отправленных сообщений. Чтобы этого избежать, необходимо в БД пометить эти сообщения как отправленные. ``` update sys_sending_message set status = 200, updated_by=’admin’ where status<>200; ``` ## Удаление записи из журнала действий Если по каким-либо причинам необходимо удалить строку из журнала действий, можно выполнить следующий запрос: ``` update WF_ASSIGNMENT set DELETE_TS = CURRENT_TIMESTAMP, DELETED_BY = USER where ID = 'ASSIGNMENT_ID'; ``` где, ASSIGNMENT_ID - id назначения, которое требуется удалить. Посмотреть id можно по нажатию правой кнопкой мыши на строку журнала действий в пункте "Системная информация". ## Удаление определенных ролей у пользователей Для удаления определенных ролей у большого количества пользователей можно воспользоваться следующим примером запроса к базе данных: ``` update sec_user_role set delete_ts = now() where id in (select ur.id from sec_user_role ur join sec_user u on ur.user_id = u.id join sec_role r on ur.role_id = r.id where u.login <> 'Haulmont' and r.name in ('doc_initiator','DocEditor','ReferenceEditor', 'task_creator') ); ``` Здесь в r.name содержатся наименования ролей, которые требуется удалить, а также есть условие u.login <> 'Haulmont', то есть удаление ролей у всех пользователей, кроме роли Haulmont. ## Отчет о правах пользователей в системе Для вывода краткого отчета о правах пользователей в системе можно воспользоваться следующим запросом: ``` select sec_user.login_lc as "Логин",sec_user.name as "Полное имя", sec_group.name as "Группа доступа", sec_role.loc_name as "Роль", sec_user.active as "Активен", sec_user.position_ as "Должность" from sec_user join sec_user_role on sec_user.id = sec_user_role.user_id join sec_role on sec_user_role.role_id = sec_role.id join sec_group on sec_user.group_id = sec_group.id where sec_user_role.delete_ts is null and sec_user_role.deleted_by is null order by sec_user.login_lc; ``` ## Проверка очереди индексации ``` select count(*) from SYS_FTS_QUEUE; ``` ## Изменение контрагента в договоре/документе Если требуется изменить контрагента в договоре, необходимо воспользоваться следующим запросом: ``` select * from df_doc where contractor_id = 'id_contractor' update df_doc set contractor_id = 'id_new_contractor' where card_id = 'id_contract' ``` Здесь 'id_contractor' – id контрагента, уже выбранного в договоре, 'id_new_contractor' – id контрагента, которого нужно указать в договоре, 'id_contract' – id карточки договора, в котором нужно изменить контрагента. Посмотреть id карточек можно по нажатию правой кнопкой мыши на карточку в пункте "Системная информация". Если у данного договора есть версии, то для версий тоже нужно изменять вид. Если в системе настроена интеграция с УС, то нужно убедиться, что данного договора нет в УС. Если же договор есть в УС, то нужно удостовериться, что при изменении контрагента и выгрузке в УС контрагент заменится на новый. Если это не предусмотрено самой УС, то нужно удалить объект из УС и все ссылки на него (Гиперссылка и код DF), после этого менять контрагента и выгружать в УС. ## Изменение вида документа Для изменения вида документа необходимо сначала найти id вида документа, на который необходимо изменить. Посмотреть id можно по нажатию правой кнопкой мыши на карточку в списке видов документов в пункте "Системная информация". Далее в базе данных выполнить несколько запросов: ``` update DF_DOC set doc_kind_id='(id вида документа, на который меняем)' where card_id='(id карточки документа)'; update DF_DOC set doc_kind_id='(id вида документа, на который меняем)' where card_id='(id карточки документа)'; update WF_CARD set category_id='(id вида документа, на который меняем)' where id='(id карточки документа)'; ``` Далее для того, чтобы в описание документа стояли верные данные выполняется следующий запрос: ``` update WF_CARD set description='(Вид документа) № (номер документа) от (дата)' where id='(id карточки документа)'; ``` ## Поиск файлов карточки в файловом хранилище Для поиска файлов в файловом хранилище необходимо узнать id карточки, файлы которой нужно найти. (ПКМ по карточке в списке → Системная информация). Далее выполнить запрос в Базе данных: Если вложение в карточке одно ``` select * from sys_file where id = ( select file_id from wf_attachment where card_id = 'ID_карточки' ) ``` Если вложений несколько ``` select * from sys_file where id in ( select file_id from wf_attachment where card_id = 'ID_карточки' ) ``` Расширение файла в колонке ext, его имя в id. В файловом хранилище файл должен находиться в директории `tomcat/work/app-core/filestorage/год/месяц/число/id.ext` (или в директории, указанной как ФХ, если задано отличное от стандартного) --- **Canonical:** https://community.tezis-doc.ru/t/poleznye-zaprosy-sql/324 **Original content:** https://community.tezis-doc.ru/t/poleznye-zaprosy-sql/324