Помогите с решением задачи на 1С ЗУП. Пожалуйста.
1С ЗУП.
Есть два запроса.
1.Сделать выборку, содержащую следующие данные:
Сотрудник+
Подразделение+
Должность+
Количество занимаемых ставок+
Вид занятости+
Дата приёма на работу+
Состояние (работа, болезнь, отпуск и т.д.)+
Предусмотреть возможность делать выборку на определенную дату.
2.По регистрам расчёта начисления и удержания сделать выборку:
Сотрудник
Месяц
Сумма начислено
Сумма удержано
Итоговая сумма
Итоговая сумма за прошлый месяц
Сумма увеличилась (Да/нет, относительно предыдущего периода)
Добавить итоги по сотруднику.
На уровне сотрудника рассчитывать только итоговую сумму.
Месяцы выводить по убыванию.
С первым запросом у меня есть информация как и откуда доставать данные. Я использовал два РС СостоянияСотрудников и РС КадроваяИсторияСотрудников. Получил все необходимые данные, но я плохо понимаю, как работают периодические регистры сведений и то, как их правильно применять в конструкторе запросов-поэтому не могу реализовать функцию выборки на конкретную дату. Могли бы вы мне объяснить эту тему, пожалуйста!
Из-за того, что не могу справиться с первым ко второму даже приступать страшно..
Демобазу прилагаю.
Есть два запроса.
1.Сделать выборку, содержащую следующие данные:
Сотрудник+
Подразделение+
Должность+
Количество занимаемых ставок+
Вид занятости+
Дата приёма на работу+
Состояние (работа, болезнь, отпуск и т.д.)+
Предусмотреть возможность делать выборку на определенную дату.
2.По регистрам расчёта начисления и удержания сделать выборку:
Сотрудник
Месяц
Сумма начислено
Сумма удержано
Итоговая сумма
Итоговая сумма за прошлый месяц
Сумма увеличилась (Да/нет, относительно предыдущего периода)
Добавить итоги по сотруднику.
На уровне сотрудника рассчитывать только итоговую сумму.
Месяцы выводить по убыванию.
С первым запросом у меня есть информация как и откуда доставать данные. Я использовал два РС СостоянияСотрудников и РС КадроваяИсторияСотрудников. Получил все необходимые данные, но я плохо понимаю, как работают периодические регистры сведений и то, как их правильно применять в конструкторе запросов-поэтому не могу реализовать функцию выборки на конкретную дату. Могли бы вы мне объяснить эту тему, пожалуйста!
Из-за того, что не могу справиться с первым ко второму даже приступать страшно..
Демобазу прилагаю.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
Это не задание для приема на работу, я на данный момент изучаю курсы по запросам это задание для проверки. Но в курсах практические задачи были в разы легче. Да и ЗУП конфигурация непростая довольно таки. Особенно когда по-сути работаешь с ней впервые. Так что Ваш комментарий не уместен. Я не прошу решать за меня, а объяснить то, чего я не понимаю. Осуждайте кого-нибудь ещё.
и Вы попадёте на работу
Это не задание для приема на работу, я на данный момент изучаю курсы по запросам это задание для проверки. Но в курсах практические задачи были в разы легче. Да и ЗУП конфигурация непростая довольно таки. Особенно когда по-сути работаешь с ней впервые. Так что Ваш комментарий не уместен. Я не прошу решать за меня, а объяснить то, чего я не понимаю. Осуждайте кого-нибудь ещё.
(1) Пишу для ЗУП 3.1 (2,5 уже отжила своё)
На пункт 1.
"Сублимированный запрос", ну то есть в виде "представлений"
Текст =
"ВЫБРАТЬ
&Период КАК Период,
Сотрудники.Ссылка КАК Сотрудник
ПОМЕСТИТЬ ВТСотрудникиПериоды
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.Ссылка = &Сотрудник
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДАТАВРЕМЯ(1, 1, 1) КАК Период,
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка) КАК ВидЗанятости,
ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПриема,
0 КАК КоличествоСтавок,
ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ПустаяСсылка) КАК Состояние
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников
ИЗ
ВТСотрудникиПериоды КАК СотрудникиПериоды"
"Размочите" этот запрос через эту процедуру .
ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(Текст);
В переменной "Текст" у вас уже будет полностью исполняемый запрос.
Приложить текст исполняемого запроса?
Это я показал "вау-способ", с механизмом замены представлений, который позволит запросу пережить максимальное число релизов ЗУПа.
Способ 2. На который "учат в школе". Использованием периодических регистров сведений:
-- Кадровая история сотрудников,
-- Данные состояний сотрудников
-- виды занятости сотрудников
-- текущие кадровые данные (он не периодический, но в нем удобнее всего брать дату приема на работу)
Способ 3. Уже не "школа", но и не "вау", а между. Максимально использовать интервальные регистры сведений:
-- КадроваяИсторияСотрудниковИнтервальный
-- ВидыЗанятостиСотрудниковИнтервальный
-- СостоянияСотрудников (он тоже интервальный)
-- текущие кадровые данные (он не интервальный, но в нем удобнее всего брать дату приема на работу)
В целом лучший подход такой:
Базовая таблица - сотрудник и период, к ней левым соединением присоединяем вышеупомянутые регистры.
Если все присоединяем в одной выборке, применяем "ЕстьNull" для значений "справа"
На пункт 2. Можно решить получением данных из двух разных видов регистров: расчета и накопления.
На пункт 1.
"Сублимированный запрос", ну то есть в виде "представлений"
Текст =
"ВЫБРАТЬ
&Период КАК Период,
Сотрудники.Ссылка КАК Сотрудник
ПОМЕСТИТЬ ВТСотрудникиПериоды
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.Ссылка = &Сотрудник
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДАТАВРЕМЯ(1, 1, 1) КАК Период,
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка) КАК ВидЗанятости,
ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПриема,
0 КАК КоличествоСтавок,
ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ПустаяСсылка) КАК Состояние
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников
ИЗ
ВТСотрудникиПериоды КАК СотрудникиПериоды"
"Размочите" этот запрос через эту процедуру .
ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(Текст);
В переменной "Текст" у вас уже будет полностью исполняемый запрос.
Приложить текст исполняемого запроса?
Это я показал "вау-способ", с механизмом замены представлений, который позволит запросу пережить максимальное число релизов ЗУПа.
Способ 2. На который "учат в школе". Использованием периодических регистров сведений:
-- Кадровая история сотрудников,
-- Данные состояний сотрудников
-- виды занятости сотрудников
-- текущие кадровые данные (он не периодический, но в нем удобнее всего брать дату приема на работу)
Способ 3. Уже не "школа", но и не "вау", а между. Максимально использовать интервальные регистры сведений:
-- КадроваяИсторияСотрудниковИнтервальный
-- ВидыЗанятостиСотрудниковИнтервальный
-- СостоянияСотрудников (он тоже интервальный)
-- текущие кадровые данные (он не интервальный, но в нем удобнее всего брать дату приема на работу)
В целом лучший подход такой:
Базовая таблица - сотрудник и период, к ней левым соединением присоединяем вышеупомянутые регистры.
Если все присоединяем в одной выборке, применяем "ЕстьNull" для значений "справа"
На пункт 2. Можно решить получением данных из двух разных видов регистров: расчета и накопления.
(10) Попробуйте "полный запрос" из способа 1 задачи 1 (замена представлений).
Посмотрите как он в консоли отрабатывает. Параметры задать не забудьте "Период и Сотрудник"
Посмотрите как он в консоли отрабатывает. Параметры задать не забудьте "Период и Сотрудник"
ВЫБРАТЬ
&Период КАК Период,
Сотрудники.Ссылка КАК Сотрудник
ПОМЕСТИТЬ ВТСотрудникиПериоды
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.Ссылка = &Сотрудник
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ТаблицаОтборов.Период КАК Период,
ТаблицаОтборов.Сотрудник КАК Сотрудник,
СправочникСотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
ВЫРАЗИТЬ(ТаблицаОтборов.Сотрудник КАК Справочник.Сотрудники).ГоловнойСотрудник КАК ГоловнойСотрудникТаблицыРазличных
ПОМЕСТИТЬ ВТОтборовРазличныхСотрудников
ИЗ
ВТСотрудникиПериоды КАК ТаблицаОтборов
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК СправочникСотрудники
ПО ТаблицаОтборов.Сотрудник = СправочникСотрудники.Ссылка
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ИзмеренияДаты.Сотрудник КАК Сотрудник,
ИзмеренияДаты.Период КАК Период,
СостоянияСотрудников.Период КАК ПериодЗаписи,
СостоянияСотрудников.Состояние КАК Состояние,
СостоянияСотрудников.ВидВремени КАК ВидВремени,
СостоянияСотрудников.ДействуетДо КАК ДействуетДо,
СостоянияСотрудников.ОкончаниеПредположительно КАК ОкончаниеПредположительно
ПОМЕСТИТЬ ВТСведенияОСостоянииСотрудников
ИЗ
ВТОтборовРазличныхСотрудников КАК ИзмеренияДаты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников
ПО ИзмеренияДаты.Сотрудник = СостоянияСотрудников.Сотрудник
И (СостоянияСотрудников.Период <= ИзмеренияДаты.Период)
И (КОНЕЦПЕРИОДА(СостоянияСотрудников.ДействуетДо, ДЕНЬ) >= ИзмеренияДаты.Период
ИЛИ СостоянияСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1))
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА РегистрСведений.ПериодЗаписи = РегистрСведений.ДатаНачала
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ КАК ЭтоВозвратноеСобытие,
РегистрСведений.ДатаОкончания КАК ДатаОкончанияИнтервала,
РегистрСведений.ДатаНачала КАК ДатаНачала,
РегистрСведений.Год КАК Год,
РегистрСведений.ПериодПредыдущейЗаписи КАК ПериодПредыдущейЗаписи,
РегистрСведений.Сотрудник КАК Сотрудник,
РегистрСведений.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
РегистрСведений.ФизическоеЛицо КАК ФизическоеЛицо,
ИзмеренияДаты.Период КАК Период,
РегистрСведений.ДействуетДо КАК ПериодВозвратногоСобытия,
РегистрСведений.РегистраторСобытия КАК Регистратор,
РегистрСведений.РегистраторСобытия КАК РегистраторСобытия,
РегистрСведений.РегистраторЗаписи КАК РегистраторЗаписи,
РегистрСведений.ПериодЗаписи КАК ПериодЗаписи,
РегистрСведений.ПустойИнтервал КАК ПустойИнтервал,
РегистрСведений.ВидЗанятости КАК ВидЗанятости
ПОМЕСТИТЬ ВТСведенияОВидахЗанятостиСотрудников
ИЗ
ВТОтборовРазличныхСотрудников КАК ИзмеренияДаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудниковИнтервальный КАК РегистрСведений
ПО (РегистрСведений.ДатаНачала <= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.ДатаОкончания >= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА РегистрСведений.ПериодЗаписи = РегистрСведений.ДатаНачала
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ КАК ЭтоВозвратноеСобытие,
РегистрСведений.ДатаОкончания КАК ДатаОкончанияИнтервала,
РегистрСведений.ДатаНачала КАК ДатаНачала,
РегистрСведений.Год КАК Год,
РегистрСведений.ПериодПредыдущейЗаписи КАК ПериодПредыдущейЗаписи,
ИзмеренияДаты.Сотрудник КАК Сотрудник,
РегистрСведений.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
ИзмеренияДаты.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
ИзмеренияДаты.Период КАК Период,
РегистрСведений.ДействуетДо КАК ПериодВозвратногоСобытия,
РегистрСведений.РегистраторСобытия КАК Регистратор,
РегистрСведений.РегистраторСобытия КАК РегистраторСобытия,
РегистрСведений.РегистраторЗаписи КАК РегистраторЗаписи,
РегистрСведений.ПериодЗаписи КАК ПериодЗаписи,
РегистрСведений.ПустойИнтервал КАК ПустойИнтервал,
РегистрСведений.Организация КАК Организация,
РегистрСведений.Подразделение КАК Подразделение,
РегистрСведений.Должность КАК Должность,
РегистрСведений.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
РегистрСведений.ВидСобытия КАК ВидСобытия,
РегистрСведений.ГоловнойСотрудник КАК ГоловнойСотрудник,
РегистрСведений.ВидДоговора КАК ВидДоговора,
РегистрСведений.ЭтоГоловнойСотрудник КАК ЭтоГоловнойСотрудник,
РегистрСведений.КоличествоСтавок КАК КоличествоСтавок
ПОМЕСТИТЬ ВТСведенияКадровойИсторииСотрудников
{ВЫБРАТЬ
Сотрудник,
ГоловнаяОрганизация,
ФизическоеЛицо,
Период,
ПериодВозвратногоСобытия,
Регистратор,
РегистраторСобытия,
РегистраторЗаписи,
ПериодЗаписи,
ПустойИнтервал,
Организация,
Подразделение,
Должность,
ДолжностьПоШтатномуРасписанию,
ВидСобытия,
ГоловнойСотрудник,
ВидДоговора,
ЭтоГоловнойСотрудник,
КоличествоСтавок}
ИЗ
ВТОтборовРазличныхСотрудников КАК ИзмеренияДаты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК РегистрСведений
ПО (РегистрСведений.ДатаНачала <= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.ДатаОкончания >= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник)
И (РегистрСведений.ФизическоеЛицо = ИзмеренияДаты.Сотрудник.ФизическоеЛицо)
ИНДЕКСИРОВАТЬ ПО
Сотрудник
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТаблицаОтборов.Период КАК Период,
ТаблицаОтборов.Сотрудник КАК Сотрудник,
ТаблицаОтборов.ФизическоеЛицо КАК ФизическоеЛицо,
КадроваяИсторияСотрудников.Подразделение КАК Подразделение,
КадроваяИсторияСотрудников.Должность КАК Должность,
СведенияОВидахЗанятостиСотрудников.ВидЗанятости КАК ВидЗанятости,
КадроваяИсторияСотрудников.КоличествоСтавок КАК КоличествоСтавок,
ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ДатаПриема, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаПриема,
СведенияОСостоянииСотрудников.Состояние КАК Состояние
ПОМЕСТИТЬ ПредставленияКадровыеДанныеСотрудников
ИЗ
ВТОтборовРазличныхСотрудников КАК ТаблицаОтборов
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
ПО ТаблицаОтборов.Сотрудник = ТекущиеКадровыеДанныеСотрудников.Сотрудник
ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияКадровойИсторииСотрудников КАК КадроваяИсторияСотрудников
ПО ТаблицаОтборов.Сотрудник = КадроваяИсторияСотрудников.Сотрудник
И ТаблицаОтборов.Период = КадроваяИсторияСотрудников.Период
{ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОВидахЗанятостиСотрудников КАК СведенияОВидахЗанятостиСотрудников
ПО ТаблицаОтборов.Сотрудник = СведенияОВидахЗанятостиСотрудников.Сотрудник
И ТаблицаОтборов.Период = СведенияОВидахЗанятостиСотрудников.Период}
{ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОСостоянииСотрудников КАК СведенияОСостоянииСотрудников
ПО ТаблицаОтборов.Сотрудник = СведенияОСостоянииСотрудников.Сотрудник
И ТаблицаОтборов.Период = СведенияОСостоянииСотрудников.Период}
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВТСведенияКадровойИсторииСотрудников
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВТСведенияОВидахЗанятостиСотрудников
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВТОтборовРазличныхСотрудников
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВТСведенияОСостоянииСотрудников
Показать
(9)
А можно сделать запрос с помощью использования виртуальных таблиц СрезПоследних?
(9)
Способ 3. Уже не "школа", но и не "вау", а между. Максимально использовать интервальные регистры сведений:
-- КадроваяИсторияСотрудниковИнтервальный
-- ВидыЗанятостиСотрудниковИнтервальный
-- СостоянияСотрудников (он тоже интервальный)
-- текущие кадровые данные (он не интервальный, но в нем удобнее всего брать дату приема на работу)
-- КадроваяИсторияСотрудниковИнтервальный
-- ВидыЗанятостиСотрудниковИнтервальный
-- СостоянияСотрудников (он тоже интервальный)
-- текущие кадровые данные (он не интервальный, но в нем удобнее всего брать дату приема на работу)
А можно сделать запрос с помощью использования виртуальных таблиц СрезПоследних?
(9)
(12) накидал на скорую руку
ВЫБРАТЬ
&Сотрудник КАК Сотрудник,
&Период КАК Период
ПОМЕСТИТЬ ВТ_Отбор
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЕСТЬNULL(КадроваяИсторияСотрудниковСрезПоследних.Подразделение, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.пустаяссылка)) КАК Подразделение,
ЕСТЬNULL(КадроваяИсторияСотрудниковСрезПоследних.Должность, ЗНАЧЕНИЕ(справочник.Должности.ПустаяСсылка)) КАК Должность,
ВТ_Отбор.Сотрудник КАК Сотрудник,
ВТ_Отбор.Период КАК Период,
КадроваяИсторияСотрудниковСрезПоследних.КоличествоСтавок КАК КоличествоСтавок
ПОМЕСТИТЬ ВТ_КИ
ИЗ
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&Период, Сотрудник = &Сотрудник) КАК КадроваяИсторияСотрудниковСрезПоследних,
ВТ_Отбор КАК ВТ_Отбор
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Отбор.Сотрудник КАК Сотрудник,
ВТ_Отбор.Период КАК Период,
ЕСТЬNULL(ВидыЗанятостиСотрудниковСрезПоследних.ВидЗанятости, ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.пустаяссылка)) КАК ВидЗанятости
ПОМЕСТИТЬ ВТ_Занятость
ИЗ
ВТ_Отбор КАК ВТ_Отбор,
РегистрСведений.ВидыЗанятостиСотрудников.СрезПоследних(&Период, Сотрудник = &Сотрудник) КАК ВидыЗанятостиСотрудниковСрезПоследних
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Отбор.Сотрудник КАК Сотрудник,
ВТ_Отбор.Период КАК Период,
ЕСТЬNULL(ДанныеСостоянийСотрудников.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.пустаяссылка)) КАК Состояние
ПОМЕСТИТЬ ВТ_Состояния
ИЗ
ВТ_Отбор КАК ВТ_Отбор
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеСостоянийСотрудников КАК ДанныеСостоянийСотрудников
ПО ВТ_Отбор.Сотрудник = ДанныеСостоянийСотрудников.Сотрудник
И (ДанныеСостоянийСотрудников.Начало <= ВТ_Отбор.Период)
И (ДанныеСостоянийСотрудников.Окончание >= ВТ_Отбор.Период)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Отбор.Сотрудник КАК Сотрудник,
ВТ_Отбор.Период КАК Период,
ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ДатаПриема, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаПриема,
ТекущиеКадровыеДанныеСотрудников.КоличествоСтавок КАК КоличествоСтавок
ПОМЕСТИТЬ ВТ_ДатаПриема
ИЗ
ВТ_Отбор КАК ВТ_Отбор
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
ПО ВТ_Отбор.Сотрудник = ТекущиеКадровыеДанныеСотрудников.Сотрудник
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Отбор.Период КАК Период,
ВТ_Отбор.Сотрудник КАК Сотрудник,
ВТ_ДатаПриема.ДатаПриема КАК ДатаПриема,
ВТ_Занятость.ВидЗанятости КАК ВидЗанятости,
ВТ_КИ.Подразделение КАК Подразделение,
ВТ_КИ.Должность КАК Должность,
ВТ_Состояния.Состояние КАК Состояние,
ВТ_КИ.КоличествоСтавок КАК КоличествоСтавок
ИЗ
ВТ_Отбор КАК ВТ_Отбор
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КИ КАК ВТ_КИ
ПО ВТ_Отбор.Сотрудник = ВТ_КИ.Сотрудник
И ВТ_Отбор.Период = ВТ_КИ.Период
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Занятость КАК ВТ_Занятость
ПО ВТ_Отбор.Сотрудник = ВТ_Занятость.Сотрудник
И ВТ_Отбор.Период = ВТ_Занятость.Период
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Состояния КАК ВТ_Состояния
ПО ВТ_Отбор.Сотрудник = ВТ_Состояния.Сотрудник
И ВТ_Отбор.Период = ВТ_Состояния.Период
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДатаПриема КАК ВТ_ДатаПриема
ПО ВТ_Отбор.Сотрудник = ВТ_ДатаПриема.Сотрудник
Показать
(13)Мучаюсь с третьим заданием уже долго,ты бы мог помочь?
3.По регистрам расчёта начисления и удержания сделать выборку:
Сотрудник
Месяц
Сумма начислено
Сумма удержано
Итоговая сумма
Итоговая сумма за прошлый месяц
Сумма увеличилась (Да/нет, относительно предыдущего периода)
Добавить итоги по сотруднику.
На уровне сотрудника рассчитывать только итоговую сумму.
Месяцы выводить по убыванию.
Я сейчас сижу на последней версии ЗУП.
Пытаюсь найти нужные данные в регистрах расчёта Начисления и Удержания, и если по Начислениям,ещё худо-бедно получается найти все необходимые данные, то в удержаниях например нет информации по сотрудникам-в виде измерений там используется физическое лицо(с которым,мне кажется и нужно работать). Хоть убей. Я не нашел ни на одном форуме работу с регистрами расчёта на ЗУП,вернее такие есть,но информация получается другого рода. Если сможешь мне хотя бы намекнуть куда пахать,буду признателен.
3.По регистрам расчёта начисления и удержания сделать выборку:
Сотрудник
Месяц
Сумма начислено
Сумма удержано
Итоговая сумма
Итоговая сумма за прошлый месяц
Сумма увеличилась (Да/нет, относительно предыдущего периода)
Добавить итоги по сотруднику.
На уровне сотрудника рассчитывать только итоговую сумму.
Месяцы выводить по убыванию.
Я сейчас сижу на последней версии ЗУП.
Пытаюсь найти нужные данные в регистрах расчёта Начисления и Удержания, и если по Начислениям,ещё худо-бедно получается найти все необходимые данные, то в удержаниях например нет информации по сотрудникам-в виде измерений там используется физическое лицо(с которым,мне кажется и нужно работать). Хоть убей. Я не нашел ни на одном форуме работу с регистрами расчёта на ЗУП,вернее такие есть,но информация получается другого рода. Если сможешь мне хотя бы намекнуть куда пахать,буду признателен.
(6)
Сейчас этим и занимаюсь.
Спасибо! Попробую.
6. user1600494 03.10.23 12:18
Перепроходи курсы, периодические РС это база! А вообще, странные формулировки-"функция выборки на конкретную дату".
Из физ таблицы в условиях где ставишь дата<=&дата и готово, если я правильно понял.
Перепроходи курсы, периодические РС это база! А вообще, странные формулировки-"функция выборки на конкретную дату".
Из физ таблицы в условиях где ставишь дата<=&дата и готово, если я правильно понял.
Сейчас этим и занимаюсь.
Спасибо! Попробую.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот