|
1C V8 сравнение с множеством | ☑ | ||
---|---|---|---|---|
0
technik-1c
21.01.16
✎
14:13
|
Есть ли языке в 1С v8 :
1) Оператор сравнения с множеством (или вхождения в перечисление) Если Условие IN (1,2,3,4) Тогда или Если Условие IN ("1","2","3","4") Тогда 2) Оператор CASE ВЫБОР Условие Для 1 : 2 : Спасибо. |
|||
1
FIXXXL
21.01.16
✎
14:14
|
в запросе есть
|
|||
2
butterbean
21.01.16
✎
14:14
|
нет
|
|||
3
chelentano
21.01.16
✎
14:14
|
да и не только в запросе
|
|||
4
Nuobu
21.01.16
✎
14:15
|
(0)
Массив = Новый Массив(); Массив.Добавить(1); Массив.Добавить("1"); Массив.Добавить(2); Массив.Добавить("2"); Массив.Добавить(3); Массив.Добавить("3"); Массив.Содержит(3); |
|||
5
technik-1c
21.01.16
✎
14:15
|
(1) Спасибо.А в языке 1С?
|
|||
6
Волшебник
модератор
21.01.16
✎
14:15
|
1) Если Массив.Найти(Условие) <> Неопределено Тогда
2) только ИначеЕсли |
|||
7
technik-1c
21.01.16
✎
14:17
|
(4)(6) Спасибо.
Можно ли задать значения всего массива одной строкой (1,2,3,4)? |
|||
8
Nuobu
21.01.16
✎
14:20
|
(7) нет, но можно написать функцию в глобальном модуле.
Функция СоздатьМассив(ЗначРаз = Неопределено, ЗначРазРаз = 0, ЗначТриРаза = "") Массив = Новый Массив; Если ЗначениеЗаполнено(ЗначРаз) Тогда Массив.Добавить(ЗначРаз); КонецЕсли; Возврат Массив; КонецФункции |
|||
9
Волшебник
модератор
21.01.16
✎
14:20
|
(7)
Массив.Добавить(1); Массив.Добавить(2); Массив.Добавить(3); |
|||
10
Кирпич
21.01.16
✎
14:22
|
Если СтрНайти("1234","3") <> 0 Тогда
|
|||
11
oslokot
21.01.16
✎
14:22
|
(9) бгг)
|
|||
12
Garykom
гуру
21.01.16
✎
14:24
|
(10) а терь плиз для дву...N-значных чисел?
|
|||
13
Nuobu
21.01.16
✎
14:25
|
(12) Если СтрНайти("12,34","34") <> 0 Тогда
|
|||
14
Кирпич
21.01.16
✎
14:25
|
(12)
Если СтрНайти("1.2.3.4.99","99") <> 0 Тогда |
|||
15
Garykom
гуру
21.01.16
✎
14:26
|
(13) (14) а теперь для дробных?
|
|||
16
Garykom
гуру
21.01.16
✎
14:27
|
(15)+ и вы не думайте... я на этом "собаку съел", уже еще 3 пункта подготовлено...
|
|||
17
Nuobu
21.01.16
✎
14:28
|
(15) Если СтрНайти("1.2,33.4,99.33","99.33") <> 0 Тогда
|
|||
18
Кирпич
21.01.16
✎
14:28
|
(15) сам придумай, если не тупой
|
|||
19
Garykom
гуру
21.01.16
✎
14:28
|
(18) json
|
|||
20
Кирпич
21.01.16
✎
14:31
|
(19) что json?
|
|||
21
Garykom
гуру
21.01.16
✎
14:33
|
(20) json - это строка
|
|||
22
НЕА123
21.01.16
✎
14:33
|
(7)
частенько в 1С используют Новый Структура("Эл1,Эл2,Эл3",1,2,3); неудобства ключ д.б. идентификатором, надо указывать значения в обязах, т.к. есть только метод Свойство() |
|||
23
Nuobu
21.01.16
✎
14:35
|
(22) Как этим пользоваться для поиска?
|
|||
24
НЕА123
21.01.16
✎
14:40
|
сорри в (22) соврал.
Свойство() возвращает Булево. так что значения необязательно. (23) Структ = Новый Структура("Эл1,Эл2,Эл3"); если Структ.Свойство("Эл1") Тогда //есть такое .... |
|||
25
Кирпич
21.01.16
✎
14:42
|
(21) ну все как бы в курсе что это строка. какое это отношение к теме имеет непонятно.
|
|||
26
ObjectRelation Model
21.01.16
✎
14:43
|
даешь LINQ в 1С
|
|||
27
Nuobu
21.01.16
✎
14:46
|
(24) Лучше уже соответствие.
|
|||
28
Garykom
гуру
21.01.16
✎
14:54
|
(25) в json массивы есть, с разными типами значений
поэтому можно юзать формат (готовый) для реализации "множеств" |
|||
29
Nuobu
21.01.16
✎
14:58
|
(28) В 1С они тоже есть.
|
|||
30
Кирпич
21.01.16
✎
15:01
|
(28) спасибо. я как нибудь по проще с четырьмя цифрами справлюсь.
|
|||
31
Garykom
гуру
21.01.16
✎
15:04
|
(30) да согласен можно и проще, просто если есть готовый формат почему бы не юзать?
а то потом еще что то захочется и снова свой лисапед придется изобретать ;) |
|||
32
Кирпич
21.01.16
✎
15:19
|
(31) да вроде изобретать то нечего. секундное дело.
|
|||
33
ejikbeznojek
21.01.16
✎
15:25
|
А давайте извращаться?
ТЗ=новый ТаблицаЗначений; тз.Колонки.Добавить("СтрокиИщемТут", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(10))); СтрТЗ=тз.Добавить(); СтрТЗ.СтрокиИщемТут="ыы"; СтрТЗ=тз.Добавить(); СтрТЗ.СтрокиИщемТут="уу"; СтрТЗ=тз.Добавить(); СтрТЗ.СтрокиИщемТут="ыу"; СтрТЗ=тз.Добавить(); СтрТЗ.СтрокиИщемТут="уу"; СЗСтрок=новый СписокЗначений; СЗСтрок.Добавить("ыы"); СЗСтрок.Добавить("уу"); запрос=новый запрос; Менеджер=Новый МенеджерВременныхТаблиц; Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ * |ПОМЕСТИТЬ ВТ |ИЗ | &ТЗ как ТЗ |; |Выбрать * | из ВТ |Где ВТ.СтрокиИщемТут в (&СЗСтрок)"; Запрос.УстановитьПараметр("ТЗ",ТЗ); Запрос.УстановитьПараметр("СЗСтрок",СЗСтрок); Запрос.МенеджерВременныхТаблиц=Менеджер; Результат=Запрос.Выполнить().Выгрузить(); Сообщить(Строка(Результат.Количество())); |
|||
34
ejikbeznojek
21.01.16
✎
15:26
|
+(33) соответственно для поиска вхождений для каждого типа данных нужна будет своя колонка в ТЗ))
|
|||
35
Garykom
гуру
21.01.16
✎
15:35
|
Мне нравится что целая ветка не о чем ))
(0) в 1С для этого есть "СписокЗначений" |
|||
36
Garykom
гуру
21.01.16
✎
15:36
|
(35)+ вместо CASE юзают
Если Условие1 Тогда ... ИначеЕсли Условие2 Тогда ... Иначе ... КонецЕсли; |
|||
37
technik-1c
21.01.16
✎
19:18
|
(все)
Буду выбирать варианты )) (4) Метод объекта не обнаружен (Содержит) Наверное нужно использовать Массив.Найти(<Значение>) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |