Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 121
1

1с отчет СКД выбор данных в зависимости от значения логического параметра

22.12.2016, 16:17. Просмотров 5670. Ответов 13

Здравствуйте. Платформа 1С: Предприятие 8.3.
Столкнулась с такой проблемой. Имеется отчет "Отчет по грузоперевозкам", созданный с помощью СКД на основании данных документа "CMR", который выводит следующие поля за указываемый период:
Получатель | Грузополучатель | Разрешение | Заявление
Тип полей "Получатель" и "Грузополучатель" = Справочник.Контрагент, тип полей "Разрешение" и "Заявление" = Дата.
Необходимо создать 3 логических параметра (тип - Булево): "Все", "Без подтверждения", "Подтверждено".
Если истина "Все", то просто формируется отчет с учетом указанного период.
Если истина "Без подтверждения", то в отчете должны выводится только те строки, в которых поле "Разрешение" или поле "Заявление", или поля "Разрешение" и "Заявление" не заполнены.
Если истина "Подтверждено", то в отчете должны выводится только те строки, в которых поля "Разрешение" и "Заявление" заполнены.
Подскажите, пожалуйста, где именно нужно прописывать выбор данных в зависимости от значения логических параметров. И может есть у кого пример похожего отбора. Заранее спасибо!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2016, 16:17
Ответы с готовыми решениями:

Передача параметра сеанса в отчет СКД
Здравствуйте. В собственной конфигурации делаю отчет в СКД. Нужно выбрать записи из регистра...

1с отчет СКД выбор данных из 2-х документов
Здравствуйте. Платформа 1С: Предприятие 8.3. Управляемая форма. Формирую запрос с помощью СКД на...

Доступность выбранных полей в СКД в зависимости от параметра
Добрый день. Есть булеватый параметр Если он - правда, то надо в СКД показывать 2 столбца если...

Отчет СКД: не заполняются значения параметров
Здравствуйте. Делаю отчет на СКД в собственной конфигурации 1С 8.3. суть отчета: выгрузить из...

Изменение цвета строки в зависимости от логического значения поля
Здравствуйте уважаемые форумчане. Подскажите пожалуйста, есть ли возможность менять цвет фона...

13
Четверг
7 / 7 / 3
Регистрация: 13.10.2016
Сообщений: 181
22.12.2016, 19:00 2
создать форму. на форму 3 реквизита. и там отбор в модуле формы. я б наверное так делал
0
renat_dmitriev
391 / 293 / 121
Регистрация: 26.08.2016
Сообщений: 902
22.12.2016, 19:42 3
Tatiana21,

Не имеет смысла создавать три логически параметра, достаточно создать в запросе СКД одно поле

РазрешениеЗаявлениеЗаполнены, что-то вроде

1C
1
2
3
4
ВЫБОР КОГДА Разрешение = ДАТА(1, 1, 1, 0, 0, 0) ТОГДА ЛОЖЬ
КОГДА Заявление = ДАТА(1, 1, 1, 0, 0, 0) ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ КАК РазрешениеЗаявлениеЗаполнены
и поместить на форму переключатель с тремя возможными значениями.

Не забудьте в СКД добавить его в отбор

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

Пример процедуры программной установки значения отбора

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
Процедура УстановтьОтборПоПолюКомпоновки(Имя,Значение = Неопределено, ВидСравнения = Неопределено)
         Для Каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
              Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(Имя) Тогда
                    Если Значение = Неопределено Тогда
                          ЭлементОтбора.Использование = Ложь;
                    Иначе
                          ЭлементОтбора.ВидСравнения = ВидСравнения; 
                          ЭлементОтбора.ПравоеЗначение = Значение; 
                          ЭлементОтбора.Использование = Истина; 
                    КонецЕсли;
              КонецЕсли;
         КонецЦикла;
КонецПроцедуры
Соответственно в первом случае вызываете процедуру

1C
1
УстановтьОтборПоПолюКомпоновки("РазрешениеЗаявлениеЗаполнены", Неопределено, ВидСравнения.Равно);
во втором случае ту же процедуру со вторым параметром ЛОЖЬ
в третьем случае со вторым параметром ИСТИНА
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 121
23.12.2016, 09:07  [ТС] 4
Мне по заданию нужно именно 3 логических параметра.

Добавлено через 28 минут
Возможна ли реализация поставленной задачи без использования формы? Может можно прописать условия выбора данных в каждом из 3-х параметров в конструкторе запроса на вкладке Условия?
0
23.12.2016, 09:07
Четверг
7 / 7 / 3
Регистрация: 13.10.2016
Сообщений: 181
23.12.2016, 10:37 5
я конечно сам нуб, пользователь где будет выбирать что ему нужно :"по всем", "без подтверждения"..., если не на форме?
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 121
23.12.2016, 10:46  [ТС] 6
Так выбор понятно, что на форме будет осуществляться. А вот можно ли отбор данных прописывать не в модуле формы отчета, а через конструктор запроса в СКД?
0
Четверг
7 / 7 / 3
Регистрация: 13.10.2016
Сообщений: 181
23.12.2016, 10:57 7
вроде как можно в запросе поставить условие по параметру. а параметр передать из формы
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 121
23.12.2016, 11:00  [ТС] 8
Я отчет делала с помощью СКД. И форма формируется автоматически системой. Поэтому я не хочу создавать форму "вручную", а реализовать задачу с помощью конструктора запроса без использования модуля формы. Может кто-то сталкивался с похожей реализацией?
0
Четверг
7 / 7 / 3
Регистрация: 13.10.2016
Сообщений: 181
23.12.2016, 11:10 9
в чем проблема создать форму вручную. щелкнуть два раза мышкой
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 121
23.12.2016, 12:37  [ТС] 10
Потому что мне надо сделать это не прибегая к форме отчета.
0
Четверг
7 / 7 / 3
Регистрация: 13.10.2016
Сообщений: 181
23.12.2016, 12:45 11
пользователи будут выбирать параметры не на форме?
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 121
23.12.2016, 13:24  [ТС] 12
Попробовала написать запрос в СКД с 1 параметром (Фильтр), у которого 3 значения: Все записи, без подтверждения, подтверждено. Со значением Все записи - срабатывает как надо, попробовала добавить условие при значении параметра Подтверждено - нет (отбирает данные, как и в первом случает). Может кто подскажет, что не так?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ВЫБРАТЬ
    CMR.Покупатель,
    CMR.Грузополучатель,
        CMR.Дата,
    CMR.Разрешение,
    CMR.Заявление,
    ВЫБОР
        КОГДА &Фильтр = "ВсеЗаписи"
            ТОГДА ИСТИНА
        КОГДА &Фильтр = "БезПодтверждения"
            ТОГДА ИСТИНА
        КОГДА &Фильтр = "Подтверждено"
                И НЕ CMR.Разрешение = ""
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК Поле1
ИЗ
    Документ.CMR КАК CMR
ГДЕ
    CMR.Дата >= &НачалоПериода
    И CMR.Дата <= &КонецПериода
Добавлено через 15 минут
Может нужно что-то в настройках на закладке Отбор указать? Если просто выбираю Поле1 с видом сравнения Заполнено - ничего не меняется.
0
Dethmontt
Модератор
Эксперт 1С
2731 / 2485 / 443
Регистрация: 10.03.2011
Сообщений: 9,027
Записей в блоге: 1
Завершенные тесты: 1
23.12.2016, 17:12 13
На вкладке Параметры добавляем параметр (например &Фильтр) в возможные значения добавляем
0 - Все записи
1 - Без подтверждения
2 - Подтверждено

В условии запроса (в ГДЕ) пишем
1C
1
ВЫБОР КОГДА &Фильтр = 0 ТОГДА ИСТИНА КОГДА &Фильтр = 1 ТОГДА Разрешение = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) или Заявление =  ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КОГДА &Фильтр = 2 ТОГДА НЕ (Разрешение = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) и Заявление =  ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) ИНАЧЕ ЛОЖЬ КОНЕЦ
1
renat_dmitriev
391 / 293 / 121
Регистрация: 26.08.2016
Сообщений: 902
23.12.2016, 18:07 14
Цитата Сообщение от Tatiana21 Посмотреть сообщение
Возможна ли реализация поставленной задачи без использования формы? Может можно прописать условия выбора данных в каждом из 3-х параметров в конструкторе запроса на вкладке Условия?
Да, конечно, тогда совсем все просто.

Достаточно одного условия

1C
1
2
3
4
5
6
7
8
ГДЕ
ВЫБОР КОГДА &Все ТОГДА ИСТИНА 
КОГДА &ТолькоНезаполненные И 
(Разрешение = ДАТА(1, 1, 1, 0, 0, 0) ИЛИ Заявление = ДАТА(1, 1, 1, 0, 0, 0)) ТОГДА ИСТИНА
КОГДА &ТолькоЗаполненные И 
Разрешение <> ДАТА(1, 1, 1, 0, 0, 0) И Заявление <> ДАТА(1, 1, 1, 0, 0, 0) ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
И параметры заполняете на вкладке параметров

Добавлено через 42 секунды
Но логичней сделать с одним параметром.
1
23.12.2016, 18:07
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2016, 18:07

1с отчет на СКД: независимые наборы данных
Всем привет! Платформа 1С:Предприятие 8.3, конфигурация редактированная типовая, режим...

Распределить значения по годам в зависимости от параметра
Есть куча домов. У каждого дома рассчитывается параметр описывающий его износ (в баллах). В...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.