Замена ГУИД

09.07.16

База данных - Инструменты администратора БД

Замена ГУИД в произвольном объекте конфигурации. Может склеивать задвоенные объекты.

Скачать исходный код

Наименование Файл Версия Размер
Замена ГУИД
.epf 13,97Kb
339
.epf 1.005 13,97Kb 339 Скачать

Всем доброго дня!

Предлагаю Вашему вниманию маленькую, но крайне полезную обработку.

С помощью ее можно:

1. Найти объект по ГУИД (глобальный уникальный идентификатор, пример "3bd3fe02-f885-11de-8c0b-002215cbe1ec")

2. Заменить "битые" ссылки, которые появились в результате случайного непосредственного удаления элемента справочника/документа.

3. Склеить два элемента справочника в один, путем замены одного ГУИД на другой.

4. Обработка работает быстрее стандартной обработки "Поиск и замена дублирующихся элементов справочников" из-за иного алгоритма поиска и замены ссылок, и в отличие от нее позволяет заменять документы.

5."Подсунуть" новый или уже имеющийся объект под "битую" ссылку.

6. Заменить ГУИД у справочника с целью его дальнейшей синхронизации в тех случаях, когда синхронизация идет по внутреннему идентификатору, например в случае обмена данными распределенных баз.

Работает в управляемом и неуправляемом режиме.

Код полностью открытый!

Изменения 15.07.2016: В версии 1.005 добавлено восстановление всех последовательностей с множественными измерениями, как следствие, исключена распространенная ошибка "Ошибка при вызове метода контекста (УстановитьГраницу) по причине: Недопустимое значение параметра (параметр номер '2') "

ГУИД UUID Заменить ГУИД в 1С

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    3620    19    1    

40

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    4297    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2280 руб.

14.01.2013    178681    1084    0    

862

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27946    82    146    

61

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61547    91    59    

74

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11859    5    9    

7

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1500 руб.

01.12.2020    14406    34    0    

49

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    11176    5    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. fomstas 13.07.16 10:35 Сейчас в теме
Спасибо иногда полезна.
2. Zhilyakovdr 142 13.07.16 14:29 Сейчас в теме
Каким образом подменяется? Обычной подменой на новый элемент в местах использования?
3. slava_1c 545 13.07.16 19:34 Сейчас в теме
(2) Zhilyakovdr, По сути да, только не элемент заменяется, а его ГУИД. Алгоритм такой: набираем все ссылки на старый объект, все задействованные регистры и сам старый объект, далее сериализуем объекты - получается один xml. В полученном xml одним движением подменяем старый ГУИД на новый и запихиваем обратно. Старый объект удаляем.
Фокус в том, что если, допустим, было две валюты "руб" с разными ГУИД, и мы хотим их объединить, то найдя все ссылки на объект с одной валютой и подменив их на другую, мы получаем в итоге один элемент справочника с правильными ссылками во всех справочниках, документах и регистрах.
milov.aleksey; +1 Ответить
5. Zhilyakovdr 142 14.07.16 09:25 Сейчас в теме
(3) slava_1c, А как насчет последовательностей? Это актуально например для БП.
С подменой в xml действительно хитро придумано.
4. Mortiferus 362 14.07.16 07:54 Сейчас в теме
7. tormozit 7142 16.07.16 00:34 Сейчас в теме
(4) Да и уже не новая. В ИР такое уже давно есть в редакторе объекта БД и в подборе и обработке объектов БД.
6. slava_1c 545 14.07.16 20:57 Сейчас в теме
Да спасибо, справедливое замечание.

Я думаю можно сделать так:
Перед началом выполнения замены скопируем актуальные границы всех последовательностей в массив
	ЗначенияПоследовательности = Новый Массив;
	Для каждого ТекущаяПоследовательность из Последовательности Цикл
		Если Метаданные.Последовательности[СтрЗаменить(ТекущаяПоследовательность,"ПоследовательностьМенеджер.","")].Измерения.Количество()>0 тогда
			Разрез = "";
			Для каждого стр из Метаданные.Последовательности[СтрЗаменить(ТекущаяПоследовательность,"ПоследовательностьМенеджер.","")].Измерения Цикл
				Разрез = ?(Разрез = "","",Разрез+",")+СокрлП(стр.Имя);
			КонецЦикла;	
	        ТабГраниц = ТекущаяПоследовательность.ПолучитьГраницы(Разрез);
			ЗначенияПоследовательности.Добавить(ТабГраниц);
		Иначе
	        ЗначенияПоследовательности.Добавить(ТекущаяПоследовательность.ПолучитьГраницу());
		КонецЕсли;	
	КонецЦикла;
Показать



а в конце восстановим их
ы = 0;
	Для каждого ТекущаяПоследовательность из Последовательности Цикл
		Если ТипЗнч(ЗначенияПоследовательности[ы]) = Тип("ТаблицаЗначений") тогда
			Для каждого стр из ЗначенияПоследовательности[ы] Цикл
				Попытка
					ТекущийОтбор = Новый Структура();
					Для ТекКолонка = 0 по ЗначенияПоследовательности[ы].Колонки.Количество()-1 Цикл
						Если СокрлП(ЗначенияПоследовательности[ы].Колонки[ТекКолонка].Имя)  = "Граница" тогда
						Иначе	
							ТекущийОтбор.Вставить(ЗначенияПоследовательности[ы].Колонки[ТекКолонка].Имя,стр[ТекКолонка]);
						КонецЕсли;
					КонецЦИкла;
		        	ТекущаяПоследовательность.УстановитьГраницу(стр.Граница,ТекущийОтбор);
				Исключение
					Сообщить("При установке "+СокрлП(ТекущаяПоследовательность)+" произошла ошибка: "+СокрлП(ОписаниеОшибки()));	
				Конецпопытки;
			КонецЦикла;	
		Иначе
			Попытка
	        	ТекущаяПоследовательность.УстановитьГраницу(ЗначенияПоследовательности[ы]);
			Исключение
				Сообщить("При установке "+СокрлП(ТекущаяПоследовательность)+" произошла ошибка: "+СокрлП(ОписаниеОшибки()));	
			Конецпопытки;
		КонецЕсли;	
        ы = ы+1;
    КонецЦикла;
Показать
8. simuljakr 203 30.10.17 16:14 Сейчас в теме
Не работает. Пишет "недостаточно памяти", хотя свободная память в избытке....
9. simuljakr 203 30.10.17 16:24 Сейчас в теме
Доходит до 1,5 гигов и выетает.....
10. slava_1c 545 30.10.17 17:24 Сейчас в теме
Скорее всего это срабатывают ограничения 32-х разрядного клиента 1С.

Попробуйте загрузить данные порциями.

Если выгружаются документы за период - ограничьте период.
25. kodblack 14 11.04.22 13:57 Сейчас в теме
(10)

Если выгружаются документы за период - ограничьте период.


как бороться: Недостаточно памяти
11. flyDrag 291 13.01.21 18:23 Сейчас в теме
медленно работает замена гуида
12. as7bs 287 19.03.21 08:30 Сейчас в теме
Есть ли проверка на наличие нового ГУИД на который заменяется в базе?
13. slava_1c 545 22.03.21 06:37 Сейчас в теме
(12) Если задача просто заменить ГУИД на новый, то можно проверить наличие этого ГУИДа, вставив в поле ГУИД объекта. Если объект с таким ГУИДом есть, то он подберется. Однако основной смысл замены как раз в том, чтобы новый ГУИД уже был в базе и можно было два ссылочных объекта объединить в один в разных объектах базы.
14. wau8824ru 22 07.11.21 04:31 Сейчас в теме
Спасибо отличная обработка, использую для документов, примерно 10 минут на один документ уходит. Есть ли возможность ускорить?
15. wau8824ru 22 07.11.21 05:01 Сейчас в теме
код
	Сообщить("Начало: "+Формат(ТекущаяДата(), "ДЛФ=T"));
	
	КоличествоСтрок = ТабЗначений.Количество();
	ФормаИндикатора = ПрогрессБАР(КоличествоСтрок);
	
	Для Каждого Элт Из ТабЗначений Цикл ОбработкаПрерыванияПользователя();
		
		Если ЗначениеЗаполнено(Элт.ВнешняяUUID)
			И ЗначениеЗаполнено(Элт.ВнутренняяUUID)
			И Элт.ВнешняяUUID <> Элт.ВнутренняяUUID
			Тогда
			
			СсылкаСтр = ?(РежимСопоставления = 0, Документы[Элт.ВнутренняяОбъект].ПолучитьСсылку(Новый УникальныйИдентификатор(Элт.ВнутренняяUUID)), Справочники[Элт.ВнутренняяОбъект].ПолучитьСсылку(Новый УникальныйИдентификатор(Элт.ВнутренняяUUID)));
			
			ЗаменитьНаНовыйUUID(Элт.ВнутренняяUUID, Элт.ВнешняяUUID, СсылкаСтр);
			
			Сообщить(""+ТабЗначений.Индекс(Элт)+" UUID: "+Элт.ВнутренняяUUID+" объекта: "+Элт.ВнутренняяОбъект+Символы.ПС+Формат(ТекущаяДата(), "ДЛФ=T")+" заменен на внешний UUID: "+Элт.ВнешняяUUID);
			
			ФормаИндикатора.Значение = ТабЗначений.Индекс(Элт)+1;
			ФормаИндикатора.КомментарийЗначения = Строка(ФормаИндикатора.Значение)+" из "+Строка(КоличествоСтрок);
			
		Иначе
			
			ФормаИндикатора.Значение = ТабЗначений.Индекс(Элт)+1;
			ФормаИндикатора.КомментарийЗначения = Строка(ФормаИндикатора.Значение)+" из "+Строка(КоличествоСтрок);
			
		КонецЕсли;
		
	КонецЦикла;
	
	ФормаИндикатора.Закрыть();
Показать

возникает ошибка "ошибка при выполнении файловой операции 1с too many open files"
ошибка касается максимального количества открытых файлов, пользователем usr1cv8, на linux сервере
поможет ли?
ЧтениеXML.Закрыть();
16. slava_1c 545 07.11.21 22:54 Сейчас в теме
В моей версии обработки, я не работаю с файлами, а размещаю все в памяти:

ТекстСообщения = ЗаписьXML.Закрыть();
ЧтениеXML.УстановитьСтроку(ТекстСообщения); 


И после работы - очищаю переменную
ЧтениеXML="";
Метод Закрыть() мне кажется особо не поможет, т.к. в основном его используют когда открывают файл на чтение, а в данном случае чтение происходит из текстовой переменной в памяти.

То, что программа ругается на слишком много открытых файлов, похоже, указывает на то, что работа происходит именно с файловой системой, а не с памятью. Проверьте у себя это. Кроме того, данная ошибка ищется в поисковиках так:
https://1s-on.ru/oshibka-slishkom-mnogo-otkrytyh-fajlov-ilitoo-many-open-files-v-1s-na-linux/

Естественно скорость замены напрямую зависит от количества ссылок, которые нужно заменять (особенно в движениях документов). Можете для информации вывести количество замещаемых ссылок, например, после команды
НайтиПоСсылкам


[1C-CODE]Сообщить("Количество ссылок "+СокрЛП(СсылкаНаОбъект)+" :"+Строка(ВсеНайденныеЗависимыеСсылки.Количество()));/CODE]

Кстати, еще такое наблюдение - в режиме отладки 1С работает медленнее раза в два.

Многие запускают 1С из конфигуратора, а это черевато потерей скорости.

Тестово проверил на примере замены GUID валюты - в двухгодичной базе - замена длится несколько секунд.
18. wau8824ru 22 08.11.21 04:08 Сейчас в теме
(16)
В моей версии обработки, я не работаю с файлами, а размещаю все в памяти:
Да обратил внимание на память, она скидывалась при окончании замены UUID.

(16)
И после работы - очищаю переменную
Да видел, и на всякий случай изменил на
	ЧтениеXML.Закрыть();
	ЧтениеXML = "";


