|   |   | 
| 
 | Можно ли поменять УИД существующего справочника? | ☑ | ||
|---|---|---|---|---|
| 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) pechenkin@odinesnik.ru
 Да можешь просто идею сказать. | |||
| 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. При желании текст можно почитать. Все в модуле объекта.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |