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

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

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

Минусы:

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

 

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

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

 

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

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

 

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

 

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

24 Comments

  1. CheBurator

    хорошо, но хочется заменять в регистрах и другие агрегатные типы (перечисления, например)

    Reply
  2. Ёпрст

    Не качал…тупо апдейтишь все таблички ?…

    А периодику ?

    А почему в 1SCRDOC не меняешь ?… Там же всё — и графы отбора и подчиненность..

    Reply
  3. Ёпрст

    Посмотрел..

    Так и не понял — нахрена там нужен обычный запрос для справочника, чтоб поиметь потом тот-же самый список Элементов в нём ?

    Reply
  4. Noy

    (1)

    с периодикой все чин-чином, и с со значениями типа «Неопределенный» или «Справочник» тоже.

    А с 1SCRDOC — там сложнее: если установлен отбор по справочнику, ссылка на который присутствует в табличной части, то можно напороться на документ, в котором есть ссылка и на «оригинал» и на «замену» (а там уникальный индекс). Поэтому апдейт этой таблички не делаю, только чищу (Delete).

    Reply
  5. Noy

    (3) Да. Пользователю легче выбрать группу, чем подбирать элементы.

    Reply
  6. Noy

    пост в (4) — ответ на (2)

    Reply
  7. Ёпрст

    (5) а…про группы ка-то не подумал..

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

    Хотя, идея восстановления ссылок путём ТиИ -не комильфо.. как и само ТиИ.

    Reply
  8. Noy

    (7) Доработаю на досуге….

    но Тии все равно надо — для пересчета итогов. Можно конечно и самому попробовать пересчитать, но думаю что будет сложновато….

    Reply
  9. Ёпрст

    (8) Тии для пересчета итогов вовсе не обязательно — монопольно и так всё пересчитывается в предприятии..

    Разве что итоги по колонкам пересчитываются еще.

    Reply
  10. glassman

    Работаю над аналогичной обработкой. Только еще не требующей ТИИ. Регистры победил, с бух. итогами не получилось пока…

    Reply
  11. Noy

    (10) Респект. Если нужна помощь — можешь на меня рассчитывать (только мой уровень знания скл пониже будет).

    Reply
  12. glassman

    От помощи в тестировании не откажусь. 🙂 Но до этого еще дойти надо…

    Reply
  13. Noy

    (12) Договорились.

    Reply
  14. Ёпрст

    (10) выкладывай. что ужо есть..

    Reply
  15. glassman

    http://files.mail.ru/5OOMAF

    изначально все было расчитано на конкретную конфу. Потом поменяю, сделаю с выбором вида справочника. Без прекрас. Не трогает таблицу ссылок документов, т.к. интересующий вид справочника в графах не участвует, то и не заморачивался пока. Обычные таблицы делает апдейтом. Для регистров сделан перенос итогов с одного на другой. Качественно не тестировалось, но вроде работает верно. Родители и владельцы справочников обрабатываются.

    По бухгалтерии была мысль надергать из SQL Profiler-а всякую чушь, что 1С выполняет при проведении документа и симулировать перезапись проводок. Чтобы вручную не писать обновление всяких итогов по субконто и прочее. Т.е. у меня пусть и коряво, но собираются ссылки на документы в проводках которых есть ссылки на убираемый объект. И с этими документами дальше махинации идут с вызовом хранимых 1с-овских процедур. Финт ушами не вышел, короче, что-то я упускаю… Итоги кривятся. Этот кусок закоментирован. Остановился пока на том, что документы, которые делают бух проводки, проводятся обычным Док.Провести(). Благо у меня в базе самые тяжелые документы по безумным регистрам двигаются. 🙂

    В свободное время битву продолжаю.

    Напомню, качественно ничего не тестировалось, это текущая рабочая версия. Точно вычищает все ссылки. А вот с итогами и корректностью этих итогов большие вопросы пока.

    Reply
  16. Ёпрст

    (15) с итогами регистров — норм, а вот с бух -засада ? На сколько я понял ?…

    Reply
  17. Ёпрст

    +16 неплохо бы еще удалять записи с нулевыми итогами (если такие получаются при суммировании) заодно…

    Reply
  18. glassman

    (16) ну если только как бонус. 🙂 1С за этим сама не следит тоже. Тока при пересчете убираются. 🙂

    С бух. итогами я не пробовал аналогичные запросы писать по объединению итогов. Плюс там таблицы отбора по субконто, итоги по счетам. Короче, темный лес. 🙂 Надо заняться, не думаю, что там что-то из разряда невозможного. Еще проблемы со сложными проводками. Я их не то что в скульной базе не видел, я их вообще один раз только в работающей 1С встречал. 🙂

    Reply
  19. glassman

    Вообще-то подмена ссылок и автопересчет итогов в регистрах и бух.итогах довольно опасная штука. В том плане, что в логике проведения документа могут быть всякие нюансы, от которых зависят движения. И прямая замена движений может вызвать нелогичные движения. Взять тот же партионный учет в ТиС. При замене одной номенклатуры на другую будет получаться так, что списываться будут не те партии, которые должны по fifo. В результате будем иметь некорректный расчет доходности.

    Reply
  20. Ёпрст

    (19) ну да.. + партия будет от другой номенклатуры.

    Reply
  21. glassman

    (20) ну у партии-то владелец подменится. 🙂

    Reply
  22. Noy

    (19), (20) Я как раз для замены товаров обработку и использую. Первым запуском все «неактуальные» товары превращаю в один «Товар удален из базы» — у него появляется куча партий (владелец то меняется), а вторым проходом меняю все партии на одну. Конечно перепроводка старых документов даст неправильную себестоимость, но я удаляю товар, который уже более 2-х лет не имеет движений — соответственно документы за те периоды не будут перепроводится никогда.

    Также поступаю и с клиентами.

    Кстати на тестовой базе все прошло хорошо и размер таблиц с итогами (особенно «отбор проводок по субконто») ощутимо уменьшился.

    Reply
  23. Noy

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

    Reply
  24. alexn

    Черкнул пару-другую строк в обработку zamena_elementa.ert

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

    Если интересно могу выслать или опубликовать.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *