This commit is contained in:
Rafael 2024-11-22 11:39:00 +05:00
commit 980943be70
32 changed files with 1109 additions and 493 deletions

View File

@ -24,8 +24,4 @@
Обязательными поля "Наименование", "Код цифровой" и "Код буквенный" должны быть заполнены в соответствии с общероссийским классификатором валют (ОКВ).
<<<<<<< HEAD
Опция "Валюта по умолчанию" отмечает ту валюту, которая будет вставляться в соответствующее поле при создании документов автоматически. Поставить галочку в поле "Валюта по умолчанию" можно в том случае, если она не проставлена для другой валюты. В противном случае при попытке сохранить документ операция не будет выполнена, и появится системное сообщение с предупреждением, что значение по умолчанию уже выбрано, с указанием, какая именно валюта выбрана по умолчанию.
=======
Опция "Валюта по умолчанию" отмечает ту валюту, которая будет вставляться в соответствующее поле при создании документов автоматически. Поставить галочку в поле "Валюта по умолчанию" можно в том случае, если она не проставлена для другой валюты. В противном случае при попытке сохранить документ операция не будет выполнена, и появится системное сообщение с предупреждением, что значение по умолчанию уже выбрано, с указанием, какая именно валюта выбрана по умолчанию.
>>>>>>> f1a0579c0686f83ca615dc341b1b9f9abe05392c
Опция "Валюта по умолчанию" отмечает ту валюту, которая будет вставляться в соответствующее поле при создании документов автоматически. Поставить галочку в поле "Валюта по умолчанию" можно в том случае, если она не проставлена для другой валюты. В противном случае при попытке сохранить документ операция не будет выполнена, и появится системное сообщение с предупреждением, что значение по умолчанию уже выбрано, с указанием, какая именно валюта выбрана по умолчанию.

View File

@ -1014,6 +1014,13 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
----------------------|-----------|---------------------
#year# | Необходимо заполнить информацию | #Master_Position# ilike '%водитель%'
Также возможно использовать служебное слово **#Master_PositionName#**, например, при написании заявления на ежегодный отпуск руководителем, необходимо указать заместителя на период отсутствия.
Колонка для выделения | Сообщение | Правило для проверки
----------------------|-----------|---------------------
#zam# | Необходимо заполнить информацию | coalesce(#zam#,0)::bigint=0::bigint and '#Master_PositionName#'::text ilike '%глав%врач%'::text
#### Проверки для табличных атрибутов
В столбец **"Колонка для выделения"** указывается служебное наименование таблицы,например, **#Table1#**, а в столбце **"Правило для проверки"** указывается служебные наименования таблицы и атрибута, например, **#Table1_bigint#**.
@ -1069,8 +1076,6 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
![Alt text](media/image-2.png)
![Alt text](media/image-1.png)
## Вкладка "Сообщения об удаленных документах"
Данная вкладка предназначена для самостоятельного указания текста для удаленных документах из системы 1С. Если электронный документ был загружен в систему 1С, и при этом соответствующий приказ был помечен на удаление в системе 1С, то указанный текст, он будет отображаться в связанном с приказом заявлении. Для проставления признака должна быть настроена задача ["Проверка документов Лексемы на удаление в 1С"](../Функции планировщика задач/index.md) в [планировщике](../Планировщик задач/index.md).

View File

@ -1,8 +1,8 @@
- [Вкладка "Входящие документы"](Вкладка Входящие документы/)
- [Вкладка "Исходящие документы"](Вкладка Исходящие документы/)
- [Вкладка "Произвольные выборки"](Вкладка Произвольные выборки/)
- [Вкладка "Соответствие справочников"](Вкладка Соответствие справочников/)
- [Вкладка "Справочники"](Вкладка Справочники/)
- [Вкладка "Соответствие справочников"](Вкладка Соответствие справочников/)
- [Вкладка "Исходящие документы"](Вкладка Исходящие документы/)
- [Вкладка "Входящие документы"](Вкладка Входящие документы/)
- [Вкладка "Произвольные выборки"](Вкладка Произвольные выборки/)
- [Настройка интеграция справочников и документов](Настройка интеграция справочников и документов/)
- [Настройка интеграции с форматом JSON](Настройка интеграции с форматом JSON/)
- [Описание работы с Postman](Описание работы с Postman/)

View File

