Имя: Пароль:
1C
1С v8
СКД. Параметр на форме не влияет на запрос
0 pavlo
 
17.08.17
15:45
Всем привет, кто нибудь сталкивался с таким:
Есть отчет, на фору его вытаскиваю, для универсальности, реквизит формы Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных

Когда добавляю в закладку СКД "Параметры" оно появляется на форме для возможности выбора.
Параметр булево по умолчанию Ложь.

Так вот запрос в итоге возвращает всегда так буд-то там всегда истина.
Касательно запроса работает верно, так как если вытащить весь его в консоль запросов и выставлять этот параметр отлично работает.
Перед выводом процессором компоновки данных смотрю этот параметр:
КомпоновщикНастроек.ПолучитьНастройки()

этот параметр есть по умлочанию стоит Ложь, но мало того что запрос срабатывает будт-то истина, еще по сути как не дергай этот параметр на форме он не меняет значение тут.

Предлполгала, что если на форму УФ вытаскивать родные ПараметрыДанных с реквизита формы, через основной реквизит Отчет то это нативно работает или 100% нужно все программно инициализировать?
1 DrShad
 
17.08.17
15:50
правильно предполагала, а почему не работает нужно смотреть, да и отлаживать СКД через консоль запросов, а не консоль СКД как то не кошерно, ибо запрос в консоли и итоговый запрос в СКД две совершенно разные вещи
2 pavlo
 
17.08.17
16:04
предполагаЛ ;)
Через консоль запросов я отлаживал. Сам запрос получается рабочим. Те же отборы на форме работают на ура взятые на форму от туда же :(
3 pavlo
 
17.08.17
16:06
Странное другое, по умолчанию там Ложь, а результат то возвращает во всех вариантах как Истина ;)
Даже если настройки компоновки не доходят, он должен был на Ложь отработать по макету.
5 DrShad
 
17.08.17
16:18
запрос в студию
6 LordCMEPTb
 
17.08.17
16:38
А вытаскивать на форму настройки компоновки принципиально или можно сформировать форму по умолчанию и в СКД параметры добавить в пользовательские настройки?
7 pavlo
 
18.08.17
09:11
5) Запрос то говорю работает в консоле запросов на ура.
6) нельзя, есть требование что нужно регистрировать время работы отчета в справочнике статистике и многое другое потому авто формой точно не обойтись. Да и Форма универсальная уже состоялась в части колонок которые определены в варианте настроек, они показываются в отдельном ТП. Отборы также берутся и пашут на ура, только успевай определяй их корректно в запросе в закладке Компоновки.
А вот с параметрами что то не взлетает. ТП не появляется если доступных нет, если есть появляется и можно выбрать, в запросе параметр используется тоже норм по консоли видно, но вот из этого ТП как то не попадает с одной стороны в запрос, с другой по умолчанию у него значение Ложь, что изначально должно выдавать другой результат, а выдает как буд-то всегда истина.
Повторюсь беру весь запрос, вставляю в консоль, заполняю автоматом параметры какие используются в запросе и заполняю их данными, этот параметр остается в ложь как изначально был и все работает как нужно.
8 DrShad
 
18.08.17
09:16
еще раз, запрос в консоли и тот что в итоге исполняет СКД могут сильно отличаться
9 pavlo
 
18.08.17
09:46
8) я понимаю, НО просто запрос вам ничего не даст, а тот что в СКД как вам дать? :)
10 h-sp
 
18.08.17
09:48
(9) опять же с настройками. Там бывают пользовательские настройки, фиксированные настройки и еще и еще хрен знает какие настройки
11 pavlo
 
18.08.17
09:49
10) параметр описан в закладках Параметры и вывожу на форму именно параметрыданных, а не пользовательские настройки, но и пользовательские делал с галкой включать в пользовательские толку нет.
12 h-sp
 
18.08.17
09:53
(11) ну что-то похоже вы какую-то хрень в параметр передаете, но это к экстрасенсам нужно.
13 pavlo
 
18.08.17
10:07
ВЫБРАТЬ
    НастройкиОрганизации.Организация КАК Организация
ПОМЕСТИТЬ НастройкиОрганизаций
ИЗ
    РегистрСведений.НастройкиОрганизации.СрезПоследних КАК НастройкиОрганизации
ГДЕ
    НастройкиОрганизации.СкрыватьОрганизации

ИНДЕКСИРОВАТЬ ПО
    Организация
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КурсыВалютСрезПоследних.Валюта,
    КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность КАК Курс
ПОМЕСТИТЬ Курсы
ИЗ
    РегистрСведений.КурсыВалют.СрезПоследних(&Период {(&Период)}, ) КАК КурсыВалютСрезПоследних
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОстаткиДоговоров.Наименование,
    ВЫБОР
        КОГДА &ПоказатьОрганизацию
            ТОГДА ОстаткиДоговоров.Организация
        ИНАЧЕ ВЫБОР
                КОГДА НастройкиОрганизаций.Организация ЕСТЬ NULL
                    ТОГДА ОстаткиДоговоров.Организация
                ИНАЧЕ NULL
            КОНЕЦ
    КОНЕЦ КАК Организация,
    ОстаткиДоговоров.Валюта,
    ОстаткиДоговоров.ВалютаКод,
    ОстаткиДоговоров.Курс,
    ОстаткиДоговоров.Сумма,
    ОстаткиДоговоров.СуммаВал
ИЗ
    ОстаткиДоговоров КАК ОстаткиДоговоров
        ЛЕВОЕ СОЕДИНЕНИЕ НастройкиОрганизаций КАК НастройкиОрганизаций
        ПО ОстаткиДоговоров.Организация = НастройкиОрганизаций.Организация
{ГДЕ
    ОстаткиДоговоров.Организация.*,
    ОстаткиДоговоров.Валюта.*}
14 pavlo
 
18.08.17
10:08
12) Прикол в том, что я пишу же в параметрах стоит значение по умолчанию ЛОЖЬ.
А запрос отрабатывает как Истина или возможно там НЕОПРЕДЕЛЕНО как то попадает, но до компоновки значение вроде доходит.
15 h-sp
 
18.08.17
10:12
что за параметр имеется в виду?
16 h-sp
 
18.08.17
10:14
что-то не вижу тут булевых параметров в запросе.
17 pavlo
 
18.08.17
10:16
в последнем запросе &ПоказатьОрганизацию
18 h-sp
 
18.08.17
10:21
(17) ну похоже дальше срабатывает

                КОГДА НастройкиОрганизаций.Организация ЕСТЬ NULL
                    ТОГДА ОстаткиДоговоров.Организация
19 h-sp
 
18.08.17
10:24
(17) вообще в чем смысл этого выражения? всегда ведь будет

ОстаткиДоговоров.Организация

независимо от  вашего параметра.
20 DrShad
 
18.08.17
10:30
во-первых параметры в финурные скобки, во-вторых что это?
&ДатаОтчета {(&ДатаОтчета)}
21 DrShad
 
18.08.17
10:31
да и вообще весь запрос какой-то пышет излишеством
22 DrShad
 
18.08.17
10:32
(19) +1
23 DrShad
 
18.08.17
10:39
попробуй написать так
КОГДА &ПоказатьОрганизацию = ИСТИНА
24 Вафель
 
18.08.17
10:57
попробуй
    ВЫБОР
        КОГДА &ПоказатьОрганизацию
            ТОГДА 1
        ИНАЧЕ ВЫБОР
                КОГДА НастройкиОрганизаций.Организация ЕСТЬ NULL
                    ТОГДА 2
                ИНАЧЕ 3
            КОНЕЦ
    КОНЕЦ КАК Организация,

и все поймешь
25 pavlo
 
18.08.17
11:17
(23)(24) Излишества нет, в первом запросе собираются организации только те, по которым есть запрет на показ
а параметр &ПоказатьОрганизацию дает возможность если очень надо обойти это и если он ИСТИНА то показывается вне зависимости от наличия флага в регистре настроек организаций.
Можно его в условие джойна поставить и на NULL смотреть, можно еще разными способами, сути не меняет.
Этот запрос как я и говорил работает корректно в консоле, но не в СКД :)
26 pavlo
 
18.08.17
11:18
(19)(20) не будет всегда, так как там не все организации в первом запросе, повторюсь он в консоле отлично работает :) И меняя этот параметр все происходит то, что нужно.
(20) фигурные это описание компоновки же в макете ;)
27 DrShad
 
18.08.17
11:22
(26) так вот в запросе он у тебя знает какой тип параметра, а в СКД понятия не имеет
28 DrShad
 
18.08.17
11:23
выведи Поле
ТИПЗНАЧЕНИЯ(&ПоказатьОрганизацию)
29 pavlo
 
18.08.17
11:25
(24) все отлично отрабатывает :)
Ставлю &ПоказатьОрганизацию = Истина
Возвращает 1
Ставлю &ПоказатьОрганизацию = Ложь

Организации описанные как скрывать возвращают 3 другие 2
как и нужно :)
30 pavlo
 
18.08.17
11:25
(28) Булево вернул
31 pavlo
 
18.08.17
12:04
вывел в отчете этот параметров, на форме стоит ЛОЖЬ, а в отчете показывает ИСТИНА тоесть запрос то работает, но параметр не выставляется зараза :(
32 DrShad
 
18.08.17
12:24
что-то с вашей супер формой не то
33 pavlo
 
18.08.17
13:09
(32) кто бы сомневался, вот бы еще найти что, пока ищу ;)
34 h-sp
 
18.08.17
13:16
(25) но этот кусок всегда даст в ответе ОстаткиДоговоров.Организация. В любом случае, неважно какой параметр и неважно какие настройки.
35 DrShad
 
18.08.17
13:18
(33) а что искать? она не нужна в принципе - пользуйте ОбщуюФорму + прирост в показателях по времени выполнения отчетов, которое нужно считать не на форме
36 catena
 
18.08.17
13:38
(34)Почему? Если в регистре НастройкиОрганизаций есть организация со значением СкрыватьОрганиции, будет значение NULL же.
37 pavlo
 
18.08.17
13:51
(35) это не типовая ;)
(34) в регистре в реквизите СкрыватьОрганиции не может быть NULL там булево или Ложь или Истина
38 pavlo
 
18.08.17
13:54
Починил. Всем спасибо.

Не могу понять почему так но суть такая, если в консоле в виртуальную таблицу РегистрСведений.НастройкиОрганизации.СрезПоследних не передавать дату, то по умолчанию это текущая что устраивает как раз.

А вот в СКД если пусто оставить зараза, то дата пусто и в итоге этот первый запрос просто пустой :(
Не нравится, но пришлось в коде устанавливать текущую дату программно :( Почему текущая, потому что не важно на когда отчет, важно скрывать исходя из текущих настроек.
39 DrShad
 
18.08.17
14:07
(38) опять же зачем в коде ставить текущую дату, если можно параметром установить из стандартного периода "Сегодня"
40 pavlo
 
18.08.17
14:13
(39) в смысле "Начало этого дня" а это идея, спасибо забыл совсем про это.
41 pavlo
 
18.08.17
14:19
(39) странно но КомпоновщикНастроек.ПолучитьНастройки()
там это поле из пользователских хоть и стоит "начало текущего дня"  заполнено как пустое :( 01.01.0001 0:00:00
42 DrShad
 
18.08.17
14:35
в параметрах
http://SSMaker.ru/a2f7edfc/
43 pavlo
 
18.08.17
15:17
(42) Оо такого не знал, спасибо огромное.
Но его как то перевести в дату нужно же? Иначе просто &ТекДата с типом стандартный период не понимает и возвращает пусто.
44 Вафель
 
18.08.17
15:19
Откажись от автозаполнения настроек
45 pavlo
 
18.08.17
15:23
(44) всмысле? в настройках варианта? так там и так колонки не автоматом а руками выбраны.
Или ты про авто заполнение набора данных, а что это дает если отключить? кроме того что руками все придется описывать
46 pavlo
 
18.08.17
15:54
(42) аа понял создаем ее, а потом свой параметр через выражение от этого, спасибо