Замена ГУИД

09.07.16

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Замена ГУИД
.epf 13,97Kb ver:1.005
355
355 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    14801    108    46    

108

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

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

15000 руб.

10.11.2023    11983    45    33    

67

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    10807    47    8    

78

SALE! %

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

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

4800 3840 руб.

14.01.2013    191426    1153    0    

920

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

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

14400 руб.

29.04.2020    33884    108    152    

75

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

Брандмауэр для сервера 1С включает в себя управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    32693    145    18    

51

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    73801    629    45    

88

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

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    10194    10    4    

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

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



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

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

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

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


как бороться: Недостаточно памяти
11. flyDrag 292 13.01.21 18:23 Сейчас в теме
медленно работает замена гуида
12. as7bs 294 19.03.21 08:30 Сейчас в теме
Есть ли проверка на наличие нового ГУИД на который заменяется в базе?
13. slava_1c 552 22.03.21 06:37 Сейчас в теме
(12) Если задача просто заменить ГУИД на новый, то можно проверить наличие этого ГУИДа, вставив в поле ГУИД объекта. Если объект с таким ГУИДом есть, то он подберется. Однако основной смысл замены как раз в том, чтобы новый ГУИД уже был в базе и можно было два ссылочных объекта объединить в один в разных объектах базы.
14. wau8824ru 24 07.11.21 04:31 Сейчас в теме
Спасибо отличная обработка, использую для документов, примерно 10 минут на один документ уходит. Есть ли возможность ускорить?
15. wau8824ru 24 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 552 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 24 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 24 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 552 08.11.21 15:33 Сейчас в теме
(17) Здесь вроде все закономерно - скорость записи/чтения выше у NVMe накопителей - в 5-7 раз, однако в данном случае больший вопрос - сколько ссылок он меняет в течение 10 минут. А так, оба стенда вполне шустрые.

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

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

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


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

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

При записи объекта я использую
ТекОбъект.ОбменДанными.Загрузка = истина;
чтобы избежать исполнения кода в процедуре
ПередЗаписью
, однако, если отработка этого режима не стоит - будет исполняться весь код, который написан в данной процедуре и все подписки на событие
ПередЗаписью
24. wau8824ru 24 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 188 26.05.22 20:58 Сейчас в теме
27. slava_1c 552 04.06.22 16:12 Сейчас в теме
(26) Вы, уважаемый, явно форумом ошиблись.

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

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

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

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

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

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

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

Повторюсь, все зависит от объема данных.
32. rishat78 188 07.06.22 13:07 Сейчас в теме
Я говорю, что на одном объеме данных одна обработка повесила сервер намертво, другая сделала корректно замены за приемлемое время, меньше чем 1 час.
33. djrust 24.10.22 09:27 Сейчас в теме
А что такое строка соединения? и что туда вводить в файловой базе?
34. slava_1c 552 24.10.22 09:49 Сейчас в теме
(33) В данной обработке нет такого реквизита. Она предназначена для работы непосредственно внутри базы и не содержит функционала подключения к другой базе.
Может это другая публикация?
35. urbanist 69 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 552 15.03.23 23:25 Сейчас в теме
(35) Данная ошибка возникает тогда, когда 1С не может сериализовать объект. "eab0a0be-a6f3-11ed-8187-001e67b30" - Это новый или старый ГУИД?
37. urbanist 69 16.03.23 10:18 Сейчас в теме
(36) Скорее что-то с платформой было. С другого рабочего места все сработало.Спасибо
Оставьте свое сообщение