Замена GUID для объектов

20.01.18

Разработка - Инструментарий разработчика

Обработка позволяет при использовании MSSQL в качестве СУБД поменять GUID объекта. Внимание!!! Данная обработка обращается к СУБД «напрямую», используйте ее на свой страх и риск. Используйте обработку только в случае, если вы четко понимаете, что и для чего вы делаете. Я всех предупредил.

Файлы

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

Наименование Скачано Купить файл
Обработка "Замена GUID"
.epf 14,29Kb
308 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

При использовании распределенных БД часто возникает проблема «Задвоения» элементов или наоборот, «Объект не найден».

Данная обработка позволит вам установить произвольный GUID для существующих объектов.

При замене GUID объекта обработка изменяет GUID по ссылкам во всех связанных объектах.

 

Принцип работы с обработкой:

1) В поле «Элемент» указываем объект базы, у которого мы хотим поменять GUID.

Поле «Тек ГУИД» заполняется GUID-ом выбранного элемента.

2) В поле «Нов ГУИД» вводим GUID который мы хотим задать для этого элемента.

3) Указываем строку подключения для базы данных.

Важно!!! Поскольку обработка происходит на сервере, то строки подключения различаются для х64 и х32 сервера приложений.

Для х64

Provider=SQLOLEDB.1;Server=[Сервер];UID=[Пользователь];pwd=[Пароль];Database=[БазаДанных];

Для х32

Driver={SQL Server};Server=[Сервер];UID=[Пользователь];pwd=[Пароль];Database=[БазаДанных];

4) Тип алгоритма:

 

"Медленная" замена, с отображением таблиц – При поиске на каждый подходящий реквизит выполняется 3 запроса к MS SQL серверу, при этом выводится информация о таблицах и количествах замены.

 

Быстрая замена – замена всех значений происходит хранимой процедурой, за одно обращение к MS SQL серверу, однако таблицы для замены определяются при помощи «НайтиПоСсылкам». (Быстрее первого способа, но минимум информации)

 

Быстрая замена, везде, включая движения документа– замена всех значений происходит хранимой процедурой, за одно обращение к MS SQL серверу. В процессе замены мы пытаемся заменить ссылку в любом подходящем по типу поле в БД. Таким образом, ссылки будут замещаться и в движениях документов и в итогах.

Самый опасный способ! Но мы ведь смелые, без бэкапов ощущения не те (сарказм).

В этом случае желательно сделать тестирование и полный пересчет итогов. А в случае режима «слияния» объектов пересчет вообще обязателен.

5) Для современных релизов платформы у пользователя, под которым осуществляется запуск обработки, необходимо в конфигураторе снять галочку "Защита от опасных действий" в противном случае 1с отказывается полноценно работать с COM-объектами.

Возможен режим «Слияния» объектов.

Предположим, у нас есть 2 элемента справочника с одинаковыми наименованиями и мы хотим, что бы это стал 1 элемент. Можно запустить обработку с поиском и заменой значений, а можно запустить мою обработку.

Выбираем 1 из элементов, «Нов GUID» делаем равным GUID-у второго элемента, отмечаем галочку «Не менять ссылку».

Таким образом во всех вхождениях первого элемента будет изменена ссылка на второй элемент, а у самого элемента GUID не поменяется после этого, помечаем к удалению первый элемент за ненадобностью.

 

Вступайте в нашу телеграмм-группу Инфостарт

Замена GUID 8.2 8.3

См. также

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

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

24900 руб.

20.08.2024    70088    365    170    

316

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

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    261089    1351    421    

1170

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    38725    107    46    

122

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    57166    114    32    

126

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

6000 руб.

25.02.2026    4038    13    1    

18

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

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

17000 руб.

10.11.2023    25625    93    46    

102

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

В крупных внедрениях 1С типовая почти всегда дополнена расширениями, а конфигуратор показывает их раздельно. «Поиск ссылок на объект» в ERP — минуты ожидания, и даже после него неясно: типовое поведение, дополнение из расширения или переопределённый обработчик. Analyzer 1C — веб-инструмент, который парсит выгрузку (основную плюс все расширения) и собирает единый граф знаний в ArangoDB. Любой межсущностный запрос — за доли секунды. Внутри: — Сквозные пометки «Доб.» / «Заимств.» / переопределения во всём UI — Импакт-анализ через подписки, регламентные задания и переопределения — Анализ запросов BSL: кто читает и пишет объект — модули, формы, СКД — Роли: матрица «роль × объект × право», RLS, программные РольДоступна, PRIV — Конструктор профилей, граф функций, обработчики обновления, XDTO, функциональные опции — Мгновенный поиск по конфигурации Разворачивается за минуту через Docker, без интернета. Любая 1С:Предприятие 8.3+.

12200 руб.

17.04.2026    6655    28    34    

43

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    53416    185    63    

217
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. xamass 15 10.12.14 08:50 Сейчас в теме
По поиску и замене есть загвоздка, когда УИД меняется в документе, надо бы делать замену и в Движениях, которые сделал этот документ, и еще при этом подсчитать текущие итоги.
2. PiterPrg 39 10.12.14 09:57 Сейчас в теме
Да, на документах я как-то не тестировал. Надо посмотреть. Действительно. НайтиПоСсылкам не ищет среди Регистров...
3. xamass 15 10.12.14 10:13 Сейчас в теме
Транзакции в SQL не отрабатывают, ошибка следующая
Ошибка выполнения запроса:{ВнешняяОбработка.ЗаменаГУИД.МодульОбъекта(98)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Транзакция не может иметь несколько наборов записей с данным типом курсора. Измените тип курсора, завершите транзакцию или закройте один из наборов записей.

Комментировал строки относящиеся к транзакциям, проходит без ошибки
4. PiterPrg 39 10.12.14 11:00 Сейчас в теме
Комментировать транзакции - это не дело :-)

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

Проверь плиз, (поскольку у меня и так и так работает)
Скачай обработку после модерации
или добавь
Чтение.Close();


после

  Возврат 0;
КонецЕсли;


в строках 80 и 110 модуля обработки

т.е. должно стать:

		Возврат 0;
	КонецЕсли;
	Чтение.Close();
	



Если не поможет, придется явно описывать тип курсора.
5. PiterPrg 39 10.12.14 11:45 Сейчас в теме
По - поводу первого замечания.
Действительно, в регистрах замены не происходит.
НайтиПоСсылкам не ищет по регистрам.

Буду разбираться. Пока необходимо перепроведение документов с измененными объектами
6. xamass 15 10.12.14 11:53 Сейчас в теме
По движениям у меня есть такой вариант, в процедуре ПолучитьТаблицы() добавить
Для Каждого Ссылка ИЗ Ссылки Цикл
		Для Каждого Дв ИЗ Ссылка.Метаданные.Движения Цикл
			Если Фильтр.Найти(Дв)<>Неопределено Тогда
				Продолжить;
			КонецЕсли;	
			Фильтр.Добавить(Дв);
		КонецЦикла;	
	КонецЦикла;
Показать


Но при этом он подхватывает и таблицы ИтогиПоСчетамСубконто, которые относятся к бух. регистрам, при замене в этой таблице скрипт падает с ошибкой:
Не удается вставить повторяющуюся строку ключа в объект "dbo._AccRgAT2615" с уникальным индексом "_AccRgA2615_ByPeriod_TRRRRRRN". Повторяющееся значение ключа: .....

Пока не могу найти информацию, когда и при каких обстоятельствах происходит запись в эти таблицы, и надо ли в нашем случае сразу менять там записи, или можно пропускать их.
10. PiterPrg 39 21.07.15 14:20 Сейчас в теме
В новой версии обработки добавлен 3-й алгоритм замены. Происходит попытка заменить ссылку вообще во всех полях базы данных (в движениях документа тоже). При этом ошибки, описанные в (6), игнорируются. Хорошая новость в том, что это обычно итоговые поля регистров и при пересчете итогов все станет хорошо. То что это ссыкотные пути (9) - кто-ж спорит-то, кончно ссыкотные.... А что делать если поиску и замене не хватает памяти? Или эта замена будет выполнятся 2 месяца?
11. as7bs 306 22.03.21 17:17 Сейчас в теме
(10)
В новой версии обработки добавлен 3-й алгоритм замены. Происходит попытка заменить ссылку вообще во всех полях базы данных (в движениях документа тоже). При этом ошибки, описанные в (6), игнорируются. Хорошая новость в том, что это обычно итоговые поля регистров и при пересчете итогов все станет хорошо.

Проверки на наличие в базе GUID на который будет идти замена, как я понимаю нет? Нужно заменить по таблице соответствия GUID у довольно большого списка объектов.
Предполагаю адаптировать вашу обработку следующим образом: Вариант3 - запускаю процедуру ЗаменитьГУИД(старУИД, новУИД) в цикле, предварительно проверяя наличие в базе новУИД у других объектов, в случае наличия пропускаю. После чего выполняю тестирование с перерасчетом итогов. Чем опасна такая замена? Или можно сделать как-то по другому?
Обычным способом через замену пробовал - очень долго.
13. Dmitri93 12 15.02.23 16:41 Сейчас в теме
(11)
Проверки на наличие в базе GUID на который будет идти замена, как я понимаю нет? Нужно заменить по таблице соответствия GUID у довольно большого списка объектов.
Предполагаю адаптировать вашу обработку следующим образом: Вариант3 - запускаю процедуру ЗаменитьГУИД(старУИД, новУИД) в цикле, предварительно проверяя наличие в базе новУИД у других объектов, в случае наличия пропускаю. После чего выполняю тестирование с перерасчетом итогов. Чем опасна такая замена? Или можно сделать как-то по другому?
Обычным способом через замену пробовал - очень долго.

В итоге сделали так? Получилось что-нибудь? Тоже планирую так сделать.
7. PiterPrg 39 10.12.14 13:31 Сейчас в теме
Спасибо, хорошая идея. надо подумать.

"_AccRgA2615_ByPeriod_TRRRRRRN"
Судя по названию - это может быть таблица с итогами, если это так -
запись происходит при пересчете итогов.

Нужно как-то исключить таблицы с итогами (по всем регистрам)
И после замены делать пересчет итогов в Тестировании/Исправлении

А с агрегатами - вообще не знаю как, надеюсь они тоже при пересчете обновятся

З.Ы. Закрытие рекордсета помогло?
8. xamass 15 10.12.14 14:08 Сейчас в теме
Да, закрытие рекордсета помогло.
Тестирование и исправление как то совсем не хочется делать, т.к. с таким вариантом получится вряд ли быстрее, чем при обычном поиске и замене.

Да, и мне кажется, что не только пересчет итогов влияет, ведь если просто проводить документ или даже записывать набор записей и после этого сразу обойти таб. итогов запросом, то данные будут обновленные.
9. Brawler 466 12.12.14 09:14 Сейчас в теме
Сыкотные пути какие-то.
Мне проще юзать обработки типа ПоискИЗаменаЗначений или для УФ SearchAndChange_AllModes_0_0_1_4.
Ежели известен ГУИД новый, то значит в базе можно создать объект с этим ГУИД, а потом сделать замену выше указанными обработками, не так быстро конечно, но не в обход механизмов платформы.
12. madonov 272 26.04.22 04:27 Сейчас в теме
Успешно устранил дубли в плане счетов. Спасибо!
14. wolder 135 27.06.25 08:49 Сейчас в теме
Всё работает отлично до сих пых на 8.3.25 в УТ 11.5! Спасибо.
В параметрах подключения к базе указываем без квадратных скобок. :)
Для отправки сообщения требуется регистрация/авторизация