|
Приведение дублей к одному элементу | ☑ | ||
---|---|---|---|---|
0
balak05
02.04.14
✎
13:52
|
Здравствуйте. Делаю обработку по загрузке контрагентов
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.Наименование = &Наименование"; Запрос.УстановитьПараметр("Наименование", СОКРЛП(ОбъектDBF.name)); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Количество() > 1 Тогда Сообщить("Имеются дубли контрагента " + Результат.Выгрузить()[0].Ссылка.Наименование); ОбъектDBF.Следующая(); Продолжить; ИначеЕсли ВыборкаДетальныеЗаписи.Количество() = 1 Тогда Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НовЭлемент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); КонецЦикла; Иначе НовЭлемент = Справочники.Контрагенты.СоздатьЭлемент(); КонецЕсли; Подскажите как в случае если несколько контрагентов с одинаковым наименованием заменить их на первый. Остальные смогу удалить через получитьобъект и удалить. |
|||
1
Maxus43
02.04.14
✎
13:56
|
ты сначала типовой обработкой Поиск и замена дублирующих элементов прокрутись, чтоб не было такой ситуации как в (0) вобще
|
|||
2
Анютик
02.04.14
✎
13:57
|
есть типовая обработка по поиску и замене дублей...зачем изобретать велосипед?
|
|||
3
balak05
02.04.14
✎
13:59
|
(1) (2) про типовую обработку знаю. Но хочу реализовать так
|
|||
4
Maxus43
02.04.14
✎
14:00
|
(3) как так? У тебя ничего нет, а в той обработке всё есть. Думаешь замена ссылок делается 2-мя строчками кода?
|
|||
5
balak05
02.04.14
✎
14:03
|
(4) То есть я так понял ссылку надо заменить?
|
|||
6
Maxus43
02.04.14
✎
14:04
|
(5) а как ещё ты схлопнешь 2 ссылки в одну? Там же докумены по ним могут быть проведены уже и т.д.
|
|||
7
balak05
02.04.14
✎
14:08
|
(6) А если переприсвоить Результат.Выгрузить()[1].Ссылка.ПолучитьОбъект().Ссылка = Результат.Выгрузить()[0].Ссылка?
|
|||
8
Maxus43
02.04.14
✎
14:22
|
(7) дубли в системе всё равно останутся, или это нормально?
Сделай ещё упорядочивание по ссылке, и тогда можешь использовать своё "переприсвоить", но смысла в этом не очень |
|||
9
balak05
02.04.14
✎
14:26
|
(8) Нет же я же потом могу получитьобъект и удалить? Или не смогу... ссылку то я переприсвоил)
|
|||
10
Maxus43
02.04.14
✎
14:30
|
(9) Откуда удалить? Из 1с? А Если по этому элементу уже документы введены?
Какую ссылку ты переприсвоил? Ты просто нашёл, допустим, 2 элемента справочника Контрагенты с одинаковым наименованием. Что надо с ними сделать дальше? Физически удалить дубли из 1с - делай поиск и замена ссылок, потом удаляй. Как иначе то? |
|||
11
balak05
02.04.14
✎
14:34
|
(10) ты прав. Тогда необходимо выбирать все элементы где встречается ссылки на элементы со второго, переприсвоить у них ссылки и перезаписать эти элементы. Затем можно удалить сами элементы.
|
|||
12
Maxus43
02.04.14
✎
14:37
|
(11) всё это умеет обычная типовая обработка, вперёд!
З.ы. бэкап не забудь |
|||
13
balak05
02.04.14
✎
14:40
|
(12) Ладно спасибо. Просто хотелось чтобы все одной кнопкой получилось)
|
|||
14
Йохохо
02.04.14
✎
14:42
|
(13) перестанут идеи из (7) появляться, сможешь вместо двух бэкапов делать один и делать все одной кнопкой
|
|||
15
y22-k
02.04.14
✎
18:14
|
(0) Любишь конструировать велосипеды?
|
|||
16
lex-kex
02.04.14
✎
18:18
|
От себя ляпну, что обычно в стандартных конфигурациях где есть Контрагент есть еще Договор контрагента, и тут самое главное и после замены контрагента заменить ссылки на договоры
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |