Дубликаты контрагентов, замена ссылок на контрагентов в документах

  • Автор темы Истребитель
  • Дата начала
И

Истребитель

#1
Добрый день!

Стоит задача поправить в базе контрагентов. По различным причинам (импорт из 7.7, обмен данными с другой базой 8.1) в базе образовались дубликаты одного и того-же контрагента.
Нужно сделать так, чтобы остался только один.

При этом если скажем на обоих контрагентов есть счёт или реализация товаров и услуг - нужно поменять там ссылки на того, который остаётся.

Я планирую написать обработку, которая позволит выбирать из пар дубликатов того, который остаётся, а для того, который удаляется, сделает поиск по базе, и для каждой найденной ссылки заменит её на того, который остаётся, сохранит, а затем когда всё обойдёт, проведёт всё, что заменялось и было проводимым.

Вопрос первый - правильно ли я мыслю? Так ли стоит делать? Быть может есть ошибка, или есть какой-то известный способ сделать проще, или готовая обработка?

Вопрос второй - как получить список всего, что ссылается на объект? Как например при удалении обработка показывает - какие есть ссылки, как мне сделать такой запрос? Конкретно - мне нужны все ссылки на контрагента, но ведь удалялка 1С для любых объектов показывает это, интересно, как это делается?

Спасибо!
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#2
логика у тебя верная, ИМХО. тебе поможет
НайтиСсылки(<?>,);
Синтаксис:
НайтиСсылки(<Объекты>,<Ссылки>)
Назначение:
Находит ссылки на объекты, переданные в списке значений.
Параметры:
<Объекты> - конкретное значение искомого объекта или значение типа ''СписокЗначений'', в котором данной процедуре передаются объекты, по которым надо найти ссылки.
<Ссылки> - идентификатор объекта типа ''ТаблицаЗначений'', в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. объект на который ссылаются; 2. объект, который содержит ссылку; 3. комментарий к ссылке.
 
И

Истребитель

#3
Спасибо, видимо это то, что нужно.

Не будет ли базе "плохо" от перепроведения такого количества документов?
Нет ли какого-то "закрытия года" или что-то типа того, что подразумевает, что документы в той части уже не должны меняться больше?


Добавлено: Эмм, функции "НайтиСсылки" нет.
У меня восьмерка, а не семерка...
 
И

Истребитель

#4
Разобрался, называется немного иначе и работает немного иначе но всё равно работает :)

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

unknown181538

НеГуру
28.12.2008
1 417
0
#5
Вы ребята молодцы, что готовы это писать! Но не надо)
Гуглите "Поиск и замена значений". Можно на ИТС.
И перепроводить не надо ничего.
 
И

Истребитель

#6
Благодарю! Именно это, вероятно, и искал. Но как же не перепроводить?

Допустим есть документ - продажа товара. Он делает проводку - вешает "долг" на покупателя и в плюс пишет сумму проданного.
Если я сменю покупателя - как же я могу не перепровести документ, ведь пока я не перепровёл, проводка останется на того, предыдущего контрагента?
Или я не прав?
 

puh14

Well-known member
11.07.2008
1 412
0
#7
Гуглите "Поиск и замена значений". Можно на ИТС.
Пасиб - мне тож пригодится. Хотя лично мне дописывать однозначно придется - у меня часть данных хранится в списочке свернутом в строку в элементе справочника.
 

unknown181538

НеГуру
28.12.2008
1 417
0
#8
Благодарю! Именно это, вероятно, и искал. Но как же не перепроводить?

Допустим есть документ - продажа товара. Он делает проводку - вешает "долг" на покупателя и в плюс пишет сумму проданного.
Если я сменю покупателя - как же я могу не перепровести документ, ведь пока я не перепровёл, проводка останется на того, предыдущего контрагента?
Или я не прав?
Замена ссылок происходит в том, числе и наборах записей.
Но если, например, аванс висел на одном, реализация на другом, то зачет аванса надо перерассчитывать... ну вы поняли.
 

Дайнеко

Well-known member
19.11.2009
951
0
#9
Перепроведение - это смерть.
Обработка "Поиск и замена значений" может заменить Клиента в регистрах и проводках.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#10
а обработка меняет только контрагента или же договор тоже? в смысле можно такой обработкой воспользоваться если мне нужно не контрагента поменять а один договор на другой?
 
И

Истребитель

#12
То есть если у меня есть контрагент, на него документы - счет на оплату, реализация товаров и услуг, договор, счет в банке, и их записи в регистрах, то эта обработка заменит всё везде одновременно, счет перейдет на другого контрагента, договор тоже, и записи в регистрах. Как она это сделает в обход функций "при записи" и без отмены проведения документа, разве в 1С не автоматически документ при записи отменяет проведение?
 

unknown181538

НеГуру
28.12.2008
1 417
0
#14
. Как она это сделает в обход функций "при записи" и без отмены проведения документа, разве в 1С не автоматически документ при записи отменяет проведение?
Через набор записей. Документ может иметь проводки и без проведения вообще.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#15
а от какого числа на диске ИТС есть эта обработка? или ее на сайте можно скачать?
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#17
ой, и в правду есть. вот только стоит пользоваться виндовым поиском вместо итс!
Дайнеко, пасиба агромное! :)