gifts2017

Удаление всех ссылок в БД на элемент справочника, документ

Опубликовал Денис (DionX) в раздел Обработки - Обработка документов

Замена элемента справочника или документа на другой во всей базе (др. справочниках, документах, журналах расчетов, периодических реквизитах, бухгалтерских проводках и пр.)
Перепроведение документов НЕ ТРЕБУЕТСЯ!!!
Для работы необходима 1срр.dll + драйвер VFPOLEDB.
Бывает возникает необходимость, например, удалить какой-нибудь элемент справочника. Чтобы сделать это корректно, необходимо предварительно очистить все ссылки на него.
Или просто возникает необходимость заменить во всех документах один элемент на другой.
Для этого и написана данная обработка.

Установка:
1. 1срр.dll скопируйте в каталог BIN (находится в Program Files\1Cv77).
2. vfpoledb.exe запустите на выполнение, ОБЯЗАТЕЛЬНО выберите тип установки Typical, а не Minimal, как стоит по умолчанию

P.S. На данный момент не реализован только поиск ссылок в регистрах.

Скачать файлы

Наименование Файл Версия Размер
Удаление всех ссылок в БД на элемент справочника 224
.1191204608 72,50Kb
25.09.09
224
.1191204608 72,50Kb Бесплатно
Компанента 1С++ от 19.09.2007 140
.1191205562 1,11Mb
25.09.09
140
.1191205562 1,11Mb Бесплатно
Драйвер VFPOLEDB 160
.1191205652 2,50Mb
25.09.09
160
.1191205652 2,50Mb Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Денис (DionX) 01.10.07 08:52
Немножко подправил обработку:
1. теперь можно заменять ссылки не только на элемент справочника, но и на документ.
2. Теперь можно задать те объекты метаданных, в которых нужно искать и заметь ссылки.
2. Денис (DionX) 01.10.07 09:44
Прошу обратить внимание на то, что нужно понимать: если вы заменяете какой-то элемент в документах, но сбросили "галочку" для изменения в Журнале расчетов, то получится так, что данные м/у документами и ЖР совпадать не будут.
3. Денис (DionX) 01.10.07 12:07
Написал, что поиск нереализован только в Регистрах, потом спохватился и оказалось, что и в бух.итогах не ищет.
Теперь исправил.
Для кого актуально (а актуально всем, кто будет пользоваться данной обработкой в конфигурациях с компонентой "Бух.учет"), просьба перекочать себе УдалениеЭлемента.ert
4. Денис (DionX) 03.10.07 03:54
Странно как-то: народ смотрит, качает, а не точто рейтинг повысить, а даже коментарий оставить "понравилось/не понравилось", "нужно/не нужно" не могут почему то (((
5. JannyFan (JannyFan31) 03.10.07 06:17
Спасибо! У нас в справочниках наудаляли много элементов, которые сейчас не нужны. Сейчас они не нужны.
6. aou1c (aou1c) 04.10.07 11:17
Спасибо, все неплохо, кроме подчиненных справочников, их тоже надо-бы обрабатывать, хотя-бы родителя менять
7. Денис (DionX) 05.10.07 03:53
Ок, молодец, что нашёл этот баг. Сегодня же доделаю и вылажу.
8. Евгений (Evgen_5) 08.10.07 10:25
Чтобы не выводились уволенные надо в запросе добавить условие занимаемыхСтавок>0 или должность <> Null
9. Денис (DionX) 09.10.07 08:10
09.10.2007 обновил УдалениеЭлемента.ert.
Исправлен баг с подчинёнными справочниками и константами.
На вкладке Настройка теперь появились две доплнительные "галки". Стоит, например, "галка" переносить периодические реквизиты, тогда все реквизиты удаляемого элемента перенесутся на тот, которым замещается; если галка не стоит, то все переодические значения удаляемого элемента тоже будут удалены.
Будьте добры: пробуйте работу этой обработки сначала на копии.
10. infossa S (infossa) 12.10.07 10:04
у меня вопрос по поводу замены одного объекта (справочник, документ) на другой

- не проще ли заменить просто Id (для справочника) или IdDoc (для документа) , чем искать везде где он встечается и менять ссылку на другую

поясню ,
- был справочник "Контрагент1" нужно его поменять во всех документах, регистрах на "Контрагент2" (база огромная десятки, сотни тысяч документов за год)

- для "Контрагент1" Id = Z1 , для "Контрагент2" Id=Z5
проще в одном справочнике "Контрагенты" поменять Z1<->Z2 и во всех документах и регистрах в которых встречается "Контрагент1" будет "Контрагент2"

11. Денис (DionX) 12.10.07 10:44
к понедельнику переделаю...
тут нужно тока повнимательней посмотреть на период реквизиты, подчинённые спр и тп
12. Jem (jem) 12.10.07 13:41
Я может не правильно понял, но если поменять у корня ID "контрагент1" то нормальные (ссылки полей на бъект) объекты потеряются.
Если создавать нового "контрагента2", а потом привязать к нему все документы вместо старого "контрагент1" получаеться все в порядке.
Если на "контрагента2" уже повешены ссылки то переименовка ID на ID "контрагента1" повлечет пустые ссылки "контрагента2"
13. infossa S (infossa) 12.10.07 14:02
(12)

>> Я может не правильно понял, но если поменять у корня ID "контрагент1" то нормальные (ссылки полей на бъект) объекты потеряются.

ничего не понял , что где должно потеряться если поменять местами id для
(Контрагент1 <-> Контрагент2)

реально делал на большой базе
- случайно удалили несколько контрагентов
- из-за того что база очень большая невозможно было подставлять нового контрагента в документы и перепроводить по времени
- исправлением Id проблема решилась в течении нескольких минут
(т.е. все ссылочки в документах , регистрах вернулись на место)
14. infossa S (infossa) 12.10.07 14:07
+ 13
ссылочная целостность в таблицах v7.7 поддерживается именно через эти поля (id - для справочников , IdDoc - для документов)
15. Alexandr (maloi_a) 17.10.07 08:03
Подчиненные справочники переносятся, но ссылки в других объектах не меняются.
Менял контрагентов в два этапа - подчиненный справочник основания
после замены контрагента. Тогда все корректно.
Infossa, как поменял основания в объектах.
"Ищем ссылки ссылки" укоротил.
16. Денис (DionX) 24.10.07 04:24
"Подчиненные справочники переносятся, но ссылки в других объектах не меняются."
Не совсем понял о чём речь.
А на счет (10) всё таки решил не переделовать свою обработку. Т.к. во первых, при придложенном варианте невозможно будет заменить объект в отдельных видах объектов, во-вторых, всё таки как то я засомневался (честно скажу - на практике не пробовал), но...Например, нужно заменить один док. на другой: что и где нужно заменить по способу (10)?
17. Вадим 1С911.BY (Вадимко) 04.02.08 20:29
Елы-палы, наткнулся на эту обработку когда свою уже написал практически...
Ну что сказать...
Автор забыл о существовании общих реквизитов документов, регистрах, о том, что справочники бывают многоуровневые и т.п. :)
И зачем пометки на второй закладке если это в запросах не соблюдается?
Плюсану однако
18. Вадим 1С911.BY (Вадимко) 04.02.08 20:42
(10) Что-то не очень улавливается мысль...
Есть элемент 1 с id 1 и элемент 2 с id 2
Есть документы со ссылками на эти элементы
Док 1 ссылка 1
Док 2 ссылка 1
Док 3 ссылка 2
Требуется заменить ссылки первого элемента на второй
Что предлагаешь? Поставить первому элементу id 2 и получить неуникальный id?
Это же не восстановление удаленных элементов как в твоем случае
19. Bambula (bambula) 23.04.08 16:37
Уважаемый разработчик. А как быть с регистрами?
20. O-Mel (o-mel) 15.05.08 18:12
А с SQL базой работает?
На dbf gопробовал удалить не нужные классификаторы единиц,
написал что "Заменены все возможные ссылки", а ничего при этом не сделал ???
Повторный запус ... пишет тоже самое
21. Olga Ts. (cariola) 10.06.08 09:21
РеквТип=Рекв.Тип;
{..\УДАЛЕНИЕЭЛЕМЕНТА.ERT(377)}: Поле агрегатного объекта не обнаружено (Тип)
Это при попытке в ЗиК е 7.7 слить двух сотрудников. Ругается на графы отбора журнала расчетов
22. Olga Ts. (cariola) 11.06.08 06:24
Ндя... и с SQL-базами видимо не работает
тз=РС.ВыполнитьИнструкцию(текст);
{..\УДАЛЕНИЕЭЛЕМЕНТА.ERT(77)}: FAILED! ICommandText::Execute(): File '1sjourn.dbf' does not exist.
ищет именно dbf-ки похоже
А пишет что заменил, но не заменяет это когда стоит галочка "Эмуляция". Если её убрать то работает
23. Аркадий Кучер (Abadonna) 11.06.08 08:40
В dbf-ке да еще без поиска ссылок в регистрах без всяких заморочек с 1срр.dll можно было сделать, и без перепроведения (достаточно заменить в операциях документов)
24. Денис (DionX) 26.11.08 07:48
Извините, долгое время отсутствовал, обработка, думаю, морально устарела, есть более новые, поэтому отвечать на вопросы не буду. Можно? ;-)
25. Виталий Глазунов (Altez) 09.04.09 01:37
Спасибо за чудную обработку, с которой начал освоение 1с++
>>есть более новые,
и более совершенные? например?
26. amblik (amblik) 15.09.09 14:07
Только скачал, пока не изучал, но вещь, по-моему, нужная для меня, по крайней мере. Мне нужно построить дерево подчиненных элементов
27. Vladimir Иванов (brunet) 27.03.14 19:32
Можно было использовать стандартную обработку 1С "Замена значений"
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа