#0
by oxanka
Добрый день! Есть периодический регистр сведений. Там есть запись о прекращении планового начисления сотрудника (стоит признак "Прекратить"), но нет размера прекращенного начисления. Надо получить этот размер из предыдущей записи с такими же ключевыми полями. Дата предыдущей записи неизвестна. Пробовала так Запрос = Новый Запрос; На одном сотруднике работает, но если их несколько, то "ВЫБРАТЬ ПЕРВЫЕ 1" не спасает, а если это убрать, то к прекращенному начислению присоединятся все начисления с признаком <> прекратить. Помогите, пожалуйста.
#3
by oxanka
если была смена оклада в середине месяца, то за первую половину надо платить по старой ставке
#8
by Cyberhawk
Тогда срез последних не в тему. Упорядочь по убыванию, выбери первые две записи и сгруппируй их через Максимум
#9
by oxanka
я не могу указать количество выбираемых записей, потому что делается общий запрос по всем сотрудникам, и по нескольким может быть такая ситуация
#10
by Cyberhawk
кинь табличку с содержимым регистра, а затем еще кинь табличку-результат желаемого запроса
#19
by oxanka
Дата Сотрудник Подразделение ВидРасчета Размер Действие График 20.10.2011 Работник Основное Оклад по часам 874 720 Начать Смена четная 04.06.2012 Работник Основное Оклад по часам Прекратить 05.06.2012 Работник Основное Оклад по часам 1 003 940 Изменить Смена четная 10.09.2012 Работник Основное Оклад по часам Прекратить 11.09.2012 Работник Основное Оклад по часам 1 155 000 Изменить Смена четная Хочу 10.09.2012 Работник Основное Оклад по часам 1 003 940 Прекратить Как-то так....
#21
by pessok
ну сделай тогда в своем пакете условие Оклад <> 0 и предпоследняя запись станет последней
#22
by Кир Пластелинин
есть дурацкая мысль. есть итоговая таблица всех записей (вт). добавляешь еще вт. в ней группируешь период по максимуму (ну или срез последних сделать). полученную таблицу соединяешь с исходной с отбором (или соединением), что бы период исх. таблицы был меньше максимального. получишь все записи без последней. ну тут опять по максимуму сгруппировать. жду летящих помидоров в свой адрес)
#25
by aspirant
делаешь в запросе выбрать первые 2 с сортировкой по убыванию дат. Первая запись в результате запроса - твоя. Оклад <> 0 при этом. А фотку бы надо, это да.
#27
by oxanka
а если у меня несколько сотрудников, то выбрав первые 2 я потеряю данные по следующим сотрудникам...
#29
by vmv
ПЕРВЫЕ от соединения с ВТ по максимуму максимум все равно получать надо однозначно тут надо заюзать Первые
#32
by aspirant
Сделай цикл, сделай вложенный запрос (сомневаюсь правда, что сработает). Но это уже детали. Не парьте меня - Я стратег.
#39
by vmv
или идея 25 во вложенном запросе, т.е. основной запрос Выбрать * Из .... Как ТаблССотрудниками ЛевоеСоединение Выбрать Первые 2 * Из ... ТаблПервые2 Упорядочить по Период Убыв ну и там уже техника
#40
by oxanka
Дата Сотрудник Подразделение ВидРасчета Размер Действие График 20.10.2011 Работник Основное Оклад по часам 874 720 Начать Смена четная 01.01.2012 Иванов Основное Оклад по часам 2 100 000 Начать Смена четная 04.06.2012 Работник Основное Оклад по часам Прекратить 05.06.2012 Работник Основное Оклад по часам 1 003 940 Изменить Смена четная 10.09.2012 Работник Основное Оклад по часам Прекратить 11.09.2012 Работник Основное Оклад по часам 1 155 000 Изменить Смена четная 10.09.2012 Иванов Основное Оклад по часам Прекратить Смена четная 11.09.2012 Иванов Основное Оклад по часам 2 500 000 Изменить Смена четная Выбираю 2 - получаю Иванова, а Работника теряю
#41
by Cube
Как-то так: ВЫБРАТЬ ПлановыеНачисленияРаботниковОрганизаций.Период, ПлановыеНачисленияРаботниковОрганизаций.Сотрудник, ПлановыеНачисленияРаботниковОрганизаций.Показатель1, ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета ИЗ
#42
by Ахиллес
Перезаполни регистр сведений, что бы при прекращении добавлялся размер начисления. И не иии мозги людям тут.
#45
by 0_Serg_0
может достаточно будет условия отсекающего записи с "прекратить"?? где Действие <> &Прекратить ??
#49
by mistеr
1. Получим последнюю запись, из нее возьмем период. 2. Получим последнюю на дату из шага 1. - это будет предпоследняя.
#55
by Кир Пластелинин
кстати. неплохо бы учесть, что запись по определенному сотруднику может всего одна. или это не актуально?
#56
by Ахиллес
Внутреннее соединение (среза последних) регистра самого с собой по всем полям, кроме "Действие" в 1 таблице будет = Начать, а во второй = Прекратить.
#57
by КуплюКровать
делается так: берешь основную таблицу и соединяешь левым соединением со срезом последних, в ГДЕ добавляешь условие срез последних Период есть null (ну или не период, а любое поле), получается основная таблица без последних записей, а дальше группировка - дело техники
#58
by Cube
Что там непонятного? Во вложенном запросе получаем записи на дату и все записи регистра. Соединяем эти две таблицы и, если в записи на дату "действие = прекратить", то выводим дату из полной таблицы. Полученную сводную таблицу сворачиваем и получаем максимальную дату. Затем во внешнем запросе из всех записей регистра выбираем записи с ключевыми полями равными тем, что получили во вложенном запросе и получаем Показатель1.
#62
by По-читатель
А если в параметрах второй виртуальной таблицы использовать ДатаНач (например первое число месяца)?
#63
by oxanka
+ несколько дополнительных условий = то, что надо ВСЕМ ОГРОМНОЕ СПАСИБО ВЫБРАТЬ ПлановыеНачисленияРаботниковОрганизаций.Период, ПлановыеНачисленияРаботниковОрганизаций.Сотрудник, ПлановыеНачисленияРаботниковОрганизаций.Показатель1, ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета ИЗ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(
#64
by spu79
непонятно зачем это? типовая нормально считает такие ситуации. А вообще-то при "изменении оклада" используют значение перечисления "изменнить", а "прекратить" используют при увольнении.
#65
by oxanka
Некоторые сами пишут конфигурации. Может не так идеально, как в типовой, но сами. А кому-то приходится эту самописную радость поддерживать и дорабатывать...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Получить id и получить объект по id
- v8: Как получить запись из набора записей не по индексу а по значению измерения?
- Как программно получить получить пароль пользователя в текущем сеансе работ
- v8: Как получить удаляемую запись регистра сведений при интерактивном удалении
- Как получить разность дат (Нужно получить количество дней)
- v8: Как получить последнюю запись в регистре сведений
- Как получить Уникальный Идентификатор для записи в регистре сведений
- Как получить ГУИД элемента по OLE, записать и получить по нему ссылку?
- 1С как сравнить последнюю и предпоследнюю запись в запросе?
- Как получить ссылку на запись в регистре?
В этой группе 1С
- Отделить проведение от отмены проведения в подписке "ПередЗаписью" регистра
- v7: Поделитесь пожалуйста файлом шаблонов 1с 7.7
- icq выдает запрос на аунтификацию, но как ее пройти?
- v8: Ошибка ТипТега = мЧтениеXML.Спуститься();
- как пробросить USB порт в виртуалку
- Как программно сделать отбор в Типовом Отчете "Отчет по проводкам"
- НДС с авансов в валюте УПП
- В мониторе обмена не виден план обмена
- Как отключить "Система готова к работе"
- Как сравнить описание типов с типом?
- 1С УПП как сменить вид ценности?
- подскажите как пересчитать колонку в Access ?
- Ут 10.3 настройка учетной записи почты
- БГУ - как заполнять расходное расписание РБС
- Сертификат SSL и IMAP в 1С
- Подчиненные строки дерева в таблицу значений
- WMS RS Expert
- БГУ - не удается в Журнале операций № 2 сделать с отбором по лицевому счету
- УФ. Табличная часть обработки. Как добавить картинку строк?
- Движение по регистру "НДС покупки"