Имя: Пароль:
1C
1С v8
Получить синоним перечисления по частичному совпадению
0 Andy Jr
 
29.11.16
11:19
Дано: Есть документ, в нем список складов в сокращенном виде, типа "Опт" и "Розн", нужно в новый созданный документ подставить синоним из перечислений по совпадению, например LIKE('%Опт%'). Не знаю как это сделать в функции. В данном коде сравнивает имя перечисления "Оптовый склад" = "Опт", не прокатывает. Чем заменить "="

<code>

&НаКлиенте
Процедура ПоказатьРезультат(Команда)
    
    пСинонимПеречисления = "Опт";
    РП = ИмяПеречисленияПоСинониму(пСинонимПеречисления);
    Сообщить(РП);
    
КонецПроцедуры

&НаСервере
Функция ИмяПеречисленияПоСинониму(пСинонимПеречисления) Экспорт
    КолекцияЗначенийПеречисления = Метаданные.Перечисления.ТипыСкладов.ЗначенияПеречисления;
    Для каждого пНайденноеЗначение из КолекцияЗначенийПеречисления Цикл
        Если пНайденноеЗначение.Имя = пСинонимПеречисления Тогда
            Возврат пНайденноеЗначение.Синоним;
        КонецЕсли;
    КонецЦикла;
КонецФункции

</code>
1 Lexey_
 
29.11.16
11:25
(0) Найти(), СтрНайти()
2 Andy Jr
 
29.11.16
11:29
(1) Lexey_, огромнейшее спасибо тебе, добрый специалист!
3 Живой Ископаемый
 
29.11.16
11:30
м... Вообще-то Найти и СтрНайти будет работать на равенство только, поправьте если я ошибаюсь.
Но зато можно тз скормить построителю запросов.
4 Andy Jr
 
29.11.16
11:31
Функция ИмяПеречисленияПоСинониму(пСинонимПеречисления) Экспорт
    КолекцияЗначенийПеречисления = Метаданные.Перечисления.ТипыСкладов.ЗначенияПеречисления;
    Для каждого пНайденноеЗначение из КолекцияЗначенийПеречисления Цикл
        Если СтрНайти(пНайденноеЗначение.Имя, пСинонимПеречисления) > 0 Тогда
            Возврат пНайденноеЗначение.Синоним;
        КонецЕсли;
    КонецЦикла;
КонецФункции
5 Живой Ископаемый
 
29.11.16
11:32
а.в таком смысле, ну да
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.