|
Можно ли поменять УИД существующего справочника? | ☑ | ||
---|---|---|---|---|
0
БукинГена
07.12.15
✎
13:59
|
Вариант замена ссылок не предлагать
|
|||
1
dsdred
07.12.15
✎
14:26
|
Справочника или элемента справочника?
|
|||
2
cw014
07.12.15
✎
14:26
|
Можно и нельзя одновременно
|
|||
3
cw014
07.12.15
✎
14:26
|
Средствами 1С нельзя
|
|||
4
cw014
07.12.15
✎
14:26
|
Средствами MSSQL можно
|
|||
5
cw014
07.12.15
✎
14:27
|
Хотя вру. Средствами 1С можно
|
|||
6
cw014
07.12.15
✎
14:27
|
И + это все для элемента справочника
|
|||
7
Живой Ископаемый
07.12.15
✎
14:27
|
2(5) м... Через ВИД на 8.3.5+?
|
|||
8
cw014
07.12.15
✎
14:29
|
(7) Неее, более просто
|
|||
9
aleks_default
07.12.15
✎
14:29
|
(0)А можно узнать обоснование такой необходимости?
|
|||
10
Живой Ископаемый
07.12.15
✎
14:32
|
2(8) рассказывай, потому что я например все время думал что нельзя
|
|||
11
dsdred
07.12.15
✎
14:49
|
(10) Просто новый уникальный идентификатор подсовываешь элементу и все. Если про Элемент справочника речь идет.
|
|||
12
cw014
07.12.15
✎
14:50
|
(11) И как ты это сделаешь?
|
|||
13
Живой Ископаемый
07.12.15
✎
14:52
|
||||
14
vde69
07.12.15
✎
14:54
|
(11) а то, что в реквизитах и измерениях других объектов записан старый гуид - пофигу?
|
|||
15
Garykom
гуру
07.12.15
✎
14:55
|
(14) ыыыы :) как понял он как раз не хочет замену делать в других объектах
а просто подменить уид который везде прописан на нужный |
|||
16
Garykom
гуру
07.12.15
✎
14:55
|
(15)+ но задачка довольно редкая, обычно дубли и нужно все равно менять в других
|
|||
17
Живой Ископаемый
07.12.15
✎
14:56
|
2(11) вообще пофигу, их можно поменять с помщь чуть допиленной бработки поиск и замена занчений. Но вот на само " подсовываешь элементу и все." я бы посмотрел
|
|||
18
БукинГена
07.12.15
✎
14:57
|
(9) Данные при обмене задублировались. Если делать через замену ссылок слишком дофига документов перепровести. Проще менять уид
|
|||
19
bolobol
07.12.15
✎
14:57
|
(11) "подсовываешь элементу", простите, "в куда"?
|
|||
20
cw014
07.12.15
✎
14:58
|
Кому тут нужен был способ через 1С поменять UUID у элемента справочника? P.S. (18) тебе это не поможет
|
|||
21
bolobol
07.12.15
✎
14:59
|
(18) При заменен ссылок - как раз именно "перепроводить" ничего не требуется. Перепроводить потребуется то, что из-за смены элементов сменило дальнейшее поведение, т.е. - не убежать никуда.
|
|||
22
Garykom
гуру
07.12.15
✎
14:59
|
(18) при дублях не прокатит, сами то подумайте
ну подменили уид у элемента справочника, но этот справочник где раньше был теперь его там нету )) |
|||
23
Живой Ископаемый
07.12.15
✎
15:00
|
2(20) мне, ну вернее давно не нужен был, но всегда интересно...
|
|||
24
cw014
07.12.15
✎
15:00
|
(23) Почту давай, экспромт выкину
|
|||
25
Garykom
гуру
07.12.15
✎
15:00
|
задачка полезная только если нужно 2 элемента местами быстро поменять
но тогда не проще ли их переименовать? |
|||
26
Живой Ископаемый
07.12.15
✎
15:01
|
octoberhammer<тут собачка>gmail<тут точка>com
|
|||
27
Живой Ископаемый
07.12.15
✎
15:02
|
будет работать на 8.2.19?
|
|||
28
PR третий
07.12.15
✎
15:04
|
(0) Нет
|
|||
29
PR третий
07.12.15
✎
15:05
|
(18) Рукалицо
Прочитай (14) |
|||
30
aleks_default
07.12.15
✎
15:05
|
(24) А че, секретная технология? Тут выложить нельзя? Или хотя бы в общих чертах...
|
|||
31
cw014
07.12.15
✎
15:10
|
(27) Лови
|
|||
32
cw014
07.12.15
✎
15:10
|
(30) Это авторская разработка ))))
|
|||
33
PR третий
07.12.15
✎
15:11
|
(20) Через 1С нельзя поменять гуид справочника.
|
|||
34
cw014
07.12.15
✎
15:11
|
(33) Ну можно, как оказывается
|
|||
35
HEKPOH
07.12.15
✎
15:12
|
(32) а все остальные - народные)))
|
|||
36
cw014
07.12.15
✎
15:13
|
Ну ладно вам, стесняюсь я
|
|||
37
PR третий
07.12.15
✎
15:18
|
(34) Ну да ну да. Идею в общем и целом обрисуешь?
|
|||
38
cw014
07.12.15
✎
15:19
|
(37) Почту давай
|
|||
39
cw014
07.12.15
✎
15:19
|
Ай, ладно, пофигу
|
|||
40
vde69
07.12.15
✎
15:20
|
(18) у меня есть обработка именно для такого :)
|
|||
41
cw014
07.12.15
✎
15:20
|
||||
42
PR третий
07.12.15
✎
15:23
|
(38) [email protected]
Да можешь просто идею сказать. |
|||
43
PR третий
07.12.15
✎
15:24
|
(41) Это код этой обработки?
|
|||
44
cw014
07.12.15
✎
15:25
|
(43) Ага
|
|||
45
vde69
07.12.15
✎
15:26
|
ну вкратце
&НаСервере Функция ВыполнитьЗаменуНаСервере() Результат = Истина; УстановитьПривилегированныйРежим(Истина); Попытка НачатьТранзакцию(); СписокРезультата.Очистить(); // --------------------------------------------- // регистрируем связь на новый элемент мСоответствияОбъектов = Новый Структура; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // хард кодинг, в будующем нужно будет исправить // мСоответствияОбъектов.Вставить("УзелИнформационнойБазы", ПланыОбмена.ОбменУПР_БухгалтерияПредприятия3.НайтиПоКоду("Р")); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! мСоответствияОбъектов.Вставить("УникальныйИдентификаторПриемника", СтрЗаменить(Строка(ТекущееЗначение.УникальныйИдентификатор()), "-", "_")); мСоответствияОбъектов.Вставить("УникальныйИдентификаторИсточника", НовоеЗначение); мСоответствияОбъектов.Вставить("ТипПриемника", ""); мСоответствияОбъектов.Вставить("ТипИсточника", ""); РегистрыСведений.СоответствияОбъектовИнформационныхБаз.ДобавитьЗапись(мСоответствияОбъектов, Истина); мСоответствияОбъектов.Вставить("ТипПриемника", ОбщегоНазначения.СтроковоеПредставлениеТипа(ТипЗнч(ТекущееЗначение))); мСоответствияОбъектов.Вставить("ТипИсточника", ОбщегоНазначения.СтроковоеПредставлениеТипа(ТипЗнч(НовоеЗначение))); РегистрыСведений.СоответствияОбъектовИнформационныхБаз.ДобавитьЗапись(мСоответствияОбъектов, Истина); // --------------------------------------------- // заменяем все ссылки мСписок = Новый Массив; мСписок.Добавить(ТекущееЗначение); ТаблицаСсылок = НайтиПоСсылкам(мСписок); Для Каждого СтрокаТаблицы Из ТаблицаСсылок Цикл Если Метаданные.Справочники.Содержит(СтрокаТаблицы.Метаданные) ИЛИ Метаданные.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда мОбъект = СтрокаТаблицы.Данные.ПолучитьОбъект(); Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.СтандартныеРеквизиты Цикл Если Реквизит.Имя = "Ссылка" Тогда Продолжить; КонецЕсли; Если мОбъект[Реквизит.Имя] = ТекущееЗначение Тогда мОбъект[Реквизит.Имя] = НовоеЗначение; КонецЕсли; КонецЦикла; Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл Если мОбъект[Реквизит.Имя] = ТекущееЗначение Тогда мОбъект[Реквизит.Имя] = НовоеЗначение; КонецЕсли; КонецЦикла; Для Каждого ТабличнаяЧасть Из СтрокаТаблицы.Метаданные.ТабличныеЧасти Цикл Для Каждого СтрокаТабличнойЧасти Из мОбъект[ТабличнаяЧасть.Имя] Цикл Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл Если СтрокаТабличнойЧасти[Реквизит.Имя] = ТекущееЗначение Тогда СтрокаТабличнойЧасти[Реквизит.Имя] = НовоеЗначение; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Если Метаданные.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда Если СокрЛП(СтрокаТаблицы.Метаданные.Проведение) = "Разрешить" И ПерепроводитьДокументы И мОбъект.Проведен Тогда мОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); КонецЕсли; КонецЕсли; мОбъект.ОбменДанными.Загрузка = Истина; мОбъект.Записать(); ИначеЕсли Метаданные.РегистрыСведений.Содержит(СтрокаТаблицы.Метаданные) Тогда Поля = Новый Массив; Для Каждого Измерение Из СтрокаТаблицы.Метаданные.Измерения Цикл Поля.Добавить(Измерение.Имя); КонецЦикла; Для Каждого Ресурс Из СтрокаТаблицы.Метаданные.Ресурсы Цикл Поля.Добавить(Ресурс.Имя); КонецЦикла; МенеджерЗаписи = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(МенеджерЗаписи, СтрокаТаблицы.Данные); МенеджерЗаписи.Прочитать(); Для Каждого Поле Из Поля Цикл Если МенеджерЗаписи[Поле] = ТекущееЗначение Тогда МенеджерЗаписи[Поле] = НовоеЗначение; КонецЕсли; КонецЦикла; МенеджерЗаписи.Записать(); КонецЕсли; КонецЦикла; ТаблицаСсылок = НайтиПоСсылкам(мСписок); Для Каждого СтрокаТаблицы Из ТаблицаСсылок Цикл Если Метаданные.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда Если СписокРезультата.НайтиПоЗначению(мОбъект.Ссылка) = Неопределено Тогда СписокРезультата.Добавить(мОбъект.Ссылка); КонецЕсли; КонецЕсли; КонецЦикла; ТекущееЗначение.ПолучитьОбъект().УстановитьПометкуУдаления(Истина); Если Тестирование Тогда ОтменитьТранзакцию(); Иначе ЗафиксироватьТранзакцию(); КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); ОтменитьТранзакцию(); СписокРезультата.Очистить(); Результат = Ложь; КонецПопытки; УстановитьПривилегированныйРежим(Ложь); Возврат Результат; КонецФункции |
|||
46
PR третий
07.12.15
✎
15:27
|
(44) Что это за хрень-то?
Маленький кусочек обработки поиска и замены значений что ли? Где там подмена гуида ссылки-то? |
|||
47
Живой Ископаемый
07.12.15
✎
15:31
|
2(39)не, ну здрасьте, и в каком там месте подмена УИДа у существующего элемента справочника?
Старый удаляется, новый создается... у существующего ссылка не меняется |
|||
48
Живой Ископаемый
07.12.15
✎
15:32
|
Возможно в релизах старше 8.3.5, которые позволяют писать в ВИД можно поменять UID. Но экспериментально - я не пробовал.
|
|||
49
cw014
07.12.15
✎
15:33
|
(46)(47) Что есть подмена гуида? Изменение у записи Гуида? А чем не устраивает копирование записи и удаление старой? Вариант? Вариант!!! И безо всяких ВИДов и доступов к скулю на прямую
|
|||
50
cw014
07.12.15
✎
15:33
|
+(49) Задача решена
|
|||
51
Живой Ископаемый
07.12.15
✎
15:35
|
2(49) Тогда держи еще 101-й вариант:
лайфхак-код - это сериализовать нужный элемент; в тексте, который получился заменить UID, оригинальный элемент удалить; десериализовать элемент из ХМЛ-текста (в котором уже новый UID). Но все равно это будет новый 'tktvyn справочника. а не старый |
|||
52
PR третий
07.12.15
✎
15:36
|
(49) Включаем мозг и читаем (0)
|
|||
53
Живой Ископаемый
07.12.15
✎
15:37
|
преимущество - вообще не нужно будет запорачиваться на проверку и перебор реквизитов и табличных частей.
|
|||
54
mehfk
07.12.15
✎
15:40
|
Запустить выгрузку в идентичную конфигурацию, получить XML, открыть XML как текст, заменить все неправильные guidы на правильные. Загрузить в пустую базу. Если в результате замены не полчится неуникальных записей, считай повезло.
|
|||
55
cw014
07.12.15
✎
16:09
|
(52) "Вариант замена ссылок не предлагать" - я не заменяю ссылки
|
|||
56
cw014
07.12.15
✎
16:13
|
Ладно, я так и думал. Стоило один вариант решения предложить - навалились все... По сути одно и то же действие, единственный момент - старая запись тухнет, новая создается. И тут все с XML полезли и т.д. Суть задачи остается исходной. И такое решение имеет место быть
|
|||
57
cw014
07.12.15
✎
16:13
|
И первый это решение предложил Я!!!
|
|||
58
PR третий
07.12.15
✎
16:15
|
(55) А что ты делаешь? Ты можешь в двух словах сказать, что ты делаешь, а не давать код?
|
|||
59
ЧеловекДуши
07.12.15
✎
16:16
|
(56) Чем по вашему отличие новой записи от старой? :)
|
|||
60
hhhh
07.12.15
✎
16:17
|
(57) это решение уже десять лет гуляет по инету. Сомневаюсь, что это ты первый предложил.
|
|||
61
spock
07.12.15
✎
16:17
|
(55) Ты просто создаешь копию существующего элемента справочника, который потом удаляется. После выполнения этого кода будут битые ссылки в реквизитах, ссылающихся на этот элемент.
Это же банальщина... |
|||
62
ЧеловекДуши
07.12.15
✎
16:17
|
(0) Колитесь, что наделали, что так нужен Гуид?
|
|||
63
spock
07.12.15
✎
16:18
|
(48) А что за нововведение с ВИДом?
|
|||
64
aleks_default
07.12.15
✎
16:28
|
(62) читай (18)
|
|||
65
Живой Ископаемый
07.12.15
✎
16:33
|
2(63) Через ВИД теперь писать можно. Все это знают.
|
|||
66
ИсчадиеADO
07.12.15
✎
16:40
|
(56) а ловко ты их :)
там на почту еще не навязчивое предложение увеличить длину полоски не приходило?)) |
|||
67
PR третий
07.12.15
✎
16:45
|
(66) Что ловко-то? :))
— Здравствуйте, у меня болит живот. У вас есть лекарство от живота? — Да есть, выпейте аскорбинку. — Но позвольте, аскорбинка не помогает от живота. — Ладно, я так и думал. Стоило предложить аскорбинку - навалились все... По сути одно и то же действие, прием таблетки. И тут все с животами полезли и т.д. Суть задачи остается исходной. И такое решение имеет место быть. И первый это решение предложил Я!!! |
|||
68
Живой Ископаемый
07.12.15
✎
16:49
|
да, ладно, нормальное решение. просто я думал что какой-то взаправдашний, а не читерский способ. Но это уже проблемы моих ожиданий
|
|||
69
PR третий
07.12.15
✎
16:52
|
(68) Да какой способ-то? (61) прав? Если прав, то что _вообще_ было предложено-то? Создание дубля элемента справочника? И это как-то решает проблему ТС?
|
|||
70
ИсчадиеADO
07.12.15
✎
16:53
|
(68) нормальное, я ж не спорю :) а почту таки проверь :))
|
|||
71
Живой Ископаемый
07.12.15
✎
16:57
|
проверил, но у меня почта на Маке, а там текст в кракозябликах...
|
|||
72
PiterPrg
07.12.15
✎
17:04
|
Я вот тут http://catalog.mista.ru/public/317245/ вполне успешно меняю. НО!!!
1. Только на базах SQL. 2. На ваш страх/риск (у меня не глючит), т.е. потом ни чем не кидать, делаем бекапы |
|||
73
PiterPrg
07.12.15
✎
17:05
|
(72) Уточнение: Только на базах MSSQL
|
|||
74
ИсчадиеADO
07.12.15
✎
17:07
|
(71) черд, сорвалась реклама, ушел покупатель :(
|
|||
75
PR третий
07.12.15
✎
17:08
|
(74) Пошли ему картинку, что ты теряешься-то? :))
|
|||
76
PiterPrg
07.12.15
✎
17:11
|
(72) Уточнение 2: Ссылки в проводках меняет только 3-й алгоритм
|
|||
77
PiterPrg
07.12.15
✎
17:21
|
(72) Прикольно. Вставлял ссылку на инфостарт, а получился каталог миста. Волшебник что-то с инфостартом не поделил?
|
|||
78
Мыш
07.12.15
✎
17:46
|
(77) Скорее наоборот, партнерство.
|
|||
79
lEvGl
гуру
07.12.15
✎
17:49
|
всю тему прочитал, а гуид менять так и не научили (
|
|||
80
PiterPrg
07.12.15
✎
17:53
|
(79) Ты уверен, что все прочитал? (72) в этой обработке я меняю. Прямыми запросами к MSSQL. При желании текст можно почитать. Все в модуле объекта.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |