Имя: Пароль:
1C
1С v8
СКД. Глюк при вычислении ресурса
,
0 aleks_default
 
03.08.20
17:32
Платформа 8.3.16.1148. Написал отчет по денежным средствам на СКД. В отчете берется остаток безналичных денежных средств (СуммаОстаток) на дату начала отчета в разрезе банковского счета и соединяются с таблицей дней (дни беру из производственного календаря).Таким образом получается таблица, где на каждый день по банковскому счета одинаковая сумма остатка. Потом эту таблицу соединяю с таблицей графика движения денежных средств по дням, но это уже не важно. Потом на последней закладке СКД отчет группируется по банковским счетам и др. полям. Вопрос в том, что когда ставлю в расчете ресурса на уровне банковского счета ВычислитьВыражение("Максимум(СуммаОстаток)","БанковскийСчет"), то по всем счетам кроме двух получаю правильную цифру. А по этим двум - какие-то вообще левые цифры (это не дубли!).
Проверял в консоли запросов, в общей итоговой таблице (до момента когда СКД еще не наложило группировки) - цифры правильные по всем счетам. Параметры выставлены одинаковые, что в отчете, что в консоли запросов. Проверил!
Даже сделал такую вещь. Выгрузил из отчета схему в файл, потом в этой же базе открыл консоль компоновок данных из инструментов разработчика и загрузил эту схему туда. Сформировал результат в консоли компоновок данных - результат верный по всем счетам! Возможно дело в том что инструменты разработчика работают в только режиме обычного приложения, поэтому там все правильно, а в тонком клиенте глючит?
Что вообще произошло со старой доброй СКД? Я подобных отчетов уже не один сделал, никогда не было проблем. Это какие-то глюки данной платформы?
1 aleks_default
 
03.08.20
19:05
Сделал вариант отчета с выводом просто детальных записей, без группировок - тоже некорректные цифры. И главное, что странно, только по двум счетам из примерно тридцати.
2 Franchiser
 
гуру
03.08.20
19:26
Покажи запрос
3 timurhv
 
04.08.20
01:05
(0) Да было такое, тупил часа 2, пока не нашел свою же ошибку.
Проверить субконто по этим счетам и их порядок, параметры в СКД. Ну и просто вывод "СуммаОстаток" без выражения максимума в детальных записях что выдает?
И для чего нужно: "ВычислитьВыражение("Максимум(СуммаОстаток)","БанковскийСчет")" если остатки и так в разрезе банковских счетов?
4 toypaul
 
гуру
04.08.20
07:51
Почитать вот это http://catalog.mista.ru/1c/articles/1224249/

возможно твой исходный запрос СКД изменяет на другой
5 toypaul
 
гуру
04.08.20
07:54
если схема, загруженная в консоль дает правильный результат, то ... тут какой-то другой глюк. что-то с кэшем.
6 vde69
 
04.08.20
08:11
Иногда имеет смысл запрос выполнять отдельно а потом результат пихать в скд как источникданных
7 aleks_default
 
04.08.20
11:06
Вобщем, народ, вы не поверите... дело было в одной маленькой фигне. А я уже весь отчет несколько раз переписал
8 aleks_default
 
04.08.20
11:15
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, ДЕНЬ) КАК День
ПОМЕСТИТЬ ТаблицаДней
ИЗ
    РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
ГДЕ
    ДанныеПроизводственногоКалендаря.Дата >= &НачалоПериода
    И ДанныеПроизводственногоКалендаря.Дата <= &КонецПериода

СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(ДанныеПроизводственногоКалендаря.Дата, ДЕНЬ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДенежныеСредстваБезналичныеОстатки.БанковскийСчет КАК БанковскийСчет,
    ДенежныеСредстваБезналичныеОстатки.СуммаРеглОстаток КАК СуммаОстаток
ПОМЕСТИТЬ ОстаткиНаНачало
ИЗ
    РегистрНакопления.ДенежныеСредстваБезналичные.Остатки(&НачалоПериода, ) КАК ДенежныеСредстваБезналичныеОстатки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Вложенный.День КАК День,
    Вложенный.ПоступлениеСписание КАК ПоступлениеСписание,
    Вложенный.БанковскийСчет КАК БанковскийСчет,
    Вложенный.Подразделение КАК Подразделение,
    Вложенный.СтатьяДДС КАК СтатьяДДС,
    Вложенный.Контрагент КАК Контрагент,
    СУММА(Вложенный.Сумма) КАК Сумма,
    СУММА(Вложенный.СуммаОборот) КАК СуммаОборот
ПОМЕСТИТЬ ГрафикПоДням
ИЗ
    (ВЫБРАТЬ
        НАЧАЛОПЕРИОДА(ГрафикПлатежей.ДатаПлатежа, ДЕНЬ) КАК День,
        ГрафикПлатежей.ПоступлениеСписание КАК ПоступлениеСписание,
        ГрафикПлатежей.БанковскийСчетКасса КАК БанковскийСчет,
        ГрафикПлатежей.Подразделение КАК Подразделение,
        ГрафикПлатежей.СтатьяДвиженияДенежныхСредств КАК СтатьяДДС,
        ГрафикПлатежей.ПлательщикПолучатель КАК Контрагент,
        ГрафикПлатежей.Сумма * ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 0) * КурсыВалютСрезПоследнихРегл.Кратность / (КурсыВалютСрезПоследнихРегл.Курс * ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1)) КАК Сумма,
        ГрафикПлатежей.Сумма * ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 0) * КурсыВалютСрезПоследнихРегл.Кратность / (КурсыВалютСрезПоследнихРегл.Курс * ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1)) * ВЫБОР
            КОГДА ГрафикПлатежей.ПоступлениеСписание = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияДенежныхСредств.Списание)
                ТОГДА -1
            ИНАЧЕ 1
        КОНЕЦ КАК СуммаОборот
    ИЗ
        РегистрСведений.ГрафикПлатежей КАК ГрафикПлатежей
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&НачалоПериода, ) КАК КурсыВалютСрезПоследних
            ПО ГрафикПлатежей.Валюта = КурсыВалютСрезПоследних.Валюта
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&НачалоПериода, ) КАК КурсыВалютСрезПоследнихРегл
            ПО (КурсыВалютСрезПоследнихРегл.Валюта = &ВалютаРегл)            
    ГДЕ
        ГрафикПлатежей.ДатаПлатежа МЕЖДУ &НачалоПериода И &КонецПериода
        И ГрафикПлатежей.БанковскийСчетКасса <> НЕОПРЕДЕЛЕНО
        И ГрафикПлатежей.БанковскийСчетКасса <> ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка)
        И ГрафикПлатежей.БанковскийСчетКасса <> ЗНАЧЕНИЕ(Справочник.Кассы.ПустаяСсылка)
        И (ГрафикПлатежей.ОбластьПланирования В (&ОбластиПланирования)
                ИЛИ &НеОтбиратьПоОбластямПланирования)
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        НАЧАЛОПЕРИОДА(ДенежныеСредстваБезналичные.Период, ДЕНЬ),
        ВЫБОР
            КОГДА ДенежныеСредстваБезналичные.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияДенежныхСредств.Поступление)
            ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияДенежныхСредств.Списание)
        КОНЕЦ,
        ДенежныеСредстваБезналичные.БанковскийСчет,
        ДенежныеСредстваБезналичные.ПлатежныйДокумент.Подразделение,
        ДенежныеСредстваБезналичные.СтатьяДвиженияДенежныхСредств,
        ДенежныеСредстваБезналичные.АналитикаУчетаПоПартнерам.Контрагент,
        ДенежныеСредстваБезналичные.СуммаРегл,
        ДенежныеСредстваБезналичные.СуммаРегл * ВЫБОР
            КОГДА ДенежныеСредстваБезналичные.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
                ТОГДА -1
            ИНАЧЕ 1
        КОНЕЦ
    ИЗ
        РегистрНакопления.ДенежныеСредстваБезналичные КАК ДенежныеСредстваБезналичные
    ГДЕ
        ДенежныеСредстваБезналичные.Период МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&НачалоПериода, ДЕНЬ)) КАК Вложенный

