Поиск дублей номенклатуры

Создаем внешний отчет « ПоискДублейНоменклатуры », открываем схему компоновки данных (СКД) и создаем набор типа запрос, запускаем кнопкой конструктор запроса.

Рис. Внешний отчет «Поиск дублей номенклатуры»
В конструкторе запроса на закладке «Таблицы и поля» выбираем справочник «Номенклатура», у которого выбираем поля: Ссылка и Наименование.

Рис. Конструктор запросов, закладка «Таблицы и поля»
Далее переходим на закладку «Группировка». Здесь нужно сгруппировать поля по номенклатуре и количеству, как показано далее. Групповое поле выбираем «Номенклатура», а суммируемое поле устанавливаем как «Ссылка» с функцией «Количество».

Рис. Конструктор запросов, закладка «Группировка»
На закладке «Объединения/Псевдонимы» можно установить названия колонок отчета, наиболее подходящие по смыслу.

Рис. Конструктор запросов, вкладка «Объединения/Псевдонимы»
Получившийся запрос показан в таблице далее.
Листинг. Запрос отчета «Поиск дублей номенклатуры»
КОЛИЧЕСТВО ( Номенклатура.Ссылка ) КАК Дубли,
Справочник.Номенклатура КАК Номенклатура
СГРУППИРОВАТЬ ПО
КОЛИЧЕСТВО ( Номенклатура.Ссылка ) > 1
Далее закрываем конструктор запросов, сохраняем внешний отчет, запускаем режим «1С:Предприятие» и проверяем работу.

Рис. Отчет «Поиск дублей номенклатуры»
ПРИМЕЧАНИЕ : пример отчета по поиску дублей номенклатуры выполнен на версии платформы 8.3, обычное приложение (толстый клиент).
Ищем дубли при помощи запроса 1С
Как найти дубли в справочнике (элементы совпадающие по названию) при помощи запроса в 1С?
Для этого необходимо получить выборку из этого справочника с названием и ссылкой.
Следующим шагом Вы группируете данную выборку по названию, а к полю «Ссылка» применяете функцию «Количество».
Тем самым вы узнаете, сколько с таким названием элементов справочника.
Но нас не интересуют «одиночные» элементы, т.е. те названия у которых одна ссылка. Поэтому необходимо использовать оператор «Имеющие», который применяем к функции «Количество», ставя условие что результат этой функции больше одного.
Например, как в этом запросе:
Результат его выполнения можно посмотреть на картинке ниже

Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.

В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком
Для моих читателей, купон на скидку 25%: hrW0rl9Nnx
Я стараюсь как можно чаще выпускать различные интересные бесплатные статьи и видеоуроки. Поэтому буду очень рад, если Вы поддержите мой проект перечислив любую сумму:
Можете перечислить любую сумму напрямую:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Запрос на поиск дублей
Добрый день!
Помогите пожалуйста разобраться с запросом.
Задача состоит в следующем. Мне надо проверить элементы выбранного справочника на наличие дублей по какому-нибудь конкретному полю (поле определяется из правил конвертации). Например — справочник "Номенклатура" синхронизация идет по полю "Код". Мне нужно в виде дерева вывести все элементы справочника, у которых совпадает код. Пишу запрос, чтобы найти дубли по этому полю.
Выводит дублируемые элементы (их код).Как прицепить туда еще наименование, а лучше ссылку? И еще вопрос, как мне вывести запрос в виде дерева? Чтобы выглядело вот-так
Неуникальный код 1
Элемент1 КодЭлемента1
Элемент2 КодЭлемента2
Элемент3 КодЭлемента3
На примере:
0000001
Соль 0000001
Сахар 0000001
0000002
Мука 0000002
Хлеб 0000002
(2) Результат запроса выводит
А как сделать, чтобы было так:
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК КоличествоДублей,
Номенклатура.Код КАК Код
.
1С 8.3 Запросы — Программист 1С Минск. Автоматизация бизнеса.

✔ Получение запросом всех строк со значениями всех столбцов из таблицы
&НаСервере
Процедура ПолучениеЗапросомВсехСтрокСоЗначениямиВсехСтолбцовИзТаблицы ()
// Звездочка используется, когда нужно выбрать все столбцы из таблицы
Запрос = Новый Запрос ( «ВЫБРАТЬ
| *
|ИЗ
| Справочник.Материалы» );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда // Такая проверка рекомендуется фирмой 1С
Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Иначе // Например: Сообщить(«Данные отсутствуют!»);
КонецЕсли;
&НаСервере
Процедура ПолучениеЗапросомВсехСтрокСоЗначениямиОпределенныхСтолбцов ()
// У каждого столбца в таблице есть своё соответствующее имя
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| Производитель,
| СрокИспользования
|ИЗ
| Справочник.Материалы» );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда // Такая проверка рекомендуется фирмой 1С
Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Иначе // Сообщить(«Данные отсутствуют!»);
КонецЕсли;
&НаСервере
Процедура ИспользованиеПсевдонимовДляСтолбцовИТаблицВЗапросах ()
// Для каждого столбца может быть назначен Псевдоним. Запрос станет более понятным
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Запчасти.Наименование КАК НаименованиеМатериала,
| Запчасти.СрокИспользования КАК СрокИспМатериала,
| Запчасти.Производитель КАК ПроизводительМатериала
| ИЗ
| Справочник.Материалы КАК Запчасти» );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда // Такая проверка рекомендуется фирмой 1С
Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Иначе // Сообщить(«Данные отсутствуют!»);
КонецЕсли;
&НаСервере
Процедура УдалениеДубликатовИзРезультатаЗапроса ()
// В справочнике КлассификаторСроковПИ есть элементы-дубли. Строим запрос так,
// чтобы в результат попали только различные сроки использования
Запрос = Новый Запрос ( «ВЫБРАТЬ РАЗЛИЧНЫЕ
| Наименование
|ИЗ
| Справочник.КлассификаторСроковПИ» );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда // Такая проверка рекомендуется фирмой 1С
Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Иначе // Сообщить(«Данные отсутствуют!»);
КонецЕсли;
&НаСервере
Процедура ОграничениеКоличестваСтрокВРезультатеЗапроса ()
// Создание выборки первых 30 самых тяжелых материалов
Запрос = Новый Запрос ( «ВЫБРАТЬ ПЕРВЫЕ 30
| Наименование,
| Вес
|ИЗ
| Справочник.Материалы
|УПОРЯДОЧИТЬ ПО
| Вес УБЫВ» );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда // Такая проверка рекомендуется фирмой 1С
Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Иначе // Сообщить(«Данные отсутствуют!»);
КонецЕсли;
&НаСервере
Процедура ВставкаСтолбцаСОпределеннымЗначениемВРезультатЗапроса ()
// Добавление столбца СтавкаНДС и присвоение значения = 20
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| 20 КАК СтавкаНДС,
| Вес
|ИЗ
| Справочник.Материалы» );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда // Такая проверка рекомендуется фирмой 1С
Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Иначе // Сообщить(«Данные отсутствуют!»);
КонецЕсли;
&НаСервере
Процедура ВыборкаЗаписейЗапросаТолькоНаКоторыеИмеютсяПользовательскиеПрава ()
// Необходимо только для баз, в которых ограничение прав доступа работает на уровне записей (RLS)
// Данная реализация кода дает возможность выполнить запрос без ошибки
// и выбрать только те данные, на которые у пользователя есть права
Запрос = Новый Запрос ( «ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов» );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда // Такая проверка рекомендуется фирмой 1С
Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Иначе // Сообщить(«Данные отсутствуют!»);
КонецЕсли;