Имя: Пароль:
1C
1С v8
как увидеть техническую ссылку элемента спр-ка
0 Adgjj
 
31.08.12
14:58
Здравствуйте!
Скажите, пжл, как увидеть техническую ссылку элемента спр-ка вида:
(7118:89817071bc1f92b911e1044d941ae723)
1 shuhard
 
31.08.12
15:00
(0)[техническую ссылку]
пятнично
2 pumbaEO
 
31.08.12
15:00
3 0_Serg_0
 
31.08.12
15:04
(0)
СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
УникальныйИдентификатор (UUID)
Синтаксис:

УникальныйИдентификатор()
Возвращаемое значение:

Тип: УникальныйИдентификатор.

Описание:

Получает уникальный идентификатор ссылки.
Ссылка может быть получена из уникального идентификатора с помощью метода менеджера ПолучитьСсылку.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
4 Adgjj
 
31.08.12
15:29
Спасибо, а в запросе можно сделать отбор по уник идентификатору?
Запрос.Текст = "ВЫБРАТЬ
   |    ВыработкаТС_Лес.ПутЛист,
     |    ВыработкаТС_Лес.Регистратор ТТД,  
   |    ВыработкаТС_Лес.ВидРаботы ВидРаботы,
   //|    ВыработкаТС_Лес.ВидРаботы.УникальныйИдентификатор()
   |    ИЗ
   |    РегистрНакопления.ВыработкаТС_Лес КАК ВыработкаТС_Лес
   
   |ГДЕ
   |    ВыработкаТС_Лес.Период МЕЖДУ &Дата1 И &Дата2
   //|    И ВыработкаТС_Лес.Активность
   |    И ВыработкаТС_Лес.ПутЛист.Проведен
   |    И ВыработкаТС_Лес.ПутЛист.Рассчитан
   
   //|    ВЫРАЗИТЬ(ВыработкаТС_Лес.ВидРаботы.Ссылка КАК СТРОКА(1000)) = &ВидРаботы
   |    И ВыработкаТС_Лес.ВидРаботы = &ВидРаботы
   |";
   Запрос.УстановитьПараметр("Дата1"       , НачалоДня(Дата(2012,08,01))); //НачалоДня(Дата1)
   Запрос.УстановитьПараметр("Дата2"       , КонецДня(Дата(2012,08,01)));  //КонецДня(Дата2)
   //Запрос.УстановитьПараметр("ВидРаботы"    , "<Объект не найден> (7118:89817071bc1f92b911e1044d941ae723)");
   Запрос.УстановитьПараметр("ВидРаботы"    , Справочники.ВидыРабот.ПустаяСсылка());
   ТЗ = Запрос.Выполнить().Выгрузить();
5 pumbaEO
 
31.08.12
15:33
НЕТ
6 Adgjj
 
31.08.12
15:41
http://s015.radikal.ru/i333/1208/ca/0de53e6ff131.png

выводится же ссылка не ужели условие сравнения не получится написать?
7 Adgjj
 
31.08.12
15:41
На рисунке - ТЗ в отладчике
8 Serg_1960
 
31.08.12
15:44
Это "внешнее" представление ссылки, если можно так выразиться :)
9 Adgjj
 
31.08.12
15:46
Запрос.УстановитьПараметр("ВидРаботы"    , ВнешнееПредставлениеСсылки??? );
10 Reset
 
31.08.12
15:47
(6) Если значение как таковое у тебя есть, сравнение написать можно.
   Запрос.УстановитьПараметр("ВидРаботы"    , ТоСамоеЗначениеКотороеВыглядитКакОбъектНеНайден);
11 Adgjj
 
31.08.12
15:48
значение есть
Запрос.УстановитьПараметр("ВидРаботы"    , "<Объект не найден> (7118:89817071bc1f92b911e1044d941ae723)");
12 Reset
 
31.08.12
15:48
(11) Это не значение, а представление
13 Reset
 
31.08.12
15:50
Ну в (6) же таблица кака-то у тебя. Оттуда возьми.
Таблица[номерСтроки].ВидРаботы
14 Adgjj
 
31.08.12
15:50
Т.е. невозможно сделать отбор в запросе?
Таблица в (6) это ТЗ = Запрос.Выполнить().Выгрузить();
15 Reset
 
31.08.12
15:52
Ладно, на шаг назад давай.
Зачем?
16 Adgjj
 
31.08.12
15:54
пользователь удалила непосредственно элемент справочника, который задействован во множестве путевых листов. Надо восстановить: найти покалеченные путевки и прицепить к ним вновь введенный элемент спр-ка.
17 Kashemir
 
31.08.12
15:54
(11) Что тебе мешает имея нужный ид получить ссылку нужного типа и использовать в запросе как параметр ?
18 Adgjj
 
31.08.12
15:55
ну нельзя в запросе тогда после запроса сделаю просто в запросе хотелось
пробовала в запросе поле ВидРаботы сделать в виде строки, чтоб сравнивать можно было
|    ВЫРАЗИТЬ(ВыработкаТС_Лес.ВидРаботы КАК СТРОКА(200)),  - ругается
19 Adgjj
 