СГРУППИРОВАТЬ ПО
    Вложенный.День,
    Вложенный.ПоступлениеСписание,
    Вложенный.БанковскийСчет,
    Вложенный.Подразделение,
    Вложенный.СтатьяДДС,
    Вложенный.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаДней.День КАК День,
    ОстаткиНаНачало.БанковскийСчет КАК БанковскийСчет,
    ОстаткиНаНачало.СуммаОстаток КАК СуммаОстаток
ПОМЕСТИТЬ ОстаткиПоДням
ИЗ
    ТаблицаДней КАК ТаблицаДней,
    ОстаткиНаНачало КАК ОстаткиНаНачало
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОстаткиПоДням.День КАК День,
    ОстаткиПоДням.БанковскийСчет КАК БанковскийСчет,
    ГрафикПоДням.ПоступлениеСписание КАК ПоступлениеСписание,
    ГрафикПоДням.Подразделение КАК Подразделение,
    ГрафикПоДням.СтатьяДДС КАК СтатьяДДС,
    ГрафикПоДням.Контрагент КАК Контрагент,
    ЕСТЬNULL(ГрафикПоДням.Сумма, 0) КАК Сумма,
    ЕСТЬNULL(ГрафикПоДням.СуммаОборот, 0) КАК СуммаОборот,
    ОстаткиПоДням.СуммаОстаток КАК СуммаОстаток
ИЗ
    ОстаткиПоДням КАК ОстаткиПоДням
        ЛЕВОЕ СОЕДИНЕНИЕ ГрафикПоДням КАК ГрафикПоДням
        ПО ОстаткиПоДням.День = ГрафикПоДням.День
            И ОстаткиПоДням.БанковскийСчет = ГрафикПоДням.БанковскийСчет
9 aleks_default
 
04.08.20
11:15
Это запрос
10 aleks_default
 
04.08.20
11:19
(3) "И для чего нужно: "ВычислитьВыражение("Максимум(СуммаОстаток)","БанковскийСчет")" если остатки и так в разрезе банковских счетов"
Остатки то да в разрезе банковских счетов, но еще и в разрезе дней.
11 aleks_default
 
04.08.20
11:33
(5)Не знаю как это назвать глюк или фича. Раньше не сталкивался, и нигде вроде в разных курсах по СКД не видел такого, но теперь буду знать. Еще небольшой момент, который я в первом посте не описал. Вобщем структура группировок отчета такая. https://pastenow.ru/64f82e302d221f76395476140eb2b0a6
12 aleks_default
 
04.08.20
11:53
В общем суть в том что при использовании в запросе виртуальной таблицы (в моем случае я так понимаю это таблица остатков), в закладку "Параметры" СКД автоматом добавляется параметр "Период".
И на этой закладке есть последняя колонка "Использование". Так как все остальные параметры у меня обязательные к использованию, то я случайно и для этого параметра "Период" указал использование "Всегда". После этого видимо результат отчета и начал выдавать какую-то фигню.
После целого дня разных экзерциций над отчетом мои руки добрались до этого параметра и использование было установлено в "Авто". И произошло волшебство! Отчет по этим двум злосчастным счетам стал показывать правильные цифры! Алилуя!
Не знаю как этот параметр и его использование "всегда", влияет на таблицу остатков соединенную с таблицей дней, но видимо как-то влияет, хотя я так и не понял почему только по двум счетам, а по остальным все нормально было.
В общем резюмирую. Для параметров виртуальных таблиц, добавляемых СКД автоматически на закладку Параметры, нельзя устанавливать использование "Всегда", только в "Авто".
13 aleks_default
 
04.08.20
11:56
(5) Вот и мне было такое непонятно. Видимо в консоль компоновки данных из файла схемы не переносится это значение использования.
14 toypaul
 
гуру
04.08.20
12:08
(12) если у параметра СКД стоит Всегда и он не связан с параметром запроса, то значение передается из параметра СКД. по ссылке, которою я дал во второй части все подробно расписано
15 aleks_default
 
04.08.20
12:30
(14) А конкретно где про это. Там по ссылке только про использование различных консолей...
16 toypaul
 
гуру
04.08.20
12:49
17 aleks_default
 
04.08.20
14:46
Нет там ничего про колонку использование