Имя: Пароль:
1C
1С v8
Эталоны дубли запросом
0 skupidom
 
04.08.18
19:23
У элементов справочника контрагенты есть реквизиты: вес=количество заполненных реквизитов,вид базы - откуда этот контрагент пришел в базу 1С:
CRM,БП,Торговля.
У элемента контрагенты есть 4 УИД по видам базы.
Элемент контрагента с заполненным УИД бухгалтерии также заполнен 1 из остальных УИД: CRM,Торговля..
Среди контрагентов есть дубли с одинаковым наименованием.
Нужно определить элементы контрагентов эталон он или дубль.
Нужно написать 1 запрос по алгоритму:
Если есть 2 элемента CRM и только 1 соответствующий ему элемент с УИД Бухгалтерия, то он эталонный.
Если 2 элемента CRM и обеим есть соответствие с УИД Бухгалтерия,то эталонный тот, который встречается в максимальном количестве видов баз. Если максимальное количество баз одинаково,эталонный тот, который с максимальным весом заполненности реквизитов.
1 Лефмихалыч
 
04.08.18
20:50
А зачем эта заморочка с эталонами? Почему просто не объединить все данные, какие есть?
2 Cyberhawk
 
04.08.18
23:32
(1) При объединениее (замене ссылок) всегда есть как минимум два кандидата:
- кандидат в УИДы
- кандидат в данные
Т.е. УИД берем от одного объекта, а данные - от какого-то другого ("эталона", как ТС называет)
3 skupidom
 
04.08.18
23:56
а можно пример запроса,с условием что может быть > 2 дублей
4 Cyberhawk
 
04.08.18
23:57
Какого запроса?
5 tesseract
 
05.08.18
10:54
(3) Висячие строки это называется. Опять собеседование?
6 Chameleon1980
 
05.08.18
10:57
имеющие количество (наименование)>1
7 Лефмихалыч
 
05.08.18
10:57
(2) если речь про замену ссылок, то эталонность объекта зависит только от количества ссылок на него, а не от данных. В этом случае тем более надо данные мерджить все,что есть, а ссылки заменять те, которых меньше.
8 Лефмихалыч
 
05.08.18
10:59
(3) ВЫБРАТЬ ИНН
ПОМЕСТИТЬ ВТ
Из Справочник.Контрагенты
СГРУППИРОВАТЬ ПО ИНН ИМЕЮЩИЕ КОЛИЧЕСТВО(Ссылка)>1;
ВЫБРАТЬ
ИНН, Ссылка
ИЗ ВТ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.КОнтрагенты как Спр
ПО Спр.ИНН = ВТ.ИНН
Итоги КОЛИЧЕСТВО(Ссылка) ПО ИНН
9 Лефмихалыч
 
05.08.18
11:00
точнее >2, а не >1, но - не суть
10 skupidom
 
05.08.18
11:54
это самописный справочник и контрагенты - физики,дубли определяются по = полного наименования
11 skupidom
 
07.08.18
13:24
сделал такой запрос:
//Запрос = Новый Запрос;
    //Запрос.Текст =
    //"ВЫБРАТЬ
    //|    Контрагенты.Ссылка КАК Ссылка,
    //|    Контрагенты1.Ссылка КАК Дубль
    //|ПОМЕСТИТЬ ВТДубли
    //|ИЗ
    //|    Справочник.Контрагенты КАК Контрагенты
    //|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты1
    //|        ПО Контрагенты.НаименованиеПолное = Контрагенты1.НаименованиеПолное
    //|            И Контрагенты.Ссылка <> Контрагенты1.Ссылка
    //|ГДЕ
    //|    Контрагенты.ВидБазы = &ВидБазы
    //|    И Контрагенты1.ВидБазы = &ВидБазы
    //|    И НЕ Контрагенты.ЮридическоеФизическоеЛицо = &ЮЛ
    //|    И НЕ Контрагенты1.ЮридическоеФизическоеЛицо = &ЮЛ
    //|;
    //|
    //|////////////////////////////////////////////////////////////////////////////////
    //|ВЫБРАТЬ
    //|    Контрагенты.GUID_1Строка КАК GUID_1Строка,
    //|    Контрагенты.GUID_3Строка КАК GUID_3Строка,
    //|    ВТДубли.Ссылка КАК Ссылка,
    //|    ВТДубли.Дубль КАК Дубль,
    //|    Контрагенты1.GUID_1Строка КАК GUID_1СтрокаДубль,
    //|    Контрагенты1.GUID_3Строка КАК GUID_3СтрокаДубль
    //|ИЗ
    //|    ВТДубли КАК ВТДубли
    //|        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    //|        ПО ВТДубли.Ссылка.GUID_3Строка = Контрагенты.GUID_3Строка
    //|        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты1
    //|        ПО ВТДубли.Дубль.GUID_3Строка = Контрагенты1.GUID_3Строка
    //|ГДЕ
    //|    (Контрагенты.GUID_1Строка <> &Пусто
    //|            ИЛИ Контрагенты1.GUID_1Строка <> &Пусто)
    //|    И Контрагенты.ВидБазы = &БП
    //|    И Контрагенты1.ВидБазы = &БП";
    //Запрос.УстановитьПараметр("ВидБазы",1);
    //Запрос.УстановитьПараметр("ЮЛ","Юридическое лицо");
    //Запрос.УстановитьПараметр("Пусто","");
    //Запрос.УстановитьПараметр("БП",2);
    //Выборка = Запрос.Выполнить().Выбрать();
12 skupidom
 
07.08.18
13:34
но по нему выводятся только эталон и дубль, нужно так расширить запрос,чтобы попадали позиции,у которых нет дублей и дублей > 2, коллеги, жизненно необходимо решить
13 МихаилМ
 
07.08.18
13:36
так Вы женщина или мужчина ?
14 skupidom
 
07.08.18
14:14
женщина
15 skupidom
 
07.08.18
14:18
так как с запросом?
16 DrShad
 
07.08.18
14:22
вот это поворот
пошел за попкорном
17 Доминошник
 
07.08.18
14:50
(12) вроде бы так выбор того, у чего нет дублей

ВЫБРАТЬ РАЗЛИЧНЫЕ
   Контрагенты.НаименованиеПолное
ПОМЕСТИТЬ ВТВсе
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   Контрагенты.ВидБазы = &ВидБазы
   И НЕ Контрагенты.ЮридическоеФизическоеЛицо = &ЮЛ
;
///////////////////////
ВЫБРАТЬ
   Контрагенты.НаименованиеПолное КАК НаименованиеПолное,
   Контрагенты.Ссылка КАК Ссылка,
   Контрагенты1.Ссылка КАК Дубль
ПОМЕСТИТЬ ВТДубли
ИЗ
   Справочник.Контрагенты КАК Контрагенты
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты1
      ПО Контрагенты.НаименованиеПолное = Контрагенты1.НаименованиеПолное
      И Контрагенты.Ссылка <> Контрагенты1.Ссылка
ГДЕ
   Контрагенты.ВидБазы = &ВидБазы
   И Контрагенты1.ВидБазы = &ВидБазы
   И НЕ Контрагенты.ЮридическоеФизическоеЛицо = &ЮЛ
   И НЕ Контрагенты1.ЮридическоеФизическоеЛицо = &ЮЛ
;
///////////////////////
ВЫБРАТЬ
   ВТВсе.НаименованиеПолное
ПОМЕСТИТЬ ВТУникальные
ИЗ
   ВТВсе
ГДЕ НЕ ВТВсе.НаименованиеПолное В
   (ВТДубли.НаименованиеПолное ИЗ ВТДубли КАК ВТДубли)
18 1Сергей
 
07.08.18
14:52
Есть готовые инструменты по исправлению дублей
19 skupidom
 
07.08.18
14:59
эти справочники самописные
20 Cyberhawk
 
07.08.18
17:32
(7) Ошибаешься
21 DTX 4th
 
07.08.18
17:38
Слишком сложно. Нужны примеры.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.