|   |   | 
| 
 | запрос по предыдущему окладу и будущему окладу. в ЗУП 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)Срез последних на дату перевода минус одна секунда.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |