|
запрос по предыдущему окладу и будущему окладу. в ЗУП 3.1 | ☑ | ||
---|---|---|---|---|
0
makkut
22.03.17
✎
09:53
|
Добрый день! конф ЗУП 3.1. Возникла потребность при кадровом переводе сотрудников отображать изменение оклада в печатной форме, именно старый оклад и текущий оклад.
Помогите пожалуйста с запросом. |
|||
1
Amra
22.03.17
✎
10:00
|
Ну показывай как пробовал
|
|||
2
makkut
22.03.17
✎
10:06
|
есть пример с 2.5
Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка); Запрос.УстановитьПараметр("НомСтроки", стро.НомерСтроки); Запрос.УстановитьПараметр("ДатаНачала", стро.ДатаНачала); Запрос.УстановитьПараметр("спОкладов",спОкладов); Запрос.Текст = "ВЫБРАТЬ | КадровоеПеремещениеОрганизацийРаботникиОрганизации.ФизЛицо, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.ПодразделениеОрганизации КАК НовоеПодразделение, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.Должность КАК НоваяДолжность, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.ОснованиеПеремещения КАК Основание, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.ДатаНачала КАК ДатаВступления, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.ДатаОкончания, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.Ссылка.Номер КАК НомерДокумента, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.Ссылка.Дата КАК ДатаДокумента, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.Сотрудник.НомерДоговора КАК НомерДоговора, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.Сотрудник.ДатаДоговора КАК ДатаДоговора, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.Ссылка.Организация, | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК СтароеПодразделение, | РаботникиОрганизацийСрезПоследних.Должность КАК СтараяДолжность, | ЕСТЬNULL(КадровоеПеремещениеОрганизацийОсновныеНачисления.Показатель1, ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1) КАК НовыйОкл, | ЕСТЬNULL(КадровоеПеремещениеОрганизацийОсновныеНачисления.Валюта1, ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Валюта1) КАК НоваяВал, | ЕСТЬNULL(ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1, КадровоеПеремещениеОрганизацийОсновныеНачисления.Показатель1) КАК СтарыйОкл, | ЕСТЬNULL(ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Валюта1, КадровоеПеремещениеОрганизацийОсновныеНачисления.Валюта1) КАК СтараяВал, | КадровоеПеремещениеОрганизацийРаботникиОрганизации.Сотрудник |ИЗ | Документ.КадровоеПеремещениеОрганизаций.РаботникиОрганизации КАК КадровоеПеремещениеОрганизацийРаботникиОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаНачала, Регистратор <> &ТекущийДокумент) КАК РаботникиОрганизацийСрезПоследних | ПО КадровоеПеремещениеОрганизацийРаботникиОрганизации.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ Документ.КадровоеПеремещениеОрганизаций.ОсновныеНачисления КАК КадровоеПеремещениеОрганизацийОсновныеНачисления | ПО (КадровоеПеремещениеОрганизацийОсновныеНачисления.ВидРасчета В (&спОкладов)) | И КадровоеПеремещениеОрганизацийРаботникиОрганизации.Сотрудник = КадровоеПеремещениеОрганизацийОсновныеНачисления.Сотрудник | И (КадровоеПеремещениеОрганизацийОсновныеНачисления.Ссылка = &ТекущийДокумент) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&ДатаНачала, Регистратор <> &ТекущийДокумент) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних | ПО (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета В (&спОкладов)) | И КадровоеПеремещениеОрганизацийРаботникиОрганизации.Сотрудник = ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник |ГДЕ | КадровоеПеремещениеОрганизацийРаботникиОрганизации.Ссылка = &ТекущийДокумент | И КадровоеПеремещениеОрганизацийРаботникиОрганизации.НомерСтроки = &НомСтроки"; но в З.1 изменены некоторые объекты, а некоторых и вовсе нет пока начал так.... ВЫБРАТЬ ПлановыйФОТ.Сотрудник, ПлановыйФОТ.Используется, ПлановыйФОТ.ВкладВФОТ, КадроваяИсторияСотрудниковСрезПервых.Сотрудник КАК Сотрудник1 ИЗ РегистрСведений.ПлановыйФОТ КАК ПлановыйФОТ ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПервых КАК КадроваяИсторияСотрудниковСрезПервых ПО ПлановыйФОТ.Сотрудник = КадроваяИсторияСотрудниковСрезПервых.Сотрудник ПОЛНОЕ СОЕДИНЕНИЕ Документ.КадровыйПеревод.Начисления КАК КадровыйПереводНачисления ПО ПлановыйФОТ.Начисление = КадровыйПереводНачисления.Начисление |
|||
3
Amra
22.03.17
✎
10:13
|
(2) А, ну так и пиши - ЗУП 3.1 вижу первый раз в жизни. Начал правильно, разбирайся
|
|||
4
makkut
22.03.17
✎
10:19
|
(3) так то спасибо конечно за совет это и так понятно. Но я хотел ускорить процесс), может кто сталкивался...
|
|||
5
Морозов Александр
22.03.17
✎
10:22
|
Все очень просто... есть очень хорошая вещь - "Консоль запросов". Скачайте, не пожалеете
|
|||
6
Alexandr_U1982
22.03.17
✎
11:18
|
(2) В ЗУП 3.1 "размер оклада" это значение показателя "Оклад".
Его нужно получать из регистра сведений "ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников". При этом не стоит забывать, что в ЗУП 3.1 не рекомендуется писать прямые запросы к регистрам. Вместо этого нужно обращаться к процедурам/функциям общих модулей, которые сформируют временные таблицы, и из этих временных таблиц нужно извлекать данные. В противном случае после одного из следующих обновлений доработка может перестать работать. |
|||
7
xxTANATORxx
22.03.17
✎
11:22
|
(6)>>не рекомендуется писать прямые запросы к регистрам
интересный подход, и что мы понимаем под "прямыми запросами"? |
|||
8
Alexandr_U1982
22.03.17
✎
11:28
|
(7) Вот это:
ВЫБРАТЬ ПлановыйФОТ.Сотрудник, ПлановыйФОТ.Используется, ПлановыйФОТ.ВкладВФОТ, КадроваяИсторияСотрудниковСрезПервых.Сотрудник КАК Сотрудник1 ИЗ РегистрСведений.ПлановыйФОТ КАК ПлановыйФОТ ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПервых КАК КадроваяИсторияСотрудниковСрезПервых ПО ПлановыйФОТ.Сотрудник = КадроваяИсторияСотрудниковСрезПервых.Сотрудник ПОЛНОЕ СОЕДИНЕНИЕ Документ.КадровыйПеревод.Начисления КАК КадровыйПереводНачисления ПО ПлановыйФОТ.Начисление = КадровыйПереводНачисления.Начисление |
|||
9
Alexandr_U1982
22.03.17
✎
11:32
|
(2)(7)
Пример получения среза последних из регистра "ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников" Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("ДатаАктуальности", ДатаАктальности); Запрос.УстановитьПараметр("Сотрудник", Сотрудник) Запрос.Текст = "ВЫБРАТЬ | &ДатаАктуальности КАК Период, | Сотрудники.Ссылка КАК Сотрудник |ПОМЕСТИТЬ ВТСотрудники |ИЗ | Справочник.Сотрудники КАК Сотрудники"; Запрос.Выполнить(); ЗарплатаКадрыПериодическиеРегистры.СоздатьВТИмяРегистраСрезПоследних( "ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников", Запрос.МенеджерВременныхТаблиц, Истина, ЗарплатаКадрыПериодическиеРегистры.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТСотрудники"), ЗарплатаКадрыПериодическиеРегистры.ПараметрыПостроенияДляСоздатьВТИмяРегистраСрез(), "ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников"); Запрос.Текст = "ВЫБРАТЬ | ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Сотрудник, | ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Показатель, | ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Период, | ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Значение |ИЗ | ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников КАК ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников"; ТаблицаСПоказателями = Запрос.Выполнить().Выгрузить(); |
|||
10
Alexandr_U1982
22.03.17
✎
11:33
|
+(9)Для каждой процедуры/функции из общего модуля "ЗарплатаКадрыПериодическиеРегистры" в самом общем модуле есть комментарий, что она делает.
|
|||
11
pavlika
22.03.17
✎
11:35
|
Для общего развития - это где так рекомендовано?
|
|||
12
Alexandr_U1982
22.03.17
✎
11:35
|
+(6) Дополнение - не рекомендуется писать прямые запросы к типовым регистрам, т.к. разработчики ЗУПа не гарантируют, что в новых релизах структура регистра и его наименование будут оставаться неизменными.
|
|||
13
Alexandr_U1982
22.03.17
✎
11:38
|
(11)Рекомендация взята из конференции 1С. Возможно, на курсах по ЗУПу тоже так учат писать.
|
|||
14
Alexandr_U1982
22.03.17
✎
11:39
|
+(13) Ссылки на конференцию с некоторых пор здесь не приветствуются.
|
|||
15
pavlika
22.03.17
✎
11:41
|
(13) Спс
|
|||
16
Alexandr_U1982
22.03.17
✎
11:47
|
Для большей иллюстрации можно посмотреть на развитие регистра сведений "КадроваяИсторияСотрудников".
В релизах ЗУП 3.0.ХХ.ХХХ этот регистр имел ресурсы "ОрганизацияПоОкончании, ПодразделениеПоОкончании, ДолжностьПоШтатномуРасписаниюПоОкончании и т.д." В релизах ЗУП 3.1.2.ХХХ эти ресурсы переименовали в "УдалитьОрганизацияПоОкончании, УдалитьПодразделениеПоОкончании, УдалитьДолжностьПоШтатномуРасписаниюПоОкончании и т.д.", и добавили регистр со вторичными данными "КадроваяИсторияСотрудниковИнтервальный". Соответственно, если есть какая-либо доработка с прямыми запросами к регистру "КадроваяИсторияСотрудников", в которой есть обращения к ресурсам "ОрганизацияПоОкончании, ПодразделениеПоОкончании, ДолжностьПоШтатномуРасписаниюПоОкончании и т.д.", то эта доработка перестанет работать на релизах ЗУП 3.1.2.ХХХ и ее потребуется переделывать. Если в доработке вместо прямых запросов использовать механизм формирования временных таблиц через программный интерфейс общих модулей, то все останется работать по-прежнему. |
|||
17
makkut
22.03.17
✎
12:14
|
как тут вытащить поле предыдущий оклад ?
ВЫБРАТЬ ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Сотрудник, ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Период, ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Значение, ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Показатель ИЗ РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников ЛЕВОЕ СОЕДИНЕНИЕ Документ.КадровыйПереводСписком КАК КадровыйПереводСписком ПО ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Регистратор = КадровыйПереводСписком.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Документ.КадровыйПеревод КАК КадровыйПеревод ПО ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Регистратор = КадровыйПеревод.Ссылка ГДЕ ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Сотрудник = &сотрудник |
|||
18
makkut
22.03.17
✎
12:15
|
(17) выходит список изменяемых окладов. Мне нужна не последняя запись а предпоследняя
|
|||
19
SleepyHead
гуру
22.03.17
✎
12:17
|
Используй лучше вот этот метод общего модуля (заодно в описании почитай, что еще доступно из полей, может пригодится)
КадровыйУчет.КадровыеДанныеСотрудников(<ТолькоРазрешенные>, <Сотрудник>, <ИменаПолей>, <дата актуальности>); У тебя в параметре "ИменаПолей" будет "Оклад", если ничего не путаю. А в параметре "Сотрудник" или массив сотрудников, или ссылка на конкретного сотрудника. |
|||
20
Alexandr_U1982
22.03.17
✎
12:43
|
(17)Срез последних на дату перевода минус одна секунда.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |