Имя: Пароль:
1C
1С v8
Особенности получения записей из оборотного регистра
0 slafor
 
18.12.22
22:41
Есть оборотный регистр Задания на работу. Делаю простой запрос, вывожу на СКД все записи регистра за определенный период (ГДЕ Период >= &ДатаНачала И Период <= &ДатаОкончания, это не обороты регистра, а просто записи). В консоли запросов выводятся все записи, в запросе на СКД - только часть. Такое ощущение, что часть записей по какой-то причине в результат не попадает.
Если в настройках в полях группировки (там одна группировка, и в ней указаны все выводимые поля) указываю, что в числе полей нужно выводить и Период - все выводится нормально, когда период убираю - опять только часть. Интересно, на основании чего убирается часть записей?
1 PR
 
18.12.22
22:44
(0) Агрегаты равны нулю
Плюс 100 первым числом, минус 100 вторым числом, в обороты не попадет, а в записи попадет
2 RomanYS
 
18.12.22
23:27
(0) запрос покажи
3 slafor
 
18.12.22
23:42
(1) В том-то и дело, что я беру не таблицу оборотов, а просто таблицу записей.

(2) Вот:

ВЫБРАТЬ
    ЗаданияНаРаботу.Период КАК Период,
    ЗаданияНаРаботу.Регистратор КАК Регистратор,
    ЗаданияНаРаботу.НомерСтроки КАК НомерСтроки,
    ЗаданияНаРаботу.Активность КАК Активность,
    ЗаданияНаРаботу.Организация КАК Организация,
    ЗаданияНаРаботу.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
    ЗаданияНаРаботу.Контрагент КАК Контрагент,
    ЗаданияНаРаботу.Договор КАК Договор,
    ЗаданияНаРаботу.ЗаказПокупателя КАК ЗаказПокупателя,
    ЗаданияНаРаботу.ВидРабот КАК ВидРабот,
    ЗаданияНаРаботу.Сотрудник КАК Сотрудник,
    ЗаданияНаРаботу.Номенклатура КАК Номенклатура,
    ЗаданияНаРаботу.Характеристика КАК Характеристика,
    ЗаданияНаРаботу.ЗагрузкаПлан КАК ЗагрузкаПлан,
    ЗаданияНаРаботу.ЗагрузкаФакт КАК ЗагрузкаФакт,
    ЗаданияНаРаботу.СуммаПлан КАК СуммаПлан,
    ЗаданияНаРаботу.СуммаФакт КАК СуммаФакт,
    ВЫРАЗИТЬ(ЗаданияНаРаботу.Комментарий КАК СТРОКА(1024)) КАК Комментарий,
    ВЫРАЗИТЬ(ЗаданияНаРаботу.ЗаказПокупателя.Комментарий КАК СТРОКА(1024)) КАК ЗаказПокупателяКомментарий,
    ЗаданияНаРаботу.ВремяНачала КАК ВремяНачала,
    ЗаданияНаРаботу.ВремяОкончания КАК ВремяОкончания,
    РАЗНОСТЬДАТ(ЗаданияНаРаботу.ВремяНачала, ЗаданияНаРаботу.ВремяОкончания, МИНУТА) / 60 КАК Трудоемкость
ИЗ
    РегистрНакопления.ЗаданияНаРаботу КАК ЗаданияНаРаботу
ГДЕ
    ЗаданияНаРаботу.Период >= &ДатаНачала
    И ВЫБОР
            КОГДА &ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ЗаданияНаРаботу.Период <= КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
            ИНАЧЕ ИСТИНА
        КОНЕЦ                                                    
{ГДЕ
    ЗаданияНаРаботу.Сотрудник = &Сотрудник}
4 slafor
 
18.12.22
23:43
+(3) В том-то и дело, что в консоли запросов выводятся все данные, это видимо в самих настройках СКД что-то не так.
5 slafor
 
18.12.22
23:58
Там такое получается:
* если я ничего не вывожу в "Выбранные поля", а указываю в верхней таблице, то поля выводятся правильно, только если среди этих полей есть поле "Период. Если его нет - выводится только часть записей. https://disk.yandex.ru/i/pBMUbQULPU8oKg
* а если я наверху пишу "Детальные записи", а в "Выбранные поля" заношу список всех полей, то все записи выводятся правильно. Даже если я не выбираю поле "Период". https://disk.yandex.ru/i/jAw__i1bAMmE4g
6 НафНаф
 
19.12.22
08:25
Показывай ресурсы СКД
7 НЕА123
 
19.12.22
09:59
Права на просмотр
?
8 slafor
 
19.12.22
11:15
(7) Права на просмотр? Но консоль запросов и сам отчет запускаются под одним и тем же пользователем. Значит, права есть.
9 НЕА123
 
19.12.22
11:20
(8)
Железная логика! (с)
10 RomanYS
 
19.12.22
11:23
(8) Запросу и консоли запросов достаточно прав на чтение, а вот СКД нужны права на просмотр. Но в данном случае проблема точно не в этом: ты бы получил ошибку или колонка бы просто не отображалась.
11 НафНаф
 
19.12.22
11:23
(9) с другой стороны, если в СКД убирают/добавляют поле Период и получают разный, но не пустой результат, то как это может быть связано с правами на просмотр?
12 НЕА123
 
19.12.22
11:27
(10)(11)
да, скорее всего дело не в этом. но я бы проверил.
13 hockeyist
 
19.12.22
13:22
(0) В свое время я лично вот из-за такого рода странностей просто перестал пользоваться СКД
14 PR
 
19.12.22
13:28
(13) Да одинеской перестал бы пользоваться
Или уж сразу мозгом
15 Dmitrii
 
гуру
19.12.22
14:22
(5) Всё верно. Так и должно быть.

СКД сгруппировала записи по указанным тобою полям. Если в перечне полей группировки указываешь Период, то выводится каждая запись с различными периодами.
Если в перечне группируемых полей поля Период нет, то одинаковые записи с разным периодом будут сгруппированы в одну.

При выводе детальных записей выводятся все записи (группировка не производится).

Добавь подчиненную группировку <Детальные записи> в вариант настроек, где есть группировка по полям "Месяц, Сотрдник, Номер заказа,...". И сразу всё увидишь.

Я не понимаю чего тебя не устраивает?
Ты указываешь поля группировки и возмущаешься, что система выполняет группировку по указанным тобою самим полям?

Неплохо бы ещё ещё в конструкторе СКД на вкладе "Наборы данных" у поля Период в колонке Роль указать "Обязательное".
16 Dmitrii
 
гуру
19.12.22
14:27
(4) >> в консоли запросов выводятся все данные.

Ты путаешь результаты запроса с результатами работы СКД.
Текс запроса для СКД - не более чем болванка. Если в запросе есть поле Период, а в СКД ты это поле не запросил (не указал в перечне полей группировки), то считай, что и в запросе его нет (если только ты не указал в ролях "Обязательное").