(16)
Метод Закрыть() мне кажется особо не поможет
Понял, спасибо!
Больше всего времени, примерно 70% уходит на запись объектов по ссылкам
	ТекОбъект.Записать();


(16)
То, что программа ругается на слишком много открытых файлов, похоже, указывает на то, что работа происходит именно с файловой системой
Скорей всего это postgres понаоткрывал, там не понятно было на кого ругается, на Postgres или 1C

По вашей ссылке:

root@srv1c:~# service postgrespro-1c-12 status
postgrespro-1c-12.service - Postgres Pro 1c 12 database server
Loaded: loaded (/lib/systemd/system/postgrespro-1c-12.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-11-07 18:54:39 +07; 12h ago
Process: 734 ExecStartPre=/opt/pgpro/1c-12/bin/check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 748 (postgres)
Tasks: 8 (limit: 4915)
Memory: 34.5G
CGroup: /system.slice/postgrespro-1c-12.service
├─ 748 /opt/pgpro/1c-12/bin/postgres -D /var/lib/pgpro/1c-12/data
├─ 885 postgres: logger
├─1110 postgres: checkpointer
├─1111 postgres: background writer
├─1112 postgres: walwriter
├─1113 postgres: autovacuum launcher
├─1114 postgres: stats collector
└─1115 postgres: logical replication launcher

root@srv1c:~# cat /proc/748/limits | grep open
Max open files 1024 524288 files

root@srv1c:~# ps -fu usr1cv8 | grep ragent
usr1cv8 890 1 0 ноя07 ? 00:01:35 /opt/1cv8/x86_64/8.3.19.1229/ragent -daemon

root@srv1c:~# cat /proc/890/limits | grep open
Max open files 524288 524288 files

(16)
Кстати, еще такое наблюдение - в режиме отладки 1С работает медленнее раза в два.
да делал в режиме отладки, чтобы замерить время, но и в толстом клиенте без отладки были те же 10-12 минут, перекинул в файловый вариант получил 3-4 минуты, за счёт скорости ssd m.2.
Спасибо!
17. wau8824ru 22 08.11.21 03:06 Сейчас в теме
делал замены guid "ПоступлениеТоваровУслуг"

Операционная система: "Debian GNU/Linux 10 (buster)" x86-64
База данных: postgrespro-1c-12 x86-64
Сервер 1С: 1c-enterprise-8.3.19.1229-server x86-64
Клиент 1С: 8.3.19.1229 x86
Процессор: Intel® Xeon® CPU E5-1620 v3 @ 3.50GHz
Дисковая подсистема: sata ssd - Intel DC D3-S4610 480Gb

на замену одного документа примерно 10 минут

Операционная система: "Windows 10 pro" x86-64
База данных: файловая
Сервер 1С: -
Клиент 1С: 8.3.19.1229 x86
Процессор: AMD Ryzen 3600
Дисковая подсистема: SSD-накопитель M.2 500Гб Samsung 970 EVO Plus

на замену одного документа примерно 3 минуты - это уже приемлемо.
20. slava_1c 545 08.11.21 15:33 Сейчас в теме
(17) Здесь вроде все закономерно - скорость записи/чтения выше у NVMe накопителей - в 5-7 раз, однако в данном случае больший вопрос - сколько ссылок он меняет в течение 10 минут. А так, оба стенда вполне шустрые.

И еще, чтобы не испытывать проблем с нехваткой памяти, лучше все же запускать х64 клиент 1С.
19. wau8824ru 22 08.11.21 05:26 Сейчас в теме
Ещё заметил что при выполнении обработки, если начитается регламентное задание, то ошибка блокировки возникает при удалении, где то здесь
	// Удалим нашу ссылку, т.к. в базе у нас уже присутствует новый объект с новый ГУИД
	
	ТекущийОбъектЗамены = СсылкаСтр.ПолучитьОбъект();
	ТекущийОбъектЗамены.Удалить();

в итоге объект с новым uuid создаётся, а старый не удаляется.
21. slava_1c 545 08.11.21 15:38 Сейчас в теме
(19) Т.к. подмена происходит фактически в режиме отключенного контроля целостности базы (ссылки в виде уникальных идентификаторов подменяются непосредственно в самих объектах) то лучше обеспечить единоличное использование базы, для этого необходимо отключить все регламентные задания.
22. wau8824ru 22 08.11.21 17:28 Сейчас в теме
(21)
отключить все регламентные задания

Для сервера просто, но вот в файловом варианте прописан /AllowExecuteScheduledJobs –off, и всё равно запустились, может конечно через COM подключался, раньше проблема была с запуском в файловом варианте, теперь разогнали не остановишь.
23. slava_1c 545 08.11.21 20:58 Сейчас в теме
(22)
/AllowExecuteScheduledJobs


1. Этот параметр актуален только для режима совместимости 8.3.4 и позже, если режим совместимости более ранний - он игнорируется. Опять же если к данной базе нет коннектов извне, если есть - то параметр тоже не имеет смысла.
2. Если более надежно - то можно воспользоваться консолью заданий и просто выключить все задания на время изменения GUID это будет справедливо и для файлового и для серверного режимов.

И еще - в момент записи объекта может исполняться очень много сопутствующего кода не всегда вызываемого из модуля документа, а, зачастую, повешенного на всякие-там подписки. Поэтому 3-х минутная задержка в записи объекта может быть связана конкретно с данной конфигурацией. В любом случае - здесь может помочь замер производительности.

При записи объекта я использую
ТекОбъект.ОбменДанными.Загрузка = истина;
чтобы избежать исполнения кода в процедуре
ПередЗаписью
, однако, если отработка этого режима не стоит - будет исполняться весь код, который написан в данной процедуре и все подписки на событие
ПередЗаписью
24. wau8824ru 22 10.11.21 00:25 Сейчас в теме
(23)
Этот параметр актуален только для режима совместимости 8.3.4

Спасибо за уточнение, не знал.
Режим совместимости: Не использовать (8.3.19), сегодня при выполнении обработки не вылазила ошибка.
/AllowExecuteScheduledJobs работает, если не подключаться к файловой базе никак.

(23)
будет исполняться весь код, который написан в данной процедуре и все подписки на событие

Пробывал отключить подписки, и вот этот код
// Процедура вызывается перед записью документа 
//
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

	мУдалятьДвижения = НЕ ЭтоНовый();

	//88( Администратор 30.06.2021 4:08:48
	Если ЗначениеЗаполнено(ЭтотОбъект.Сделка) Тогда
		Если СтрНайти(Строка(ЭтотОбъект.Сделка), "<Объект не найден>") <> 0 Тогда
			ЭтотОбъект.Сделка = Документы.ЗаказПоставщику.ПустаяСсылка();
		КонецЕсли;
	КонецЕсли;
	Если ЗначениеЗаполнено(ЭтотОбъект.ДокОснEpartner) Тогда
		Если СтрНайти(Строка(ЭтотОбъект.ДокОснEpartner), "<Объект не найден>") <> 0 Тогда
			ЭтотОбъект.ДокОснEpartner = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка();
		КонецЕсли;
	КонецЕсли;
	Для Каждого Элт Из ЭтотОбъект.Товары Цикл
		Если ЗначениеЗаполнено(Элт.ЗаказПоставщику) Тогда
			Если СтрНайти(Строка(Элт.ЗаказПоставщику), "<Объект не найден>") <> 0 Тогда
				Элт.ЗаказПоставщику = Неопределено;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	Если Не ЗначениеЗаполнено(Подразделение) Тогда
		Подразделение = Организация.Подразделение;
	КонецЕсли;
	Если Не ЗначениеЗаполнено(Ответственный) Тогда
		Ответственный = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОсновнойОтветственный");
	КонецЕсли;
	//)88 Администратор 30.06.2021 4:08:52
	Если ОбменДанными.Загрузка  Тогда
		Возврат;
	КонецЕсли;
Показать

результат не заметный, спасибо за советы, 3-4 минуты это приемлемо.
Кстати при использовании вашей обработки, когда впервые запустил на 10 минут, вообще было не понятно что она работает, не все дождутся.
26. rishat78 183 26.05.22 20:58 Сейчас в теме
27. slava_1c 545 04.06.22 16:12 Сейчас в теме
(26) Вы, уважаемый, явно форумом ошиблись.

Так что, либо мотивируйте, либо.. вытирайте.
28. rishat78 183 06.06.22 15:38 Сейчас в теме
(27) Сказал как есть, вообще не работает обработка, дык мало того, сервер подвесила намертво. Получил массу неприятных моментов.
29. slava_1c 545 06.06.22 16:16 Сейчас в теме
(28) В таком случае попробуйте рекомендации, которые описаны выше.
Все зависит от объема замещаемой информации.
Обработка считывает все ссылки, где есть замещаемый объект, переводит их в XML объекты, замещает их тем ГУИДом, на который идет замена, а далее записывает обратно в базу измененную информацию.

Поэтому настоятельно рекомендую делать это на копии базы с отключенными регламентами.
Желательно в 64-битном клиенте - так размер памяти не будет ограничен 4 ГБ.
Желательно разместить копию на скоростном накопителе.

По возможности, отключить подписки на события при записи объектов, хоть запись и происходит в режиме ОбменДанными.Загрузка = Истина, подписки и все что до данного условия, все равно отрабатывает. Это уже в отладчике можно посмотреть.

Но то, что обработка исправно работает все эти годы - доказано не только мной.
30. rishat78 183 06.06.22 17:11 Сейчас в теме
https://infostart.ru/public/270860/ - вот эта обработка работает и не нужно танцев с бубнами, что вы описали
31. slava_1c 545 06.06.22 20:51 Сейчас в теме
(30) Забавно. Судя по всему, автор создал аналогичный механизм поиска и замены, что и я.

Тогда вдвойне странно, что одна обработка работает, а другая нет.

Бубны я не описывал - это рекомендации для запуска практически любой сервисной процедуры.

Например, для массового удаления или свертки базы у меня будут те же рекомендации.

Повторюсь, все зависит от объема данных.
32. rishat78 183 07.06.22 13:07 Сейчас в теме
Я говорю, что на одном объеме данных одна обработка повесила сервер намертво, другая сделала корректно замены за приемлемое время, меньше чем 1 час.
33. djrust 24.10.22 09:27 Сейчас в теме
А что такое строка соединения? и что туда вводить в файловой базе?
34. slava_1c 545 24.10.22 09:49 Сейчас в теме
(33) В данной обработке нет такого реквизита. Она предназначена для работы непосредственно внутри базы и не содержит функционала подключения к другой базе.
Может это другая публикация?
35. urbanist 84 14.03.23 15:29 Сейчас в теме
Ошибка при вызове метода контекста (ПрочитатьXML)
{ВнешняяОбработка.ЗаменаГУИД.МодульОбъекта(118)}:ТекОбъект = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
{ВнешняяОбработка.ЗаменаГУИД.Форма.Форма.Форма(26)}:ТекОбъ.ЗаменитьНаНовыйГУИД();
{ВнешняяОбработка.ЗаменаГУИД.Форма.Форма.Форма(53)}:УстановитьНовыйГУИДНаСервере();

по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.ЭквайринговыеТерминалы Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.ЭквайринговыеТерминалы
по причине:
Ошибка преобразования данных XDTO:
Значение: eab0a0be-a6f3-11ed-8187-001e67b30 Тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogRef.ЭквайринговыеТерминалы
по причине:
Ошибка отображения типов:
Отображение лексического значения 'eab0a0be-a6f3-11ed-8187-001e67b30' в значение типа 'СправочникСсылка.ЭквайринговыеТерминалы'
по причине:
Ошибка преобразования данных XML
36. slava_1c 545 15.03.23 23:25 Сейчас в теме
(35) Данная ошибка возникает тогда, когда 1С не может сериализовать объект. "eab0a0be-a6f3-11ed-8187-001e67b30" - Это новый или старый ГУИД?
37. urbanist 84 16.03.23 10:18 Сейчас в теме
(36) Скорее что-то с платформой было. С другого рабочего места все сработало.Спасибо
Оставьте свое сообщение