Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

1С: Собственные программы

Войти
Регистрация
Восстановить пароль
 
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
#1

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

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

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

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

Отчет СКД. Пересчет значения поля табличного документа при изменении другого поля - 1С
Народ, есть отчет без СКД, нужно разрешить ввод пользователем 5 графы отчета, и на основе введенного рассчитать другие две графы...

Выбор значения в зависимости от типа движений - 1С
Всем привет! Пытаюсь собрать свою конфигурацию. 1С 8.3 В управляемом приложении Документ РКО. Форма документа. ФирмаА Поле...

1C 8.x (тонкий) Отчет в СКД - 1С
Здравствуйте! Помогите пожалуйста разобраться с отчетом в СКД! Нужно чтобы в строках были наименования: Животное, Болезнь, Район, а в...

Отчет СКД - 1С
Создала внешний отчет с помощью СКД. Результат вывожу на форму в Поле табличного документа. Ка мне сделать расшифровку результата? С чего...

Отчет в СКД - 1С
Добрый день. Делаю простенький отчет в системе компановки данных. За основу беру регистр сведений "СоставГруппСотрудников". ВЫБРАТЬ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Четверг
1 / 1 / 0
Регистрация: 13.10.2016
Сообщений: 60
22.12.2016, 19:00 #2
создать форму. на форму 3 реквизита. и там отбор в модуле формы. я б наверное так делал
0
renat_dmitriev
93 / 93 / 26
Регистрация: 26.08.2016
Сообщений: 308
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
Сообщений: 104
23.12.2016, 09:07  [ТС] #4
Мне по заданию нужно именно 3 логических параметра.

Добавлено через 28 минут
Возможна ли реализация поставленной задачи без использования формы? Может можно прописать условия выбора данных в каждом из 3-х параметров в конструкторе запроса на вкладке Условия?
0
Четверг
1 / 1 / 0
Регистрация: 13.10.2016
Сообщений: 60
23.12.2016, 10:37 #5
я конечно сам нуб, пользователь где будет выбирать что ему нужно :"по всем", "без подтверждения"..., если не на форме?
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
23.12.2016, 10:46  [ТС] #6
Так выбор понятно, что на форме будет осуществляться. А вот можно ли отбор данных прописывать не в модуле формы отчета, а через конструктор запроса в СКД?
0
Четверг
1 / 1 / 0
Регистрация: 13.10.2016
Сообщений: 60
23.12.2016, 10:57 #7
вроде как можно в запросе поставить условие по параметру. а параметр передать из формы
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
23.12.2016, 11:00  [ТС] #8
Я отчет делала с помощью СКД. И форма формируется автоматически системой. Поэтому я не хочу создавать форму "вручную", а реализовать задачу с помощью конструктора запроса без использования модуля формы. Может кто-то сталкивался с похожей реализацией?
0
Четверг
1 / 1 / 0
Регистрация: 13.10.2016
Сообщений: 60
23.12.2016, 11:10 #9
в чем проблема создать форму вручную. щелкнуть два раза мышкой
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
23.12.2016, 12:37  [ТС] #10
Потому что мне надо сделать это не прибегая к форме отчета.
0
Четверг
1 / 1 / 0
Регистрация: 13.10.2016
Сообщений: 60
23.12.2016, 12:45 #11
пользователи будут выбирать параметры не на форме?
0
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
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С
2521 / 2330 / 374
Регистрация: 10.03.2011
Сообщений: 8,174
Записей в блоге: 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
93 / 93 / 26
Регистрация: 26.08.2016
Сообщений: 308
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2016, 18:07
Привет! Вот еще темы с ответами:

Отчет СКД - 1С
Добрый день. Пытаюсь какой уже день, все мысли исчерпаны. Пытаюсь сделать отчет при помощи СКД Вот то что у меня имеется, но...

1C 8.x Отчет в СКД - 1С
Здравствуйте.У меня отчет вида как на рисунке 1,подскажите пожалуйста, как в СКД преобразовать отчет до такого вида как на 2 рисунке?

3в1 отчет на СКД - 1С
Здравствуйте, может кто делал такое, поделитесь опытом. Собсно по сабжу: надо сделать отчет который вмещает в себе три отчета см. таб....

1c СКД Цветной отчет - 1С
Всем привет. 1С 8.2 Комплексная . 1. Подскажите как сделать цветную гистограмму в СКД, но при этом сохраняя подписи снизу под...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.12.2016, 18:07
Ответ Создать тему
Опции темы

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