Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 03:18

Работа с периодом

Автор Gunner, 22 авг 2011, 23:25

0 Пользователей и 1 гость просматривают эту тему.

Gunner

Вытаскиваю в консоле запросов данные из виртуальной таблицы регистра сведенений (срезпоследних) по сотрудникам. Есть следующие поля: фио,должность,отдел. Момент такой: например на 08.07.2011 сотрудник перешёл в другой отдел. Необходимо показать последнее перемещение на дату месяца, т.е если укажем параметр период 01.07.2011, то сотрудник должен быть в новом отделе(в который переходит 08.07.2011). Как сформировать этот вроде лёгкий запрос? Что-то не получается. Ещё бы хорошо, чтобы можно было указать начало и конец периода.
Делаю вот как:
ВЫБРАТЬ
   РаботникиОрганизацийСрезПоследних.Сотрудник КАК ФИО,
   РаботникиОрганизацийСрезПоследних.Должность КАК Должность,
   РаботникиОрганизацийСрезПоследних.Отдел КАК Отдел,
   НачалоПериода(РаботникиОрганизацийСрезпоследних.Период, Месяц) как Период
ИЗ
   РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
где
              РаботникиОрганизацийСрезпоследних.Период между &НачалоПериода и &КонецПериода

В параметрах указываю начало и конец периода с 01.07 по 31.07 - отдел новый, с 01.07 по 07.07 - пусто. Можно сделать вместо начало и конец периода только месячный период, но не получается( Помогите!

Dethmontt

Не используй срез последних чо тут не понятного то
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Срез последних на то и придуман что бы получать срез на дату, нужны все движения дерзай реальную таблицу
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Gunner

Но тогда я не смогу получить последнее значение на другую дату(

has

На 01.07 ты не получишь сотрудника, который ушел 08.07.

Klyacksa

А что мешает взять срез последних на дату 31.07? Тогда если человек в июле перешел в другой отдел, будет в новом отделе, если не переходил - перемещение отражено и не будет.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Gunner

Цитата: Klyacksa от 23 авг 2011, 16:48
А что мешает взять срез последних на дату 31.07? Тогда если человек в июле перешел в другой отдел, будет в новом отделе, если не переходил - перемещение отражено и не будет.
Ты имеешь ввиду вот это: РегистрСведений....СрезПоследних(КонецПериода(&Период, Месяц)) ?
конец месяца брал, в консоле работает, в отчёте нет :(
Задача изменилась: как можно сделать так, чтобы начисления за месяц попадали и по одному отделу и по другому? (т.е с 01 по 07. - Xруб по отделу X, а с 08 по конец месяца Yруб по отделу Y)

Dethmontt

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Klyacksa

Цитата: Gunner от 24 авг 2011, 08:24
конец месяца брал, в консоле работает, в отчёте нет :(
Как это не работает? Должно работать, значит что-то не так было сделано. Плюс, если уж не получается так, можно в запрос в это место передавать не Период, а КонецМесяца(Период).

Цитата: Gunner от 24 авг 2011, 08:24
Задача изменилась: как можно сделать так, чтобы начисления за месяц попадали и по одному отделу и по другому? (т.е с 01 по 07. - Xруб по отделу X, а с 08 по конец месяца Yруб по отделу Y)

Откуда берем начисления? В запросе не вижу их. Но могу предположить, что так и берем - в разрезе отдела.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Gunner

Вот такой вот запрос сформировал.
ВЫБРАТЬ
   ВложенныйЗапрос.ВидРасчета КАК ВидНачисления,
   ВложенныйЗапрос.Сотрудник КАК Сотрудник,
   ВложенныйЗапрос.Результат КАК Результат,
   РаботникиОрганизацийСрезПоследних.Должность КАК Должность,
   РаботникиОрганизацийСрезПоследних.Отдел КАК Отдел,
   РаботникиОрганизацийСрезПоследних.Период КАК Период,
   ВложенныйЗапрос.ПериодРегистрации КАК ПериодНачисления
ИЗ
   (ВЫБРАТЬ
      ОсновныеНачисления.ПериодРегистрации КАК ПериодРегистрации,
      ОсновныеНачисления.ВидРасчета КАК ВидРасчета,
      ОсновныеНачисления.Сотрудник КАК Сотрудник,
      ОсновныеНачисления.Результат КАК Результат
   ИЗ
      РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
      ДополнительныеНачисления.ПериодРегистрации,
      ДополнительныеНачисления.ВидРасчета,
      ДополнительныеНачисления.Сотрудник,
      ДополнительныеНачисления.Результат
   ИЗ
      РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисления) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период, ) КАК РаботникиОрганизацийСрезПоследних
ПО ВложенныйЗапрос.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
ГДЕ
   ГОД(ВложенныйЗапрос.ПериодРегистрации) = ГОД(&Период)
   И МЕСЯЦ(ВложенныйЗапрос.ПериодРегистрации) = МЕСЯЦ(&Период)

В параметрах скд указал в выражении периода функция КонецПериода(&Период, "Месяц"). Теперь считает всё хорошо, начисления попадают в новый отдел, в который сотрудник перешёл 08.07. А как сделать так, чтобы он попал и в старый отдел и в новый, а з/п какбы разделилась, т.е сколько ему начислили с 01 по 07 в старый отдел, с 08 по 31 в новый

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск