gifts2017

Замена ссылок (7.7 SQL) - (аналог repval)

Опубликовал Алексей Плутенко (Noy) в раздел Обработки - Свертка базы

Замена ссылок в SQL-базе без перепроведения документов.

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

Минусы:

  • Замена ссылок только элементов справочника (в 90% случаев только это и необходимо)
  • Не охваченным остался участок "Зарплата" - там замен не происходит.
  • В некоторых случаях требуется "пересчет служебных данных" (табличка 1SCRDOC), опять-таки из Конфигуратора.

 

Главный плюс - нет необходимости в перепроводке документов (для этого и писалась).

Есть возможность "частичной замены" - то есть, не во всех объектах БД.

 

Обработка ориентирована на опытных пользователей и администраторов БД, знающих структуру ИБ.

Требует загруженной 1cpp.dll

 

Схожие обработки:

 

UPD 26/10/10 Добавил возможность удаления и поиска ссылок. Исправлен баг: не заменялись значения в реквизитах оборотного регистра.

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

Наименование Файл Версия Размер Кол. Скачив.
ЗаменассылокSQL.ert
.ert 46,50Kb
03.09.14
196
.ert 46,50Kb 196 Скачать

См. также

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

Комментарии

1. Сергей (Che) Коцюра (CheBurator) 09.03.10 20:31
хорошо, но хочется заменять в регистрах и другие агрегатные типы (перечисления, например)
2. Епрст (Ёпрст) 10.03.10 07:52
Не качал...тупо апдейтишь все таблички ?...
А периодику ?
А почему в 1SCRDOC не меняешь ?... Там же всё - и графы отбора и подчиненность..
3. Епрст (Ёпрст) 10.03.10 07:58
Посмотрел..
Так и не понял - нахрена там нужен обычный запрос для справочника, чтоб поиметь потом тот-же самый список Элементов в нём ?
4. Алексей Плутенко (Noy) 10.03.10 08:02
(1)
с периодикой все чин-чином, и с со значениями типа "Неопределенный" или "Справочник" тоже.
А с 1SCRDOC - там сложнее: если установлен отбор по справочнику, ссылка на который присутствует в табличной части, то можно напороться на документ, в котором есть ссылка и на "оригинал" и на "замену" (а там уникальный индекс). Поэтому апдейт этой таблички не делаю, только чищу (Delete).
5. Алексей Плутенко (Noy) 10.03.10 08:03
(3) Да. Пользователю легче выбрать группу, чем подбирать элементы.
6. Алексей Плутенко (Noy) 10.03.10 08:04
7. Епрст (Ёпрст) 10.03.10 08:11
(5) а...про группы ка-то не подумал..

Для дбф тоже сойдёт.. имена табличек только поменять, да еще блоб обработать придёться..

Хотя, идея восстановления ссылок путём ТиИ -не комильфо.. как и само ТиИ.
8. Алексей Плутенко (Noy) 10.03.10 08:13
(7) Доработаю на досуге....
но Тии все равно надо - для пересчета итогов. Можно конечно и самому попробовать пересчитать, но думаю что будет сложновато....
9. Епрст (Ёпрст) 10.03.10 08:55
(8) Тии для пересчета итогов вовсе не обязательно - монопольно и так всё пересчитывается в предприятии..
Разве что итоги по колонкам пересчитываются еще.
10. Дмитрий Глазырин (glassman) 10.03.10 11:19
Работаю над аналогичной обработкой. Только еще не требующей ТИИ. Регистры победил, с бух. итогами не получилось пока...
11. Алексей Плутенко (Noy) 10.03.10 11:31
(10) Респект. Если нужна помощь - можешь на меня рассчитывать (только мой уровень знания скл пониже будет).
12. Дмитрий Глазырин (glassman) 10.03.10 12:07
От помощи в тестировании не откажусь. :) Но до этого еще дойти надо...
13. Алексей Плутенко (Noy) 10.03.10 12:09
14. Епрст (Ёпрст) 10.03.10 12:11
(10) выкладывай. что ужо есть..
15. Дмитрий Глазырин (glassman) 10.03.10 12:37
http://files.mail.ru/5OOMAF
изначально все было расчитано на конкретную конфу. Потом поменяю, сделаю с выбором вида справочника. Без прекрас. Не трогает таблицу ссылок документов, т.к. интересующий вид справочника в графах не участвует, то и не заморачивался пока. Обычные таблицы делает апдейтом. Для регистров сделан перенос итогов с одного на другой. Качественно не тестировалось, но вроде работает верно. Родители и владельцы справочников обрабатываются.
По бухгалтерии была мысль надергать из SQL Profiler-а всякую чушь, что 1С выполняет при проведении документа и симулировать перезапись проводок. Чтобы вручную не писать обновление всяких итогов по субконто и прочее. Т.е. у меня пусть и коряво, но собираются ссылки на документы в проводках которых есть ссылки на убираемый объект. И с этими документами дальше махинации идут с вызовом хранимых 1с-овских процедур. Финт ушами не вышел, короче, что-то я упускаю... Итоги кривятся. Этот кусок закоментирован. Остановился пока на том, что документы, которые делают бух проводки, проводятся обычным Док.Провести(). Благо у меня в базе самые тяжелые документы по безумным регистрам двигаются. :)
В свободное время битву продолжаю.
Напомню, качественно ничего не тестировалось, это текущая рабочая версия. Точно вычищает все ссылки. А вот с итогами и корректностью этих итогов большие вопросы пока.
16. Епрст (Ёпрст) 10.03.10 13:31
(15) с итогами регистров - норм, а вот с бух -засада ? На сколько я понял ?...
17. Епрст (Ёпрст) 10.03.10 13:35
+16 неплохо бы еще удалять записи с нулевыми итогами (если такие получаются при суммировании) заодно...
18. Дмитрий Глазырин (glassman) 10.03.10 14:17
(16) ну если только как бонус. :) 1С за этим сама не следит тоже. Тока при пересчете убираются. :)

С бух. итогами я не пробовал аналогичные запросы писать по объединению итогов. Плюс там таблицы отбора по субконто, итоги по счетам. Короче, темный лес. :) Надо заняться, не думаю, что там что-то из разряда невозможного. Еще проблемы со сложными проводками. Я их не то что в скульной базе не видел, я их вообще один раз только в работающей 1С встречал. :)
19. Дмитрий Глазырин (glassman) 12.03.10 08:02
Вообще-то подмена ссылок и автопересчет итогов в регистрах и бух.итогах довольно опасная штука. В том плане, что в логике проведения документа могут быть всякие нюансы, от которых зависят движения. И прямая замена движений может вызвать нелогичные движения. Взять тот же партионный учет в ТиС. При замене одной номенклатуры на другую будет получаться так, что списываться будут не те партии, которые должны по fifo. В результате будем иметь некорректный расчет доходности.
20. Епрст (Ёпрст) 12.03.10 08:11
(19) ну да.. + партия будет от другой номенклатуры.
21. Дмитрий Глазырин (glassman) 12.03.10 08:22
(20) ну у партии-то владелец подменится. :)
22. Алексей Плутенко (Noy) 12.03.10 09:24
(19), (20) Я как раз для замены товаров обработку и использую. Первым запуском все "неактуальные" товары превращаю в один "Товар удален из базы" - у него появляется куча партий (владелец то меняется), а вторым проходом меняю все партии на одну. Конечно перепроводка старых документов даст неправильную себестоимость, но я удаляю товар, который уже более 2-х лет не имеет движений - соответственно документы за те периоды не будут перепроводится никогда.
Также поступаю и с клиентами.
Кстати на тестовой базе все прошло хорошо и размер таблиц с итогами (особенно "отбор проводок по субконто") ощутимо уменьшился.
23. Алексей Плутенко (Noy) 26.10.10 14:23
Добавил возможность простого штатного поиска ссылок, и возможность непосредственного удаления элементов прямо из обработки.
24. AlexN (alexn) 04.07.12 17:04
Черкнул пару-другую строк в обработку zamena_elementa.ert
Для замены значений не во всей базе, а в документах-регистрах за определенный период времени.
Если интересно могу выслать или опубликовать.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа