Имя: Пароль:
1C
1С v8
Получить все возможные значения перечисления, зная его часть
0 Frikker
 
23.08.17
15:18
В запросе идет обращение к регистру сведений СостоянияСотрудников, в ресурсе Состояние которого тип указан как перечисление. Можно ли достать все строки регистра со значением ресурса, в котором содержится слово отпуск? т.е. можно ли найти в перечислении элементы, которые содержат слово "Отпуск"?
1 lodger
 
23.08.17
15:19
Поле1.Представление Подобно %отпуск%
2 Lexey_
 
23.08.17
15:21
(0) получи все нужные значения перечисления до запроса
3 aleks_default
 
23.08.17
15:27
У вас так много видов отпусков?
4 Frikker
 
23.08.17
16:04
(3) нашел минимум 8, хотелось бы использовать в запросе что-то вроде: "СостоянияСотрудников.Состояние В Массив", где Массив - массив с значениями перечислений.
(2) в том то и вопрос, что я не знаю, как их найти все до запроса, чтобы потом их использовать
5 Wirtuozzz
 
23.08.17
16:07
СостоянияСотрудников.Состояние В ( Значение(Перечисление.Значение1),Значение(Перечисление.Значение2),Значение(Перечисление.Значение3))
6 term1t52
 
23.08.17
16:09
СостоянияСотрудников.Состояние В (Выбрать * Из Перечисление.ВидыОтпусков ГДЕ Наименование ПОДОБНО %Наименование%)

Как-то так
7 Frikker
 
23.08.17
16:09
(5) неизвестно, сколько именно отпусков имеется. при том, что они могут добавляться
8 Lexey_
 
23.08.17
16:10
(4) обойди коллекцию Метаданные.Перечисления.СостояниеИлиЧтоУТебяТам .ЗначенияПеречисления
9 aleks_default
 
23.08.17
16:13
(7)Вы небось в Газпроме работаете? Только там мечты об отпуске сбываются 8 раз.
10 Wirtuozzz
 
23.08.17
16:16
(7) ну сделай временную таблицу, в которую ты выбереш нужный перечисления отобрав их согласно своим правилам.
11 Wirtuozzz
 
23.08.17
16:19
(9) Прикол

ЗУП Газпром КОРП

Если день(ТекущаяДата)<365 Тогда
СегодняОтпуск = Истина;
Иначе
ЗаказатьКорпоратив();
СегодняКороткаяИМожноНеРаботать();
КонецЕсли;

НачислитьПремию();
12 term1t52
 
23.08.17
16:24
(11) :D
Пардон, как (6) не сделать
13 ColonelAp4u
 
23.08.17
16:25
(11) ))улыбнуло
14 Wirtuozzz
 
23.08.17
16:35
Но на самом деле в газпроме немного не так:

ПнутьЗАМаЧтоБыВыдалВсеЗадания();

Если день(ТекущаяДата)<365 Тогда
ВыдатьПремию();
Иначе
ВыдатьТройнуюПремию();
ЗаказатьКорпоратив();
ПнутьЗАМаЧтоБыВыдалВсеЗадания();
КонецЕсли;

НачислитьПремию();
15 aleks_default
 
23.08.17
16:36
(14)Просто это управленческая база
16 Wirtuozzz
 
23.08.17
16:38
(15) там все нормально, за все заплачено.
17 Numerus Mikhail
 
23.08.17
16:42
(7) Книга знаний: Получить элемент перечисления по его имени (синониму)

Собираешь таким образом массив нужных тебе перечислений
потом используешь конструкцию "Состояние В (&Массив)"
18 Wirtuozzz
 
23.08.17
16:52
(17) а так :

ВЫБРАТЬ
    ПРЕДСТАВЛЕНИЕССЫЛКИ(СтавкиНДС.Ссылка) КАК СтавкаНДС
ИЗ
    Перечисление.СтавкиНДС КАК СтавкиНДС

??? Запросом сразу выберет, что нужно. И потом поместит в временную таблицу, а во втором пакете условие наложит.
19 Numerus Mikhail
 
23.08.17
16:54
(18) Ну или так, тоже должно сработать
20 aleks_default
 
23.08.17
16:56
открою секрет, там еще и синоним есть
21 term1t52
 
24.08.17
09:40
(18) не сработает твой способ
22 Wirtuozzz
 
24.08.17
09:55
(21) почему?
23 Wirtuozzz
 
24.08.17
10:01
(21) Хотя нет, вызов принят!

http://cdn1.savepice.ru/uploads/2017/8/24/1b4493e44b2b49a01e1b2dcada1a28a9-full.png

Требую сатисфакции!
24 term1t52
 
24.08.17
10:04
(23) задача была применить подобно на результат этого всего..
25 Wirtuozzz
 
24.08.17
10:09
Ясно, не понял просто. Думал в (21) сказано что метод не работоспособен. А оказалось он просто не применим.
26 term1t52
 
24.08.17
10:11
(25) так ты ж пишешь в 18,

Запросом сразу выберет, что нужно. И потом поместит в временную таблицу, а во втором пакете условие наложит.

У меня вот не получилось условие на представление наложить...
27 term1t52
 
24.08.17
10:12
(26) Видимо я не так понял. Ты имел ввиду условие на вхождение по таблице.. А я понял условие на таблицу перечислений (по подстроке)