31.08.12
15:56
(17) не знаю как записать параметр
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    ВыработкаТС_Лес.ПутЛист,
     |    ВыработкаТС_Лес.Регистратор ТТД,  
   |    ВыработкаТС_Лес.ВидРаботы ВидРаботы,
   //|    ВЫРАЗИТЬ(ВыработкаТС_Лес.ВидРаботы КАК СТРОКА(200)),
   
   |    ВыработкаТС_Лес.ВидРаботы.наименование
   |    ИЗ
   |    РегистрНакопления.ВыработкаТС_Лес КАК ВыработкаТС_Лес
   
   |ГДЕ
   |    ВыработкаТС_Лес.Период МЕЖДУ &Дата1 И &Дата2
   //|    И ВыработкаТС_Лес.Активность
   |    И ВыработкаТС_Лес.ПутЛист.Проведен
   |    И ВыработкаТС_Лес.ПутЛист.Рассчитан
   //|    ВЫРАЗИТЬ(ВыработкаТС_Лес.ВидРаботы.Ссылка КАК СТРОКА(1000)) = &ВидРаботы
   |    И ВыработкаТС_Лес.ВидРаботы = &ВидРаботы
   |";
   Запрос.УстановитьПараметр("Дата1"       , НачалоДня(Дата(2012,08,01))); //НачалоДня(Дата1)
   Запрос.УстановитьПараметр("Дата2"       , КонецДня(Дата(2012,08,01)));  //КонецДня(Дата2)
   Запрос.УстановитьПараметр("ВидРаботы"    , "<Объект не найден> (7118:89817071bc1f92b911e1044d941ae723)");
   ТЗ = Запрос.Выполнить().Выгрузить();      // Справочники.ВидыРабот.ПолучитьСсылку("7118:89817071bc1f92b911e1044d941ae7232");
20 Reset
 
31.08.12
15:56
(16) Правильнее вновь созданный элемент сразу создать с нужной ссылкой
21 Reset
 
31.08.12
15:57
(19) Ты можешь выбрать все такие записи, поставив условие ГДЕ ВыработкаТС_Лес.ВидРаботы.Ссылка ЕСТЬ NULL
22 Adgjj
 
31.08.12
15:57
Справочники.ВидыРабот.ПолучитьСсылку("7118:89817071bc1f92b911e1044d941ae7232"); ругается
23 fisher
 
31.08.12
15:57
(17) +1
(22) Можно в запросе. Из текста (7118:89817071bc1f92b911e1044d941ae723) собираешь православный гуид, из него создаешь УникальныйИдентификатор, а из него создаешь ссылку, которую уже параметром в запрос.
24 Kashemir
 
31.08.12
15:57
(19)
Запрос.УстановитьПараметр("ВидРаботы"    , Справочники.ВидыРабот.ПолучитьСсылку(Новый УникальныйИдентификатор("вава-вава-вава-вава-вава")));



Алгоритм перевода ИД 89817071bc1f92b911e1044d941ae723 к виду 1С погугли
25 Adgjj
 
31.08.12
15:57
(21) я не уверена, что за время работы базы был ошибочно удален единственный элемент справочника
26 Kashemir
 
31.08.12
15:58
(25) Ну и как собираешся определять ?
27 Reset
 
31.08.12
15:58
(25) Заодно и узнаешь )
28 Adgjj
 
31.08.12
15:59
(20) я не до конца описала ситуацию: пользователь удалила этот элемент справочника, потому что другой пользователь ввел такой же элемент справочника - он решил навести порядок в справочнике, вот и удалил повторяющийся элемент. Т.е. прицеплять к путевкам надо будет уже имеющийся элемент спр-ка
29 Kashemir
 
31.08.12
16:00
(26) Для значений справочника для проверки "битости" ссылки можно проверять обращаясь к значению предопределенных реквизитов типа "код" на ЕстьNULL
30 Reset
 
31.08.12
16:01
(28) Ну и выполни с (21), если там будет только 1, останется всего то поменять в документах
31 Adgjj
 
31.08.12
16:01
(26) легко: знаю, в какой путевке был задействован удаленный эл-т спр-ка
32 Kashemir
 
31.08.12
16:01
+(29) ГДЕ ВыработкаТС_Лес.ВидРаботы.Код ЕстьNULL
33 Reset
 
31.08.12
16:01
(30) "различный 1" ;)
34 Adgjj
 
31.08.12
16:02
(30) документов сотни, в которых был задействован именно этот удаленный эл-т
35 Reset
 
31.08.12
16:02
(32) пробел пропустил
36 Reset
 
31.08.12
16:03
(34) Не пойму, что тебе надо то?
37 Reset
 
31.08.12
16:03
Значит выведет сотни документов
38 Kashemir
 
31.08.12
16:03
(21) Не будет работать - ссылка то осталась - а вот объекта уже нет
39 Reset
 
31.08.12
16:03
(20) Ты отказываешься. Значит будешь менять в сотнях. Руками или обработкой.
40 Reset
 
31.08.12
16:04
(38) Не тормози) Там левое соединение на таблицу
41 Adgjj
 
31.08.12
16:04
я просто читать не успеваю
42 Kashemir
 
31.08.12
16:04
+(38) а хотя будет ... туплю - удаляюсь :)
43 Serg_1960
 
31.08.12
16:09
(0) Не надо искать объекты где эта "битая" ссылка. Надо новый объект создать и присвоить ему нужный внутренний идентификатор. А потом уже поиск ссылок на объект и его замена на другой (если нужно).

См. например п.15 из v8: В узле РИБ: <Объект не найден> (158:8922001a4bf1113011e01d50e968ff87) как узнать
44 Reset
 
31.08.12
16:10
(43) "Надо новый объект создать и присвоить ему нужный внутренний идентификатор"
Далее не надо :)
Я это предложил в (20)
45 Serg_1960
 
31.08.12
16:16
(44) Надо, увы надо. Надо повторять одно и тоже на разные лады, пока до автора не дойдёи смысл вышесказаного.
46 Reset
 
31.08.12
16:17
(45) Я имел ввиду что поиск ссылок и замена не надо.
47 Serg_1960
 
31.08.12
16:24
(46) Уга. Если восстановят объект и все его значения - то, да, нет смысла что-либо искать и заменять.