Сейчас нахожу так:
ЭлементСправочника = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД));
А как определить, если мы заранее не знаем вид справочника?
ЗЫ
сорри за тупняк
ЗЫЗЫ
только у меня миста лежит?
Сейчас нахожу так:
ЭлементСправочника = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД));
А как определить, если мы заранее не знаем вид справочника?
ЗЫ
сорри за тупняк
ЗЫЗЫ
только у меня миста лежит?
(3) только у тебя...
Чуть допилил (2), до нормального состояния
Функция ПолучитьСсылкуПоУИД(УИД, ОбъектыМенеджер = Неопределено) УникальныйИдентификатор = Новый УникальныйИдентификатор(УИД); Если ОбъектыМенеджер = Неопределено Тогда СсылкаНаОбъектГуид = ПолучитьСсылкуПоУИД(УИД, Справочники); Если СсылкаНаОбъектГуид = Неопределено Тогда СсылкаНаОбъектГуид = ПолучитьСсылкуПоУИД(УИД, Документы); КонецЕсли; Если СсылкаНаОбъектГуид = Неопределено Тогда СсылкаНаОбъектГуид = ПолучитьСсылкуПоУИД(УИД, ПланыВидовХарактеристик); КонецЕсли; Если СсылкаНаОбъектГуид = Неопределено Тогда СсылкаНаОбъектГуид = ПолучитьСсылкуПоУИД(УИД, ПланыСчетов); КонецЕсли; Если СсылкаНаОбъектГуид = Неопределено Тогда СсылкаНаОбъектГуид = ПолучитьСсылкуПоУИД(УИД, ПланыОбмена); КонецЕсли; Если СсылкаНаОбъектГуид = Неопределено Тогда СсылкаНаОбъектГуид = ПолучитьСсылкуПоУИД(УИД, БизнесПроцессы); КонецЕсли; Если СсылкаНаОбъектГуид = Неопределено Тогда СсылкаНаОбъектГуид = ПолучитьСсылкуПоУИД(УИД, Задачи); КонецЕсли; Возврат СсылкаНаОбъектГуид; Иначе Для Каждого Менеджер Из ОбъектыМенеджер Цикл СсылкаНаОбъектГуид = Менеджер.ПолучитьСсылку(УникальныйИдентификатор); Если СсылкаНаОбъектГуид.ПолучитьОбъект() <> Неопределено Тогда Возврат СсылкаНаОбъектГуид; КонецЕсли; КонецЦикла; Возврат Неопределено; КонецЕсли; КонецФункции
Можно сделать циклом без рекурсий и без перечисления портянкой видов объектов
Если бы ты этот вопрос задал на мисте, я бы тебе скинул код как это делал у себя.
ЗЫ: УИДы - хороший способ передавать ссылки на объекты 1с между пользователями по скайпу.
(8) люблю, но только там где надо. Здесь же описывается способ, который при утрировании, позволяет вообще все функции в одну запихнуть
Было
Функция А(парам) ; .... Функция Б(парам) ; ... X=А(п) ; Y=Б(X) ;
Стало
Функция ВсеФункции(парам, имяфункции) ... X=ВсеФункции(п, "А") ; Y= ВсеФункции(X," Б") ;
И когда из одной функции надо вызвать другую, возникает рекурсия.
А оно надо тут?
sda553 люблю, но только там где надо
Так это ж не рекурсия. Что это за рекурсия в которой максимум 1 переход может быть?
Да, это не рекурсия
по сути, это вариант записи в синтаксисе 1с перегрузки функции
admin govnoforuma Считается дурным тоном.
мусье трындит
Сцуко обезьяна умнее чем вы оказывается
вот очень мне интересно, как вы будете писать, например, программу обхода бинарного дерева на циклах
(23) ну, навскидку
Таб=Новый ТаблицаЗначений; Таб.колонки.добавить("УзелДерева"); Таб.Колонки.Добавить("Обработан"); НоваяСтрока = Таб. Добавить(); НоваяСтрока.УзелДерева = корень: НоваяСтрока.Обработан=ложь; пока Истина Цикл Для каждого Эл из Таб Цикл Если эл.Обработан Тогда Таб.Удалить(эл); Иначе Если ЗначениеЗаполнено(эл.УзелДерева.Левый) Тогда нс=Таб.Добавить(): нс.УзелДерева=эл.УзелДерева.Левый; нс.Обработан=Ложь; КонецЕсли Если ЗначениеЗаполнено(эл.УзелДерева.Правый) Тогда нс=Таб.Добавить(); нс.УзелДерева=эл.УзелДерева.Правый; нс.Обработан=Ложь; КонецЕсли эл.Обработан=Истина; КонецЕсли КонецЦикла; Если таб.Количество()=0 тогда превать; КонецЕсли; КонецЦикла;
Но согласен, рекурсией приятнее
(20) Точно. Потому что мне это не нужно
(23) В нормальных конторах часто задают задачу обхода бинарного дерева. Но, как мы уже выяснили, ты бы не прошел такую проверку, потому что рекурсиофил.
встретились как-то рекурсиофил и рекурсофоб :)
вышедшая из под контроля рекурсия забила стек, сожгла блок питания и набила морду программисту
У попа была собака, он её любил...
(28) Потом вернулась в прошлое убить мать программиста чтобы тот не родился.
Прикольно. Если в гугле набить "рекурсия", то он заботливо Вам предложит: "Возможно, вы имели в виду: рекурсия"
"To iterate is human, to recurse, divine"
— James O. Coplien, Bell Labs
Примерный перевод: Человеку свойственны итерации, рекурсия - удел богов
(35) капец, ты проснулся
(35) не ссылка, а уид
(38) в теории все может быть. Что не противоречит принципу Паули.
за тип ссылки отвечает rref
http://its.1c.ru/db/metod8dev#content:1828:hdoc
по сути, rref не указывает явно, что это ссылка на документ или справочник.
rref указывает индекс таблицы, а вот уже в описании таблицы указано, что это за метаданные
так что, с точки зрения rref, что документ и справочник, что справочник.контрагенты или справочник.номенклатура - суть разные сущности
(45) нет, там просто уид
(45) нет. а зачем? там тип однозначно определён в метаданных
(42) есть ещё type, но он не относится к типу ссылки, а относится к типу самого поля
andrewks по сути, rref
опечатка. tref
rref - сам uid
Уид формироуется из номер сеанса + счётчик. Т.е. в пределах одного сеанса не может быть создано двух одинаковых уидов. А номера сеансов тоже уникальны
(50) Это не так.
Вообще, задача странноватая, на самом деле я могу создать объект с произвольным UIDoм.
Например, могу создать элемент справочника, документ, с УИдом пользователя ИБ.