Всем привет.
Конфигурация ЗУП, последняя.
Регистр сведений ПлановыеНачисленияРаботниковОрганизаций.
В него информация поступает из документа ВводСведенийОПлановыхНачисленияхРаботниковОрганизаций.
Например,
01.04.15 - один вид начисления.
01.06.15 - другой вид начисления.
01.08.15 - еще один вид начисления.
и т.д.
Чем-то это похоже на периодические реквизиты в 7-ке.
Нужно на заданную дату выбрать только ОДИН, действующий, вид начисления.
Простое условие
ГДЕ (ПлановыеНачисленияРаботниковОрганизаций.Период <= &ДатаДокумента)
Надо использовать виртуальную таблицу СрезПоследних:
Выбрать
*
ИЗ
РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&ДатаДокумента)
Vofka, не работает.
В консоли запросов составил запрос
ВЫБРАТЬ
ПлановыеНачисленияРаботниковОрганизаций.Период,
ПлановыеНачисленияРаботниковОрганизаций.Регистратор,
ПРЕДСТАВЛЕНИЕ(ПлановыеНачисленияРаботниковОрганизаций.Регистратор),
ПлановыеНачисленияРаботниковОрганизаций.Сотрудник,
ПРЕДСТАВЛЕНИЕ(ПлановыеНачисленияРаботниковОрганизаций.Сотрудник),
ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета,
ПРЕДСТАВЛЕНИЕ(ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета)
ИЗ
РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(ДатаВремя(2015,08,01)) КАК ПлановыеНачисленияРаботниковОрганизаций
vadim007, надо же условие на вид начисления поставить.
Нашел вот подобное на http://pro1c.org.ua/redirect.php?http://www.1c-h.ru/?p=1396:
9. Вопрос Как прочитать данные, актуальные на определенную дату, из регистра сведений «Курсы валют» с отбором по нескольким валютам (отбор по измерениям)
Ответ
Запрос = Новый Запрос;
МассивВалют = Новый Массив;
МассивВалют.Добавить(Валюта1);
МассивВалют.Добавить(Валюта2);
Запрос.УстановитьПараметр("МассивВалют", МассивВалют);
Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения);
Запрос.Текст = "
|ВЫБРАТЬ
| ВалютыСрезПоследних.Валюта,
| ВалютыСрезПоследних.Курс
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В
(&МассивВалют)) КАК ВалютыСрезПоследних";
ТаблицаКурсов = Запрос.Выполнить().Выгрузить();
vadim007, ну тогда отсортируйте по дате по убыванию и возьмите 1 запись.
Вот так получилось то, что хотел.
PS: ощущение, будто шаманил с бубном
alexandr_f, начислений несколько. Нужно выбрать одно действующее, последнее. Проверка на прекращение начисления еще больше усложнит запрос.
На демо-базе правильно заработал такой запрос:
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ПлановыеНачисленияРаботниковОрганизаций.Сотрудник,
| ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета
| ИЗ
| РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&ДатаДокумента) КАК ПлановыеНачисленияРаботниковОрганизаций
| ГДЕ
| (ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.КатегорияРасчета В
| (ВЫБРАТЬ КатегорииРасчетов1.Ссылка
| ИЗ Справочник.КатегорииРасчетов КАК КатегорииРасчетов1
| ГДЕ (КатегорииРасчетов1.Код = ""00000"")
| )) И
| (ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПроизвольнаяФормула))
| И
| (ПлановыеНачисленияРаботниковОрганизаций.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Начать))
| И
| (ПлановыеНачисленияРаботниковОрганизаций.Период <= &ДатаДокумента)
| УПОРЯДОЧИТЬ ПО
| ПлановыеНачисленияРаботниковОрганизаций.Период УБЫВ
| )КАК НачисленияРаботниковОрганизаций
Может я слабо разбираюсь в 1С.
Но с точки зрения T-SQL это запрос по максимальной дате
Коррелированный запрос
(Max(Date),Сотрудник,Кодначисления)
- это внутреннее соединение (Inner Join)
Смущает
ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПроизвольнаяФормула
(ПлановыеНачисленияРаботниковОрганизаций.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Начать))
[
Так покажите мне корреляцию, а не ссылку.
Написал-же alexandr_f, что запрос вида
SELECT Max(Date),Сотрудник,Кодначисления
ВЫБРАТЬ ПЕРВЫЕ 1
| ПлановыеНачисленияРаботниковОрганизаций.Сотрудник,
| ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета
| ИЗ
| РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&ДатаДокумента) КАК ПлановыеНачисленияРаботниковОрганизаций
......................
| УПОРЯДОЧИТЬ ПО
| ПлановыеНачисленияРаботниковОрганизаций.Период УБЫВ
Упрощенно: кореллированный запрос - подзапрос выполняется для каждой строки основного запроса, т.к. его параметром служат данные основного запроса.
Покажите мне корреляцию в Вашем запросе типа
Фуф, заставили покопаться в документации. Здесь нет коррелированного запроса.
Спасибо что напрягли.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua