Имя: Пароль:
1C
1С v8
Можно ли в СКД задать параметр массив типов?
0 mortal
 
24.10.14
12:57
Приветствую всех!

Вопрос, собственно, в сабже.
Использую, как видно, параметры СКД. Подскажите, если можно, то как/что там писать?
один из моих неработающих вариантов
https://cloud.mail.ru/public/f08f319936ca%2FВопросМистеПоСКД.jpg

Конфа УНФ 1.3.

сам запрос из скд:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВЫБОР
        КОГДА ЗапасыОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
            ТОГДА NULL
        ИНАЧЕ ЗапасыОстаткиИОбороты.Регистратор
    КОНЕЦ КАК Регистратор,
    ЗапасыОстаткиИОбороты.Организация,
    ЗапасыОстаткиИОбороты.Номенклатура,
    ЗапасыОстаткиИОбороты.Характеристика,
    ЗапасыОстаткиИОбороты.КоличествоНачальныйОстаток,
    ЗапасыОстаткиИОбороты.КоличествоКонечныйОстаток,
    ЗапасыОстаткиИОбороты.КоличествоОборот,
    ЗапасыОстаткиИОбороты.Номенклатура.ЕдиницаИзмерения,
    ЗапасыОстаткиИОбороты.СерийныйНомер
ИЗ
    РегистрНакопления.Запасы.ОстаткиИОбороты(, , Авто, Движения, СчетУчета.ТипСчета = ЗНАЧЕНИЕ(Перечисление.ТипыСчетов.Запасы)) КАК ЗапасыОстаткиИОбороты
{ГДЕ
    (ТИПЗНАЧЕНИЯ(ЗапасыОстаткиИОбороты.Регистратор) В (&МассивТипов))}
1 mortal
 
24.10.14
13:15
пятниццо... )
ну, ап.
2 Godofsin
 
24.10.14
13:17
Программно устанавливай
3 mortal
 
24.10.14
13:18
(2) это единственный возможный вариант?
4 Godofsin
 
24.10.14
13:23
(3) Ну я других не знаю.
5 Ник080808
 
24.10.14
13:25
(3) доступные значения заполнить если?
6 Chameleon1980
 
24.10.14
13:27
5 что?
7 mortal
 
24.10.14
13:28
(5) там же нет значения вида ТипЗначения
8 Ник080808
 
24.10.14
13:29
(7) так строки ручками))))
9 Ник080808
 
24.10.14
13:30
(7) а ты имеешь ввиду - форму выбора с типами значений? Так это тогда к Орефкову за снегопатом
10 Chameleon1980
 
24.10.14
13:32
(9) нах. чуть программно. тебе строго?
11 DrZombi
 
гуру
24.10.14
13:34
(0) Зачем?
Создай такое в самом запросе
12 DrZombi
 
гуру
24.10.14
13:35
+(0) Через временную таблицу, через Объединение помести туда свои типы. А потом уже и начинай извращаться :)
13 DrZombi
 
гуру
24.10.14
13:39
+ А действительно пятнично :)

В общем лучше это реализовать через:

ГДЕ
    ( ЗапасыОстаткиИОбороты.Регистратор Ссылка Документ.<По регистратору>
    ИЛИ  ЗапасыОстаткиИОбороты.Регистратор Ссылка Документ.<По регистратору № 2>
    или т.д.... "Потом Скобка закрывается" )
14 DrZombi
 
гуру
24.10.14
13:40
+ Если так нужно организовать условия выбора, то это можно реализовать через:

//Из модуля Отчета...

///\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
     СтандартнаяОбработка = Ложь;
    
     //-------------------------
     //ПрибавлятьФильтр=Ложь; // настройка период
    
     НастройкиКомпоновщика = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
    
     ЭлемПользНастр = ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    
     Если НастройкиКомпоновщика.ПараметрыДанных.Элементы.Количество()>0 ТОгда
         Для каждого Элемент Из НастройкиКомпоновщика.ПараметрыДанных.Элементы Цикл
             Если Элемент.Использование=Истина тогда
                 Если Сокрлп(Элемент.Параметр)="СмещениеСервер" тогда
                    
                     Элемент.Использование = Истина;
                    
                     //Получать только на сервере :)
                     УнВремя=УниверсальноеВремя(ТекущаяДата());
                     СмещениеСервер = МестноеВремя(УнВремя) - УнВремя; //4 часа для Москвы
                    
                     Элемент.Значение = СмещениеСервер;
                    
                     //Отобразим для пользователя
                     НайденЭлемент = ЭлемПользНастр.Найти(Элемент.ИдентификаторПользовательскойНастройки);
                     Если НайденЭлемент <> Неопределено Тогда
                         НайденЭлемент.Значение = Элемент.Значение;
                     КонецЕсли;
                    
                 КонецЕсли;
             КонецЕсли;
         КонецЦикла;
     КонецЕсли;
    
     //ТЗИтог= СформироватьОтчет(ДатаНачала,ДатаОкончания,Календарь);
     //ТЗ_ДниНедели = ПолучитьТаблицуДнейНедели(); //
    
     //Связь между таблицей значений и именами в СКД
     ВнешниеНаборыДанных = Новый Структура;
     //ВнешниеНаборыДанных.Вставить("ТЗ_ДниНедели",ТЗ_ДниНедели);
    
     //Макет компоновки
     КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
     МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, НастройкиКомпоновщика, ДанныеРасшифровки);
    
     //Компоновка данных
     ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
     ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
     //Вывод результата ДокументРезультат.Очистить();
     ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
     ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
     ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
КонецПроцедуры
15 DrZombi
 
гуру
24.10.14
13:42
+ В запрос добавь Параметр "&ВариантОтчета", ну а уже "ПриКомпоновкеРезультата()" устанавливай ему значение по условию.

А в коде запроса пропиши варианты условия :)
16 Ник080808
 
24.10.14
13:42
(10) переведи. Нифига не понял(
17 DrZombi
 
гуру
24.10.14
13:44
+ А уж со Списком на форме, где будет перечислен вариант "какой либо, в плоть до типов", Это уже ты сам докумекаешь. Как передать это значение из Формы в модуль :)
18 Ник080808
 
24.10.14
13:44
(13) за или в условии тут http://www.forum.mista.ru/users.php?name=H+A+D+G+E+H+O+G+s бьет по почкам
19 Ник080808
 
24.10.14
13:44
(18) чёрт, короче H A D G E H O G s)))
20 Godofsin
 
24.10.14
13:44
(15) Ну ты завернул...
21 DrZombi
 
гуру
24.10.14
13:45
(18) Кого волнует? :)
22 DrZombi
 
гуру
24.10.14
13:45
(20) А ведь сработает, как автор хочет ;)
23 Chameleon1980
 
24.10.14
13:45
(20) что не так?
24 Ник080808
 
24.10.14
13:46
(21) смотри сам  - почки твои)))
25 Godofsin
 
24.10.14
13:47
(23) Массив сформировать не проще? а его уже программно подпихивать
26 DrZombi
 
гуру
24.10.14
13:48
(25) Как? Это СКД :)
27 Godofsin
 
24.10.14
13:48
(26) Ну и?
28 DrZombi
 
гуру
24.10.14
13:48
Её же не нравится все что не простое :)
29 DrZombi
 
гуру
24.10.14
13:49
(27) Ну и как передать массив некого значения в Параметр?
30 Godofsin
 
24.10.14
13:51
(29) Отбор.Настройки.ПараметрыДанных.Элементы[].Значение
31 Godofsin
 
24.10.14
13:51
не?
32 Chameleon1980
 
24.10.14
13:51
(27) да те же грят программно пля
массив ты где там? хотя.... фукции глоб
33 Chameleon1980
 
24.10.14
13:52
из общего модуля функц
34 DrZombi
 
гуру
24.10.14
13:52
(31) И массив там встанет как литой... У меня не взлетело :(

Есть примерчик, подсмотреть?
35 Godofsin
 
24.10.14
13:53
(34) Ну я не пробовал ))) так прикинул, вроде по логике вещей не должно быть ошибки
36 Chameleon1980
 
24.10.14
13:54
в запросе не сработает тип(куку) в типзнч(типзнч(куку)) ?
37 DrZombi
 
гуру
24.10.14
13:54
(35) Вот и я думал... был огорчен :(
38 Chameleon1980
 
24.10.14
13:54
куку извне возращается
39 DrZombi
 
гуру
24.10.14
13:55
(36) Может и взлетит :)
...
Неплохая идея... создать то количество параметров, которое требуется для условия :)
40 DrZombi
 
гуру
24.10.14
13:57
+(38) ... и при этом, все это можно запихнуть во временную табличку, через Объединение :)
41 Chameleon1980
 
24.10.14
13:58
чейи(40)м?
42 DrZombi
 
гуру
24.10.14
13:58
+(40) И тогда будет вместо:

{Где
(ТИПЗНАЧЕНИЯ(ЗапасыОстаткиИОбороты.Регистратор) В (&МассивТипов))}

....

Где
(ТИПЗНАЧЕНИЯ(ЗапасыОстаткиИОбороты.Регистратор) В (Выбрать ВТ.МойТип Из ВременнаяТаблицаМассивТипов как ВТ))

//Но уже без фигурных скобок :)
43 DrZombi
 
гуру
24.10.14
13:59
(41) Это мысли к (39)
44 Chameleon1980
 
24.10.14
13:59
45 Chameleon1980
 
24.10.14
14:00
вобще динамически формируй запрос. обрабатывай.
46 DrZombi
 
гуру
24.10.14
14:00
(44) А это к чему?...
47 Chameleon1980
 
24.10.14
14:00
прочтите
48 DrZombi
 
гуру
24.10.14
14:01
(47) Прочитал, не затронуло :)
49 Chameleon1980
 
24.10.14
14:02
короче массив фиксированный*?
50 DrZombi
 
гуру
24.10.14
14:03
(49) Но за ссылку спасибо, можно чего почерпнуть, для создания динамических запросов :)
51 Chameleon1980
 
24.10.14
14:04
скд доб набор данных "объединение" с одним рулим к другому прицепляем. логически
52 Chameleon1980
 
24.10.14
14:06
"....массив типов...." по какому принципу строится?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс