Имя: Пароль:
 
1C
1С v8
Как "Справочник" преобразовать в Справочники, "Документ" в Документы и т. д.?
0 PR
 
07.11.20
20:55
1. Можно вот так... 0% (0)
2. Нельзя 0% (0)
3. Ничего не понял 0% (0)
4. Перфекционизм — зло, говнокодерство наше все 0% (0)
Всего мнений: 0

Скучно что-то, давайте хоть поперфекционируем :))

Нужно из навигационной ссылки типа e1cib/data/Справочник.Валюты?ref=b7995cd501544c7a46e1894c3860a219 получить ссылку на объект
Вместо справочника Валюты там может быть любая ссылка

В принципе-то говновариант понятен
Пусть ТипМетаданных — это вычисленный из навигационной ссылки текст "Справочник", "Документ" или пр.
Ну или "Catalog", "Document" и пр., если уж обрабатывать все варианты
Тогда менеджер получается так

Если ТипМетаданных = "Справочник"
    Или ТипМетаданных = "Catalog" Тогда
    Менеджер = Справочники;
ИначеЕсли ТипМетаданных = "Документ"
    Или ТипМетаданных = "Document" Тогда
    Менеджер = Документы;
...
КонецЕсли;


А вот можно ли (и если да, то как) сделать все это преобразование без такого сравнения с текстовыми константами?
1 Aleksey
 
07.11.20
21:00
Процедура ПолучитьСсылкуИзНавигационной(НС)
    
    ПерваяТочка = Найти(НС, "e1cib/data/");
    ВтораяТочка = Найти(НС, "?ref=");
    
    ПредставлениеТипа   = Сред(НС, ПерваяТочка + 11, ВтораяТочка - ПерваяТочка - 11);
    ШаблонЗначения = ЗначениеВСтрокуВнутр(ПредопределенноеЗначение(ПредставлениеТипа + ".ПустаяСсылка"));
    ЗначениеСсылки = СтрЗаменить(ШаблонЗначения, "00000000000000000000000000000000", Сред(НС, ВтораяТочка + 5));
    Ссылка = ЗначениеИзСтрокиВнутр(ЗначениеСсылки);
    
КонецПроцедуры
2 PR
 
07.11.20
21:03
(1) О как! Точно, про ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр я как раз и забыл :))
3 Сергиус
 
07.11.20
23:13
(0)Для чего это нужно все?
4 PR
 
09.11.20
12:28
(3) Я же вроде в (0) написал
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший