Имя: Пароль:
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) УПП - Общий модуль, написал бы перто для приличия)

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