Имя: Пароль:
1C
1С v8
СКД отбор по виду документа
0 gusden
 
05.11.12
11:06
Всем доброго дня.
Хочу сделать в отчёте галочку чтобы если пользователь устанавливал  её то на отбор устанавливалось некое сложное условие. В макете СКД пишу
...
РегистрНакопления.ВзаиморасчётыПоЦФО.ОстаткиИОбороты(, , , , {(КредДок ССЫЛКА Документ.ЗаказПокупателя
               ИЛИ КредДок ССЫЛКА Документ.ЗаявкаПлатежа) КАК БезНал}) КАК Обороты
Предполагаю, что если пользователь установит в настройках отбор БезНал равно Истина, то условие включится в отбор. Но вылетает ошибка что БезНал не определено.
Подскажите как реализовать подобный интерфейс в СКД
1 Wobland
 
05.11.12
11:11
это ты на ты КредДок попытался наколдовать отбор. как - это определение алиаса для полей выборки
2 gusden
 
05.11.12
11:20
(1) От вида документа КредДок можно определить наличные или безналичные взаиморасчёты. И хочется пользователю дать возможность установки отбора: вывести только безнал или только нал отгрузки.
3 Wobland
 
05.11.12
11:24
(2) ага, я так и подуамал
4 gusden
 
05.11.12
11:26
Интересно что если установил условие в Где то взлетело:
{ГДЕ
   (Обороты.КредДок ССЫЛКА Документ.ЗаказПокупателя
           ИЛИ Обороты.КредДок ССЫЛКА Документ.ЗаявкаПлатежа) КАК БезНал1}
Но почему нельзя наложить подобное условие в параметрах виртуальной таблицы
5 gusden
 
05.11.12
12:47
(1)
Решил поэкспериментировать написал такой запрос в СКД:
ВЫБРАТЬ
   Обороты.КредДок КАК КредДок
{ВЫБРАТЬ
   КредДок.*}
ИЗ
   РегистрНакопления.ВзаиморасчётыПоЦФО.ОстаткиИОбороты(, , , , {(КредДок.Номер) КАК Номер, (Валюта.Наименование = "USD") КАК Доллар}) КАК Обороты
{ГДЕ
   (Обороты.КредДок ССЫЛКА Документ.ЗаказПокупателя
           ИЛИ Обороты.КредДок ССЫЛКА Документ.ЗаявкаПлатежа) КАК Безнал,
   (Обороты.КредДок.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийИнвойс.Инвойс)) КАК Инвойс,
   (Обороты.Валюта.Наименование = "USD") КАК Доллар1}
Корректно отрабатывает, только если установить в настройках отбор "Номер" и "Безнал". Остальные выдают ошибку.
Может кто-нибудь может объяснить как корректно в СКД реализовать сложное условие, а пользователю дать возможность выбора применять данное условие или нет.
6 zladenuw
 
05.11.12
12:51
(5) может типа параметр 1Условие = Истина (твое условие) , тогда ля ля , и т.д.
7 gusden
 
05.11.12
13:00
(6) не понял, можно с примером
8 zladenuw
 
05.11.12
13:02
|                (&НетОтбораПоПодразделениям
                       |                ИЛИ ПодразделениеОрганизации В ИЕРАРХИИ (&ПодразделениеОрганизации))
                       |                И (&НетОтбораПоОрганизациям
                       |                    ИЛИ Организация = &Организация)
9 gusden
 
05.11.12
13:28
(8) Т.е. накладывать условие не в компоновке данных, а прямо в запросе, что выглядит как-то не очень:
ВЫБРАТЬ
   Обороты.КредДок КАК КредДок
{ВЫБРАТЬ
   КредДок.*}
ИЗ
   РегистрНакопления.ВзаиморасчётыПоЦФО.ОстаткиИОбороты(
           ,
           ,
           ,
           ,
           Валюта.Наименование = "USD"
                   И &Доллар = ИСТИНА
               ИЛИ Валюта.Наименование <> "USD"
                   И НЕ &Доллар = ЛОЖЬ
               ИЛИ &Доллар = НЕОПРЕДЕЛЕНО {(Валюта.Наименование = "USD") КАК Доллар}) КАК Обороты
10 Classic
 
05.11.12
13:34
(9)
Можешь тупо булевское поле через ВЫБОР КОГДА сделать. И накладывать на него обычный отбор
11 gusden
 
05.11.12
14:03
(10) Сп. Заработал отбор "Доллар" и "Доллар1"
ВЫБРАТЬ
   Обороты.КредДок КАК КредДок
{ВЫБРАТЬ
   КредДок.*}
ИЗ
   РегистрНакопления.ВзаиморасчётыПоЦФО.ОстаткиИОбороты(, , , , {(ВЫБОР
               КОГДА Валюта.Наименование = "USD"
                   ТОГДА ИСТИНА
               ИНАЧЕ ЛОЖЬ
           КОНЕЦ) КАК Доллар}) КАК Обороты
{ГДЕ
   (ВЫБОР
           КОГДА Обороты.Валюта.Наименование = "USD"
               ТОГДА ИСТИНА
           ИНАЧЕ ЛОЖЬ
       КОНЕЦ) КАК Доллар1}
12 Wobland
 
05.11.12
14:03
>Валюта.Наименование = "USD"
что-то как-то глаз коробит сравнение со строкой..
13 gusden
 
05.11.12
15:44
(12) самое простое что пришло в голову, для тестирования в консоли СКД