|
Передача данных как параметр из ВТ в другую ВТ
Garykom, oqser, comp2006, Мультук, d4rkmesa, StarSoft777, arsik, yurikmellon2, zenik, Кир Пластелинин, H A D G E H O G s, Fedor-1971, John D, Hawk_1c, , Волшебник, ptiz, Crusher, Dirk Diggler, Bazooka, Ёпрст, Ivanich, Доминошник, TormozIT, Amra, Timon1405, Kongo2019, maxab72, banco, AlvlSpb, Bad_Aleks, Михаил_, Eiffil123, takefive, Михаил Козлов, Климов Сергей, abfm, , orakool, dis12345, Галахад, RVN, piter3, Сукпун, kubik_live, vyaz, Chameleon1980, roman383, sikuda, mikecool, formista2000, ildary, igouranga, calmius, petr_ivanov, JohnGilbert, Лирик, dmt, Somebody, sapravka, Дмитрий, PuhUfa, eddy_n, elka302, FirstLineSupport, Chai Nic, Ненавижу 1С, глазковыколупыватель, ReaLg, Bigbro, Гипервизор, Prog_man, who respawn, DiMel_77, SleepyHead
| ☑ |
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) Допёрло, да.
Пробну как-нибудь ВТ ДатаУв и СтавкиУв, но пока не вижу логики, как вытащить ставки на дату увала, буду думать.
Спасибо
|
|