|
Собрать в результате запроса заполненные поля РС | ☑ | ||
---|---|---|---|---|
0
Dirk Diggler
28.06.24
✎
12:23
|
Есть периодический РС с кучкой полей. Заполнены они в разнобой. Ну например, поля A,B,C и 4 записи
A | B | C | ----------- 0 | 0 | А | 1 | 0 | | 0 | 0 | B | 2 | 0 | | Нужно собрать срез последних с последними заполненными значениями в полях. Если я просто соберу срез последних, то получу [2, 0, ""] Если в условиях отбора таблицы написать A<>0, B<>0, C<>"", то я получу пустой результат запроса, так как B всегда равно нулю. А надо получить запись с результатом 2, 0, B Какие варинаты, кроме получения каждого поля из своей отдельной таблицы среза последних? |
|||
1
lEvGl
28.06.24
✎
12:31
|
свой срез последних
макисмум период в вт где <> 0 <> 0 <> 0, связь с первичной таблицей а, что, где |
|||
2
Dmitrii
28.06.24
✎
12:29
|
(0) >> Нужно собрать срез последних с последними заполненными значениями в полях.
>> А надо получить запись с результатом 2, 0, B Вы определитесь с условиями. Что конкретно Вам надо. |
|||
3
Dirk Diggler
28.06.24
✎
12:33
|
(2) ну не знаю, как правильно сформулировать. нужна 1 строка с данными, содержащая последние заполненные значения, или дефолтное значение для типа, если там везде пусто.
|
|||
4
Dmitrii
28.06.24
✎
12:33
|
Если Вам нужна не конкретная запись, а значения из разных записей, то сделайте объединение или соединение трёх срезов. Первый с условием A<>0, второй B<>0, третий с условием C<>"".
|
|||
5
lEvGl
28.06.24
✎
12:36
|
(4) он так и говорит "не хочу это"
эти поля - измерения? |
|||
6
Лирик
28.06.24
✎
16:26
|
Регистр криво спроектирован, раз такая задача.
Измерение Объект Ресурсы А Б С а надо: Измерения Объект Ресурс Ресурсы ЗначениеРесурса |
|||
7
mikecool
28.06.24
✎
16:15
|
(3) формируешь ВТ, как у тебя в примере(надеюсь сможешь), добавляешь к ней период для эмуляции регистра
и пробуешь на этом примере - как заработает, пробуешь на регистре |
|||
8
mikecool
28.06.24
✎
16:16
|
(6) чем это поможет?
|
|||
9
mikecool
28.06.24
✎
16:16
|
+7 и пробовать вариант (1)
|
|||
10
Ненавижу 1С
28.06.24
✎
16:17
|
(0) A,B,C - это ресурсы или измерения?
|
|||
11
Одинист
28.06.24
✎
18:47
|
(0) Количество колонок конечное?
|
|||
12
Одинист
28.06.24
✎
18:57
|
Как то так, но можно наверное изящнее.
ВЫБРАТЬ взДанные.Измерения КАК Измерения, взДанные.ИмяКолонки КАК ИмяКолонки, взДанные.Период КАК Период, взДанные.Значение КАК Значение ПОМЕСТИТЬ втДанные ИЗ (ВЫБРАТЬ ФИОФизическихЛиц.ФизическоеЛицо КАК Измерения, "А" КАК ИмяКолонки, ФИОФизическихЛиц.Период КАК Период, ФИОФизическихЛиц.Фамилия КАК Значение ИЗ РегистрСведений.ФИОФизическихЛиц КАК ФИОФизическихЛиц ГДЕ ФИОФизическихЛиц.Фамилия <> "" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ФИОФизическихЛиц.ФизическоеЛицо, "Б", ФИОФизическихЛиц.Период, ФИОФизическихЛиц.Имя ИЗ РегистрСведений.ФИОФизическихЛиц КАК ФИОФизическихЛиц ГДЕ ФИОФизическихЛиц.Имя <> "" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ФИОФизическихЛиц.ФизическоеЛицо, "В", ФИОФизическихЛиц.Период, ФИОФизическихЛиц.Отчество ИЗ РегистрСведений.ФИОФизическихЛиц КАК ФИОФизическихЛиц ГДЕ ФИОФизическихЛиц.Отчество <> "") КАК взДанные ИНДЕКСИРОВАТЬ ПО Измерения, ИмяКолонки, Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ взПоследниеЗначения.Измерения КАК Измерения, взПоследниеЗначения.ИмяКолонки КАК ИмяКолонки, взПоследниеЗначения.Период КАК Период, взПоследниеЗначения.Значение КАК Значение ПОМЕСТИТЬ втПоследниеЗначения ИЗ (ВЫБРАТЬ втДанные.Измерения КАК Измерения, втДанные.ИмяКолонки КАК ИмяКолонки, втДанные.Период КАК Период, МАКСИМУМ(втДанные.Значение) КАК Значение ИЗ (ВЫБРАТЬ втДанные.Измерения КАК Измерения, втДанные.ИмяКолонки КАК ИмяКолонки, МАКСИМУМ(втДанные.Период) КАК МаксПериод ИЗ втДанные КАК втДанные СГРУППИРОВАТЬ ПО втДанные.Измерения, втДанные.ИмяКолонки) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ втДанные КАК втДанные ПО ВложенныйЗапрос.Измерения = втДанные.Измерения И ВложенныйЗапрос.ИмяКолонки = втДанные.ИмяКолонки И ВложенныйЗапрос.МаксПериод = втДанные.Период СГРУППИРОВАТЬ ПО втДанные.Измерения, втДанные.ИмяКолонки, втДанные.Период) КАК взПоследниеЗначения ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ взРезультат.Измерения КАК Измерения, МАКСИМУМ(взРезультат.Период) КАК Период, МАКСИМУМ(взРезультат.КолонкаА) КАК КолонкаА, МАКСИМУМ(взРезультат.КолонкаБ) КАК КолонкаБ, МАКСИМУМ(взРезультат.КолонкаВ) КАК КолонкаВ ИЗ (ВЫБРАТЬ втПоследниеЗначения.Измерения КАК Измерения, втПоследниеЗначения.Период КАК Период, втПоследниеЗначения.Значение КАК КолонкаА, "" КАК КолонкаБ, "" КАК КолонкаВ ИЗ втПоследниеЗначения КАК втПоследниеЗначения ГДЕ втПоследниеЗначения.ИмяКолонки = "А" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ втПоследниеЗначения.Измерения, втПоследниеЗначения.Период, "", втПоследниеЗначения.Значение, "" ИЗ втПоследниеЗначения КАК втПоследниеЗначения ГДЕ втПоследниеЗначения.ИмяКолонки = "Б" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ втПоследниеЗначения.Измерения, втПоследниеЗначения.Период, "", "", втПоследниеЗначения.Значение ИЗ втПоследниеЗначения КАК втПоследниеЗначения ГДЕ втПоследниеЗначения.ИмяКолонки = "В") КАК взРезультат СГРУППИРОВАТЬ ПО взРезультат.Измерения |
|||
13
Лирик
30.06.24
✎
10:07
|
(8) Это поможет решить задачу из (0) одним запросом к срезу последних регистра сведений.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |