Имя: Пароль:
1C
1С v8
СКД - параметры, по умолчанию, список
0 Масянька
 
05.07.21
10:35
День добрый!
Как в СКД задать параметр - список только по двум заданным элементам справочника?
Кусок запроса с условием:

ГДЕ
    ВнутренниеДокументы.ВидДокумента = &ВидДокумента

С одним параметром - вкладка "Параметры", колонка "Выражение".
Если ставлю галочку "Доступен список значений" - в колонке "Значения" выдает - https://ibb.co/gTktPgG
Спасибо.
1 ДенисЧ
 
05.07.21
10:38
Ну и правильно выдаёт, в конфигураторе...
Сделай прикомпоновке, задай туда, в параметр, нужный список. Или можешь сохранить схему, открыть её в консоли в предприятии, напихать туда значений, сохранить, загрузить в отчёт. Но это плохо, потому что делаешь же ты в тестовой базе? А там уиды могут быть другими, чем в рабочей.
2 ДенисЧ
 
05.07.21
10:38
Ну, или как вариант для извращенцев и Масянек - создай нужные предопределённые в справочнике. И тогда они будут доступны в конфигураторе.
3 Масянька
 
05.07.21
10:41
(1) В ПриКомпоновке что получать? Компоновщик, Макет...
4 ДенисЧ
 
05.07.21
10:42
(3) Схему компоновки, её настройки. И там уже устанавливать параметр
5 Масянька
 
05.07.21
10:49
(4)
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    СхемаКомпоновкиДанных.УстановитьПараметр(КомпоновщикНастроек, "ВидДокумента", Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Приказ по основной деятельности"));
    СхемаКомпоновкиДанных.УстановитьПараметр(КомпоновщикНастроек, "ВидДокумента", Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Распоряжение по основной деятельности"));

КонецПроцедуры

Дает: https://ibb.co/LtW34Rw
6 ДенисЧ
 
05.07.21
10:53
(5) А может, ты туда будешь список подсовывать, а не по одному элементу?
Ну это так, в порядке бреда, тебе же список нужен?
7 ejikbeznojek
 
05.07.21
10:59
Ну или сделай эти значения предопределёнными))
Добавь 2 предопределённых элемента (с обновлением предопределенных данных - не использовать) и привяжи к уже существующим через ИмяПредопределенныхДанных

Тогда в конфигураторе добавишь
8 Масянька
 
05.07.21
11:00
(6)     СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    СписокВидов = Новый СписокЗначений;
    СписокВидов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Приказ по основной деятельности"));
    СписокВидов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Распоряжение по основной деятельности"));
    СхемаКомпоновкиДанных.УстановитьПараметр(КомпоновщикНастроек, "ВидДокумента", СписокВидов);

Тоже самое (картинка).
9 Масянька
 
05.07.21
11:00
(7) Конфигуратор трогать нельзя.
10 Жан Пердежон
 
05.07.21
11:04
(8) раз уж такой говнокод пошёл - делай сразу в параметре список строк, туда их вбивай и в запросе используй - ничем не хуже будет
11 ejikbeznojek
 
05.07.21
11:05
ВнутренниеДокументы.ВидДокумента = &ВидДокумента

Может если список значений, то
ВнутренниеДокументы.ВидДокумента в (&ВидДокумента) ?
12 Масянька
 
05.07.21
11:06
(11) Исправила. Результат тот же. Пустой список.
13 Масянька
 
05.07.21
11:09
(10) Почему говнокод?
В СКД нельзя в параметрах использовать список?
14 Масянька
 
05.07.21
11:09
Сам параметр не заполняется списком.
15 ejikbeznojek
 
05.07.21
11:18
16 Масянька
 
05.07.21
11:28
(15) Нет 😭😭😭
17 Масянька
 
05.07.21
11:31
(15) А что у тебя в колонке "Тип" на вкладке "Параметры"?
https://ibb.co/bXBDHbn
18 ejikbeznojek
 
05.07.21
11:40
(17) Была строка.
Но я переделал на ссылки и всё равно всё работает.
https://prnt.sc/18p9tso
19 Масянька
 
05.07.21
11:45
(18) Напиши, пожалуйста, строку (как у тебя) - Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый   ПараметрКомпоновкиДанных(....)
Имя как задаешь в прикомпоноке?
20 ejikbeznojek
 
05.07.21
11:46
(13) Ну так делать не очень хорошо, потому что поменяют наименования у твоих 2х элементов и всё перестанет работать.
Он имел ввиду, что раз уже так делать, то можно написать
ГДЕ
    ВнутренниеДокументы.ВидДокумента.Наименование в (&СписокНаименований)
И зафигачить наименования в параметрах в конфигураторе.

(19)
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СписокКодов = Новый СписокЗначений;
    СписокКодов.Добавить();
    СписокКодов.Добавить(Справочники.КлассификаторАдресов.НайтиПоКоду("SNL-08937"));
    СписокКодов.Добавить(Справочники.КлассификаторАдресов.НайтиПоКоду("SNL-08936"));
    Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый   ПараметрКомпоновкиДанных("СписокКодов"));
    Если Параметр <> Неопределено Тогда
        Параметр.Значение = СписокКодов;
        Параметр.Использование = ЗначениеЗаполнено(СписокКодов);
    КонецЕсли;    
    
    
КонецПроцедуры
21 Малыш Джон
 
05.07.21
11:52
(20)
    >>Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый   ПараметрКомпоновкиДанных("СписокКодов"));
    >>Если Параметр <> Неопределено Тогда
    >>    Параметр.Значение = СписокКодов;
    >>    Параметр.Использование = ЗначениеЗаполнено(СписокКодов);
    >>КонецЕсли;


ёп..прст..

Люди, будьте проще:

КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("СписокКодов", СписокКодов);
22 Масянька
 
05.07.21
11:55
(21) Во-первых, не надо вспоминать Ё всуе.
Во-вторых, так тоже не работает.
23 Малыш Джон
 
05.07.21
11:58
(22) конечно отдельно эта строка не работает
24 Масянька
 
05.07.21
11:59
(23) Да, никак не работает (у меня).
Пустой список... Абсолютно...
25 ejikbeznojek
 
05.07.21
12:00
Может не в тот отчёт добавляешь?)))
26 Малыш Джон
 
05.07.21
12:01
(24)

СтандартнаяОбработка = Ложь;
    
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("СписокКодов", СписокКодов);
    
КомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
27 Малыш Джон
 
05.07.21
12:03
+(26) имена параметров и способ формирования их значений изменять по вкусу
28 ejikbeznojek
 
05.07.21
12:13
(21) Тот код, для того, чтобы она отладкой могла посмотреть, что параметр нашёлся и установился))
29 Масянька
 
05.07.21
12:27
Мне нужен список. Чтобы из 2 (двух) значений списка выбирали нужное. А уже запрос отсекался только по одному.
По одному (если задать по умолчанию одно значение параметра) - все работает.
30 ДенисЧ
 
05.07.21
12:33
"Мне нужен список. Чтобы из 2 (двух) значений списка выбирали нужное"
Анафейхоа, позвольте спросить, ты пытаешься впихнуть этот список в параметры СКД?
31 Масянька
 
05.07.21
12:35
(30) А куда их впихивать?
32 ДенисЧ
 
05.07.21
12:37
(31) Господа гусары!....
В список на форме, разумеется, если уж ты пользователя работать пытаешься заставить
33 Жан Пердежон
 
05.07.21
13:47
(13)
в запросе:
ГДЕ
    ВнутренниеДокументы.ВидДокумента.Наименование = &ВидДокумента
В СКД параметр "ВидДокумента" Тип "Строка", Доступные значения - твои строки, "Доступен список значений" = Ложь
34 Масянька
 
05.07.21
13:55
35 Масянька
 
05.07.21
14:06
(33) Всё получилось.
Огромное спасибо!!!
36 Масянька
 
05.07.21
14:06
😘😘😘😘😘
Ошибка? Это не ошибка, это системная функция.