8.х Работа с параметрами в СКД

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Мистер Смит, 19 июн 2012.

  1. TopicStarter Overlay
    Мистер Смит
    Offline

    Мистер Смит Опытный в 1С

    Регистрация:
    29 фев 2012
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Добрый день.
    Задача состоит в следующем.
    Отчте написан в скд, устанавливается 5 параметров, два их которых имеют тип "список значений". Теперь нужно сделать так, чтобы у пользователя была возможность не вводить эти два параметра, т.е. если юзер параметры ввел то запрос формируется согласно введеным параметрам, если не ввел (список значений пуст), то выводится отчет без этих параметров.
    Если бы отчет был написан не в скд, то проблема бы решалась за 5 минут, в коде достаточно было бы прописать условие проверки параметра, если список значений пуст то вместо параметра подставить истина ил вообще в запрос ничего не подставлять, но как это реализовать в скд??

    Сейчас пытаюсь обойти это условиями в запросе выглядит так:

    Код:
    "ВЫБРАТЬ
    | ит_СебестоимостьПродукцииУУ.ПодразделениеПроизводитель,
    | ит_СебестоимостьПродукцииУУ.Продукция,
    | ит_СебестоимостьПродукцииУУ.ЭтоПостояннаяЗатрата,
    | ит_СебестоимостьПродукцииУУ.СтатьяЗатратПолуфабриката,
    | ит_СебестоимостьПродукцииУУ.Полуфабрикат,
    | ит_СебестоимостьПродукцииУУ.СтатьяЗатрат КАК СтатьяЗатрат,
    | ит_СебестоимостьПродукцииУУ.Затрата,
    | СУММА(ит_СебестоимостьПродукцииУУ.Стоимость + ит_СебестоимостьПродукцииУУ.РазницаСМСФО) КАК Стоимость,
    | СУММА(ит_СебестоимостьПродукцииУУ.КоличествоПФ) КАК КоличествоПФ,
    | СУММА(ит_СебестоимостьПродукцииУУ.Количество) КАК Количество,
    | СУММА(ит_СебестоимостьПродукцииУУ.КоличествоЗатраты) КАК КоличествоЗатраты,
    | КоличествоПродукции.Количество КАК ОбъемПроизводства,
    | ит_СебестоимостьПродукцииУУ.НоменклатурнаяГруппаПродукции,
    | ит_СебестоимостьПродукцииУУ.ПодразделениеЗатраты,
    | ит_СебестоимостьПродукцииУУ.Организация,
    | ит_СебестоимостьПродукцииУУ.ВидДвиженияРегистра
    |ПОМЕСТИТЬ Выпуск
    |ИЗ
    | РегистрНакопления.ит_СебестоимостьПродукцииУУ КАК ит_СебестоимостьПродукцииУУ
    |  ЛЕВОЕ СОЕДИНЕНИЕ КоличествоПродукции КАК КоличествоПродукции
    |  ПО ит_СебестоимостьПродукцииУУ.Организация = КоличествоПродукции.Организация
    |   И ит_СебестоимостьПродукцииУУ.НоменклатурнаяГруппаПродукции = КоличествоПродукции.НоменклатурнаяГруппаПродукции
    |ГДЕ
    | ит_СебестоимостьПродукцииУУ.Период МЕЖДУ &Дата1 И &Дата2
    | И ит_СебестоимостьПродукцииУУ.ВидДвиженияРегистра = &ВидДвиженияРегистра
    | И ит_СебестоимостьПродукцииУУ.Организация = &Организация
    | И ВЫБОР
    |   КОГДА НЕ ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) В (&НоменклатурнаяГруппаПродукции)
    |	 ИЛИ НЕ НЕОПРЕДЕЛЕНО В (&НоменклатурнаяГруппаПродукции)
    |    ТОГДА ит_СебестоимостьПродукцииУУ.НоменклатурнаяГруппаПродукции В (&НоменклатурнаяГруппаПродукции)
    |  КОНЕЦ
    | И ВЫБОР
    |   КОГДА НЕ ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) В (&ПодразделениеПроизводитель)
    |	 ИЛИ НЕ НЕОПРЕДЕЛЕНО В (&ПодразделениеПроизводитель)
    |    ТОГДА ит_СебестоимостьПродукцииУУ.ПодразделениеПроизводитель В (&ПодразделениеПроизводитель)
    |  КОНЕЦ
    |
    |СГРУППИРОВАТЬ ПО
    | ит_СебестоимостьПродукцииУУ.СтатьяЗатратПолуфабриката,
    | ит_СебестоимостьПродукцииУУ.ПодразделениеПроизводитель,
    | ит_СебестоимостьПродукцииУУ.Продукция,
    | ит_СебестоимостьПродукцииУУ.ЭтоПостояннаяЗатрата,
    | ит_СебестоимостьПродукцииУУ.Полуфабрикат,
    | ит_СебестоимостьПродукцииУУ.СтатьяЗатрат,
    | ит_СебестоимостьПродукцииУУ.Затрата,
    | ит_СебестоимостьПродукцииУУ.НоменклатурнаяГруппаПродукции,
    | ит_СебестоимостьПродукцииУУ.ПодразделениеЗатраты,
    | ит_СебестоимостьПродукцииУУ.Организация,
    | ит_СебестоимостьПродукцииУУ.ВидДвиженияРегистра,
    | КоличествоПродукции.Количество"
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вы не в запросе условие формируйте, а в СКД (в настройках, отбор), таким образом вы отучите отчет от жестких отборов.
  3. TopicStarter Overlay
    Мистер Смит
    Offline

    Мистер Смит Опытный в 1С

    Регистрация:
    29 фев 2012
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    устанавливать отбор в настройках не получится, я здесь показал кусок запроса, это одна из нескольких ВТ, эта ВТ должна быть именно с этими условиями, иначе дальше полетят неправильные данные
  4. TopicStarter Overlay
    Мистер Смит
    Offline

    Мистер Смит Опытный в 1С

    Регистрация:
    29 фев 2012
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Скд она же как работает, сначала выполняется запрос, и только потом если указан отбор то он накладывается на полученные данные. правильно? таким образом получатсья неправильные цифры в отчете.
  5. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    В чем проблема не понял (почему нельзя сделать как сказал alexburn).
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Это справедливо если сделать как я вам указал, в вашем же случае выборка осуществляется уже с вашими отборами.
  7. TopicStarter Overlay
    Мистер Смит
    Offline

    Мистер Смит Опытный в 1С

    Регистрация:
    29 фев 2012
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Если в данной ВТ убрать эти условия, то цифры получаться не учитывая номенклатурную группу и не учитывая подразделение, тем самым отправляя в следующую ВТ не верные данные, дальше в запросе еще расчет происходит от этих цифр. Если наложить отбор, то он начнет действовать уже только после выполнения всего запроса..

    В этом то и проблема, как сделать так, если пользователь перед выводом данных не указывает параметры, то запрос формировался без них? т.е. выводил все данные
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Если вы делаете отбор на уровне запроса - в СКД он уже с условием отбора заливается.
  9. TopicStarter Overlay
    Мистер Смит
    Offline

    Мистер Смит Опытный в 1С

    Регистрация:
    29 фев 2012
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    если бы параметры были не список значений, то тогда условие которое я написал в запросе сработали бы, но не со списком значений это не помогает
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Что мешает сделать параметр СписокЗначений ?
  11. TopicStarter Overlay
    Мистер Смит
    Offline

    Мистер Смит Опытный в 1С

    Регистрация:
    29 фев 2012
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    А есть ли какая нибудь возможность в модуле формы отчета перехватить данные которые отправляются в процессор СКД, т.е. когда юзер наживает сформировать срабатываоа проверка, если у параметра список значений пуст, то параметр = неопределено, и после этой проверки запускалось формирование СКД.

    Они сейчас и есть СписокЗначений,
    &НоменклатурнаяГруппаПродукции,
    &ПодразделениеПроизводитель
  12. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Да, можно программно формировать отчет, где проверять все что нужно. В книге "Разработка сложных отчетов" подробно расписан программный механизм работы с СКД.
  13. TopicStarter Overlay
    Мистер Смит
    Offline

    Мистер Смит Опытный в 1С

    Регистрация:
    29 фев 2012
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Реализовал!! условия в запросе написао вот так:
    Код:
    ГДЕ
    ит_СебестоимостьПродукцииУУ.Период МЕЖДУ &Дата1 И &Дата2
    И ит_СебестоимостьПродукцииУУ.Активность
    И ит_СебестоимостьПродукцииУУ.ВидДвиженияРегистра = &ВидДвиженияРегистра
    И ВЫБОР
    КОГДА НЕ ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) В (&НоменклатурнаяГруппаПродукции)
    ТОГДА ит_СебестоимостьПродукцииУУ.НоменклатурнаяГруппаПродукции В (&НоменклатурнаяГруппаПродукции)
    ИНАЧЕ ИСТИНА
    КОНЕЦ
    И ВЫБОР
    КОГДА НЕ ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) В (&ПодразделениеПроизводитель)
    ТОГДА ит_СебестоимостьПродукцииУУ.ПодразделениеПроизводитель В (&ПодразделениеПроизводитель)
    ИНАЧЕ ИСТИНА
    КОНЕЦ
    Главное чтобы юзер оставлял ПустоеЗначение в не нужных ему параметрах и тогда выводится. В настройках СКД указал, чтобы по умолчанию выводилось ПустоеЗначение.

    alexburn, спасибо за помощь.
  14. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Незачто :) !
  15. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
Похожие темы
  1. tvfox
    Ответов:
    4
    Просмотров:
    2.121
Загрузка...

Поделиться этой страницей