@ -1,40 +1,59 @@
# Вкладка «Входящие документы»
Для настройки нужно в Меню в поисковой строке ввести - "Настройка параметров обмена с 1С*".<br>
Для настройки нужно в Меню в поисковой строке ввести - "Настройка параметров обмена с 1С*".
Данная вкладка предназначена для описания настроек по документам, забираемым из 1С, например: «Документ на подписание», «Документ в Лексеме» .<br>
Данная вкладка предназначена для описания настроек по документам, забираемых из 1С, например: «Документ на подписание», «Документ в Лексеме» .
При первом входе в документ, табличная часть вкладки «Входящие документы» будет пред заполнена.<br>
В зависимости от того, на каком «Типе» строк вызывается справочник для выбора будет соответствующий набор данных. <br>
Например, для Подтипа документа на подписание будут подтипы из «Конструктора документов» с типом «Документ на подписание»:<br>
![Рисунок 1 Подтипы_на_подписание](../media/Подтипы_на_подписание.png) <br>
![Рисунок 2 Входящие1](../media/Входящие1.png) <br>
При первом входе в документ, табличная часть вкладки «Входящие документы» будет пред заполнена.
Для документов на подписание, с одной сущностью 1С, например Дополнительный отпуск (компенсация) и учебный отпуск прошу настроена загрузка в разные подтипы документов:
![Рисунок 3 Одна сущность 2 приказа](../media/Одна сущность 2 приказа.PNG) <br>
В зависимости от того, на каком «Типе» строк вызывается справочник для выбора будет соответствующий набор данных.
В параметр для запроса сущности в 1С при этом пишем идентификатор, который отличит эти типы документов, например, <br>
?$filter=ДополнительныеОтпуска/ВидОтпуска_Key eq guid'cf447156-eb49-11e8-5f86-005056ab6485' and Date gt datetime'2022-07-01T00:00:00' <br>
Например, для Подтипа документа на подписание будут подтипы из «Конструктора документов» с типом «Документ на подписание»:
![alt text](media/image.png)
![alt text](media/image-1.png)
Для документов на подписание, с одной сущностью 1С необходимо настроить загрузку в разные подтипы документов:
![alt text](media/image-2.png)
В параметр для запроса сущности в 1С при этом пишем идентификатор, который отличит эти типы документов, например,
```json
?$filter=ДополнительныеОтпуска/ВидОтпуска_Key eq guid'cf447156-eb49-11e8-5f86-005056ab6485' and Date gt datetime'2022-07-01T00:00:00'
```
В документы на подписание также можно забирать печатные формы, прикрепляемые к документу "Сотрудники" в 1С:
![Рисунок 4 Сотрудники_отчеты](../media/Сотрудники_отчеты.PNG) <br>
![alt text](media/image-3.png)
Для этого в поле **"Условие наличия отчета в 1С"** пишем название отчета, который является признаком готовности забрать <br> комплект печатных форм, описанных в колонке **"Наименование отчетов в 1С для загрузки"** во вложения к документу.<br>
Например, <br>
**"Условие наличия отчета в 1С"** = Комплект документов при приеме<br>
**"Наименование отчетов в 1С для загрузки"** = Комплект документов при приеме;Личная карточка (Т-2) <br>
Для этого в поле **"Условие наличия отчета в 1С"** пишем название отчета, который является признаком готовности забрать комплект печатных форм, описанных в колонке **"Наименование отчетов в 1С для загрузки"** во вложения к документу.
Например,
**"Условие наличия отчета в 1С"** = Комплект документов при приеме
**"Наименование отчетов в 1С для загрузки"** = Комплект документов при приеме;Личная карточка (Т-2)
![alt text](media/image-4.png)
Для указания параметров загрузки документов и вложений с типом «Дата» введены следующие переменные:
- {{LastDay}} переменная для определения количества дней, за которое нужно выбрать данные для загрузки. Значение задается в настройках учетной политики в константе **"ЗаСколькоПоследнихДнейЗагружатьДокументыИз1С"**.
Например, `?$filter=Date gt datetime'{{LastDay}}'` со значением константы 10 за последние 10 дней будут загружаться данные
- `{{LastDay}}` переменная для определения количества дней, за которое нужно выбрать данные для загрузки. Значение задается в настройках учетной политики в константе **"ЗаСколькоПоследнихДнейЗагружатьДокументыИз1С"**.
Например,
```json
?$filter=Date gt datetime'{{LastDay}}'
```
со значением константы 10 за последние 10 дней будут загружаться данные
- {{FirstDayMonth}} переменная для определения даты, до которой нужно загружать документы прошлого месяца. Значение задается в настройках учетной политики в константе **оКакогоЧислаЗагружатьДокументыИз1С_ЗаПрошлыйМесяц"**.
Например, `?$filter=Date gt datetime'{{ FirstDayMonth }}'` со значением константы 15 до 15.12.22 будут загружаться данные с 01.12.22
- `{{FirstDayMonth}}` переменная для определения даты, до которой нужно загружать документы прошлого месяца. Значение задается в настройках учетной политики в константе **оКакогоЧислаЗагружатьДокументыИз1С_ЗаПрошлыйМесяц"**.
Например,
```json
?$filter=Date gt datetime'{{ FirstDayMonth }}'
```
со значением константы 15 до 15.12.22 будут загружаться данные с 01.12.22
- {{YesterDay}} переменная, обозначающая предыдущий день от текущего.
Например, `?$filter=ДатаСоздания ge datetime'{{YesterDay}}'` если сегодня 15.12.22, то документы для загрузки будут выбраны за 14.12.22
- `{{YesterDay}}` переменная, обозначающая предыдущий день от текущего.
Например,
```json
?$filter=ДатаСоздания ge datetime'{{YesterDay}}'
```
если сегодня 15.12.22, то документы для загрузки будут выбраны за 14.12.22
Столбец **"Дата начала проверки отчетов по кодам (guid-ам)"**. В нужной строке указывается дата и документы с заданными сущностями и параметрами, отчеты которых будут загружаться каждый раз, когда в 1С будут вкладывать новые отчеты. Без отчетов такие документы грузиться не будут, даже если "Условие наличия отчета" - пусто.
@ -46,78 +65,65 @@
## Документ на подписание
Документ на подписание может быть создан в СЭД из Заявления сотрудников, либо быть не связанным с Заявлением документом, для которого необходимо пройти процедуру согласования в СЭД. <br>
Поле **«Наименование документа»** должно быть одинаковым на вкладках «Исходящие документы» и «Входящие документы», относящимся к одной сущности 1С, в том случае, если *необходимо забирать из 1С документы, которые созданы на основании Заявлений из СЭД*. <br>
Если же необходимо забирать *документы указанной сущности 1С, не связанных с Заявлениями из СЭД*, то в строке «Подтип документа на подписание» на вкладке «Входящие документы» необходимо указать «Наименование документа», отличное от закладки «Исходящие документы».<br>
Для каждого документа на подписание, обмен которыми планируется между системами, необходимо создать «Подтип документа» и оформить для него карточку «Конструктора документов».<br>
Документ на подписание может быть создан в СЭД из Заявления сотрудников, либо быть не связанным с Заявлением документом, для которого необходимо пройти процедуру согласования в СЭД.
![Рисунок 1 Документ_на_подписаниеонструктор](../media/Документ_на_подписаниеонструктор.png) <br>
![Рисунок 2 Докумет_на_подписание2](../media/Докумет_на_подписание2.png) <br>
Поле **«Наименование документа»** должно быть одинаковым на вкладках «Исходящие документы» и «Входящие документы», относящимся к одной сущности 1С, в том случае, если *необходимо забирать из 1С документы, которые созданы на основании Заявлений из СЭД*.
Если же необходимо забирать *документы указанной сущности 1С, не связанных с Заявлениями из СЭД*, то в строке «Подтип документа на подписание» на вкладке «Входящие документы» необходимо указать «Наименование документа», отличное от закладки «Исходящие документы».
Для каждого документа на подписание, обмен которыми планируется между системами, необходимо создать «Подтип документа» и оформить для него карточку «Конструктора документов».
**Справочник в Лексеме** подтип из Конструктора документов для типа «Документ на подписание», который указан в поле Наименование документа.<br>
**Наименование документа** наименование документа, с которым будет происходить обмен данными. <br>
**Сущность в 1С** сущность на стороне 1С для обмена данными. В этих строчках указываются параметры для передачи документов на подписание в 1С.<br>
**Параметры** - условия для загрузки документа в СЭД , например, для документа «Отпуск» - это { "ПредоставитьОсновнойОтпуск": true, "ДокументРассчитан": true }, так как данный вид сущности должен быть рассчитан . А для отпуска без сохранения оплаты параметры будут заполнены следующим образом: {"ВидОтпуска_Key":"7601b82e-8584-11e2-9371-001b11b25590"}. Определение параметров выполняется исходя из анализа сущности 1С.<br>
**Наименование отчета в 1С** наименование отчета в 1С, присоединенного к документу, наличие которого является обязательным условием для импорта документа из 1С в СЭД.<br>
Например, для документа «Отпуск» во вложении анализируется наличие Приказа о предоставлении отпуска (Т-6). Если еще нет вложения, то приказ считается не удовлетворяющим условиям загрузки и не попадет в СЭД. Если в настройках наименование отчета не указано, то для импорта этого документа наличие какого-либо отчета не является необходимым условием и этот документ будет импортирован даже без единого отчета. При этом при импорте документов всегда забираются все вложения прикрепленные в 1С.<br>
**Сущность вложения** наименование сущности 1С, в которую необходимо передавать данные. Содержит перечень файлов наименование, расширение, связка с документом в 1С, например, *Catalog_ОтпускПрисоединенныеФайлы*<br>
**Параметры для запроса вложений**
**Сущность хранилища файлов** - промежуточная сущность в которой хранится связь между присоединенными файлами документа и самими двоичными данными файлов InformationRegister_ХранилищеФайлов, также необходимо Catalog_ХранилищеДвоичныхДанных прописать в Сущность двоичных данных файлов
**Сущность двоичных данных файлов** InformationRegister_ДвоичныеДанныеФайлов, сущность, в которой хранятся все файлы в двоичном представлении.<br>
Существует два вида условий для выбора документов в 1С для формирования «Документа на подписание» в СЭД:<br>
• наличие во вложении отчета с определенным наименованием (например, для отпуска - это отчет «Приказ о предоставлении отпуска (Т-6…». ) <br>
• условия из поля «Параметры» (например, для отпуска, статус ДокументРассчитан).<br>
**Заполнить поле "Работник"**
![alt text](media/image-5.png)
**Справочник в Лексеме** подтип из Конструктора документов для типа «Документ на подписание», который указан в поле Наименование документа.
**Наименование документа** наименование документа, с которым будет происходить обмен данными.
**Сущность в 1С** сущность на стороне 1С для обмена данными. В этих строчках указываются параметры для передачи документов на подписание в 1С.
**Параметр для запроса сущности в 1С**
**Дополнительные условия к документу 1С** - условия для загрузки документа в СЭД , например, для документа «Отпуск» - это
```json
{ "ПредоставитьОсновнойОтпуск": true, "ДокументРассчитан": true },
```
так как данный вид сущности должен быть рассчитан . А для отпуска без сохранения оплаты параметры будут заполнены следующим образом:
```json
{"ВидОтпуска_Key":"7601b82e-8584-11e2-9371-001b11b25590"}.
```
Определение параметров выполняется исходя из анализа сущности 1С.
**Наименование отчета в 1С** наименование отчета в 1С, присоединенного к документу, наличие которого является обязательным условием для импорта документа из 1С в СЭД.
Например, для документа «Отпуск» во вложении анализируется наличие Приказа о предоставлении отпуска (Т-6). Если еще нет вложения, то приказ считается не удовлетворяющим условиям загрузки и не попадет в СЭД. Если в настройках наименование отчета не указано, то для импорта этого документа наличие какого-либо отчета не является необходимым условием и этот документ будет импортирован даже без единого отчета. При этом при импорте документов всегда забираются все вложения прикрепленные в 1С.
**Сущность вложения** наименование сущности 1С, в которую необходимо передавать данные. Содержит перечень файлов наименование, расширение, связка с документом в 1С, например, `Catalog_ОтпускПрисоединенныеФайлы`
**Сущность хранилища файлов** - промежуточная сущность в которой хранится связь между присоединенными файлами документа и самими двоичными данными файлов InformationRegister_ХранилищеФайлов, также необходимо `Catalog_ХранилищеДвоичныхДанных` прописать в Сущность двоичных данных файлов
**Сущность двоичных данных файлов** `InformationRegister_ДвоичныеДанныеФайлов`, сущность, в которой хранятся все файлы в двоичном представлении.
Существует два вида условий для выбора документов в 1С для формирования «Документа на подписание» в СЭД:
• наличие во вложении отчета с определенным наименованием (например, для отпуска - это отчет «Приказ о предоставлении отпуска (Т-6…». )
• условия из поля «Параметры» (например, для отпуска, статус ДокументРассчитан).
## Документ в Лексеме
Для настройки нужно выбрать в меню *группу Администрирование -> Система -> Настройка параметров обмена с 1С*.<br>
![Рисунок 1 Настройка параметров обмена с 1С](../media/Настройка_параметров_обмена_с_1С.png)<br>
Для настройки нужно выбрать в меню *группу Администрирование -> Система -> Настройка параметров обмена с 1С*.
Для загрузки документов 1С в документы, отличные от Документов на подписание, то есть физические документы СЭД предусмотрен блок настроек с типом «Документ в Лексеме».<br>
Отличием настроек от предыдущих документов является поле *«Порядок выполнения»* и *«Наименование документа»*.<br>
**Порядок выполнения** указывается по документам, для загрузки которых важна хронология этапов. Например, для документа «График отпусков» - сначала необходимо загрузить *«График отпусков»*, затем *«Перенос отпуска»*:<br>
![Рисунок 1 Документ_в_Лексеме](../media/Документ_в_Лексеме.png) <br>
Для загрузки документов 1С в документы, отличные от Документов на подписание, то есть физические документы СЭД предусмотрен блок настроек с типом «Документ в Лексеме».
Отличием настроек от предыдущих документов является поле *«Порядок выполнения»* и *«Наименование документа»*.
**Порядок выполнения** указывается по документам, для загрузки которых важна хронология этапов. Например, для документа «График отпусков» - сначала необходимо загрузить *«График отпусков»*, затем *«Перенос отпуска»*:
![Рисунок 1 Документ_в_Лексеме](../media/Документ_в_Лексеме.png)
**Наименование документа** форма СЭД, например, «RP_VacationForm».<br>
**Сущность 1С** наименование метаданных для загрузки в СЭД, например, Document_ГрафикОтпусков<br>
**Параметры** не заполняются, так как данные не передаются в 1С.<br>
**Сущность вложений** - сущность вложений файлов в 1С, из которой забираем данные. В ней хранится перечень файлов наименование, расширение, связка с документом в 1С, например, Catalog_ ГрафикОтпусковПрисоединенныеФайлы<br>
**Наименование документа** форма СЭД, например, «RP_VacationForm».
**Сущность 1С** наименование метаданных для загрузки в СЭД, например, Document_ГрафикОтпусков
**Параметры** не заполняются, так как данные не передаются в 1С.
**Сущность вложений** - сущность вложений файлов в 1С, из которой забираем данные. В ней хранится перечень файлов наименование, расширение, связка с документом в 1С, например, Catalog_ ГрафикОтпусковПрисоединенныеФайлы
**Сущность файла** InformationRegister_ДвоичныеДанныеФайлов, сущность 1С, в которой хранятся все файлы в двоичном представлении. <br>
**Сущность файла** InformationRegister_ДвоичныеДанныеФайлов, сущность 1С, в которой хранятся все файлы в двоичном представлении.
## Настройка входящих документов
Тип | Наименование справочника в Лексеме | Наименование документа | Сущность в 1С | Параметр для запроса сущности в 1С | Дополнительные условия к документу 1С | Условие наличия отчета в 1С (наименование отчета) | Наименования отчетов в 1С для для загрузки во вложения к документу | Наименование повторяющейся части | Сущность вложений | Сущность файлов
:-----------|:-----------|:-----------|:-----------|:-----------|:-----------|:-----------|:-----------|-:-----------|:-----------|:-----------
Документ в Лексеме | | RP_VacationForm | Document_ГрафикОтпусков | | | Форма Т-7 | | Сотрудники | Catalog_ГрафикОтпусковПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Документ в Лексеме | | RP_VacationChangesForm | Document_ПереносОтпуска | | | | | Переносы | Catalog_ПереносОтпускаПрисоединенныеФайлы_ | InformationRegister_ДвоичныеДанныеФайлов
Документ в Лексеме | | RP_WorkTabBaseForm | Document_ТабельУчетаРабочегоВремени | | | | | | Catalog_ТабельУчетаРабочегоВремениПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Документ в Лексеме | | RP_WorkContractForm | Document_ПриемНаРаботу | $filter=ВидДоговора eq 'ТрудовойДоговор' | | | | | |
Документ в Лексеме | | RP_StaffingForm | Document_УтверждениеШтатногоРасписания | | | | | Позиции | Catalog_УтверждениеШтатногоРасписанияПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Договор подряда | Договор подряда | Document_ДоговорРаботыУслуги | ?$filter=Date gt datetime'{{LastDay}}' | | Договор подряда | Договор подряда | | Catalog_ДоговорРаботыУслугиПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов_
Подтип документа на подписание | Перенос отпуска | ПереносОтпуска | Document_ПереносОтпуска | ?$filter=Date gt datetime'{{LastDay}}' | | | | | Catalog_ПереносОтпускаПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на материальную помощь | МатериальнаяПомощь | Document_МатериальнаяПомощь | ?$filter=Date gt datetime'{{LastDay}}' | | | | Начисления | Catalog_МатериальнаяПомощьПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на материальную помощь | ВозмещениеФСС | Document_ЗаявлениеВФССОВозмещенииРасходовНаПогребение | ?$filter=Date gt datetime'{{LastDay}}' | | | Универсальный документ;Приказ | Оплаты | Catalog_ЗаявлениеВФССОВозмещенииРасходовНаПогребениеПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на отпуск | УчебныйОтпускБезОплаты | Document_ОтпускБезСохраненияОплаты | ?$filter=Date gt datetime'{{LastDay}}' | | | | | Catalog_ОтпускБезСохраненияОплатыПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на отпуск | ЕжегодныйОтпускКомпенсация | Document_Отпуск | ?$filter=Date gt datetime'{{LastDay}}' | { "ПредоставитьКомпенсациюОсновногоОтпуска": true } | Приказ о предоставлении отпуска (Т-6 | | | Catalog_ОтпускПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на отпуск | ДополнительныйОтпуск | Document_Отпуск | ?$filter=Date gt datetime'{{LastDay}}' | { "ПредоставитьДополнительныйОтпуск": true} | Приказ о предоставлении отпуска (Т-6 | | | Catalog_ОтпускПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на отпуск | ДополнительныйОтпускКомпенсация | Document_Отпуск | ?$filter=Date gt datetime'{{LastDay}}' | { "ПредоставитьДополнительныйОтпуск": true} | Приказ о предоставлении отпуска (Т-6 | | | Catalog_ОтпускПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на отпуск | ОтпускЕжегодный | Document_Отпуск | ?$filter=Date gt datetime'{{LastDay}}' | { "ПредоставитьОсновнойОтпуск": true,"ДокументРассчитан": true } | Приказ о предоставлении отпуска (Т-6 | Приказ о предоставлении отпуска (Т-6; Записка - расчет о предоставлении отпуска работнику;ДС_Изменениериказ_наатериальную_помощь | | Catalog_ОтпускПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на отпуск | ПереносБОЛОтпуск | Document_Отпуск | ?$filter=Date gt datetime'{{LastDay}}' | | | | | Catalog_ОтпускПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на отпуск без сохранения оплаты | ОтпускБезСохр | Document_ОтпускБезСохраненияОплаты | ?$filter=Date gt datetime'{{LastDay}}' | | Приказ о предоставлении отпуска | | | Catalog_ОтпускБезСохраненияОплатыПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ на отпуск по беременности и родам | Отпуск по беременности и родам | Document_БольничныйЛист | ?$filter=Date gt datetime'{{LastDay}}' | | | | | |
Подтип документа на подписание | Приказ о направлении в командировку | Командировка | Document_Командировка | ?$filter=Date gt datetime'{{LastDay}}' | | | | | Catalog_КомандировкаПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ о направлении в командировку | Командировка группы | Document_КомандировкиСотрудников | ?$filter=Date gt datetime'{{LastDay}}' | | | | Сотрудники | Catalog_КомандировкиСотрудниковПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ о неявке | ПрогулНеявкаДонорские | Document_ПрогулНеявка | ?$filter=Date gt datetime'{{LastDay}}' | | | | | Catalog_ОтпускПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ о переводе | КадровыйПеревод | Document_КадровыйПеревод | ?$filter=Date gt datetime'{{LastDay}}' | | Приказ о переводе | | | Catalog_КадровыйПереводПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ о предоставлении дополнительных оплачиваемых выходных дней для ухода за ребенком-инвалидом | ОплатаДнейУходаЗаДетьмиИнвалидами | Document_ОплатаДнейУходаЗаДетьмиИнвалидами | ?$filter=Date gt datetime'{{LastDay}}' | | Приказ о предоставлении дополнительных оплачиваемых выходных дней для ухода за ребенком-инвалидом | Приказ о предоставлении дополнительных оплачиваемых выходных дней для ухода за ребенком-инвалидом | | Catalog_ОплатаДнейУходаЗаДетьмиИнвалидамиПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Приказ о приеме | ПриемНаРаботу | Document_ПриемНаРаботу | ?$filter=Date gt datetime'{{LastDay}}' | | | | | Catalog_ПриемНаРаботуПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Расчетный лист | РасчетныйЛист | | | | | Расчетный лист | | |
Подтип документа на подписание | Расчетный лист | РасчетныйЛист | | | | | | | |
Подтип документа на подписание | Справка 2 НДФЛ | СправкаНДФЛ | Document_СправкаНДФЛ | ?$filter=Date gt datetime'{{LastDay}}' | | Форма 2НДФЛ | Форма 2НДФЛ | | Catalog_СправкаНДФЛПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Справка о работе с печатью | СправкаОРаботеСПечатью | Catalog_ФизическиеЛица | | | Справка о работе с печатью | Справка о работе с печатью | | Catalog_ФизическиеЛицаПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Подтип документа на подписание | Табель учета рабочего времени | ТабельУчетаРабочегоВремени | Document_ТабельУчетаРабочегоВремени | | | | | ДанныеОВремени | Catalog_ТабельУчетаРабочегоВремениПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Документ в Лексеме | | RP_StaffingForm | Document_УтверждениеШтатногоРасписания | $filter=Date gt datetime'2022-06-01T00:00:00' | {"Posted": true} | | | Позиции,Начисления,Показатели | Catalog_УтверждениеШтатногоРасписанияПрисоединенныеФайлы | InformationRegister_ДвоичныеДанныеФайлов
Документ в Лексеме | | RP_StaffingForm | Document_ИзменениеШтатногоРасписания | $filter=Date gt datetime'2023-01-01T00:00:00' | {"Posted": true} | | | Позиции,Начисления,Показатели | |
Дополнительный регистр | | RP_StaffingForm | InformationRegister_ГрейдыПозиций | | | | | | |

View File

@ -1,118 +1,431 @@
# Вкладка "Исходящие документы"
Для настройки нужно в Меню в поисковой строке ввести - "Настройка параметров обмена с 1С*".<br>
Для настройки нужно в Меню в поисковой строке ввести - "Настройка параметров обмена с 1С*".
Данная вкладка предназначена для описания настроек по документам, отправляемым в 1С. <br>
При первом входе в документ, табличная часть вкладки «Исходящие документы» будет пред заполнена.<br>
Данная вкладка предназначена для описания настроек по документам, отправляемым в 1С.
При первом входе в документ, табличная часть вкладки «Исходящие документы» будет пред заполнена.
![Рисунок 1 Вкладкасходящиеокументы](../media/Вкладкасходящиеокументы.png) <br>
Необходимо заполнить столбец «Справочник в Лексеме» в строках с «Типами»: <br>
• Заявление от сотрудника<br>
• Реквизиты заявлений от сотрудников<br>
• Служебная записка на командировку<br>
В зависимости от того, на каком «Типе» строк вызывается справочник для выбора будет соответствующий набор данных. <br>
![Рисунок 1 Вкладкасходящиеокументы](../media/Вкладкасходящиеокументы.png)
Необходимо заполнить столбец «Справочник в Лексеме» в строках с «Типами»:
• Заявление от сотрудника
• Реквизиты заявлений от сотрудников
• Служебная записка на командировку
В зависимости от того, на каком «Типе» строк вызывается справочник для выбора будет соответствующий набор данных.
## Заявления от сотрудников
Для «Типа» строк «Заявления от сотрудников» необходимо заполнить следующие поля:
**Справочник в Лексеме** подтип из документа «Конструктор документов» с типом «Заявление от сотрудника»:
![Рисунок 1 Справочник_для_заявлений](../media/Справочник_для_заявлений.png)<br>
![Рисунок 1 Конструктор_Заявления](../media/Конструктор_Заявления.png)<br>
![Рисунок 1 Справочник_для_заявлений](../media/Справочник_для_заявлений.png)
![Рисунок 1 Конструктор_Заявления](../media/Конструктор_Заявления.png)
**Наименование документа** наименование документа, в который будут передаваться данные. <br>
**Сущность в 1С** наименование метаданных для обмена данными с 1С. Для заявлений указываются параметры для передачи. Например, Document_Отпуск.<br>
**Параметр** #- шаблон json передачи данных в 1С для создания приказа, указанного в столбцах "Наименование документа" и "Сущность в 1С".<br>
Например, при формировании запроса, на основании строки шаблона "Сотрудник_Key": "" из таблицы соответствия по данным заявления подбирается код сотрудника и строка будет иметь вид:<br>
*"Сотрудник_Key": "d3533108-6e8a-11dc-827a-000bcdf174e3"*<br>
**Наименование документа** наименование документа, в который будут передаваться данные.
**Сущность в 1С** наименование метаданных для обмена данными с 1С. Для заявлений указываются параметры для передачи. Например, Document_Отпуск.
**Параметр** #- шаблон json передачи данных в 1С для создания приказа, указанного в столбцах "Наименование документа" и "Сущность в 1С".
Например, при формировании запроса, на основании строки шаблона "Сотрудник_Key": "" из таблицы соответствия по данным заявления подбирается код сотрудника и строка будет иметь вид:
*"Сотрудник_Key": "d3533108-6e8a-11dc-827a-000bcdf174e3"*
При первоначальной настройке необходимо для документов типа "Отпуск" указать guid видов отпуска, в тэгах "ВидОтпуска_Key":,
"ВидРасчета_Key": <br>
"ВидРасчета_Key":
**Параметр для повторяющей части** заполняется, например, для Заявлений на доп. отпуска, потому что заявление обычно составляет один сотрудник, а для доп. отпусков запись в 1С производится в табличную часть. Для того, чтобы значение данного поля учлось при формировании параметра, в поле *Параметр* указывается служебное слово **%parametrDetail%** <br>
**Параметр для повторяющей части** заполняется, например, для Заявлений на доп. отпуска, потому что заявление обычно составляет один сотрудник, а для доп. отпусков запись в 1С производится в табличную часть. Для того, чтобы значение данного поля учлось при формировании параметра, в поле *Параметр* указывается служебное слово **%parametrDetail%**
**Например**,<br>
*Параметр*<br>
{"ФизическоеЛицо_Key": "",<br>
"Сотрудник_Key": "",<br>
................<br>
"НачалоОтпуска": "0001-01-01T00:00:00",<br>
"ОкончаниеОтпуска": "0001-01-01T00:00:00",<br>
%parametrDetail% --Это часть про дополнительные отпуска<br>
}<br>
**Например**,
```json
*Параметр*
{"ФизическоеЛицо_Key": "",
"Сотрудник_Key": "",
................
"НачалоОтпуска": "0001-01-01T00:00:00",
"ОкончаниеОтпуска": "0001-01-01T00:00:00",
%parametrDetail% --Это часть про дополнительные отпуска
}
*Параметр для повторяющей части*<br>
"ДополнительныеОтпуска": [<br>
{<br>
"Ref_Key": "00000000-0000-0000-0000-000000000000",<br>
.....<br>
}<br>
]<br>
*Параметр для повторяющей части*
"ДополнительныеОтпуска": [
{
"Ref_Key": "00000000-0000-0000-0000-000000000000",
.....
}
]
```
**Сущность вложения** - сущность на стороне 1С, в которую передаются вложения (файлы) из документа «Заявления от сотрудника». В ней хранится перечень файлов наименование, расширение, связка с документом в 1С, например, Catalog_ОтпускПрисоединенныеФайлы<br>
**Сущность хранилища файлов** InformationRegister_ХранилищеФайлов, сущность, в которой хранятся все файлы в двоичном представлении.<br>
**Сущность вложения** - сущность на стороне 1С, в которую передаются вложения (файлы) из документа «Заявления от сотрудника». В ней хранится перечень файлов наименование, расширение, связка с документом в 1С, например, Catalog_ОтпускПрисоединенныеФайлы
**Сущность хранилища файлов** InformationRegister_ХранилищеФайлов, сущность, в которой хранятся все файлы в двоичном представлении.
<!-- **Шаблон json вложения** шаблон для передачи вложения в 1С. Имеет одинаковый формат для всех типов документов.<br>
**Шаблон json файлов** шаблон для передачи вложения в 1С. Имеет одинаковый формат для всех типов документов.<br>
<!-- **Шаблон json вложения** шаблон для передачи вложения в 1С. Имеет одинаковый формат для всех типов документов.
**Шаблон json файлов** шаблон для передачи вложения в 1С. Имеет одинаковый формат для всех типов документов.
{"Файл": "", "Файл_Type": "StandardODATA.Catalog_ОтпускПрисоединенныеФайлы", здесь сущность вложения будет подставлена та, которая указана по строке
"ДвоичныеДанныеФайла_Type": "application/octet-stream",
" ": ""
}<br> -->
} -->
При появлении нового типа заявления, обмен которыми необходим между системами, нужно внести вручную новые строчки с типом и заполнить все необходимые данные. В первую очередь внести данный подтип заявления в «Конструктор документов» и указать код созданного подтипа в поле «Справочник в Лексеме | Выбор».<br>
При появлении нового типа заявления, обмен которыми необходим между системами, нужно внести вручную новые строчки с типом и заполнить все необходимые данные. В первую очередь внести данный подтип заявления в «Конструктор документов» и указать код созданного подтипа в поле «Справочник в Лексеме | Выбор».
Для параметров, которые должны быть заполнены из СЭД, оставляем строчку пустой ": ""
Это реквизиты заявлений, а также поля: ФизическоеЛицо_Key,Сотрудник_Key,ОсновнойСотрудник_Key,ПериодРегистрации,Date,Организация_Key,Основание,Комментарий.<br>
Дату документа "Date": "", совсем убираем из шаблона, если нужно чтобы дата создаваемого в 1С документа устанавливалась текущей датой, если будет данная строчка в шаблоне возьмется дата заявления <br>
Значения, которые передавать не надо, заполняем нулевыми значениями, н-р, “Руководитель_Key” : "00000000-0000-0000-0000-000000000000".<br>
Это реквизиты заявлений, а также поля: ФизическоеЛицо_Key,Сотрудник_Key,ОсновнойСотрудник_Key,ПериодРегистрации,Date,Организация_Key,Основание,Комментарий.
Дату документа "Date": "", совсем убираем из шаблона, если нужно чтобы дата создаваемого в 1С документа устанавливалась текущей датой, если будет данная строчка в шаблоне возьмется дата заявления
Значения, которые передавать не надо, заполняем нулевыми значениями, н-р, “Руководитель_Key” : "00000000-0000-0000-0000-000000000000".
**Например**,<br>
"Ref_Key": "00000000-0000-0000-0000-000000000000", --заполняем нули, так как поле типа quid и не передаем из СЭД<br>
"DataVersion": "AAACsQAAAAA=",<br>
"DeletionMark": false,<br>
"Number": "",<br>
"Posted": true,<br>
"Организация_Key": "", --не заполняем, так как поле передается из СЭД<br>
"ФизическоеЛицо_Key": "", --не заполняем, так как поле передается из СЭД <br>
"ПериодРасчетаСреднегоЗаработкаНачало": "0001-01-01T00:00:00", --поле типа дата, не передаем из СЭД, поэтому заполняем нулевым значением <br>
........<br>
**Например**,
```json
"Ref_Key": "00000000-0000-0000-0000-000000000000", --заполняем нули, так как поле типа quid и не передаем из СЭД
"DataVersion": "AAACsQAAAAA=",
"DeletionMark": false,
"Number": "",
"Posted": true,
"Организация_Key": "", --не заполняем, так как поле передается из СЭД
"ФизическоеЛицо_Key": "", --не заполняем, так как поле передается из СЭД
"ПериодРасчетаСреднегоЗаработкаНачало": "0001-01-01T00:00:00", --поле типа дата, не передаем из СЭД, поэтому заполняем нулевым значением
........
```
## Реквизиты заявления от сотрудников
Для формирования файла обмена по Заявлению от сотрудников необходимы соответствия данных в 1с и СЭД. <br>
**Справочник в Лексеме** атрибут документа «Конструктор документов», из которого берутся значения для составления файла обмена передачи документа.<br>
Для формирования файла обмена по Заявлению от сотрудников необходимы соответствия данных в 1с и СЭД.
**Справочник в Лексеме** атрибут документа «Конструктор документов», из которого берутся значения для составления файла обмена передачи документа. Выпадающий список с атрибутами отфильтровывается по выбранному конструктору.
![Рисунок 1 Справочник_для_реквизитов ](../media/Справочник_для_реквизитов.png) <br>
![Рисунок 2 Атрибуты_конструктора](../media/Атрибуты_конструктора.png) <br>
![alt text](media/image.png)
При выборе соответсвующего справочника в документе отображается его наименование.
![Рисунок 3 Наименование_справочника](../media/Наименование_справочника.png) <br>
![Рисунок 3 Наименование_справочника](../media/Наименование_справочника.png)
**Наименование документа** наименование документа, в который будут передаваться данные. <br>
**Сущность в 1С** сущность на стороне 1С, в которую передаются данные. В этих строчках указываются параметры для передачи заявления от сотрудника в 1С.<br>
**Параметры** имя реквизита в 1С, которое будет подставлено в шаблон выгрузки заявления.<br>
Например, в шаблоне для заявления указана строка *"ДатаНачалаОсновногоОтпуска"*: "",<br>
*ДатаНачалаОсновногоОтпуска* по этому реквизиту будет найдена строчка с описанием реквизита, по коду реквизита из документа Заявление от сотрудника найдется значение и итоговая строчка будет иметь вид: *"ДатаНачалаОсновногоОтпуска"*:*"01.12.2021"*<br>
**Наименование документа** наименование документа, в который будут передаваться данные.
**Сущность в 1С** сущность на стороне 1С, в которую передаются данные. В этих строчках указываются параметры для передачи заявления от сотрудника в 1С.
**Параметры** имя реквизита в 1С, которое будет подставлено в шаблон выгрузки заявления.
Например, в шаблоне для заявления указана строка *"ДатаНачалаОсновногоОтпуска"*: "",
*ДатаНачалаОсновногоОтпуска* по этому реквизиту будет найдена строчка с описанием реквизита, по коду реквизита из документа Заявление от сотрудника найдется значение и итоговая строчка будет иметь вид: *"ДатаНачалаОсновногоОтпуска"*:*"01.12.2021"*
## Служебная записка на командировку для интеграции с 1С
Пример настройки для подтипа **"Заявление на ежегодный оплачиваемый отпуск (по графику отпусков)"**:
Настройки похожи на тип «Заявления от сотрудника», но создается другой тип документа - «Служебная записка на командировку». Документ не делится по подтипам, поэтому нет необходимости указывать подтип в поле «Справочник в Лексеме | Выбор».<br>
**Параметр для повторяющей части** в СЗ на командировку может быть указано несколько сотрудников в табличной части документа. В этом поле указывается шаблон json для формирования файла обмена по табличной части документа.<br>
- **Тип заявления:** Заявления от сотрудников
- **Наименование:** Заявление на ежегодный основной оплачиваемый отпуск (по графику отпусков)
- **Наименование документа:** ОтпускЕжегодный
- **Сущность в 1С:** `Document_Отпуск`
- **Параметр:**
```json
{"ФизическоеЛицо_Key": "",
"Сотрудник_Key": "",
"ПериодРегистрации": "",
"ДатаНачалаОсновногоОтпуска": "",
"Организация_Key": "",
"ДатаНачалаПериодаОтсутствия": "",
"ДатаОкончанияПериодаОтсутствия": "",
"КоличествоДнейОсновногоОтпуска": "",
"ДатаНачалаСобытия": "",
"ДатаОкончанияОсновногоОтпуска": "",
"Основание": "Заявление от сотрудника",
"ЗаявкаСотрудника": "",
"ПредставлениеПериода": "",
"DeletionMark": false,
"Posted": false,
"Ref_Key": "00000000-0000-0000-0000-000000000000",
"ПредоставитьОсновнойОтпуск": true,
"КоличествоДнейКомпенсацииОсновногоОтпуска": 0,
"РасходЧасовОтгула": 0,
"ПредоставитьОтгул": false,
"КоличествоДнейОтгула": 0,
"ПредоставитьКомпенсациюОсновногоОтпуска": false,
"ПредоставитьЕдиновременнуюВыплатуКОтпуску": false,
"ПредоставитьДополнительныйОтпуск": false,
"РасходДнейОтгула": 0,
"ПредоставитьМатериальнуюПомощьПриОтпуске": false,
"ВидРасчетаОтгул_Key": "00000000-0000-0000-0000-000000000000",
"ВидРасчетаЕдиновременнойВыплатыКОтпуску_Key": "00000000-0000-0000-0000-000000000000",
"ВидРасчетаМатериальнойПомощиПриОтпуске_Key": "00000000-0000-0000-0000-000000000000",
"ФиксПериодРасчетаСреднегоЗаработка": false,
"Руководитель_Key": "00000000-0000-0000-0000-000000000000",
"ПорядокВыплаты": "Межрасчет",
"ОснованиеПодписиРуководителя": "",
"ДокументПроведен": false,
"ДокументРассчитан": false,
"РассчитатьЗарплату": false,
справленныйДокумент_Key": "00000000-0000-0000-0000-000000000000",
"ГлавныйБухгалтер_Key": "00000000-0000-0000-0000-000000000000",
олжностьГлавногоБухгалтера_Key": "00000000-0000-0000-0000-000000000000",
ухгалтер_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиГлавногоБухгалтера": "",
олжностьРуководителя_Key": "00000000-0000-0000-0000-000000000000",
окументЗаполнения_Key": "00000000-0000-0000-0000-000000000000",
"Ответственный_Key": "00000000-0000-0000-0000-000000000000",
сполнитель_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиРаботникаКадровойСлужбы": "",
олжностьБухгалтера_Key": "00000000-0000-0000-0000-000000000000",
олжностьИсполнителя_Key": "00000000-0000-0000-0000-000000000000",
"РаботникКадровойСлужбы_Key": "00000000-0000-0000-0000-000000000000",
олжностьРаботникаКадровойСлужбы_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиБухгалтера": "",
"ДатаЗапрета": "0001-01-01T00:00:00",
"УчитыватьМРОТПриОплатеПоСреднемуЗаработку": true,
"НачалоОтпуска": "0001-01-01T00:00:00",
"ОкончаниеОтпуска": "0001-01-01T00:00:00"
}
```
Остальные поля заполняются аналогично типу [«Заявления от сотрудника»](аявления_от_сотрудников)
- **Сущность вложений:** Catalog_ОтпускПрисоединенныеФайлы
- **Сущность хранилища файлов:** InformationRegister_ХранилищеФайлов
- **Сущность двоичных данных файлов:** Catalog_ХранилищеДвоичныхДанных
## Служебная записка на конструкторе
Настройки похожи на тип «Заявления от сотрудника», но создается другой тип документа - «СЗ на конструкторе».
- **Тип заявления:** СЗ на конструкторе
- **Наименование:** (для ЗУП УПР) КТУ
- **Наименование документа:** (для ЗУП УПР) КТУ
- **Сущность в 1С:** `InformationRegister_нп_СлужебныеЗапискиЛексема`
- **Параметр:**
```json
{
"Ref_Key": "",
"Period": "",
"ТипСлужебнойЗаписки": "КТУ",
"GUID_Сотрудник": "",
"Сумма": ""
}
```
- **Сущность хранилища файлов:** InformationRegister_ХранилищеФайлов
- **Сущность двоичных данных файлов:** Catalog_ХранилищеДвоичныхДанных
## Служебная записка на командировку
Настройки похожи на тип «Заявления от сотрудника», но создается другой тип документа - «Служебная записка на командировку». Документ не делится по подтипам, поэтому нет необходимости указывать подтип в поле «Справочник в Лексеме | Выбор».
- **Тип заявления:** Служебная записка на командировку
- **Наименование:** Командировка
- **Сущность в 1С:** `Document_Командировка`
- **Параметр:**
```json
{
"Ref_Key": "00000000-0000-0000-0000-000000000000",
"DataVersion": "AAAABwAAAAA=",
"DeletionMark": false,
"Number": "",
"Posted": true,
"ПериодРегистрации": "",
"Организация_Key": "",
"Сотрудник_Key": "",
"ФизическоеЛицо_Key": "",
"ВидРасчета_Key": "00000000-0000-0000-0000-000000000000",
"ВнутрисменнаяКомандировка": false,
"ДатаНачала": "",
"ДатаОкончания": "",
"ДатаКомандировки": "0001-01-01T00:00:00",
"ОплачиватьЧасов": 0,
"ДатаНачалаСобытия": "",
"ОсвобождатьСтавку": false,
"ПериодРасчетаСреднегоЗаработкаНачало": "0001-01-01T00:00:00",
"ПериодРасчетаСреднегоЗаработкаОкончание": "0001-01-01T00:00:00",
"ФиксПериодРасчетаСреднегоЗаработка": false,
"СреднийЗаработок": 0,
"Начислено": 0,
"Удержано": 0,
"ВидВремениЗамещаемый_Key": "00000000-0000-0000-0000-000000000000",
"ПорядокВыплаты": "Зарплата",
"ПланируемаяДатаВыплаты": "0001-01-01T00:00:00",
справленныйДокумент_Key": "00000000-0000-0000-0000-000000000000",
"ДокументРассчитан": false,
"Рассчитал_Key": "00000000-0000-0000-0000-000000000000",
"ПредставлениеПериода": "",
"МестоНазначения": "",
"ОрганизацияНазначения": "",
"Основание": "",
"Цель": "",
"ДнейВПути": 0,
"КомандировкаЗаСчетСредств": "",
"Руководитель_Key": "00000000-0000-0000-0000-000000000000",
олжностьРуководителя_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиРуководителя": "",
"ГлавныйБухгалтер_Key": "00000000-0000-0000-0000-000000000000",
олжностьГлавногоБухгалтера_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиГлавногоБухгалтера": "",
ухгалтер_Key": "00000000-0000-0000-0000-000000000000",
олжностьБухгалтера_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиБухгалтера": "",
сполнитель_Key": "00000000-0000-0000-0000-000000000000",
олжностьИсполнителя_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиИсполнителя": "",
"ЗаявкаСотрудника": ""
}
```
**Параметр для повторяющей части** в СЗ на командировку может быть указано несколько сотрудников в табличной части документа. В этом поле указывается шаблон json для формирования файла обмена по табличной части документа.
- **Сущность вложений:** Catalog_КомандировкаПрисоединенныеФайлы
- **Сущность хранилища файлов:** InformationRegister_ХранилищеФайлов
- **Сущность двоичных данных файлов:** Catalog_ХранилищеДвоичныхДанных
## Служебная записка на командировку на конструкторе
- **Тип заявления:** Служебная записка на командировку
- **Наименование:** Командировка
- **Сущность в 1С:** `Document_Командировка`
- **Параметр:**
```json
{
"Ref_Key": "00000000-0000-0000-0000-000000000000",
"DataVersion": "AAAABwAAAAA=",
"DeletionMark": false,
"Number": "",
"Posted": false,
"ПериодРегистрации": "",
"Организация_Key": "",
"Сотрудник_Key": "",
"ФизическоеЛицо_Key": "",
"ВидРасчета_Key": "00000000-0000-0000-0000-000000000000",
"ВнутрисменнаяКомандировка": false,
"ДатаНачала": "",
"ДатаОкончания": "",
"ДатаКомандировки": "0001-01-01T00:00:00",
"ОплачиватьЧасов": 0,
"ДатаНачалаСобытия": "",
"ОсвобождатьСтавку": false,
"ПериодРасчетаСреднегоЗаработкаНачало": "0001-01-01T00:00:00",
"ПериодРасчетаСреднегоЗаработкаОкончание": "0001-01-01T00:00:00",
"ФиксПериодРасчетаСреднегоЗаработка": false,
"СреднийЗаработок": 0,
"Начислено": 0,
"Удержано": 0,
"ВидВремениЗамещаемый_Key": "00000000-0000-0000-0000-000000000000",
"ПорядокВыплаты": "Зарплата",
"ПланируемаяДатаВыплаты": "0001-01-01T00:00:00",
справленныйДокумент_Key": "00000000-0000-0000-0000-000000000000",
"ДокументРассчитан": false,
"Рассчитал_Key": "00000000-0000-0000-0000-000000000000",
"ПредставлениеПериода": "",
"МестоНазначения": "",
"ОрганизацияНазначения": "",
"Основание": "",
"Цель": "",
"ДнейВПути": 0,
"КомандировкаЗаСчетСредств": "",
"Руководитель_Key": "00000000-0000-0000-0000-000000000000",
олжностьРуководителя_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиРуководителя": "",
"ГлавныйБухгалтер_Key": "00000000-0000-0000-0000-000000000000",
олжностьГлавногоБухгалтера_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиГлавногоБухгалтера": "",
ухгалтер_Key": "00000000-0000-0000-0000-000000000000",
олжностьБухгалтера_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиБухгалтера": "",
сполнитель_Key": "00000000-0000-0000-0000-000000000000",
олжностьИсполнителя_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиИсполнителя": "",
"ЗаявкаСотрудника": "",
"Комментарий": ""
}
```
**Параметр для повторяющей части** в СЗ на командировку может быть указано несколько сотрудников в табличной части документа. В этом поле указывается шаблон json для формирования файла обмена по табличной части документа.
- **Сущность вложений:** Catalog_КомандировкаПрисоединенныеФайлы
- **Сущность хранилища файлов:** InformationRegister_ХранилищеФайлов
- **Сущность двоичных данных файлов:** Catalog_ХранилищеДвоичныхДанных
## Уведомления Lexema
Из подписанных работником Уведомлений, сформированных по графику отпусков, есть возможность создавать приказ на отпуск в 1С.
Для этого в конструкторе документов должен быть создан документ со служебным наименованием NotificationLexema:<br>
Для этого в конструкторе документов должен быть создан документ со служебным наименованием NotificationLexema:
![Рисунок 1 Уведомление конструктор](../media/Уведомление конструктор.PNG) <br>
![alt text](media/image-1.png)
Настройки похожи на тип «Заявления от сотрудника». Документ не делится по подтипам, поэтому нет необходимости указывать подтип в поле «Справочник в Лексеме | Выбор».<br>
- **Тип заявления:** Уведомления Lexema
- **Наименование:** Уведомления об отпуске
- **Наименование документа:** ОтпускИзУведомлений
- **Сущность в 1С:** `Document_Отпуск`
- **Параметр:**
```json
![Рисунок 2 Уведомления Lexema](../media/Уведомление.PNG) <br>
{"ФизическоеЛицо_Key": "",
"Сотрудник_Key": "",
"ПериодРегистрации": "",
"Организация_Key": "",
"ДатаНачалаОсновногоОтпуска": "",
"КоличествоДнейОсновногоОтпуска": "",
"ДатаОкончанияОсновногоОтпуска": "",
"ДатаНачалаПериодаОтсутствия": "",
"ДатаНачалаСобытия": "",
"Основание": "Заявление от сотрудника",
"ЗаявкаСотрудника": "",
"ПредставлениеПериода": "",
"Комментарий": "",
"ВидРасчетаКомпенсацииОсновногоОтпуска_Key":"00000000-0000-0000-0000-000000000000",
"DeletionMark": false,
"Posted": false,
"Ref_Key": "00000000-0000-0000-0000-000000000000",
"ПредоставитьОсновнойОтпуск": ,
"КоличествоДнейКомпенсацииОсновногоОтпуска": "",
"РасходЧасовОтгула": 0,
"ПредоставитьОтгул": false,
"КоличествоДнейОтгула": 0,
"ПредоставитьКомпенсациюОсновногоОтпуска": false,
"ПредоставитьЕдиновременнуюВыплатуКОтпуску": false,
"ПредоставитьДополнительныйОтпуск": ,
"РасходДнейОтгула": 0,
"ПредоставитьМатериальнуюПомощьПриОтпуске": false,
"ВидРасчетаОтгул_Key": "00000000-0000-0000-0000-000000000000",
"ВидРасчетаЕдиновременнойВыплатыКОтпуску_Key": "00000000-0000-0000-0000-000000000000",
"ВидРасчетаМатериальнойПомощиПриОтпуске_Key": "00000000-0000-0000-0000-000000000000",
"ФиксПериодРасчетаСреднегоЗаработка": false,
"Руководитель_Key": "00000000-0000-0000-0000-000000000000",
"ПорядокВыплаты": "Межрасчет",
"ОснованиеПодписиРуководителя": "",
"ДокументПроведен": false,
"ДокументРассчитан": false,
"ДокументПроведен": false,
"РассчитатьЗарплату": false,
справленныйДокумент_Key": "00000000-0000-0000-0000-000000000000",
"ГлавныйБухгалтер_Key": "00000000-0000-0000-0000-000000000000",
олжностьГлавногоБухгалтера_Key": "00000000-0000-0000-0000-000000000000",
ухгалтер_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиГлавногоБухгалтера": "",
олжностьРуководителя_Key": "00000000-0000-0000-0000-000000000000",
окументЗаполнения_Key": "00000000-0000-0000-0000-000000000000",
"Ответственный_Key": "00000000-0000-0000-0000-000000000000",
сполнитель_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиРаботникаКадровойСлужбы": "",
олжностьБухгалтера_Key": "00000000-0000-0000-0000-000000000000",
олжностьИсполнителя_Key": "00000000-0000-0000-0000-000000000000",
"РаботникКадровойСлужбы_Key": "00000000-0000-0000-0000-000000000000",
олжностьРаботникаКадровойСлужбы_Key": "00000000-0000-0000-0000-000000000000",
"ОснованиеПодписиБухгалтера": "",
"ДатаЗапрета": "0001-01-01T00:00:00",
"УчитыватьМРОТПриОплатеПоСреднемуЗаработку": true,
"НачалоОтпуска": "0001-01-01T00:00:00",
"ОкончаниеОтпуска": "0001-01-01T00:00:00",
"ДополнительныеОтпуска": [%parametrDetail%]
}
```
**Параметр для повторяющей части:**
```json
{
"Ref_Key": "00000000-0000-0000-0000-000000000000",
"LineNumber": "1",
"ВидОтпуска_Key": "",
"ВидРасчета_Key": "00000000-0000-0000-0000-000000000000",
"НачалоПериодаЗаКоторыйПредоставляетсяОтпуск": "0001-01-01T00:00:00",
"КонецПериодаЗаКоторыйПредоставляетсяОтпуск": "0001-01-01T00:00:00",
"КоличествоДней": ,
"ДатаНачала": "",
"КоличествоДнейКомпенсации": 0,
"ВидРасчетаКомпенсации_Key": "00000000-0000-0000-0000-000000000000",
"Основание": "",
"КоличествоДнейАвансом": 0,
"ВидВремени_Key": "00000000-0000-0000-0000-000000000000"
}
```
- **Сущность вложений:** Catalog_ОтпускПрисоединенныеФайлы
- **Сущность двоичных данных файлов:** Catalog_ХранилищеДвоичныхДанных
Остальные поля заполняются аналогично типу [«Заявления от сотрудника»](аявления_от_сотрудников)
Данные передаются в сущность Document_Отпуск.

View File

@ -1,15 +1,19 @@
# Вкладка "Соответствие справочников"
Для открытия документа необходимо в Меню в поисковой строке ввести - "Настройка параметров обмена с 1С*".<br>
Для открытия документа необходимо в Меню в поисковой строке ввести - "Настройка параметров обмена с 1С*".
На вкладке «Соответствие справочников» необходимо сопоставить вручную соответствия, значения которых не нашлись автоматически. Автоматически соответствие проставляется только по виду документов физических лиц. <br>
Выбор виртуальное поле для выбора соответствующего справочника в Лексеме, например, для Филиалов будет набор данных из Своих организаций, для контактной информации справочники модуля по учету персонала и т.д. <br>
![Рисунок 1 Спр_в_Лексеме](../media/Спр_в_Лексеме.png) <br>
На вкладке **«Соответствие справочников»** необходимо сопоставить вручную соответствия, значения которых не нашлись автоматически. Автоматически соответствие проставляется только по виду документов физических лиц.
Выбранное значение сохраняется в физическом поле «Справочник в Лексеме».<br>
![Рисунок 2 Вкладка_Основная](../media/Вкладка_Соответствие_справочников.png) <br>
**Выбор** виртуальное поле для выбора соответствующего справочника в Лексеме, например, для Филиалов будет набор данных из Своих организаций, для контактной информации справочники модуля по учету персонала и т.д.
В случае доменной авторизации обязательно нужно установить соответствие по типу справочника Вид контактной информации Email рабочий - справочнику в Лексеме, для загрузки соответсвующих данных в справочник физических лиц на закладку "Контакты"
![Рисунок 3 email](../media/email.png) <br>
![alt text](media/image.png)
Выбранное значение сохраняется в физическом поле «Справочник в Лексеме».
![alt text](media/image-1.png)
В случае доменной авторизации обязательно нужно установить соответствие по типу справочника Вид контактной информации Email рабочий - справочнику в Лексеме, для загрузки соответсвующих данных в справочник физических лиц на закладку "Контакты".
![alt text](media/image-2.png)
Это важно для поиска физического лица при автоматическом создании пользователя из Active Directory.

View File

@ -1,109 +1,280 @@
# Вкладка "Справочники"
Для открытия документа необходимо в Меню в поисковой строке ввести - "Настройка параметров обмена с 1С*".<br>
Для открытия документа необходимо в Меню в поисковой строке ввести - "Настройка параметров обмена с 1С*".
Откроется форма документа:<br>
Откроется форма документа:
![Рисунок 2 Настройка параметров обмена с 1С форма](../media/Настройка_параметров_обмена_с_1Сорма.png)<br>
![alt text](media/image.png)
На вкладке «Справочники» будут представлены основные справочники, необходимые для обмена данными с 1С::<br>
Ниже представлены примеры настроек различных справочников:
Тип | Сущность в 1С | Параметр | Справочник в Лексеме
----|---------------|----------|---------------------
Виды графиков работ | Catalog_ГрафикиРаботыСотрудников | ?$select=Ref_Key,Description,ДлительностьРабочейНедели&$filter=DeletionMark eq false |
Виды документов об образовании | Catalog_ВидыДокументовОбОбразовании | |
Виды образования физ.лиц | Catalog_ВидыОбразованияФизическихЛиц | |
Грейды | Catalog_Грейды | |
Документы физических лиц | InformationRegister_ДокументыФизическихЛиц | |
Завершение испытательного срока | Document_ЗавершениеИспытательногоСрока | $filter=Posted eq true |
Испытательный срок | Document_ПриемНаРаботу | |
Кадровые данные сотрудников | InformationRegister_КадроваяИсторияСотрудников | |
Образование физ.лиц | Catalog_ОбразованиеФизическихЛиц | |
Показатели начисления зарплаты | Catalog_ПоказателиРасчетаЗарплаты | |
Продление испытательного срока | Document_ПродлениеИспытательногоСрока | $filter=Posted eq true |
Семья физ.лиц | Catalog_РодственникиФизическихЛиц | |
Специальности по образованию | Catalog_КлассификаторСпециальностейПоОбразованию | ?$select=Ref_Key,Description,Code&$filter=DeletionMark eq false |
Справочник видов документов физических лиц | Catalog_ВидыДокументовФизическихЛиц | |
Справочник видов занятости | InformationRegister_ВидыЗанятостиСотрудников | |
Справочник видов контактной информации физ.лиц | Catalog_ВидыКонтактнойИнформации | |
Справочник должностей | Catalog_Должности | |
Справочник подразделений | Catalog_ПодразделенияОрганизаций | |
Справочник своих организаций | Catalog_Организации | |
Справочник склонений объектов | InformationRegister_СклоненияПредставленийОбъектов | |
Справочник сотрудников | Catalog_Сотрудники | |
Справочник физических лиц | Catalog_ФизическиеЛица | ?$select=Ref_Key,Description,Фамилия,Имя,Отчество,ДатаРождения,Инициалы,ИНН,СтраховойНомерПФР,Пол,КонтактнаяИнформация/Тип,КонтактнаяИнформация/Представление,КонтактнаяИнформация/Вид_Key,МестоРождения | ФИО, дата рождения // Реквизиты для сопоставления со справочником физ.лиц
Степени родства физ.лиц | Catalog_СтепениРодстваФизическихЛиц | |
Типы начислений | ChartOfCalculationTypes_Начисления | ?$select=Ref_Key,Description&$filter=DeletionMark eq false |
Типы отпусков | Catalog_ВидыОтпусков | |
Учреждения образования | Catalog_УчебныеЗаведения | |
<style>
#uniqueTable {
width: 100%;
border-collapse: collapse;
}
#uniqueTable th {
padding: 8px;
border: 1px solid #ddd;
text-align: center;
vertical-align: middle;
}
/* Указываем ширину для каждого заголовка */
#uniqueTable th:nth-child(1) {
width: 20%; /* Задайте необходимую ширину для первого столбца */
}
#uniqueTable th:nth-child(2) {
width: 40%; /* Задайте необходимую ширину для второго столбца */
}
#uniqueTable th:nth-child(3) {
width: 40%; /* Задайте необходимую ширину для третьего столбца */
}
#uniqueTable td {
padding: 8px;
border: 1px solid #ddd;
text-align: left;
vertical-align: middle;
}
#uniqueTable td:nth-child(3) {
white-space: pre-wrap;
background-color: #f9f9f9;
}
</style>
<table class="dataframe sortable" id="uniqueTable">
<thead>
<tr style="text-align: left;">
<th><b>Тип</b></th>
<th><b>Сущность в 1С</b></th>
<th><b>Параметр</b></th>
</tr>
</thead>
<tbody>
<tr>
<td>Виды графиков работ</td>
<td>Catalog_ГрафикиРаботыСотрудников</td>
<td>{
?$select: Ref_Key,
Description,
ДлительностьРабочейНедели
$filter: DeletionMark eq false
}
Для них должны быть указаны сущности 1С, например: <br>
![Рисунок 1 Каталог_Организации](../media/Каталог_Организации.png)
<b>Примечание:</b>Необходимо также в столбец "Реквизиты для сопоставления" указать ДлительностьРабочейНедели</td>
</tr>
<tr>
<td>Виды графиков работ</td>
<td>Catalog_ГрафикиРаботыСотрудников</td>
<td></td>
</tr>
<tr>
<td>Виды документов об образовании</td>
<td>Catalog_ВидыДокументовОбОбразовании</td>
<td></td>
</tr>
<tr>
<td>Виды образования физ.лиц</td>
<td>Catalog_ВидыОбразованияФизическихЛиц</td>
<td></td>
</tr>
<tr>
<td>Документы физических лиц</td>
<td>InformationRegister_ДокументыФизическихЛиц</td>
<td></td>
</tr>
<tr>
<td>Завершение испытательного срока</td>
<td>Document_ЗавершениеИспытательногоСрока</td>
<td>{
$filter: Posted eq true
}</td>
</tr>
<tr>
<td>Испытательный срок из инф. регистра</td>
<td>InformationRegister_ИспытательныйСрокСотрудников</td>
<td></td>
</tr>
<tr>
<td>Испытательный срок из приказов о приеме</td>
<td>Document_ПриемНаРаботу</td>
<td></td>
</tr>
<tr>
<td>Кадровые данные сотрудников</td>
<td>InformationRegister_КадроваяИсторияСотрудников</td>
<td></td>
</tr>
<tr>
<td>Образование физ.лиц</td>
<td>Catalog_ОбразованиеФизическихЛиц</td>
<td></td>
</tr>
<tr>
<td>Показатели начисления зарплаты</td>
<td>Catalog_ПоказателиРасчетаЗарплаты</td>
<td></td>
</tr>
<tr>
<td>Продление испытательного срока</td>
<td>Document_ПродлениеИспытательногоСрока</td>
<td>{
$filter: Posted eq true
}</td>
</tr>
<tr>
<td>Семья физ.лиц</td>
<td>Catalog_РодственникиФизическихЛиц</td>
<td></td>
</tr>
<tr>
<td>Специальности по образованию</td>
<td>Catalog_КлассификаторСпециальностейПоОбразованию</td>
<td></td>
</tr>
<tr>
<td>Специальности по образованию</td>
<td>Catalog_КлассификаторСпециальностейПоОбразованию</td>
<td>{
?$select: Ref_Key,
Description,
Code
$filter: DeletionMark eq false
}</td>
</tr>
<tr>
<td>Справочник видов документов физических лиц</td>
<td>Catalog_ВидыДокументовФизическихЛиц</td>
<td></td>
</tr>
<tr>
<td>Справочник видов занятости</td>
<td>InformationRegister_ВидыЗанятостиСотрудников</td>
<td></td>
</tr>
<tr>
<td>Справочник видов контактной информации физ.лиц</td>
<td>Catalog_ВидыКонтактнойИнформации</td>
<td></td>
</tr>
<tr>
<td>Справочник должностей</td>
<td>Catalog_Должности</td>
<td></td>
</tr>
<tr>
<td>Справочник подразделений</td>
<td>Catalog_ПодразделенияОрганизаций</td>
<td></td>
</tr>
<tr>
<td>Справочник подразделений</td>
<td>Catalog_ПодразделенияОрганизаций</td>
<td>{
?$select: Ref_Key,
Description,
Фамилия,
Имя,
Отчество,
ДатаРождения,
Инициалы,
ИНН,
СтраховойНомерПФР,
Пол,
КонтактнаяИнформация/Тип,
КонтактнаяИнформация/Представление,
КонтактнаяИнформация/Вид_Key
}</td>
</tr>
<tr>
<td>Справочник своих организаций</td>
<td>Catalog_Организации</td>
<td></td>
</tr>
<tr>
<td>Справочник склонений объектов</td>
<td>InformationRegister_СклоненияПредставленийОбъектов</td>
<td></td>
</tr>
<tr>
<td>Справочник сотрудников</td>
<td>Catalog_Сотрудники</td>
<td></td>
</tr>
<tr>
<td>Справочник физических лиц</td>
<td>Catalog_ФизическиеЛица</td>
<td>{
?$select: Ref_Key,
Description,
Фамилия,
Имя,
Отчество,
ДатаРождения,
Инициалы,
ИНН,
СтраховойНомерПФР,
Пол,
МестоРождения,
КонтактнаяИнформация/Тип,
КонтактнаяИнформация/Представление,
КонтактнаяИнформация/Вид_Key
}</td>
</tr>
<tr>
<td>Справочник физических лиц</td>
<td>Catalog_ФизическиеЛица</td>
<td></td>
</tr>
<tr>
<td>Степени родства физ.лиц</td>
<td>Catalog_СтепениРодстваФизическихЛиц</td>
<td></td>
</tr>
<tr>
<td>Типы начислений</td>
<td>ChartOfCalculationTypes_Начисления</td>
<td>{
?$select: Ref_Key,
Description
$filter: DeletionMark eq false
}</td>
</tr>
<tr>
<td>Типы отпусков</td>
<td>Catalog_ВидыОтпусков</td>
<td></td>
</tr>
<tr>
<td>Учреждения образования</td>
<td>Catalog_УчебныеЗаведения</td>
<td></td>
</tr>
</tbody>
</table>
Если настроить константу "Папка для вставки импортируемых из 1С подразделений", то на каждом филиале подразделения будут загружаться к нужному корневому подразделению , иначе по умолчанию в корень папки Подразделения с кодом из константы "вершина_справочника_подразделений".
Для каждого типа справочника должна быть указана сущность 1С, например, для типа **Виды графиков работ** указывается сущность **Catalog_ГрафикиРаботыСотрудников**
Кроме сущности 1С для запроса соответствующего справочника можно указать в поле **"Параметр"** поля и фильтры для выборки из 1С,<br> например, для сущности «Catalog_ФизическиеЛица»:<br>
![alt text](media/image-1.png)
Если настроить константу **"Папка для вставки импортируемых из 1С подразделений"**, то на каждом филиале подразделения будут загружаться к нужному корневому подразделению , иначе по умолчанию в корень папки Подразделения с кодом из константы **ершина_справочника_подразделений"**.
Кроме сущности 1С для запроса соответствующего справочника можно указать в поле **"Параметр"** поля и фильтры для выборки из 1С, например, для сущности «Catalog_ФизическиеЛица»:
```json
"?$select=Ref_Key,Description,Фамилия,Имя,Отчество,ДатаРождения,КонтактнаяИнформация/Тип,КонтактнаяИнформация/Представление,КонтактнаяИнформация/Вид_Key".<br>
"value": [{
"Ref_Key": "6289c32e-b7f0-11e8-80e3-00505692bbd5",
"Code": "00-0000749",
"Description": "ФАМИЛИЯ ИМЯ ОТЧЕСТВО",
"ДатаРождения": "ДАТА РОЖДЕНИЯ",
"Пол": "ПОЛ",
"ИНН": "ИНН",
"СтраховойНомерПФР": " СНИЛС",
"МестоРождения": "0,город Ленинград,,,",
"ИмеетНаучныеТруды": false,
"ИмеетИзобретения": false,
"ФИО": " ФАМИЛИЯ ИМЯ ОТЧЕСТВО",
"УточнениеНаименования": "",
"ДатаРегистрации": "0001-01-01T00:00:00",
"НаименованиеСлужебное": " ФАМИЛИЯ ИМЯ ОТЧЕСТВО ",
"ЛьготаПриНачисленииПособий": "",
"ОтношениеКОсобойЗоне": "",
"ВидОсобойЗоны": "",
остоянноПроживалВКрыму18Марта2014Года": false,
"Фамилия": " ФАМИЛИЯ",
"Имя": "ИМЯ",
"КонтактнаяИнформация": [
{
"Ref_Key": "6289c32e-b7f0-11e8-80e3-00505692bbd5",
"LineNumber": "1",
"Тип": "Адрес",
"Вид_Key": "dfae44d5-1d84-11e8-80e0-00505692f865",
"Представление": "РОССИЯ, 143090, Московская обл, Краснознаменск г, Победы ул, дом № 32, квартира 3",
"Значение": "{\r\n\"value\": \"РОССИЯ, 143090, Московская обл, Краснознаменск г, Победы ул, дом № 32, квартира 3\",\r\n\"type\": \"Адрес\",\r\n\"Country\": \"РОССИЯ\",\r\n\"addressType\": \"Административно-территориальный\",\r\n\"CountryCode\": \"643\",\r\n\"ZIPcode\": \"143090\",\r\n\"area\": \"Московская\",\r\n\"areaType\": \"обл\",\r\n\"city\": \"Краснознаменск\",\r\n\"cityType\": \"г\",\r\n\"street\": \"Победы\",\r\n\"streetType\": \"ул\",\r\n\"houseType\": \"Дом\",\r\n\"houseNumber\": \"32\",\r\n\"apartments\": [\r\n{\r\n\"type\": \"Квартира\",\r\n\"number\": \"3\"\r\n}\r\n],\r\n\"oktmo\": \"46706000001\"\r\n}",
"ЗначенияПолей": "<КонтактнаяИнформация xmlns=\"http://www.v8.1c.ru/ssl/contactinfo\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Представление=\"РОССИЯ, 143090, Московская обл, Краснознаменск г, Победы ул, дом 32, квартира 3\"><Комментарий/><Состав xsi:type=\"Адрес\" Страна=\"РОССИЯ\"><Состав xsi:type=\"АдресРФ\"><СубъектРФ>Московская обл</СубъектРФ><Город>Краснознаменск г</Город><Улица>Победы ул</Улица><ОКТМО>46706000001</ОКТМО><ДопАдрЭл><Номер Тип=\"2010\" Значение=\"3\"/></ДопАдрЭл><ДопАдрЭл><Номер Тип=\"1010\" Значение=\"32\"/></ДопАдрЭл><ДопАдрЭл ТипАдрЭл=\"10100000\" Значение=\"143090\"/></Состав></Состав></КонтактнаяИнформация>",
"Страна": "РОССИЯ",
"Регион": "Московская обл",
"Город": "Краснознаменск г",
"АдресЭП": "",
"ДоменноеИмяСервера": "",
"НомерТелефона": "",
"НомерТелефонаБезКодов": "",
"ВидДляСписка_Key": "dfae44d5-1d84-11e8-80e0-00505692f865"
},
"?$select=Ref_Key,Description,Фамилия,Имя,Отчество,ДатаРождения,КонтактнаяИнформация/Тип,КонтактнаяИнформация/Представление,КонтактнаяИнформация/Вид_Key".
```
Для загрузки кадровых данных сотрудников должно быть заполнено поле **Сущность 1С** - InformationRegister_КадроваяИсторияСотрудников. Из этой сущности берем последние значения подразделения и занимаемой должности и загружаем в таблицу перемещений в Лексеме.<br>
**Справочник в Лексеме** - реквизиты для сопоставления со справочником физических лиц<br>
![Рисунок 2 Справочник физ лиц](../media/Справочник физ лиц.PNG)
Для загрузки кадровых данных сотрудников должно быть заполнено поле **Сущность 1С** - **InformationRegister_КадроваяИсторияСотрудников**. Из этой сущности берем последние значения подразделения и занимаемой должности и загружаем в таблицу перемещений в Лексеме.
**Загружать в пакете справочников** - галочка, означающая, что данная сущность будет загружена по задаче - ["Загрузка справочников"](../../../Функции планировщика задач/index.md) <br>
![Рисунок 3 НастройкаСпрПараметры](../media/НастройкаСпрПараметры.PNG)
**Справочник в Лексеме** - реквизиты для сопоставления со справочником физических лиц
**Способ загрузки**<br>
- По одному физ.лицу из списка сотрудников - означает, что сущность физические лица будет загружаться по одному физическому лицу только по тем сотрудникам, которые работают на момент загрузки <br>
- Всех за один запрос - означает, что сущность физические лица будет загружаться целиком<br>
![alt text](media/image-2.png)
**Загружать в пакете справочников** - галочка, означающая, что данная сущность будет загружена по задаче - ["Загрузка справочников"](../../../Функции планировщика задач/index.md)
**Способ загрузки:**
- По одному физ.лицу из списка сотрудников - означает, что сущность физические лица будет загружаться по одному физическому лицу только по тем сотрудникам, которые работают на момент загрузки.
- Всех за один запрос - означает, что сущность физические лица будет загружаться целиком
**Филиалы** - список филиалов, для которых действует данная строчка
![alt text](media/image-3.png)

