Суть отсюда (из комментария 19). Отличный код! Причем вполне универсальный (меняем только сам источник и ссылки на него, а изменение данных очень просто!), вопреки утверждению автора!
Мой вариант (небольшая адаптация+ комментарии).
"ВЫБРАТЬ
//Основной запрос пакета- выбираем нужные данные,
//и помещаем их во временную таблицу- Таблица.
//Здесь (до ключевого слова ПОМЕСТИТЬ) добавляем/меняем необходимые нам данные.
//В принципе сюда можно выбрать ВСЕ данные исходной таблицы
| УстановкаМестХраненияНоменклатурыТовары.Номенклатура,
| УстановкаМестХраненияНоменклатурыТовары.Партия,
| УстановкаМестХраненияНоменклатурыТовары.Приоритет,
| УстановкаМестХраненияНоменклатурыТовары.НомерСтроки
|ПОМЕСТИТЬ Таблица
|ИЗ
| Документ.УстановкаМестХраненияНоменклатуры.Товары КАК УстановкаМестХраненияНоменклатурыТовары
|ГДЕ
| УстановкаМестХраненияНоменклатурыТовары.Ссылка = &Ссылка
| И УстановкаМестХраненияНоменклатурыТовары.Номенклатура <> ЗНАЧЕНИЕ(Справочник.МестаХранения.ПустаяСсылка)
| И УстановкаМестХраненияНоменклатурыТовары.Номенклатура.Услуга = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
//Данные по которым нужно произвести сравнение выносим сюда.
//Результатом этого запроса явится "сбор" элементов с одинаковыми полями
//( в соответствии с условием
//КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Таблица.НомерСтроки) > 1, т.е.
//ТЕ ПОЛЯ (РАЗЛИЧАЮЩИЕСЯ НомеромСтроки) которых >1)
| Таблица.Номенклатура,
| Таблица.Партия,
| Таблица.Приоритет
|ПОМЕСТИТЬ Дубли
|ИЗ
| Таблица КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Номенклатура,
| Таблица.Партия,
| Таблица.Приоритет
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Таблица.НомерСтроки) > 1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
//Здесь укажем данные, нужные нам в выборке из запроса (к примеру в сообщении)
//и установим связи м.у. нашими таблицами
| Таблица.Номенклатура,
| Таблица.Партия,
| Таблица.Приоритет,
| Таблица.НомерСтроки
|ИЗ
| Дубли КАК Дубли
| ЛЕВОЕ СОЕДИНЕНИЕ Таблица КАК Таблица
| ПО Дубли.Номенклатура = Таблица.Номенклатура
| И Дубли.Партия = Таблица.Партия
| И Дубли.Приоритет = Таблица.Приоритет";
Суть. Мы сравниваем строки ТЧ Товары документа УстановкаМестХраненияНоменклатуры по полям: Номенклатура, Партия, Приоритет.
Если существуют (две и более) строки где эти поля равны друг-другу- они попадут в выборку из запроса!
Мой вариант (небольшая адаптация+ комментарии).
"ВЫБРАТЬ
//Основной запрос пакета- выбираем нужные данные,
//и помещаем их во временную таблицу- Таблица.
//Здесь (до ключевого слова ПОМЕСТИТЬ) добавляем/меняем необходимые нам данные.
//В принципе сюда можно выбрать ВСЕ данные исходной таблицы
| УстановкаМестХраненияНоменклатурыТовары.Номенклатура,
| УстановкаМестХраненияНоменклатурыТовары.Партия,
| УстановкаМестХраненияНоменклатурыТовары.Приоритет,
| УстановкаМестХраненияНоменклатурыТовары.НомерСтроки
|ПОМЕСТИТЬ Таблица
|ИЗ
| Документ.УстановкаМестХраненияНоменклатуры.Товары КАК УстановкаМестХраненияНоменклатурыТовары
|ГДЕ
| УстановкаМестХраненияНоменклатурыТовары.Ссылка = &Ссылка
| И УстановкаМестХраненияНоменклатурыТовары.Номенклатура <> ЗНАЧЕНИЕ(Справочник.МестаХранения.ПустаяСсылка)
| И УстановкаМестХраненияНоменклатурыТовары.Номенклатура.Услуга = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
//Данные по которым нужно произвести сравнение выносим сюда.
//Результатом этого запроса явится "сбор" элементов с одинаковыми полями
//( в соответствии с условием
//КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Таблица.НомерСтроки) > 1, т.е.
//ТЕ ПОЛЯ (РАЗЛИЧАЮЩИЕСЯ НомеромСтроки) которых >1)
| Таблица.Номенклатура,
| Таблица.Партия,
| Таблица.Приоритет
|ПОМЕСТИТЬ Дубли
|ИЗ
| Таблица КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Номенклатура,
| Таблица.Партия,
| Таблица.Приоритет
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Таблица.НомерСтроки) > 1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
//Здесь укажем данные, нужные нам в выборке из запроса (к примеру в сообщении)
//и установим связи м.у. нашими таблицами
| Таблица.Номенклатура,
| Таблица.Партия,
| Таблица.Приоритет,
| Таблица.НомерСтроки
|ИЗ
| Дубли КАК Дубли
| ЛЕВОЕ СОЕДИНЕНИЕ Таблица КАК Таблица
| ПО Дубли.Номенклатура = Таблица.Номенклатура
| И Дубли.Партия = Таблица.Партия
| И Дубли.Приоритет = Таблица.Приоритет";
Суть. Мы сравниваем строки ТЧ Товары документа УстановкаМестХраненияНоменклатуры по полям: Номенклатура, Партия, Приоритет.
Если существуют (две и более) строки где эти поля равны друг-другу- они попадут в выборку из запроса!
Комментариев нет:
Отправить комментарий