ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Когда объект был удален непосредственно, то все ссылки на него в справочниках, в документах, в регистрах стали битыми и отображаются следующим образом:
(16:bca8000c6efdd52111d8eaba7c9706eb)
Данная обработка позволяет создать новый объект с ссылкой такой же как у удаленного.
В результате все битые ссылки будут теперь ссылаться на новый объект.(т.е. будут теперь не битыми).
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя.
Решение в Реестре отечественного ПО
Данные обработки помогут Вам легко и, главное быстро, выполнить удаление любых данных в Ваших базах 1С на платформах 8.1-8.3. Обработки помогут легко просмотреть связи ссылок в виде дерева, выбрать что удалять, а что нет, используя любые отборы. Это позволит уменьшить объем лишней и не нужной информации в справочниках и документах, планах видов характеристик и др. объектах и облегчит работу с данными пользователям и Вам. Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. (Обновление от 29.06.2023, версия 4.2)
Позволяет удалить организации из любых из информационных баз 1С на управляемых формах (БП 3.0, УТ 11, КА 2, ERP 2, ЗУП 3.0, УНФ, Розница 2.0 и пр.). Главное требование - программа должна содержать справочник "Организации". Реализован самый быстрый алгоритм непосредственного удаления объектов. Работает даже на базах большого размера. Для ускорения работы алгоритма не запускается проверка контроля ссылочной целостности. Проверку учета можно запустить отдельно с помощью дополнительной обработки. Необходимо перед удалением самостоятельно проверить базу на наличие перекрестных ссылок разных организаций в одном документе. Эту дополнительную обработку проверки перекрестных ссылок по запросу предоставляем бесплатно нашим покупателям.
Обработка позволяет удобно и выборочно удалить данные из базы 1С на управляемых формах например БП 3.0, УТ 11, КА 2, ERP, УНФ, ЗУП 3, Розница и др. Это могут быть как неиспользуемые элементы справочников, так и неактуальные организации. При этом есть возможность провести анализ пересечений документов с другими организациями и таким образом уберечься от того, что при удалении обороты по другой организации изменятся.
Решение по удалению дублей позволяет определить связанные элементы в двух синхронизированных базах в качестве оригиналов и избежать необходимости ручного сравнения объектов в базах перед синхронизацией.
Если в вашей информационной базе крутится очень много данных, или база должна быть доступна 24/7 (как в моем случае), или же вы боитесь запускать тестирование и исправление, НО существует потребность удалить битые ссылки, тогда эта обработка сможет Вам помочь. Обработка выявляет битые ссылки как в самих объектах метаданных, так и в их табличных частях(!), а так же может их удалить.
Такое бывает? Удалили документ, а проводки (движения) остались? Эта простая обработка решает данную проблему.. почему по проводкам? да потому что обычно такие вещи замечают именно бухгалтера.на самом же деле данная обработка при нахождении документа удаленного или помеченного на удаление и имеющего движения очищает все движения без исключений.
Универсальный инструмент для очистки базы. Работает как на конфигурациях на основе БСП, так и самописных. Позволяет выбрать данные, отобразить форму списка, увидеть структуру метаданных, очистить базу применяя при необходимости условия. Удаление производится по выбранным элементам в таблице значений. Наложение условий позволяет удалить документы по выбранной организации.
У меня не получилось(. В регистре бухгалтерии(УПП) есть в регистраторе ьитая ссылка. Документ платежное поручение создается с данным UUID, но при записи ссылка остается битой, в записи регистра регистратор не становится ссылкой на вновь созданный документ... Пробую пересоздать, говорит, что есть Подскажите, в чем дело.
1С:Предприятие 8.1. Удалил несколько контрагентов. Теперь пытаюсь восстановить. Последовательность - сначала запись справочника о контрагенте, потом ДоговорВзаиморасчетов и ЮрЛицо с привязкой к Контрагенту. ДоговорВзаиморасчетов и ЮрЛицо действительно создаются с нужными ссылками и привязками. А вот ссылка на контрагента, скажем, в расходной накладной, остается битой. :( Не пойму в чем дело. Пользоваться пытался обеими версиями, но версия с подчинением не дает создавать запись справочника без указания подчиненния. :(
>В результате все битые ссылки будут теперь ссылаться на новый объект.(т.е. будут теперь не битыми).
За одну битую ссылку две небитых дают! :))))))))))))))
В 8.1 пытался восстановить удаленную характеристику(в документах осталась сыылка на объект не найден) - СОЗДАЕТ НОВУЮ(с новым GUID), а ссылки так и остаются на объект не найден...??? в чем трабл?
Посмотрел в коде, система понятна... НО!
При записи создается новый GUID (тестировалась на 8.1 УПП).
Ссылка так и остается битой, просто создается новый элемент.
Короче.
У меня возникла такая проблема:
Случайно создали дубляж физлица, и на оба элемента заводились документы, на один из низ платежи, другой участвовал в проводках других документов. И один умный бух рубанул непосредственно одно физ лицо, не спросив программиста, т.е. меня. получилось что получилась битая ссылка.
Посмотрев тему реанимации битых ссылок ничего не получилось, создавался новый элемент с новым UIN-ом, короче косяк.
Почитав и поисках, перерыв учебники, интернет и кучу форумов, вот что нашел:
http://www.poleznayainfo1c.narod.ru/ Это реально работает!
В SQL подменил UIN. и Все сработало. Главное найти нужную таблицу.
Для Определения таблицы в SQL пример:
МассивИменМетаданных = Новый Массив();
МассивИменМетаданных.Добавить("Справочник.ФизическиеЛица");
СтруктБД=ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
Узнаем таблицу, а в SQL создаем Query такого плана:
UPDATE [название_базы].[dbo].[_название_таблицы]
SET [_IDRRef] = удаленный_идентификатор
WHERE [_IDRRef] = на_какой_идентификатор_подменяем
При записи создается новый GUID (тестировалась на 8.1 УПП).
Ссылка так и остается битой, просто создается новый элемент с новым GUID гуидом. powerboy ответь
"Действительно, в чем отличие от тестирования и исправления ?"
Чтоб сделать тестирование и исправление мне нужно выгнать из базы около 100 работающих пользователей, запретить обмены РИБ и подождать часиков 5-6 и еще неизвестно что она там попутно направит.
Чтоб сделать тестирование и исправление мне нужно выгнать из базы около 100 работающих пользователей
Т.е. вас не волнует, что монопольный режим введен не зря, а при одновременной работе пользователей и обработки восстановления у вас в базе вообще каша может получится с данными?
(0) Поставил минус. Во-первых - это не GUID, а UUID. Отсутствует какое-либо описание и когда я вбивал GUID в поле, то поле мне ошибку выдавало про 32 символа, я только в комментариях увидел, что автор подразумевает UUID. ну и просто v8.x: Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID лучше и понятнее, юзабельнее, и описание есть. Данную обработку скачивал, потому что здесь можно создавать элементы с владельцем, потом плюнул, и в обработку по ссылке сам добавил присвоение владельца, что заняло минут 3-5.
что то гляжу под 7.7 никто такой обработки не знает... может тогда кто то подскажет, разницу ЗначениеВСтрокуВнутр(Объект) для текущей базы и для объекта полученного через ОЛЕ? насколько я понял в текущей базе первый символ - идентификатор типа - (T=счет/O=документ/B=справочник/E=перечисление/U=неопределеннный) и последний реквизит 23 знака - 10 знаков идентификатор вида(спр номенклатура например) 10 знаков - идентификатор объекта, и последние 3 - идентификатор базы (юзается для УРИБ)
а в ссылке (36):
Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент());
// Для примера Объект возвращает {"O","0","0","3114","0","0"," 258156CB "}
что значит этот 258156CB? каким то образом объединеные идентификаторы?
Спасибо за обработку! Реально помогла на SQL базе. Актуальность свою на базах 8.2 еще не потеряла.
Только чтоб не думать "Есть ли у справочника Владелец или нет?" добавил такой код:
Процедура ТипБитойСсылкиПриИзменении(Элемент)
СпрМ = ПолучитьПараметры(ТипБитойСсылки);
Если СпрМ = Неопределено Тогда
Возврат;
КонецЕсли;
Если СпрМ.МетаКоличество > 0 Тогда
ЭлементыФормы.ПолеВвода.Доступность=Истина;
МассивТипов = СпрМ.МассивТипов;
ЭлементыФормы.ПолеВвода.Значение = Неопределено;
ЭлементыФормы.ПолеВвода.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);
Иначе
ЭлементыФормы.ПолеВвода.Значение = Неопределено;
ЭлементыФормы.ПолеВвода.Доступность=Ложь;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьПараметры(ТипБитойСсылки)
Параметры = Новый Структура;
МетаОбъект = Метаданные.НайтиПоТипу(ТипБитойСсылки.Типы()[0]);
ПолноеИмяОбъекта = МетаОбъект.ПолноеИмя();
ТипОбъекта = Лев(ПолноеИмяОбъекта,Найти(ПолноеИмяОбъекта,".")-1);
ИмяОбъекта = МетаОбъект.Имя;
ОписаниеТипаОбъекта = ТипОбъекта + "Ссылка." + ИмяОбъекта;
Если ТипОбъекта = "Справочник" Тогда
Основание = "Владельцы";
ИначеЕсли ТипОбъекта = "Документ" Тогда
Основание = "ВводитсяНаОсновании";
ИначеЕсли ТипОбъекта = "ПланВидовХарактеристик" Тогда
Основание = "ВводитсяНаОсновании";
ИначеЕсли ТипОбъекта = "ПланСчетов" Тогда
Основание = "ВводитсяНаОсновании";
ИначеЕсли ТипОбъекта = "ПланВидовРасчета" Тогда
Основание = "ВводитсяНаОсновании";
ИначеЕсли ТипОбъекта = "ПланОбмена" Тогда
Основание = "ВводитсяНаОсновании";
ИначеЕсли ТипОбъекта = "БизнесПроцесс" Тогда
Основание = "ВводитсяНаОсновании";
ИначеЕсли ТипОбъекта = "Задача" Тогда
Основание = "ВводитсяНаОсновании";
Иначе
Предупреждение("Неизвестный тип объекта");
Возврат Неопределено;
КонецЕсли;
МетаКоличество = МетаОбъект[Основание].Количество();
Параметры.Вставить("МетаКоличество", МетаКоличество);
МассивТипов = Новый Массив;
Для каждого ЭлементМассива Из МетаОбъект[Основание] Цикл
ОписаниеТипаЭлемента = ЭлементМассива.ПолноеИмя();
ТипЭлемента = Лев(ОписаниеТипаЭлемента,Найти(ОписаниеТипаЭлемента,".")-1);
ИмяЭлемента = ЭлементМассива.Имя;
ОписаниеТипаЭлемента = Тип(ТипЭлемента + "Ссылка." + ИмяЭлемента);
МассивТипов.Добавить(ОписаниеТипаЭлемента);
КонецЦикла;
Параметры.Вставить("МассивТипов", МассивТипов);
Возврат Параметры;
КонецФункции // ПолучитьПараметры()
Процедура ПолеВводаОчистка(Элемент, СтандартнаяОбработка)
ЭлементыФормы.ПолеВвода.Значение = Неопределено;
КонецПроцедуры
Показать
Ну и при создании ссылки добавить проверку:
Если ЭлементыФормы.ПолеВвода.Доступность Тогда
Вл = ЭлементыФормы.ПолеВвода.Значение.Ссылка;
КонецЕсли;