|
Отчет СКД из 2 наборов данных | ☑ | ||
---|---|---|---|---|
0
ogion83
07.04.21
✎
11:28
|
День добрый.
Делаю отчет в СКД. 2 набора данных по остаткам и оборотам, связываю по номенклатуре, группировка по номенклатуре и документам. Все норм, но не удается сделать так чтобы выводились корректно документы из этих двух запросов. Выводятся документы из 1 запроса, а из другого нет. Думал сгруппировать документы в настройках структуры отчета, но выдает ошибку, что нельзя. |
|||
1
fisher
07.04.21
✎
11:32
|
Связи наборов данных в СКД работают по принципу левого соединения. Но если ухитриться наложить отбор только на данные "правого" набора, то соединение превращается во внутреннее.
Если у тебя проблема за пределами этих особенностей - скорее всего неправильно настроены условия соединения. ЗЫ. Мой стандартный совет - использовать наборы данных только в исключительных случаях, а не для банальной декомпозиции запроса. Просто потому, что это менее универсально. |
|||
2
ogion83
07.04.21
✎
11:35
|
Мне надо сравнить движения по документам из двух регистров (по одинаковым наименованиям номенклатуры) Как тогда лучше это сделать?
|
|||
3
ogion83
07.04.21
✎
11:37
|
Думал сначала сделать в СКД: запрос по 1 регистру и вложенный запрос по 2, но не знаю как получить ресурсы из 2 запроса
|
|||
4
fisher
07.04.21
✎
11:39
|
По одним и тем же регистраторам?
ОБЪЕДИНИТЬ ВСЕ с последующим СГРУППИРОВАТЬ ПО Регистратор, Номенклатура |
|||
5
toypaul
гуру
07.04.21
✎
11:39
|
здесь рассматривали подобный отчет https://learn.programstore.ru/video_kurs_skd
но если данные в одной базе 2 набора ни к чему. делать надо через объединение (в запросе) |
|||
6
ogion83
07.04.21
✎
11:41
|
(4) Могут быть и разные регистраторы
|
|||
7
ogion83
07.04.21
✎
11:42
|
(5) Создавать вложенный запрос?
|
|||
8
fisher
07.04.21
✎
11:43
|
(6) То есть, нужна группировка до номенклатуры но с возможностью детализации до регистраторов из обоих регистров? Тогда объединение без группировки. Группировка по номенклатуре будет уже в настройках СКД.
|
|||
9
ogion83
07.04.21
✎
11:45
|
Да к примеру у Номенклатура1 по 1 регистру приход 5, по второму приход 6 и надо вывести список документов по обоим регистрам чтобы найти где не совпало.
|
|||
10
fisher
07.04.21
✎
11:48
|
ВЫБРАТЬ Номенклатура, Регистратор, Приход КАК Приход1, 0 КАК Приход2
ИЗ Регистр1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Номенклатура, Регистратор, 0, Приход ИЗ Регистр2 |
|||
11
fisher
07.04.21
✎
11:51
|
В вычисляемых полях СКД можешь добавить поле разницы между Приход1 и Приход2, в условном оформлении включить красный цвет фона для ненулевой разницы по номенклатуре и наслаждаться.
|
|||
12
ogion83
07.04.21
✎
11:51
|
Мне надо видеть, что этот приход был по 1 регистру, а этот приход по 2.
|
|||
13
fisher
07.04.21
✎
11:52
|
(12) А у тебя для этого разные колонки для приходов по разным регистрам. Не тупи :)
|
|||
14
ogion83
07.04.21
✎
11:54
|
ВЫБРАТЬ Номенклатура, Регистратор, Приход КАК Приход1, Расход КАК Расход1
ИЗ Регистр1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Номенклатура, Регистратор, Приход Как Приход2, Расход Как Расход2 ИЗ Регистр2 |
|||
15
ogion83
07.04.21
✎
11:54
|
Так?
|
|||
16
fisher
07.04.21
✎
11:56
|
(15) Нет. Колонки для объединяемых наборов общие, определяются только порядком, а названия берутся по первому набору. Смотри (10)
|
|||
17
ogion83
07.04.21
✎
11:56
|
(14) Не так. Понял
|
|||
18
fisher
07.04.21
✎
12:05
|
Без хорошего владения языком запросов в 1С никуда.
Мой путь был через https://www.sql-ex.ru (Правда тогда он назывался иначе и не знаю, насколько он жив сейчас). Отличный ресурс для практического овладения. Это не 1С, но язык запросов 1С является диалектом классического sql, так что вполне. |
|||
19
ogion83
07.04.21
✎
12:05
|
Сделал как в (10) Стало лучше, только почему то при включении группировки по документам не показывает остатки начальные и конечные по 2 регистру
|
|||
20
ogion83
07.04.21
✎
12:07
|
Может не хватает где нибудь ЕстьNull ?
|
|||
21
ogion83
07.04.21
✎
12:08
|
ВЫБРАТЬ
СырьеОстаткиИОбороты.Регистратор, СырьеОстаткиИОбороты.ПериодСекунда, СырьеОстаткиИОбороты.МПЗ, СырьеОстаткиИОбороты.КоличествоНачальныйОстаток КАК НОС, 0 КАК НОШ, СырьеОстаткиИОбороты.КоличествоПриход КАК ПС, 0 КАК ПШ, СырьеОстаткиИОбороты.КоличествоРасход КАК РС, 0 КАК РШ, СырьеОстаткиИОбороты.КоличествоКонечныйОстаток КАК КОС, 0 КАК КОШ ИЗ РегистрНакопления.Сырье.ОстаткиИОбороты(, , Авто, , ) КАК СырьеОстаткиИОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ШихтаМастеровОстаткиИОбороты.Регистратор, ШихтаМастеровОстаткиИОбороты.ПериодСекунда, ШихтаМастеровОстаткиИОбороты.Шихта, 0, ШихтаМастеровОстаткиИОбороты.КоличествоНачальныйОстаток, 0, ШихтаМастеровОстаткиИОбороты.КоличествоПриход, 0, ШихтаМастеровОстаткиИОбороты.КоличествоРасход, 0, ШихтаМастеровОстаткиИОбороты.КоличествоКонечныйОстаток ИЗ РегистрНакопления.ШихтаМастеров.ОстаткиИОбороты(, , Авто, , ) КАК ШихтаМастеровОстаткиИОбороты |
|||
22
ogion83
07.04.21
✎
12:11
|
Как то выборочно делает при группировке по докам: Нач остатки по 2 регистру не показывает никакие, а конечные остатки по нему только итоговые выдает
|
|||
23
fisher
07.04.21
✎
12:14
|
(19) Честно говоря, не приходилось в одном отчете одновременно детализировать остатки по двум разным регистрам. Поэтому я ни в чем не уверен :)
Первым делом я бы проверил настройку ролей полей в СКД (на ИТС есть пара статей про это, самая полезная - как корректно настраивать "собственные" остатки, а не из регистра остатков). |
|||
24
fisher
07.04.21
✎
12:16
|
Во всем, о чем писалось выше, я уверен на уровне оборотов. А вот расчет остатков СКД - это отдельная магия со своими особенностями.
|
|||
25
ogion83
07.04.21
✎
12:50
|
Вот у остатков 1 регистра в Ролях указано имя "Группа", а у 2 регистра "Группа2" Может в этом дело, хотя пробовал везде указать "Группа" но выдает ошибку
|
|||
26
ogion83
07.04.21
✎
12:56
|
Обнаружил: в Начальных остатках, если есть вес у 1 регистра, то показывает 0 у второго и наоборот.
|
|||
27
Cthulhu
07.04.21
✎
13:08
|
связь нескольких наборов данных - это простейший случай !для убогих" и для экономии времени.
пиши дин набор - серьезный запрос. |
|||
28
ogion83
07.04.21
✎
13:29
|
Вот решение: https://infostart.ru/1c/articles/702234/
|
|||
29
ogion83
07.04.21
✎
13:29
|
Сделал как там и все пашет как часы.
|
|||
30
fisher
07.04.21
✎
13:40
|
(28) Интересно. То есть все полечилось добавлением неявного обязательного измерения-разделителя?
|
|||
31
ogion83
07.04.21
✎
13:42
|
(30) Ага. Вот как до такого догадаться?
|
|||
32
fisher
07.04.21
✎
13:46
|
(31) Видимо "Опыт - сын ошибок трудных, и гений - парадоксов друг". Чтобы поймать СКД - нужно думать как СКД!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |