gifts2017

Получаем "Тип" и "Вид" значения

Опубликовал WWWolfy (WWWolfy) в раздел Программирование - Практика программирования

Получаем "Тип.Вид" значения, например "Справочник.Сотрудники".
Иногда надо получить "Тип.Вид" неизвестного значения в виде "Справочник.Сотрудники" или "Документ.Реализация", но надо учитывать, что, возможно, попадётся "Строка", для которой "Вид()" неприменим.
Ставить кучу "Если ТипЗначенияСтр()=" или "Попытка" некрасиво. Поступим иначе:

спзн = СоздатьОбъект("СписокЗначений");
текЗначение = "Например это строковое значение"; //для примера стрТипВид = ЗначениеВСтроку(текЗначение);
спзн.ИзСтрокиСРазделителями(стрТипВид);
Если спзн.РазмерСписка()<=2 Тогда ТипВид = спзн.ПолучитьЗначение(1); // Число, Строка, Дата Иначе ТипВид = спзн.ПолучитьЗначение(1) + "."+спзн.ПолучитьЗначение(2);
КонецЕсли;
Сообщить(ТипВид); // получили нечто вроде "Справочник.Сотрудники" 
спзн.ПолучитьЗначение(1) - Тип
спзн.ПолучитьЗначение(2) - Вид (если есть)

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Антон Рощин (wolfsoft) 12.10.06 17:24
2. Станислав (zalst) 18.10.06 13:33
3. Илья 19.10.06 21:02
Зачем такой огород городить?
ТипВид=ТипЗначенияСтр(текЗначение)+?(ТипЗначения(текЗначение) > 3, "."+текЗначение.Вид(), "");
4. WWWolfy (WWWolfy) 20.10.06 00:03
Споткнётся на таких вещах:
текЗначение = ВидРасчета.Авторские;
текЗначение = Перечисление.ТипыЧасов;
текЗначение = глВзятьКонтекст(контекст);

Но идея тоже красивая!
5. Илья 20.10.06 13:22
Ну хорошо ;). Если сделать вот так
ТипВид=ТипЗначенияСтр(текЗначение)+?(ТипЗначения(текЗначение)%14 > 3, "."+текЗначение.Вид(), "");
то 1. вернет тоже, что и твой код
2.НеизвестныйОбъект против твоей пустой строки
3. ГрупповойКонтекст против твоей пустой строки
6. WWWolfy (WWWolfy) 20.10.06 14:43
Отлично! Можешь написать статью, я дам ссылку отсюда.

А вообще я использовал "ЗначениеВСтроку" потому что потом, с помощью "ЗначениеВСтрокуВнутр", достаю ID объекта.
7. Илья 20.10.06 20:54
Лучше добавь в свою статью как вариант.
8. WWWolfy (WWWolfy) 23.10.06 10:45
Так вроде уже добавлено - в обсуждении.
Илья "баткович", как вас по фамилии?
9. Шайехов Алмаз Ольфатович Шайехов (Diamond) 21.01.07 20:51
а не проще через
Попытка
Вид=ТекЗначение.Вид()
Исключение
Сообщить("нету вида");
КонецПопытки
10. Я не робот! 02.05.07 13:16
Чтобы удостовериться, что вы не робот, пожалуйста введите код защиты:
Я не робот!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа