Имя: Пароль:
1C
1С v8
По типу значения получить пустую ссылку. Как?
0 YF
 
26.12.11
15:48
Есть переменная в ней тип, например:

переменная_ = Тип("СправочникСсылка.Контрагенты");

как имея значение этой переменной получить пустую ссылку справочника контрагенты?
1 PR
 
26.12.11
15:49
Новый
2 Amra
 
26.12.11
15:50
(1) Скорее Переменная = Справочники.Контрагенты.ПустаяСсылка()
3 YF
 
26.12.11
15:51
(2) Охренеть
4 YF
 
26.12.11
15:51
(1) А как? пустаяСсылка = Новый переменная_?

так ругается что тип "переменная_" не определен
5 Господин ПЖ
 
26.12.11
15:52
(1) +100

(2) садись, два
6 DrShad
 
26.12.11
15:54
(5) +100500
7 kuromanlich
 
26.12.11
15:55
переменная.ПустаяСсылка(), не?
8 YF
 
26.12.11
15:57
(7) неа
9 Fragster
 
гуру
26.12.11
15:57
Справочники[Значение.Метаданные.Имя()].ПустаяСсылка()
10 Fragster
 
гуру
26.12.11
15:58
Справочники[Значение.Метаданные().Имя].ПустаяСсылка()
11 DrShad
 
26.12.11
15:58
(10) топик читал?
12 Галахад
 
гуру
26.12.11
15:59
Новый(Переменная)?
13 salvator
 
26.12.11
16:01
(0)
ТвояПустаяСсылка = Новый(переменная_);
14 ptiz
 
26.12.11
16:02
ТвояПустаяСсылка = Новый(ТипЗнч(переменная));
15 YF
 
26.12.11
16:03
(12) ага, спс
16 Галахад
 
гуру
26.12.11
16:03
(15) Дык, см (1).
17 andrewks
 
26.12.11
16:07
(для истинных извращенцев)  можно через ТЗ замутить :)
18 YF
 
26.12.11
16:09
(16) Да я запарил про вызов со скобками
19 vmv
 
26.12.11
16:09
перто, не изобретайте велосипеды

// Возвращает менеджер объекта по ссылке на объект
//
// Не обрабатываются точки маршрутов бизнес-процессов
//
// Параметры:
//  Ссылка       - ссылка на объект, - элемент справочника, документ, ...
//
// Возвращаемое значение:
//  СправочникМенеджер, ДокументМенеджер, ...
//
Функция МенеджерОбъектаПоСсылке(Ссылка) Экспорт
   
   ИмяОбъекта = Ссылка.Метаданные().Имя;
   ТипСсылки = ТипЗнч(Ссылка);
   
   Если Справочники.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат Справочники[ИмяОбъекта];
       //
   ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат Документы[ИмяОбъекта];
       //
   ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат БизнесПроцессы[ИмяОбъекта];
       //
   ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат ПланыВидовХарактеристик[ИмяОбъекта];
       //
   ИначеЕсли ПланыСчетов.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат ПланыСчетов[ИмяОбъекта];
       //
   ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат ПланыВидовРасчета[ИмяОбъекта];
       //
   ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат Задачи[ИмяОбъекта];
       //
   ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат ПланыОбмена[ИмяОбъекта];
       //
   ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
       Возврат Перечисления[ИмяОбъекта];
   Иначе
       Возврат Неопределено;
   КонецЕсли;
   
КонецФункции

МенеджерОбъектаПоСсылке = МенеджерОбъектаПоСсылке(Знгачение.Контрагент);

Если ЗначениеЗаполнено(МенеджерОбъектаПоСсылке) Тогда
ПустойКонтрагент = МенеджерОбъектаПоСсылке.ПустаяСсылка();
Иначе
Сообщить("Значение не является ссылкой этой ИБ");
КонецЕсли;
20 Defender aka LINN
 
26.12.11
16:13
(19) Положи обратно где спер. Ответ в (1)
21 YF
 
26.12.11
16:14
(19) фигня это, т.к. не дает решения для задачи из (0)
22 hhhh
 
26.12.11
16:14
(19) не угадал
23 Axel2009
 
26.12.11
16:26
Справочники[Строка(Тип("СправочникСсылка.Контрагенты"))].ПустаяСсылка()
24 YF
 
26.12.11
16:27
(23) И ты не угадал
25 Defender aka LINN
 
26.12.11
16:28
(23) Удачи со справочником "СтатьиДвиженияДенежныхСредств", например. В общем, расстрелять.
26 Fragster
 
гуру
26.12.11
16:32
(11) а, ну тогда через XMLЗначение(Тип("СправочникСсылка.Контрагенты"), "00000000-0000-0000-0000-000000000000")
27 sda553
 
26.12.11
16:32
Это понедельник, а не пятница

мета = МетаданныеНайтиПоТипу(НужныйТип);
менеджер = Справочники[мета.Имя];
ПустаяСсылка = менеджер.ПустаяСсылка();
БитаяСсылка = менеджер.ПолучитьСсылку(Новый УникальныйИдентификатор());
НовыйЭлемент = менеджер.СоздатьЭлемент();
28 vmv
 
26.12.11
16:33
в общем случае нужно выходит на менеджер объекта того объекта, которое содержит реквизит значения.

Доустим у нас есть какая-то переменная и в ней есть ссылочный реквизит КонтрагентДокумента, НомеклатураДокумента, ЧертиШтоНоСссылкаВЭтом

и что игра с именами бред, ваши преобразования бред

получаем значение этого реквизита и получаем его менеджер без плясок с бубном
из менеджера получаем пустую ссылку - все
29 Fragster
 
гуру
26.12.11
16:34
(27) -> (26) отловит не только спарвочники, но и любой ссылочный объект
30 Axel2009
 
26.12.11
16:42
Справочники[СтрЗаменить(XMLТип(Тип("СправочникСсылка.СтатьиДвиженияДенежныхСредств")).ИмяТипа, "CatalogRef.", "")].ПустаяСсылка()
31 Axel2009
 
26.12.11
16:43
(25) да согласен, давно не пользовался этой темой =)
32 acsent
 
26.12.11
16:44
А если через ПривестиЗначение?
33 Defender aka LINN
 
26.12.11
16:46
Я рыдаю...
34 Axel2009
 
26.12.11
16:47
(33) код показывай, а не рыдай
35 Господин ПЖ
 
26.12.11
16:49
до сотни дотянет?
36 Defender aka LINN
 
26.12.11
16:49
(34) Ответ в (1). В ПЕРВОМ, ять, посте.
37 vmv
 
26.12.11
16:50
у вас есть только значение, программа ТУПАЯ она вам не скажет что это за объект
"Контрагенты", "СтатьиДвиженияДенежныхСредств" и т.д.

вот когда она будет говорить четко, то можете работать в одну струку, а так - вилами по воде писано)
38 Defender aka LINN
 
26.12.11
16:50
+(36) Автор давно уже код написал, и доволен, а в ветке до сих пор бурлит... :)
39 Reset
 
26.12.11
16:50
Ссылка = XMLЗначение(переменная_, "00000000-0000-0000-0000-000000000000");
40 vmv
 
26.12.11
16:52
(35) НОВЫЙ() что?

когда ты получил вложенное значение реквизита  некого объекта полученного, например, при обходе выборки объединенного запроса?
41 Господин ПЖ
 
26.12.11
16:53
(40) закусывать надо... в (0) ясно написано что есть "тип"
42 Defender aka LINN
 
26.12.11
16:53
(40) Во-первых, у автора есть ТИП, а не значение.
Во-вторых, "Новый(Тип)". ВНЕЗАПНО, да?
43 Reset
 
26.12.11
16:53
хех, а ведь верно,  Ссылка = Новый (переменная_) тоже работатет ;)
44 Reset
 
26.12.11
16:54
+(43) СП его называет "Синтаксис (вариант 2)"
45 Defender aka LINN
 
26.12.11
16:55
Ну и со значением код увеличивается на 8 символов.
46 vmv
 
26.12.11
16:55
Ссылка да, пустую получим, а толку с нее - как признак использовать



как правило в таких задачах нужен новый Объект, а вот его хрен без менеджера)
47 DrShad
 
26.12.11
17:21
млин, сборище акынов - кто что видит, то и поет, а не то что нужно ТС )))))
48 Axel2009
 
26.12.11
17:30
(42) реально внезапно! =)
49 Rovan
 
гуру
26.12.11
17:48
дарю:

// Предназначена для получения пустого значения заданного типа:
//    примитивного, или ссылочного. Используется
//
// Параметры:
//    ЗаданныйТип   - тип, пустое значение которого нужно получить
//
Функция ПустоеЗначениеТипа(ЗаданныйТип) Экспорт

   Если ЗаданныйТип = Тип("Число") Тогда
       Возврат 0;

   ИначеЕсли ЗаданныйТип = Тип("Строка") Тогда
       Возврат "";

   ИначеЕсли ЗаданныйТип = Тип("Дата") Тогда
       Возврат '00010101000000';

   ИначеЕсли ЗаданныйТип = Тип("Булево") Тогда
       Возврат Ложь;

   Иначе
       Возврат Новый (ЗаданныйТип);

   КонецЕсли;

КонецФункции // ПустоеЗначениеТипа();
50 vmv
 
26.12.11
17:58
(49)(c) УПП - Общий модуль, написал бы перто для приличия)

да, ссылка(пустое значение) ноу проблемс, проблемс получить контейнер для модификации, но это уже совсем другая история
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан