#0
by Gorr
Имеем справочник из которого необходимо выбрать все элементы без дублей. Критерием дублей будем считать наименование элементов. В результате запроса надо получить два поля наименование и ссылку на элемент справочника. Например содержимое справочника может быть: сидоров Ссылка05 В результате запроса хотим получить: Иванов Ссылка01 Петров Ссылка02 Сидоров Ссылка04 Проблема в том, что запрос Выбрать Наименование ИЗ Справочник.Сотрудники Сгруппировать по Наименование Имеющие Количество (*) > 1 вернет три записи но без ссылки на сами элементы. Проблема в том что Поле Ссылка уникально в пределах справочника и при включении поля в состав выбираемых полей возвращаются все записи.
#8
by WildSery
Можно даже обработку замены дублей порекомендовать. Я не спрашивал разрешения :) Эхо!
#9
by Gorr
Благодарю за МИНИМУМ! На самом деле без разницы какую ссылку выбрать в результат. Мое дело предложить клиенту варианты решения: Либо алгоритм обрезающий дубли либо предоставить все дубли для принятия решения. Скорее всего заморачиваться с корректировкой дублей просто не захотят (нужно перенести НСИ в другую базу).
#10
by Gorr
Чиста теоретически была еще мысль для выбора какую ссылку взять в результат использовать конструкцию TOP 1, но как это сделать мысль далее не пошла))
#12
by mikecool
чтобы избавиться от дублей, надо вообще понять как и что выбирается, и тогда все будет просто
#14
by Gorr
благодарю за развитие мысли. В итоге получилось два решения результаты которых почему-то отличаются. Быть может у кого будут идеи? Вариант1: ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Номенклатура ВТ_Номенклатура СГРУППИРОВАТЬ ПО Наименование ИМЕЮЩИЕ КОЛИЧЕСТВО(*) > 1 ИЗ ВТ_Номенклатура СГРУППИРОВАТЬ ПО Наименование ИЗ ВТ_Номенклатура ГДЕ НЕ Наименование В (ВЫБРАТЬ * ИЗ ВТ_ДублиНаименований) ОБЪЕДИНИТЬ ; ВЫБРАТЬ Количество(*) из ВТ_РЕЗУЛЬТАТ Вариант2: Поместить ВТ_Номенклатура ИЗ Справочник.Номенклатура как Номенклатура ГДЕ Ссылка В (Выбрать первые 1 Ссылка ИЗ Справочник.Номенклатура как спр где спр.Наименование = Номенклатура.Наименование Упорядочить по Наименование убыв) И Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры) //Упорядочить по Наименование ИЕРАРХИЯ ; Выбрать Количество(*) из ВТ_Номенклатура Так вот количество записей во втором случае получается менее чем в первом.
#16
by Gorr
Цель здесь получить уникальные записи из списка дублирующихся. См.пост 0. В результат вашего запроса записи с дублинующимися наименованиями не попадут вовсе, что приведет к потере данных.
#17
by Serginio1
Из самого названия ВТ_СсылкиБезДублей должно соответствовать ИМЕЮЩИЕ КОЛИЧЕСТВО(*) = 1
#18
by Gorr
ну уж как назвалось лучше придумать не получилось, но суть - там должны быть ссылки из тех которые дублируются в основной таблице, но в единственном экземпляре
#19
by МимохожийОднако
В УТ10.3 есть штатная обработка по поиску и замене дублей. В т.ч. и по наименованию. Возможно, это лучше лисапеда.
#20
by Gorr
вообще смотрите весь пакет запросов коли речь идет о 1м варианте. шаг 1 понятно что выбираем только те элементы справочника входящие в определенную группу и помещаем результат в ВТ_Номенклатура. Вся дальнейшая работа осуществляется именно с этим отбором. шаг 2 определяем какие наимнования дублируются шаг 3 выбираем из множества дублирующихся записей по одной с каждым наименованием шаг 4 используем объединение. в первой части запроса выбираем все записи кроме дублирующихся. во второй части запроса добавляем по одной из тех которые дублируются (шаг3).
#21
by Gorr
это из другой оперы - замена дублей и ремонт базы здесь и не требуется. речь идет о том что нужно переносить, а что нет.
#23
by Gorr
да, именно эта конструкция позволяет выбрать дубли (те строки где количество строк с одинаковым наименованием встречается в таблице более одоного раза) из общего множества записей. что тут непонятного?
#27
by Serginio1
Все прошу прощения. Они разные в первом случае Наименование во втором ссылки. Я так понимаю ссылок больше 1 быть не может?
#28
by Gorr
ДА НИФИГА! см пример исходных таблиц из 0. первый возвращает Петров Сидоров второй возвращает Ссылка03 Ссылка05
#29
by Serginio1
28 Точно второй что либо возвращает при условии ИМЕЮЩИЕ КОЛИЧЕСТВО(*) > 1 Судя по первому запросу никаких дублей ссылок быть не должно
#30
by Gorr
ессно having count(*) > 1 это классика жанра. ссылки уникальны по своей природе. мы говорим об элементах с динаковым наименованием. почему вы не можете внимательно прочитать топик?
#31
by Serginio1
Ясно прошу прощения не доконцо досмотрел. Итак ВЫБРАТЬ Наименование ПОМЕСТИТЬ ВТ_ДублиНаименований ИЗ ВТ_Номенклатура СГРУППИРОВАТЬ ПО Наименование ИМЕЮЩИЕ КОЛИЧЕСТВО(*) > 1 ; выбирает дубли наименований ИЗ ВТ_Номенклатура СГРУППИРОВАТЬ ПО Наименование ИМЕЮЩИЕ КОЛИЧЕСТВО(*) > 1 ; Этот запрос аналогичный первому, только еще есть поле Ссылка. Сделай второй запрос на ИМЕЮЩИЕ КОЛИЧЕСТВО(*) = 1 и получишь однинаковое количество с Выбрать Ссылка Поместить ВТ_Номенклатура ИЗ Справочник.Номенклатура как Номенклатура ГДЕ Ссылка В (Выбрать первые 1 Ссылка ИЗ Справочник.Номенклатура как спр где спр.Наименование = Номенклатура.Наименование Упорядочить по ссылка убыв) И Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры) Упорядочивать по наименованию нет смысла, так как стоит условие спр.Наименование = Номенклатура.Наименование
#32
by Serginio1
Ссылка в ИЕРАРХИИ (&ГруппаНоменклатуры) СГРУППИРОВАТЬ ПО Наименование должно выдать то же что и Выбрать Номенклатура.Наименование,Номенклатура.Ссылка ИЗ Справочник.Номенклатура как Номенклатура ГДЕ Ссылка В (Выбрать первые 1 Ссылка ИЗ Справочник.Номенклатура как спр где спр.Наименование = Номенклатура.Наименование Упорядочить по Наименование убыв) И Ссылка В ИЕРАРХИИ(&ГруппаНоменклатуры)
#34
by Sammo
3 варианта избавлния от дублей 1. distinct 2. группирующие функции 3. а ля срез последних
#36
by Serginio1
Ты для начала сравни первый и второй вариант на полное объединение по наименованию и посмотри различия.
#40
by WildSery
Вот тебе 100 рублей на молоко, а вот 100 рублей на хлеб. Смотри, не перепутай! Найди отличия от первых пяти ответов.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- предельная сумма отчислений в резерв по отпускам
- У пользователя недостаточно прав на исполнение операции над базой данных
- В запросе строки не объединяются
- Агент + 2.0. Как настроить обмен?
- Обновление БП 2.0 на 3.0 Ошибка: Тип не определен (СправочникСсылка.Классификат
- ЗУП Как добраться до полей ввода в документе Регистрация разовых начислений
- РАУЗ.КА. Себестоимость в возврате.
- 1с8 Выбор из ТЗ строки в ПолеВвода
- СКД: как пронумеровать колонки?
- КД: Передать значение реквизита из источника в приемник
- Raid 5 (4 диска) или Raid 10 (4 диска)
- Можно ли как то определить открыто окно вывода сообщений?
- загрузка проводок из зуп 2.5 в подрядчик строительства 4.0
- Немогу найти строку в табличной части :(
- Защита видео-контента ?? Какие технологии сегодня имеются ?
- УТ 11 - разграничение прав доступа к заказам
- v7: Разложить ФИО на три строки
- v7: Разделить на триады
- Как посмотреть оплату заказа покупателя 1С 8.2 КА
- Соединение с сервером разорвано по инициативе сервера