Запрос выбрать значение из регистра сведений #641705


#0 by x-a-d
Тема не совсем корректно сформулирована, т.к. не знаю как точно ее сформулировать. Вопрос следующий. В РС (например, РС производственный календарь в типовых) храним какое-то значение на дату. Дата1 "рабочий" Дата2 "выходной" Дата5 "рабочий" и т.д. Делаю запрос к другим данным (неважно каким), где одно из полей дата. В зависимости от условий мне надо у этой дате прибавить "n" рабочих дней, чтобы получить Дату из производственного календаря. Например, мне надо получить третью рабочую дату. Т.е. из приведенного выше списка это "Дата5". Отобрать все рабочие даты и поместить во временную таблицу - не проблема (чтобы потом по левому соединению обратиться). Но не могу придумать алгоритм как получить именно "Дата5"
#1 by shuhard
я бы использовал HAVING
#2 by LehhaK
Я бы запросом выбрал даты, где условие = рабочий и выбрать первые 3. Перебором доходишь до последней и вот она твоя дата, например
#3 by x-a-d
имеющие используется только к агрегатным функциям. В данном случае не пойму, что агрегировать.
#4 by shuhard
количество
#5 by МишКа
#6 by МишКа
А первые n, как будешь выбирать? Текст запроса парсить?
#7 by LehhaK
Запрос.Текст = "Выбрать первые"+"n"+"Блаблабла"
#8 by x-a-d
мне надо выбирать может 3, может 5 и по левому соединению. Думаю может как-то пронумеровать даты. И потом к своей дате, от которой ищу, выбрать ближайшую из временной таблицы, а потом к ее "порядку" прибавить нужную разницу и выбрать уже нужную дату будет условие в запросе типа ВЫБОР КОГДА ...
#9 by bzaugolnov
Да, нумерация дат, кажется, самый простой способ. Можно в самой базе сделать нумерацию или добавить пару временных таблиц: ; ВЫБРАТЬ Даты1.Дата КАК Дата, СУММА(Даты2.Позиция) КАК Позиция ПОМЕСТИТЬ ВТ_Список ИЗ ВТ_Даты КАК Даты1 ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Даты КАК Даты2 ПО Даты1.Дата>=Даты2.Дата И Даты2.Вид = Рабочая Где Даты1.Вид = Рабочая
#10 by hhhh
как-то так Выбрать и потом для двух дат нужно взять две строчки этой таблицы и вычесть.
#11 by Kashemir
ВЫБРАТЬ    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода    И РегламентированныйПроизводственныйКалендарь.ВидДня = &РабочийВидДня        ВложенныйЗапрос.Дата КАК Дата,
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С