Универсальная обработка очистки регистров сведений, накопления и бухгалтерии от битых ссылок
Файлы
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже
заказов».
0% комиссии — оплата напрямую исполнителю;
Исполнители любого масштаба — от отдельных специалистов до команд под проект;
Прямой обмен контактами между заказчиком и исполнителем;
Безопасная сделка — при необходимости;
Рейтинги, кейсы и прозрачная система откликов.
Обработка удаляет записи регистров сведений и накопления (имеющих режим подчинения регистратору), у которых документ-регистратор битая ссылка. Обработка быстро очистит ИБ от ошибок перегрузки данных и последствий других сбоев приведших к появлению битых ссылок в ИБ. Добавлена очистка записей регистров бухгалтерии по просьбе Михаила.
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.
Update 2026: добавили многопоточное удаление данных по организациям. Ускорение х6 по сравнению с однопоточным алгоритмом! Позволяет удалить организации из любых из информационных баз 1С на управляемых формах (БП 3.0, УТ 11, КА 2, ERP 2, ЗУП 3, УНФ, Розница 3.0 и пр.). Главное требование - программа должна содержать справочник "Организации". Реализован самый быстрый алгоритм непосредственного удаления объектов. Работает даже на базах большого размера. Для ускорения работы алгоритма не запускается проверка контроля ссылочной целостности. Проверку учета можно запустить отдельно с помощью дополнительной обработки. Необходимо перед удалением самостоятельно проверить базу на наличие перекрестных ссылок разных организаций в одном документе. Эту дополнительную обработку проверки перекрестных ссылок по запросу предоставляем бесплатно нашим покупателям.
Данные обработки помогут Вам легко и, главное быстро, выполнить удаление любых данных в Ваших базах 1С на платформах 8.1-8.3. Обработки помогут легко просмотреть связи ссылок в виде дерева, выбрать что удалять, а что нет, используя любые отборы. Это позволит уменьшить объем лишней и не нужной информации в справочниках и документах, планах видов характеристик и др. объектах и облегчит работу с данными пользователям и Вам. Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. (Обновление от 26.02.2026, версия 4.5, 4.6.0)
Если вы начали работать в программном продукте Управление Торговлей, редакция 11 или Комплексная Автоматизация редакция 2 и включили механизм учёта серий, то перейти обратно в учёт без серий будет не так-то просто. Сложность заключается в том, что нужно очистить серии в табличной части документа, например, Реализация Товаров и услуг. Предлагаем алгоритм перехода на учет без серий для программного продукта УТ11. (Очистка серий.)
Решение представляет собой набор из 6 обработок для 1С по удалению организаций и справочников из базы по фильтрам, документов по фильтрам, универсальное сжатие данных, очистка битых движений регистратора, удаление устаревших регистров сведений, удаление устаревших документов "Электронное письмо входящее" и "Электронное письмо исходящее"
Хочешь выборочно удалить одну организацию, тестовую номенклатуру или «мусорного» контрагента, любую ссылку - без ручного поиска ссылок и часовых разборок зависимостей? Этот инструмент сам строит дерево связей, каскадно чистит с "глубоким поиском" документы, справочники, пвх, любые ссылки, регистры, движения в так же делает резервную копию и за пару минут оставляет базу чистой и полностью работоспособной (Управляемые формы, обычный интерфейс)
Универсальный инструмент для очистки базы. Работает как на конфигурациях на основе БСП, так и самописных. Позволяет выбрать данные, отобразить форму списка, увидеть структуру метаданных, очистить базу применяя при необходимости условия. Удаление производится по выбранным элементам в таблице значений. Наложение условий позволяет удалить документы по выбранной организации.
{ВнешняяОбработка.УдалитьБитыеЗаписиИзРегистровСведенийНакопления(51)}: Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Неоднозначное поле "Регистр.Регистратор.Номер"
<<?>>Регистр.Регистратор.Номер ЕСТЬ NULL
по причине:
{(6, 2)}: Неоднозначное поле "Регистр.Регистратор.Номер"
<<?>>Регистр.Регистратор.Номер ЕСТЬ NULL
(8)
Регистратор в этом случае не документ, обработка корректно отрабатывает битые ссылки для РС, подчиненных регистраторам - документам, а у них номер есть :)
Процедура УдалитьБитыеСсылки()
Для Каждого Регистр Из Метаданные.РегистрыНакопления Цикл
Состояние(Регистр.Имя);
УдалитьБитыеСсылкиРН(Регистр.Имя);
КонецЦикла;
Для Каждого Регистр Из Метаданные.РегистрыСведений Цикл
Если ("" + Регистр.РежимЗаписи) <> "ПодчинениеРегистратору" Тогда
Продолжить;
КонецЕсли;
Состояние(Регистр.Имя);
УдалитьБитыеСсылкиРС(Регистр.Имя);
КонецЦикла;
КонецПроцедуры
Процедура УдалитьБитыеСсылкиРН(ИмяРегистра)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Регистр.Регистратор
|ИЗ
| РегистрНакопления." + ИмяРегистра + " КАК Регистр
|ГДЕ
| Регистр.Регистратор.Номер ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| Регистр.Регистратор");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
НЗ.Записать();
КонецЦикла;
КонецПроцедуры
Процедура УдалитьБитыеСсылкиРС(ИмяРегистра)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Регистр.Регистратор
|ИЗ
| РегистрСведений." + ИмяРегистра + " КАК Регистр
|ГДЕ
| Регистр.Регистратор.Номер ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| Регистр.Регистратор");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НЗ = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
НЗ.Записать();
КонецЦикла;
КонецПроцедуры
2 (9) Автор, а разве в регистрах сведний с режимом записи не подчиненном регистратору не может быть битых сылок?
В противном случае пишите "Удалиение битых ссылок ТОЛЬКО по регистрам подчиненным регистратору"
(46) не поверишь - не интересно. посыл был следующий: в описании обработки написать, что удаляет она ссылки ТОЛЬКО по регистрам с режимом записи - подчинен регистратору и не вводить народ в заблуждение и не важно сколько лет поделке.
Марьяна!
Поподробнее опишите ситуацию, пожалуйста!
Какой регистр, что происходит при попытке открыть регистратор (дабл-клик по полю), скриншот выложите
УТ (1.3.7.9) выдал ошибку:
{Форма.Форма(35)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Партии товаров на складах (управленческий учет))
НЗ.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Партии товаров на складах (управленческий учет))
(15) Странно, базы УТ с битыми ссылками у меня нет, но запрос по всем регистраторам очистил регистр без ошибок. Если не разрешите Вашу ситуацию - могу выслать обработку для удаления всей лишней информации, а то что получится после зачистки - присылайте мне для анализа
Регистратор имеет идентификатор равен : 00000000-0000-0000-0000-000000000000
Обробка дает ошибку:
{Форма.Форма(73)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр бухгалтерии: Журнал проводок (налоговый учет))
НЗ.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр бухгалтерии: Журнал проводок (налоговый учет))
(17) В моей правктике пока такого не встречалось, но предполагаю, что проводилось тестирование и исправление с переключателем "При наличии ссылок на несуществующие объекты" в положении "Очищать ссылки"
Да проводилось проводилось тестирование и исправление, но с переключателем "При наличии ссылок на несуществующие объекты" в положении "Не изменять". Как можно решить єту проблему?
Написать обработку для выявления таких записей и удалить
Если записей не очень много - могу выслать вам универсальную обработку удаления объектов ИБ, дату зададите = дате битой записи регистра
Если много - и все типа 00000000-0000-0000-0000-000000000000 - нужно найти способ выбрать все подобные записи, очистить их, перепровести документы за период появления записей
Обработка сервис – групповое изменение справочников и документов выдает ошибку на этапе - ….ПолучитьОбъект(). Объект не выбран. Если маете другую обработку, которая справляетесь с этим заданием вышлите, пожалуйста!
По чему модуль под паролем?
При закрытом модуле есть вероятность нахождения вируса в модуле, а значит запускать такую обработку опасно.
А так же считаю не красиво заставлять пользователя голосовать при закрытии.
Borisych - приношу свои извинения. Про комменты не знал/не понял. Несколько раз качал вашу обработку. Видимо неудачно. "АХРЕНИТЕЛЬНО ВЗЛЕТЕТЬ" -Спасибо за критику, но от своих слов не откажусь под страхом смерти.Преценденты были. Поэтому ко всему с закрытым кодом отношусь только отрицательно.
Спасибо за обработку, хорошо работает при малых данных, как можно ускорить процесс для больших данных кол-во записей может превышать больше 10 000 записей
{Форма.Форма(50)}: Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Неоднозначное поле "Регистр.Регистратор.Номер"
<<?>>Регистр.Регистратор.Номер ЕСТЬ NULL
Выборка = Запрос.Выполнить().Выбрать();
УТ 10.3.7.9
{Форма.Форма.Форма(50)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(6, 2)}: Неоднозначное поле "Регистр.Регистратор.Номер"
<<?>>Регистр.Регистратор.Номер ЕСТЬ NULL