Всем привет. Выбираю суммы по сотрудникам за 2016 год по месяцам. Надо на каждый конец месяца вытащить подразделение из РС. Не получается совсем. В чем ошибка?
ВЫБРАТЬ
ВзаиморасчетыСРаботниками.Сотрудник,
МАКСИМУМ(КОНЕЦПЕРИОДА(ВзаиморасчетыСРаботниками.Период, МЕСЯЦ)) КАК Период,
СУММА(ВзаиморасчетыСРаботниками.СуммаВзаиморасчетов) КАК Сумма
ПОМЕСТИТЬ ВТ_Выплаты
ИЗ
РегистрНакопления.ВзаиморасчетыСРаботниками КАК ВзаиморасчетыСРаботниками
ГДЕ
ВзаиморасчетыСРаботниками.Период МЕЖДУ &ДатаНач И &ДатаКон
СГРУППИРОВАТЬ ПО
ВзаиморасчетыСРаботниками.Сотрудник
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Выплаты.Сотрудник,
ВТ_Выплаты.Период,
ВТ_Выплаты.Сумма,
РаботникиОрганизацийСрезПоследних.Подразделение
ИЗ
ВТ_Выплаты КАК ВТ_Выплаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
ПО ВТ_Выплаты.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
ГДЕ
РаботникиОрганизацийСрезПоследних.Период <= ВТ_Выплаты.Период
Выбрать
ВТ_Выплаты.Сотрудник,
ВТ_Выплаты.Период,
Максимум(РаботникиОрганизаций.Период) КАК ПериодПодразделения
Поместить ВТ_ПериодыПодразделений
ИЗ ВТ_Выплаты КАК ВТ_Выплаты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ПО ВТ_Выплаты.Сотрудник = РаботникиОрганизаций.Сотрудник
И ВТ_Выплаты.Период >= РаботникиОрганизаций.Период
Сгруппировать по
ВТ_Выплаты.Сотрудник,
ВТ_Выплаты.Период,
;
Выбрать
ВТ_Выплаты.Сотрудник,
ВТ_Выплаты.Период,
ВТ_Выплаты.Сумма,
СотрудникиОрганизаций.Подразделение
ИЗ ВТ_Выплаты КАК ВТ_Выплаты
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПериодыПодразделений КАК ВТ_ПериодыПодразделений
ПО ВТ_Выплаты.Сотрудник = ВТ_ПериодыПодразделений.Сотрудник
И ВТ_Выплаты.Период = ВТ_ПериодыПодразделений.Период
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ПО ВТ_ПериодыПодразделений.Сотрудник = РаботникиОрганизаций.Сотрудник
ПО ВТ_ПериодыПодразделений.ПериодПодразделения = РаботникиОрганизаций.Период
(1) ну не получается, потому что СрезПоследних это совсем другое. Мануал может глянуть для интереса. Срез последних без параметров даст на текущую дату.
Когда надо на каждый месяц, срез последних можно забыть...
ТекМесяц = НачалоГода(Дата);
Для н = 1 По 12 Цикл
Если н > 1 Тогда
Запрос.Текст = Запрос.Текст + " ОБЪЕДИНИТЬ ВСЕ ";
ПоместитьВ = "";
Иначе
ПоместитьВ = " ПОМЕСТИТЬ Подразделения";
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
|ВЫБРАТЬ
| &НачМесяца" + н + " КАК Период,
| РаботникиОрганизацийСрезПоследних" + н + ".Подразделение
|" + ПоместитьВ + "
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НачМесяца" + н + ") КАК РаботникиОрганизацийСрезПоследних" + н + "
|";
Запрос.УстановитьПараметр("НачМесяца" + н, НачалоМесяца(ТекМесяц));
ТекМесяц = ДобавитьМесяц(ТекМесяц, 1);
КонецЦикла;
Показать
Есть еще второй вариант, но его надо тестировать.
Формируем СписокЗначений из дат, например, первые числа каждого месяца и передаем в Запрос.
ВЫБРАТЬ
СписокДат.Значение
ПОМЕСТИТЬ СписокДат
ИЗ &СписокДат КАК СписокДат;
;
ВЫБРАТЬ РАЗЛИЧНЫЕ
СписокДат.Значение КАК Дата,
РаботникиОрганизаций.Подразделение
ИЗ
СписокДат
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ПО НАЧАЛОПЕРИОДА(РаботникиОрганизаций.Период, МЕСЯЦ) = НАЧАЛОПЕРИОДА(СписокДат.Значение, МЕСЯЦ))
Выбрать
ВТ_Выплаты.Сотрудник,
ВТ_Выплаты.Период,
Максимум(РаботникиОрганизаций.Период) КАК ПериодПодразделения
Поместить ВТ_ПериодыПодразделений
ИЗ ВТ_Выплаты КАК ВТ_Выплаты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ПО ВТ_Выплаты.Сотрудник = РаботникиОрганизаций.Сотрудник
И ВТ_Выплаты.Период >= РаботникиОрганизаций.Период
Сгруппировать по
ВТ_Выплаты.Сотрудник,
ВТ_Выплаты.Период,
;
Выбрать
ВТ_Выплаты.Сотрудник,
ВТ_Выплаты.Период,
ВТ_Выплаты.Сумма,
СотрудникиОрганизаций.Подразделение
ИЗ ВТ_Выплаты КАК ВТ_Выплаты
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПериодыПодразделений КАК ВТ_ПериодыПодразделений
ПО ВТ_Выплаты.Сотрудник = ВТ_ПериодыПодразделений.Сотрудник
И ВТ_Выплаты.Период = ВТ_ПериодыПодразделений.Период
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ПО ВТ_ПериодыПодразделений.Сотрудник = РаботникиОрганизаций.Сотрудник
ПО ВТ_ПериодыПодразделений.ПериодПодразделения = РаботникиОрганизаций.Период