Имя: Пароль:
1C
1С v8
Передача данных как параметр из ВТ в другую ВТ
, , , lexushka
0 oqser
 
21.03.25
09:41
Добрый день!
Есть запрос в СКД камин 5.5.
 //Получение даты увольнения сотрудников в периоде
ВЫБРАТЬ
	КадровыеСведения.Сотрудник КАК Сотрудник,
	КадровыеСведения.ДатаУвольнения КАК ДатаУвольнения 
ПОМЕСТИТЬ ВтДатаУвольнения
ИЗ
	РегистрСведений.КадровыеСведения КАК КадровыеСведения
ГДЕ
	КадровыеСведения.ДатаУвольнения МЕЖДУ ДОБАВИТЬКДАТЕ(&ДатаНач, СЕКУНДА, -1) И ДОБАВИТЬКДАТЕ(&ДатаКон, СЕКУНДА, 1)
	И КадровыеСведения.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)	
;									 
											   
////////////////////////////////////////////////////////////////////////////////
//Получение ставки на день увольнения
ВЫБРАТЬ
	КадровыеСведенияСрезПоследних.КоличествоСтавок КАК СтавокНаДеньУвольнения
ПОМЕСТИТЬ ВтСтавокНаДатуУвольнения
ИЗ
	РегистрСведений.КадровыеСведения.СрезПоследних("ЗДЕСЬ ДАТА УВАЛА",) КАК КадровыеСведенияСрезПоследних

;	


Не получается передать ДатуУвольнения, как параметр даты в другую временную таблицу, пробовал через подзапрос как параметр и скд ругается на синтаксис.
Подскажите, пожалуйста, возможно ли это вообще или как правильно можно это сделать?
1 arsik
 
гуру
21.03.25
08:42
(0) Или самому собирать срез последних или передавать в СКД уже готовую дату
2 StarSoft777
 
21.03.25
08:48
(0) В первом запросе возможно будет много строк, поэтому вложенный запрос, С текстом ВЫБРАТЬ ПЕРВЫЕ 1,или свернуть его группировкой , смотря что нужно.
3 Мультук
 
гуру
21.03.25
08:55
(0)

Допустим у вас список

Катя 01.03.2025  Программист
Маша 10.03.2025  Тестер
Петя 12.03.2025  Менеджер

Почему второй запрос возвращает кол-во ставок без учёта должности ?


В простейшем случае
google
СКД связь наборов данных по параметру

(2)
А можно примерный текст запроса, пожалуйста ?
4 Garykom
 
гуру
21.03.25
11:49
(0) какой пипец
начиная с ДОБАВИТЬКДАТЕ +/- 1 секунду и заканчивая лишним разделением на два запроса
нафига тебе именно виртуальная таблица СрезПоследних?
да, в параметр виртуальной таблицы сложно засунуться, но с обычной-то проблем нет
5 Eiffil123
 
21.03.25
13:05
(0) нет, это невозможно технически.
Параметры Дата в виртуальных таблицах должны вычисляться на момент трансляции запроса сервером 1С в SQL. Можно использовать только функции, которые эту дату как-то модифицируют (например естьnull, добавитькдате, датавремя)
6 StarSoft777
 
21.03.25
13:39
(0) Самое простое, Выполняешь запрос 1, далее перебор результата  ,Для каждой строки запроса1 , выполняешь запрос2 , куда подставляешь дату из запроса1 ( берешь из текущей строки запроса1 )
7 Garykom
 
гуру
21.03.25
13:49
(6) у ТСа СКД, можно только связь наборов как написано в (3)
8 oqser
 
21.03.25
13:58
Спасибо в целом за мнения и советы. Про ДОБАВИТЬКДАТЕ прочитал тоже)
Пытаюсь пока реализовать наборами
9 StarSoft777
 
21.03.25
13:58
(6) ПриКомпоновкеРезультата() можно исп
10 Garykom
 
гуру
21.03.25
14:03
(8) Не нужны тебе наборы
Перепиши запрос без использования СрезПоследних
С ним никак не выйдет - у тебя много разных ДатаУвольнения для разных Сотрудник
Для которых надо получить КоличествоСтавок на дату увольнения каждого
11 Garykom
 
гуру
21.03.25
14:05
(10)+ Для простоты тебе нужна ВТ:
ДатаУвольнения | КоличествоСтавок
Вот сваяй ее
12 Garykom
 
гуру
21.03.25
14:07
(11)+ Она получается запросом с группировкой по Период
13 Garykom
 
гуру
21.03.25
14:13
кстати тупо так что не правильно выдает?
 //Получение даты увольнения сотрудников в периоде
ВЫБРАТЬ
	КадровыеСведения.Сотрудник КАК Сотрудник,
	КадровыеСведения.ДатаУвольнения КАК ДатаУвольнения,
	КадровыеСведения.КоличествоСтавок КАК СтавокНаДеньУвольнения
ПОМЕСТИТЬ ВтДатаУвольнения
ИЗ
	РегистрСведений.КадровыеСведения КАК КадровыеСведения
ГДЕ
	КадровыеСведения.ДатаУвольнения МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
	И КадровыеСведения.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)	
;
14 oqser
 
21.03.25
14:15
(13) так он не видит ставки вообще
15 oqser
 
21.03.25
14:24
(10) срез последних нужен, потому что нужна ставка именно на ДатаУвольнения то есть КС.срезпоследних(ДатаУвольнения,) потому что если не задавать дату, то ставок в начале может быть 0, потом его приняли, потом в середине уволили и в конце месяца снова 0. Изначально и пытаюсь подставить эту ДатаУвольнения в параметр ВтСтавокНаДатуУвольнения, потому что запрос не видит считай ставки на начало и конец.
16 oqser
 
21.03.25
14:26
Но тут да, возможно правильнее всё-таки соединить ВТ-шки, но не могу продумать логику эту правильную
17 Garykom
 
гуру
21.03.25
14:27
(15) попробуй понять последние две строки в (10)
не получится у тебя срезом ну никак!
ибо дата не одна а много!
18 oqser
 
21.03.25
14:32
(17) Допёрло, да.
Пробну как-нибудь ВТ ДатаУв и СтавкиУв, но пока не вижу логики, как вытащить ставки на дату увала, буду думать.
Спасибо