View File

@ -175,7 +175,7 @@
limit 1
)
```
<!-- ### Примеры запросов
### Примеры запросов
#### Просроченные документы
@ -226,6 +226,8 @@
??? note "Запрос"
![alt text](media/image-24.png)
Основной запрос:
Итоговая выборка:
@ -297,7 +299,9 @@
В реестре отображаются документы, которые в данный момент находятся в HR службе в работе
??? note "Запрос"
??? note "Запрос"
![alt text](media/image-25.png)
Основной запрос:
@ -331,7 +335,9 @@
В реестре отображаются документы, которые были обработаны сегодня службой HR сегодня.
??? note "Запрос"
??? note "Запрос"
![alt text](media/image-26.png)
Основной запрос:
@ -366,6 +372,8 @@
??? note "Запрос"
![alt text](media/image-27.png)
Основной запрос:
```sql
@ -601,7 +609,9 @@
#### Договоры и доп. соглашения
??? note "Запрос"
??? note "Запрос"
![alt text](media/image-29.png)
Основной запрос:
@ -1235,4 +1245,103 @@
join comdoc."VFilials" f on p."COrg" = f."VCode"
where now()::date between coalesce(p."BeginDate",'19700101') and coalesce(p."EndDate",'20700101')
;
``` -->
```
#### Аналитическая форма по расписанию задач
??? note "Запрос"
![alt text](media/image-28.png)
Основной запрос:
```sql
INSERT INTO "tmp_calcWithBaseParams_for_documentStatusJournalProc"( "DocCode" )
select null;
```
Итоговая выборка:
```sql
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName", "DocName", "DocumentDate",
"AnyColumnA" , "AnyColumnB" , "AnyColumnC" , "AnyColumnD" , "AnyColumnE",
"AnyColumnF", "AnyColumnG", "AnyColumnH", "AnyColumnI", "AnyColumnJ")
select dd."Id", 'task'::text, 'taskForm'::text, ('Шедулер' || dd."Name")::text, 'Планировщик задач ' ||dd."Name" , dd."CDate"::date,
dd."Name" as "AnyColumnA" , dd."Description" as "AnyColumnB" ,
dd."Minutes" as "AnyColumnC" , dd."Hours" as "AnyColumnD" , dd."Days" as "AnyColumnE" , dd."Months" as "AnyColumnF" , dd."DaysOfTheWeek" as "AnyColumnG" ,dd. "Note" as "AnyColumnH" ,dd. "TypeTask" as "AnyColumnI"
, sum(comdoc."datediff"('minute',j."TimeStart" , j."TimeEnd"))/ count(j."Id") as "AnyColumnJ"
from (
select t."Id", t."Name", t."Description",
sh."Crontab",
max(case when s."VCode" = 1 then s."PartString" else '' end) as "Minutes",
max(case when s."VCode" = 2 then s."PartString" else '' end) as "Hours",
max(case when s."VCode" = 3 then s."PartString" else '' end) as "Days",
max(case when s."VCode" = 4 then s."PartString" else '' end) as "Months",
max(case when s."VCode" = 5 then s."PartString" else '' end) as "DaysOfTheWeek",
'по гринвичу' as "Note", 'Шедулер' as "TypeTask", t."CDate"
from lex."Task" t
join lex."Schedule" sh on t."Id" = sh."Parent"
LEFT JOIN LATERAL comdoc."LexStringToListNew"(replace(sh."Crontab",' ','Ё'),'Ё',0) s on true
join (select 1 as "VCode", 'мин.' as "Name"
union all
select 2 as "VCode", 'часы' as "Name"
union all
select 3 as "VCode", 'день' as "Name"
union all
select 4 as "VCode", 'месяц' as "Name"
union all
select 5 as "VCode", 'дни недели' as "Name"
) d on s."VCode" = d."VCode"
-- inner join lex."StepJournalEntryDetail" s on j."Id" = s."PCode"
where coalesce(t."Toggle",false) = true
group by t."Id", t."Name", t."Description", sh."Crontab", t."CDate"
)dd
left join lex."TaskJournalEntry" j on dd."Id" = j."TaskId" and j."TimeStart">= now()::date - '1 month'::interval and j."TimeEnd" is not null
--where j."TimeStart">= now()::date - '1 month'::interval and j."TimeEnd" is not null
group by dd."Id", dd."Name", dd."Description", dd."Crontab", "Minutes", "Hours", "Days", "Months", "DaysOfTheWeek", "Note", "TypeTask", dd."CDate"
union all
select t."VCode", 'NotificationLexemaDirectory'::text, 'NotificationLexemaDirectoryForm'::text , '', ( 'Задачи планировщика ' ||t."TaskName") ::text, t."CDate"::date,
t."TaskName" as "AnyColumnA" , null::text as "AnyColumnB" ,
t."Minutes" as "AnyColumnC" , t."Hours" as "AnyColumnD" , t."Days" as "AnyColumnE" , t."Months" as "AnyColumnF" , t."DaysOfTheWeek" as "AnyColumnG" ,'серверное время' as "AnyColumnH" ,'Задачи планировщика' as "AnyColumnI",
null::int as "AnyColumnJ"
from dfd."NotificationLexemaDirectory" t
where coalesce(t."Included",false) = true;
```
#### Логи отправки почты и СМС
Необходимо дополнительно настроить [задачу планировщика](../Функции%20планировщика%20задач/#переносогов_отправки_почты_и_смс_в_таблицу_sendlog)
??? note "Запрос"
![alt text](media/image-30.png)
Основной запрос:
```sql
INSERT INTO "tmp_calcWithBaseParams_for_documentStatusJournalProc"( "DocCode")
select 1 from dfd."OutgoingEmailLog" where 1 = 1
limit 1;
```
Итоговая выборка:
```sql
do $myQ$
declare _str text;
begin
_str := '
insert into "tmp_finresult"("AnyColumnA", "AnyColumnB", "AnyColumnC", "AnyColumnD", "AnyColumnE", "AnyColumnF", "AnyColumnG", "AnyColumnH", "AnyColumnI", "AnyColumnJ", "AnyColumnK", "AnyColumnL", "AnyColumnM")
select p."Level", p."type", p."To", p."Subject", p."Body", p."Cc", p."Bcc", p."phones", p."text", p."errorText",
to_char(p."CDateLog",''DD.MM.YYYY hh:mi'') as "CDateLog", p."CUserLog", p."CHostLog"
from comdoc."SendLog" p
where coalesce( p."CDateLog"::date,'_bdate'::date) between '_bdate'::date and '_edate'::date
order by p."CDateLog" desc'
_topcount ;
execute _str;
end;
$myQ$;
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -218,7 +218,7 @@
Уведомления | notificationlexema_read | notificationlexema_write | **docconstructor_write** - открывает доступ к переходу в конструктор документа по данному типу/подтипу документа, **routetemplate_write** - открывает доступ к переходу в настройки шаблона маршрута по данному документу, **documentsubtype_write** - открывает доступ к переходу в настройки подтипа документа
Удаленные документы КЭДО | | | **showremoveddocs** могут видеть удаленные (архивные) КЭДО документы.
[Универсальный документ](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82/) | universaldocument_read | universaldocument_write | **universaldocumentvisibleremove** открывает возможность к удалению универсального документа внутри формы, **docconstructor_write** - открывает доступ к переходу в конструктор документа по данному типу/подтипу документа, **routetemplate_write** - открывает доступ к переходу в настройки шаблона маршрута по данному документу, **documentsubtype_write** - открывает доступ к переходу в настройки подтипа документа
[Управление пользователями](../Управление пользователями/) | | super,adminconsole_write,adminconsole_read,lxm_department_manager | **adminconsole_short** - активны кнопки Загрузка пользователей, Данные пользователя (просмотр), Список сотрудников без логина и Замещаемые
[Управление пользователями](../Управление пользователями/) | | super,adminconsole_write,adminconsole_read,lxm_department_manager | **adminconsole_short** - активны кнопки Загрузка пользователей, Данные пользователя (просмотр), Список сотрудников без логина и Замещаемые, **bn_support_first** - позволяет пользователю необладающему роли на редактирование пользоваетелей редактировать номер телефона и электронную почту
[Управленческая структура и руководители](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F%20%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%B8%20%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D0%B8/) | | super,EmployeesManagers_write,EmployeesManagersTree_write | **EmployeesManagersTree_write** - в управленческой структуре предоставляет возможность создавать/редактировать подразделения и работников.
[Условия для проверки контрагентов](../Условия для проверки контрагентов/) | contractorcheckconditiontype_read | contractorcheckconditiontype_write |
[Физические лица](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Физические%20лица/) | rpdictionaries_read | super,administrator_reg_personnel,rpdictionaries_write | administrator_rp_person (открывает доступ на все вкладки документа "Физические лица" ("Сведения", "Адреса", "Документы", "Контакты", "Семья", "Образование", "Ученые степени", "Ученые звания", "Языки","Воинский учет", "Особая категория", "Счета", "Трудовые договоры".)

View File

@ -255,244 +255,256 @@ search:
### Документы, не пришедшие из 1с
```sql
with "no1c"
as
(select r."COrgName" , 'таб.№ ' || r."NumTab"|| ' ' || r."Workers" as "Workers" ,r."PostWorkers" ,
r."name1c" || ' По заявлению № ' || r."DocumentNumber" || ' от ' || to_char( "DocumentDate"::date, 'DD.MM.YYYY') as "name1c"
, l."link_txt" || '#/view/'|| r."TypeName" ||'Form' ||'/' || r."VCode" as "link"
from odata."getExchange1CGuidsRegistry"(null, null, (now()::date+ '-45 day'::interval)::date , (now()::date+ '-3 day'::interval)::Date , null) r
cross join (select "LocationProtocol" || '//' || "LocationHostName" as "link_txt" from comdoc."DocflowSettings") l
where
coalesce( "DeletionMark",'false') = 'false ' and
r."VCode" is not null and
r."DFS_VCode" is null and
r."guid" is not null and
r.name1c not ilike '%больнич%'
and
r.name1c not ilike '%НДФЛ%'
and
r.name1c not ilike '%вычет%'
and
r.name1c not ilike '%мат%пом%'
and
r. "DocumentDate" >= now()::date+ '-45 day'::interval
and
r. "DocumentDate" <= now()::date+ '-3 day'::interval
)
insert into "#forInsNotification" ("DocflowUser", "txt", "Link", "DocType", "DocName", "DocSubject", "IdWorker")
select distinct 'Personnel' as "DocflowUser" ,
--rlU."DocflowUser" ,
'Следующие документы не пришли на подписание из 1С : <br/>' ||
replace(
replace(replace(
'<table style = "border-collapse:collapse">
<tr>
<th style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Организация</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Работник</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Должность</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Документ</th>
</tr>'||
(SELECT DISTINCT string_agg(x."Body", '')
FROM(select '<tr><td style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black">'|| coalesce(p2."COrgName",'')||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||coalesce(p2."Workers",'')||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||coalesce(p2."PostWorkers",'')||'</td>
<td style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black">' ||
'<a href="' || coalesce(p2."link",'') || '">' ||coalesce(p2."name1c",'')|| '</a>'::text || '</td>
</tr>' as "Body" from "no1c" p2
order by p2."COrgName", p2."Workers" ) x)||'</table>'
,'&lt;','<'),'&gt;','>'),
'&amp;','&') as txt,
null::bigint as "link", 'Первичный документ', 'Первичный документ',
'Информационное сообщение о документах, не пришедших из 1С',
null::bigint as "IdWorker"
from "no1c" dd
/*join comdoc."ReadListGroup" rl on rl."Name" = 'Кадровики для рассылки документов, не пришедших из 1С'
and rl."DocTypes" ilike '%NotificationLexema%'
join comdoc."ReadListGroupUsers" rlU on rl."VCode" = rlU."PCode"*/
--group by rlU."DocflowUser"
??? Задача
```
```sql
with "no1c"
as
(select r."COrgName" , 'таб.№ ' || r."NumTab"|| ' ' || r."Workers" as "Workers" ,r."PostWorkers" ,
r."name1c" || ' По заявлению № ' || r."DocumentNumber" || ' от ' || to_char( "DocumentDate"::date, 'DD.MM.YYYY') as "name1c"
, l."link_txt" || '#/view/'|| r."TypeName" ||'Form' ||'/' || r."VCode" as "link"
from odata."getExchange1CGuidsRegistry"(null, null, (now()::date+ '-45 day'::interval)::date , (now()::date+ '-3 day'::interval)::Date , null) r
cross join (select "LocationProtocol" || '//' || "LocationHostName" as "link_txt" from comdoc."DocflowSettings") l
where
coalesce( "DeletionMark",'false') = 'false ' and
r."VCode" is not null and
r."DFS_VCode" is null and
r."guid" is not null and
r.name1c not ilike '%больнич%'
and
r.name1c not ilike '%НДФЛ%'
and
r.name1c not ilike '%вычет%'
and
r.name1c not ilike '%мат%пом%'
and
r. "DocumentDate" >= now()::date+ '-45 day'::interval
and
r. "DocumentDate" <= now()::date+ '-3 day'::interval
)
insert into "#forInsNotification" ("DocflowUser", "txt", "Link", "DocType", "DocName", "DocSubject", "IdWorker")
select distinct 'Personnel' as "DocflowUser" ,
--rlU."DocflowUser" ,
'Следующие документы не пришли на подписание из 1С : <br/>' ||
replace(
replace(replace(
'<table style = "border-collapse:collapse">
<tr>
<th style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Организация</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Работник</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Должность</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Документ</th>
</tr>'||
(SELECT DISTINCT string_agg(x."Body", '')
FROM(select '<tr><td style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black">'|| coalesce(p2."COrgName",'')||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||coalesce(p2."Workers",'')||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||coalesce(p2."PostWorkers",'')||'</td>
<td style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black">' ||
'<a href="' || coalesce(p2."link",'') || '">' ||coalesce(p2."name1c",'')|| '</a>'::text || '</td>
</tr>' as "Body" from "no1c" p2
order by p2."COrgName", p2."Workers" ) x)||'</table>'
,'&lt;','<'),'&gt;','>'),
'&amp;','&') as txt,
null::bigint as "link", 'Первичный документ', 'Первичный документ',
'Информационное сообщение о документах, не пришедших из 1С',
null::bigint as "IdWorker"
from "no1c" dd
/*join comdoc."ReadListGroup" rl on rl."Name" = 'Кадровики для рассылки документов, не пришедших из 1С'
and rl."DocTypes" ilike '%NotificationLexema%'
join comdoc."ReadListGroupUsers" rlU on rl."VCode" = rlU."PCode"*/
--group by rlU."DocflowUser"
```
### Задача по изменению фамилии в карточке пользователя + склонение в карточке физического лица
```sql
do $$
begin
IF NOT comdoc."isTableExists"('#fio', 'temp') THEN
CREATE TEMP TABLE "#fio"("Id" bigint, "OldFam" text, "OldName" text, "OldOtch" text,
"IdPerson" bigint, "NewFam" varchar(255), "NewName" varchar(255), "NewOtch" varchar(255), "UserName" varchar(255), "Code" varchar(2550)
) ON COMMIT DROP;
END IF;
insert into "#fio"
select m."Id",m."LastName", m."FirstName", m."MiddleName", per."VCode", per."Family", per."Name", per."Father", m."UserName" , c."Code"
from lex."UserMeta" m
join rp."RP_PersonContact" c on c."IdTypeContact" = 6 and m."UserName" = c."Code"
join rp."RP_Person" per on per."VCode" = c."Pcode"
where (lower(coalesce(m."LastName",''))<> lower(coalesce(per."Family",'')) or lower(coalesce(m."FirstName",''))<> lower(coalesce(per."Name",''))
or lower(coalesce(m."MiddleName",''))<>lower(coalesce(per."Father",'')))
and (select count(a."Pc") from (select distinct c."Pcode" as "Pc" from rp."RP_PersonContact" c
join rp."RP_Person" per on per."VCode" = c."Pcode"
where c."Code" =m."UserName")a) =1;
update lex."UserMeta" m set "LastName" = q."NewFam", "FirstName" = q."NewName", "MiddleName" = q."NewOtch"
from "#fio" q
where q."Id" = m."Id";
??? Задача
update rp."RP_Person" per set "Note" = case when per."Note" is not null then per."Note" ||'
' else '' end ||to_char(now(),'DD.MM.YYYY')
|| (select ' изменено ФИО с '||coalesce(f."OldFam",'')||' '||coalesce(f."OldName",'')||' '||coalesce(f."OldOtch",'')||' на '
||coalesce(f."NewFam",'')||' '||coalesce(f."NewName",'')||' '||coalesce(f."NewOtch",'')from "#fio" f where f."IdPerson" = per."VCode" limit 1),
"FNFAccusative" = comdoc."Lexsklon"(per."Family", per."Name", per."Father", case when per."Sex" = 1 then 'Ж' else 'M' end, 1),
"FNFDative" = comdoc."Lexsklon"(per."Family", per."Name", per."Father", case when per."Sex" = 1 then 'Ж' else 'M' end, 0),
"FNFGenitive" = comdoc."Lexsklon"(per."Family", per."Name", per."Father", case when per."Sex" = 1 then 'Ж' else 'M' end, 2)
from "#fio" q
where per."VCode" = q."IdPerson";
```sql
do $$
begin
IF NOT comdoc."isTableExists"('#fio', 'temp') THEN
CREATE TEMP TABLE "#fio"("Id" bigint, "OldFam" text, "OldName" text, "OldOtch" text,
"IdPerson" bigint, "NewFam" varchar(255), "NewName" varchar(255), "NewOtch" varchar(255), "UserName" varchar(255), "Code" varchar(2550)
) ON COMMIT DROP;
END IF;
insert into "#fio"
select m."Id",m."LastName", m."FirstName", m."MiddleName", per."VCode", per."Family", per."Name", per."Father", m."UserName" , c."Code"
from lex."UserMeta" m
join rp."RP_PersonContact" c on c."IdTypeContact" = 6 and m."UserName" = c."Code"
join rp."RP_Person" per on per."VCode" = c."Pcode"
where (lower(coalesce(m."LastName",''))<> lower(coalesce(per."Family",'')) or lower(coalesce(m."FirstName",''))<> lower(coalesce(per."Name",''))
or lower(coalesce(m."MiddleName",''))<>lower(coalesce(per."Father",'')))
and (select count(a."Pc") from (select distinct c."Pcode" as "Pc" from rp."RP_PersonContact" c
join rp."RP_Person" per on per."VCode" = c."Pcode"
where c."Code" =m."UserName")a) =1;
update lex."UserMeta" m set "LastName" = q."NewFam", "FirstName" = q."NewName", "MiddleName" = q."NewOtch"
from "#fio" q
where q."Id" = m."Id";
update rp."RP_Person" per set "Note" = case when per."Note" is not null then per."Note" ||'
' else '' end ||to_char(now(),'DD.MM.YYYY')
|| (select ' изменено ФИО с '||coalesce(f."OldFam",'')||' '||coalesce(f."OldName",'')||' '||coalesce(f."OldOtch",'')||' на '
||coalesce(f."NewFam",'')||' '||coalesce(f."NewName",'')||' '||coalesce(f."NewOtch",'')from "#fio" f where f."IdPerson" = per."VCode" limit 1),
"FNFAccusative" = comdoc."Lexsklon"(per."Family", per."Name", per."Father", case when per."Sex" = 1 then 'Ж' else 'M' end, 1),
"FNFDative" = comdoc."Lexsklon"(per."Family", per."Name", per."Father", case when per."Sex" = 1 then 'Ж' else 'M' end, 0),
"FNFGenitive" = comdoc."Lexsklon"(per."Family", per."Name", per."Father", case when per."Sex" = 1 then 'Ж' else 'M' end, 2)
from "#fio" q
where per."VCode" = q."IdPerson";
end;
$$;
```
end;
$$;
```
### Оповещение о необходимости замены паспорта
```sql
insert into "#forInsNotification" ("DocflowUser", "txt", "Link", "DocType", "DocName", "DocSubject", "IdWorker")
select distinct pc."Code" , '<font size="3"> <b>Настоящим сообщаем, что приближается срок замены паспорта </b> <br/>' || '</font>' ,
null::bigint as "link", '', '',
'Инф. сообщение о замене паспорта',
w."VCode" as "IdWorker"
from rp."RP_Person" p
join rp."RP_Worker" w on p."VCode" = w."IdPerson"
left join rp."RP_WorkerMove" wm on w."VCode" = wm."IdWorker" and now() between coalesce(wm."DateBeg", '20010101') and coalesce(wm."DateEnd", '20700101')
left join comdoc."Department" dep on wm."IdDepartment" = dep."VCode"
left join rp."RP_Post" post on wm."IdPost" = post."VCode"
left join rp."RP_PersonContact" pc on p."VCode" = pc."Pcode" and pc."IdTypeContact" = 6
LEFT JOIN LATERAL comdoc."getAccountingConstantValues"(w."COrg", 'СЭД_Уведомления_Сообщения_оамене_паспорта', NULL) cv on true
where (
now() between p."DateBirth" - (coalesce(cv."valueConst",30) || ' day')::interval + (date_part('year',age(p."DateBirth"))+1 || 'year')::interval and
p."DateBirth" + (date_part('year',age(p."DateBirth"))+1 || 'year')::interval and
date_part('year',age(p."DateBirth" - (coalesce(cv."valueConst",30) || ' day')::interval ))::int in (20,45)
) or w."VCode" = 53
```
??? Задача
```sql
insert into "#forInsNotification" ("DocflowUser", "txt", "Link", "DocType", "DocName", "DocSubject", "IdWorker")
select distinct pc."Code" , '<font size="3"> <b>Настоящим сообщаем, что приближается срок замены паспорта </b> <br/>' || '</font>' ,
null::bigint as "link", '', '',
'Инф. сообщение о замене паспорта',
w."VCode" as "IdWorker"
from rp."RP_Person" p
join rp."RP_Worker" w on p."VCode" = w."IdPerson"
left join rp."RP_WorkerMove" wm on w."VCode" = wm."IdWorker" and now() between coalesce(wm."DateBeg", '20010101') and coalesce(wm."DateEnd", '20700101')
left join comdoc."Department" dep on wm."IdDepartment" = dep."VCode"
left join rp."RP_Post" post on wm."IdPost" = post."VCode"
left join rp."RP_PersonContact" pc on p."VCode" = pc."Pcode" and pc."IdTypeContact" = 6
LEFT JOIN LATERAL comdoc."getAccountingConstantValues"(w."COrg", 'СЭД_Уведомления_Сообщения_оамене_паспорта', NULL) cv on true
where (
now() between p."DateBirth" - (coalesce(cv."valueConst",30) || ' day')::interval + (date_part('year',age(p."DateBirth"))+1 || 'year')::interval and
p."DateBirth" + (date_part('year',age(p."DateBirth"))+1 || 'year')::interval and
date_part('year',age(p."DateBirth" - (coalesce(cv."valueConst",30) || ' day')::interval ))::int in (20,45)
) or w."VCode" = 53
```
### Оповещение о списке работников, которые не создали заявление об отпуске из уведомления
```sql
with list as (
select ud."VCode", ud."IdWorker", atr."Value" as "Vacation", to_char(atrD."DateValue",'DD.MM.YYYY') as "DateBeg" , f."Name" as "COrgName"
from dfd."UniversalDocument" AS ud
join dfd."DocumentConstructor" dc on ud."DocumentCategory" = dc."VCode"
join dfd."DocumentSubtype" ds on dc."DocumentSubtype" = ds."VCode"
join dfd."DocumentAdditionalAttribute" atr on ud."VCode" = atr."PCode"
join dfd."DocumentCategoryAttributeType" atrtype on atr."CategoryAttributeType" = atrtype."VCode" and ud."DocumentCategory" = atrtype."PCode" and
atrtype."AttributeType" = 'string' and atrtype."ColumnName" = '#typeVacation#'
join dfd."DocumentAdditionalAttribute" atrD on ud."VCode" = atrD."PCode"
join dfd."DocumentCategoryAttributeType" atrtypeD on atrD."CategoryAttributeType" = atrtypeD."VCode" and ud."DocumentCategory" = atrtypeD."PCode" and
atrtypeD."AttributeType" = 'Date' and atrtypeD."ColumnName" = '#bdate#'
join comdoc."VFilials" f on ud."COrg" = f."VCode"
where ud."TypeName" = 'NotificationLexema' and
ds."InternalName" = 'NotificationVacation' and
not exists (select 1
from dfd."UniversalDocument" es
join comdoc."DocflowLink" dle on ud."VCode" = dle."DocCode2" and
((dle."DocType2" = ud."TypeName" and ud."VCode" = dle."DocCode2") or
(dle."DocType1" = ud."TypeName" and ud."VCode" = dle."DocCode1")
)
where es."TypeName" = 'EmployeeStatement' ) and
atrD."DateValue" > now()::date )
??? Задача
insert into "#forInsNotification" ( "txt", "txtSMS", "txtTelegram")
select null as "txt", null as "txtSMS", null as "txtTelegram"
from (select ('<table><tr><th align="left">Организация</th><th align="left">Сотрудник</th><th align="left">Отпуск</th></tr>' ||
(SELECT DISTINCT string_agg(x."link", '')
FROM ( SELECT '<tr><td>' || coalesce(l."COrgName",'') || '</td><td>' || coalesce(r."NameFull",'') || '</td>' ||
'<td>' || coalesce(l."Vacation", '') || ' ' || l."DateBeg" || '</td>'
||'</tr>' as "link"
FROM list l
join rp."RP_Worker" r on l."IdWorker" = r."VCode") AS x) || '</table>'
) ::text as "data") d
```
```sql
with list as (
select ud."VCode", ud."IdWorker", atr."Value" as "Vacation", to_char(atrD."DateValue",'DD.MM.YYYY') as "DateBeg" , f."Name" as "COrgName"
from dfd."UniversalDocument" AS ud
join dfd."DocumentConstructor" dc on ud."DocumentCategory" = dc."VCode"
join dfd."DocumentSubtype" ds on dc."DocumentSubtype" = ds."VCode"
join dfd."DocumentAdditionalAttribute" atr on ud."VCode" = atr."PCode"
join dfd."DocumentCategoryAttributeType" atrtype on atr."CategoryAttributeType" = atrtype."VCode" and ud."DocumentCategory" = atrtype."PCode" and
atrtype."AttributeType" = 'string' and atrtype."ColumnName" = '#typeVacation#'
join dfd."DocumentAdditionalAttribute" atrD on ud."VCode" = atrD."PCode"
join dfd."DocumentCategoryAttributeType" atrtypeD on atrD."CategoryAttributeType" = atrtypeD."VCode" and ud."DocumentCategory" = atrtypeD."PCode" and
atrtypeD."AttributeType" = 'Date' and atrtypeD."ColumnName" = '#bdate#'
join comdoc."VFilials" f on ud."COrg" = f."VCode"
where ud."TypeName" = 'NotificationLexema' and
ds."InternalName" = 'NotificationVacation' and
not exists (select 1
from dfd."UniversalDocument" es
join comdoc."DocflowLink" dle on ud."VCode" = dle."DocCode2" and
((dle."DocType2" = ud."TypeName" and ud."VCode" = dle."DocCode2") or
(dle."DocType1" = ud."TypeName" and ud."VCode" = dle."DocCode1")
)
where es."TypeName" = 'EmployeeStatement' ) and
atrD."DateValue" > now()::date )
таблица.столбец | описание | # для шаблона
----------------|----------|--------------
d."data" | Список | #query_list#
insert into "#forInsNotification" ( "txt", "txtSMS", "txtTelegram")
select null as "txt", null as "txtSMS", null as "txtTelegram"
from (select ('<table><tr><th align="left">Организация</th><th align="left">Сотрудник</th><th align="left">Отпуск</th></tr>' ||
(SELECT DISTINCT string_agg(x."link", '')
FROM ( SELECT '<tr><td>' || coalesce(l."COrgName",'') || '</td><td>' || coalesce(r."NameFull",'') || '</td>' ||
'<td>' || coalesce(l."Vacation", '') || ' ' || l."DateBeg" || '</td>'
||'</tr>' as "link"
FROM list l
join rp."RP_Worker" r on l."IdWorker" = r."VCode") AS x) || '</table>'
) ::text as "data") d
```
таблица.столбец | описание | # для шаблона
----------------|----------|--------------
d."data" | Список | #query_list#
### Отсутствие планового графика отпусков по подразделению
```sql
with "chiefStruct" as
(select * from vac."SendingLateApplicationNotice"())
insert into "#forInsNotification" ("DocflowUser","CopyTo", "txt")
select /*main."ChiefLogin"*/ 'Loginovasa@lexema.ru', (select DISTINCT string_agg(coalesce(ch."ChiefLogin",''),', ') from "chiefStruct" ch
where ch."IdWorker" = main."Chief" and main."ChiefLogin"<>coalesce(ch."ChiefLogin",'')),
'Добрый день, ' || '<b>'||RTRIM(coalesce(du."FirstName",'') || ' ' || coalesce(du."MiddleName",''))||'</b>' ||
'. <br><br>' ||
'<br> По следующим сотрудникам не сформированы заявки на отпуск на '||main."planYear"::text||' год:'||
'<br><br>' ||
replace(
replace(replace(
'<table style = "border-collapse:collapse">
<tr>
<th style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Организация</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Подразделение</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Работник</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Должность</th>
</tr>'||
(SELECT DISTINCT string_agg(x."link", '')
FROM(select '<tr><td style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black">'||fil||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black">'||dep||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||fio||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||post||'</td>
</tr>' as "link" from (select distinct f."Name" as fil, coalesce(dep."Name",'') as "dep", coalesce(w."NameShort",w."NameFull",'') as fio , coalesce(rp."Name",'') as post
from "chiefStruct" p2
left join rp."RP_Worker" w on w."VCode" = p2."IdWorker"
left join comdoc."Department" dep on dep."VCode" = p2."IdDepartment"
left join rp."RP_Post" rp on rp."VCode" = p2."IdPost"
left join comdoc."VFilials" f on w."COrg" = f."VCode"
where coalesce(p2."ChiefLogin",'') = coalesce(main."ChiefLogin",'')) qw
order by fil, "dep", fio ) as x)||'</table>'
,'&lt;','<'),'&gt;','>'),
'&amp;','&') as "Body"
from "chiefStruct" main
inner join comdoc."DocflowUser" du on main."ChiefLogin" = du."UserName"
group by main."Chief", coalesce(du."FirstName",''), coalesce(du."MiddleName",''), main."ChiefLogin", main."planYear";
```
### Смена организации по умолчанию при смене основного места работы
??? Задача
```sql
with "chiefStruct" as
(select * from vac."SendingLateApplicationNotice"())
insert into "#forInsNotification" ("DocflowUser","CopyTo", "txt")
select /*main."ChiefLogin"*/ 'Loginovasa@lexema.ru', (select DISTINCT string_agg(coalesce(ch."ChiefLogin",''),', ') from "chiefStruct" ch
where ch."IdWorker" = main."Chief" and main."ChiefLogin"<>coalesce(ch."ChiefLogin",'')),
'Добрый день, ' || '<b>'||RTRIM(coalesce(du."FirstName",'') || ' ' || coalesce(du."MiddleName",''))||'</b>' ||
'. <br><br>' ||
'<br> По следующим сотрудникам не сформированы заявки на отпуск на '||main."planYear"::text||' год:'||
'<br><br>' ||
replace(
replace(replace(
'<table style = "border-collapse:collapse">
<tr>
<th style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Организация</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Подразделение</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Работник</th>
<th style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black; border-top: 1px solid black">Должность</th>
</tr>'||
(SELECT DISTINCT string_agg(x."link", '')
FROM(select '<tr><td style="text-align:center; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black">'||fil||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black">'||dep||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||fio||'</td>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||post||'</td>
</tr>' as "link" from (select distinct f."Name" as fil, coalesce(dep."Name",'') as "dep", coalesce(w."NameShort",w."NameFull",'') as fio , coalesce(rp."Name",'') as post
from "chiefStruct" p2
left join rp."RP_Worker" w on w."VCode" = p2."IdWorker"
left join comdoc."Department" dep on dep."VCode" = p2."IdDepartment"
left join rp."RP_Post" rp on rp."VCode" = p2."IdPost"
left join comdoc."VFilials" f on w."COrg" = f."VCode"
where coalesce(p2."ChiefLogin",'') = coalesce(main."ChiefLogin",'')) qw
order by fil, "dep", fio ) as x)||'</table>'
,'&lt;','<'),'&gt;','>'),
'&amp;','&') as "Body"
from "chiefStruct" main
inner join comdoc."DocflowUser" du on main."ChiefLogin" = du."UserName"
group by main."Chief", coalesce(du."FirstName",''), coalesce(du."MiddleName",''), main."ChiefLogin", main."planYear";
```
```sql
call dfd."updateUsersDefaultOrganization" (null, 'Admin;EVIvaschenko')
/* 1 - коды исключен физ лиц через ;
2 - логины исключения через ; */
```
### Создание отзывов доверенностей МЧД по уволенным
```sql
with res as (select * ,
'<tr>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||
'<a href="' ||
(select "LocationProtocol" || '//' || "LocationHostName" || coalesce(':'||"LocationPort",'') from comdoc."DocflowSettings" order by "CDate" desc limit 1)
|| '/#/view/' || se."DocForm" || '/' || r."VCode"::text
|| '">' || case when r."TypeName" = 'EmpowermentRevocation' then 'Отзыв доверенности' else 'Доверенность' end || ' № ' ||coalesce(r."DocumentNumber",'') || ' от ' || to_char(r."DocumentDate",'DD.MM.YYYY')
|| '</a>'::text ||'</td> </tr>' as "ref_link"
from dfd."createEmpowermentRevocationUvol" () r
join comdoc."DocflowDocumentSettings" se on r."TypeName" = se."DocType"
)
??? Задача
```sql
with res as (select * ,
'<tr>
<td style="text-align:center; border-right: 1px solid black; border-bottom: 1px solid black;">'||
'<a href="' ||
(select "LocationProtocol" || '//' || "LocationHostName" || coalesce(':'||"LocationPort",'') from comdoc."DocflowSettings" order by "CDate" desc limit 1)
|| '/#/view/' || se."DocForm" || '/' || r."VCode"::text
|| '">' || case when r."TypeName" = 'EmpowermentRevocation' then 'Отзыв доверенности' else 'Доверенность' end || ' № ' ||coalesce(r."DocumentNumber",'') || ' от ' || to_char(r."DocumentDate",'DD.MM.YYYY')
|| '</a>'::text ||'</td> </tr>' as "ref_link"
from dfd."createEmpowermentRevocationUvol" () r
join comdoc."DocflowDocumentSettings" se on r."TypeName" = se."DocType"
)
insert into "#forInsNotification" ("DocflowUser", "txt")
select d."DocflowUser", null as "txt"
from (select distinct r."DocflowUser", (select string_agg(coalesce(r1."ref_link",''),'')
from res r1 where r."DocflowUser" = r1."DocflowUser") as list
from res r
) d
```
insert into "#forInsNotification" ("DocflowUser", "txt")
select d."DocflowUser", null as "txt"
from (select distinct r."DocflowUser", (select string_agg(coalesce(r1."ref_link",''),'')
from res r1 where r."DocflowUser" = r1."DocflowUser") as list
from res r
) d
```
таблица.столбец | описание | # для шаблона
----------------|----------|--------------
d.list | Список документов | #query_list#
таблица.столбец | описание | # для шаблона
----------------|----------|--------------
d.list | Список документов | #query_list#
### Перенос логов отправки почты и СМС в таблицу SendLog
??? Задача
```sql
call comdoc."PostToSendLog"();
```