|
v7: Поиск одинаковых значений реквизита у элементов справочника | ☑ | ||
---|---|---|---|---|
0
kupec
25.06.21
✎
14:37
|
Добрый день. Можно ли как то выстроить запрос, что бы он выдал все элементы справочника с совпадающими значениями конкретно заданными реквизита. Например реквизит ПорядковыйНомер, элементов в справочнике 10. Соответственно значения реквизита для элементов должны быть от 1 до 10. Но в реале имеем следующее 1,2,3,4,4,6,7,8,9,10. Результатом вывода запроса будет 2 элемента справочника со значением реквизита равным 4
|
|||
1
acanta
25.06.21
✎
14:41
|
База дбф или sql?
|
|||
2
Mikeware
25.06.21
✎
14:53
|
прямым запросом - запросто
|
|||
3
Mikeware
25.06.21
✎
14:54
|
кривым запросом - вываливай все в ТЗ, и сворачивай.
|
|||
4
ДенисЧ
25.06.21
✎
14:58
|
рекв = СПравочник.МойСправочник.Реквизит;
элем = Справочник.МойСправочник.ТекущийЭлемент; функция колич = Счётчик(); группировака рекв; группировка элем; Вроде так в клюшках пишется.... |
|||
5
uno-group
25.06.21
✎
15:02
|
//*******************************************
// Процедура генерации запроса Сформировать. // Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |ТекущийЭлемент = Справочник.ТМЦ.ТекущийЭлемент; |ШтрихКод = Справочник.ТМЦ.ШтрихКод; |Функция Счётчик = Счётчик(); |Группировка ШтрихКод; |Группировка ТекущийЭлемент без групп; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл Если Запрос.Счётчик=1 Тогда Продолжить; КонецЕсли; // Заполнение полей ШтрихКод Таб.ВывестиСекцию("ШтрихКод"); Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей ТекущийЭлемент Таб.ВывестиСекцию("ТекущийЭлемент"); КонецЦикла; КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры не совсем в запросе вылавливает дубли но работает |
|||
6
ДенисЧ
25.06.21
✎
15:09
|
(5) а я что в (4) написал?
Кстати, если мне эклер не изменяет, недубли можно прямо в запросе отсечь... |
|||
7
kupec
25.06.21
✎
15:11
|
База ДБФ
|
|||
8
kupec
25.06.21
✎
15:11
|
Спасибо за информацию. Буду пробовать
|
|||
9
kupec
25.06.21
✎
15:13
|
(5) если я правильно понимаю, то запрос на выходе получает полный перечень всех элементов. Я думал, может быть есть какой то вариант, где на выходе как раз таки можно получить именно список дублирующихся элементов
|
|||
10
acanta
25.06.21
✎
15:14
|
Условие (запрос.колич>1), функция запрса должна называться по другому.
|
|||
11
acanta
25.06.21
✎
15:16
|
И вычисления в запросе с использованием функций через запр., а произвольные вычисления через глобальную функцию присвоить(кому,что)
|
|||
12
kupec
25.06.21
✎
15:35
|
Что то я перемудрил....думал что условия одни, а оказались другие
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Дубли ШК) |ШтрихКод = Справочник.ШтрихКоды.Код; |Товар = Справочник.ШтрихКоды.Владелец; |Функция Итого = Счётчик(); |Условие (Запрос.Итого>1); |Группировка ШтрихКод; |Группировка Товар без групп; |"//}}ЗАПРОС ; Вот что сделал, но не работает. Данные не выходят. Запрос выполняется без ошибок |
|||
13
Glacial
25.06.21
✎
15:46
|
Может если запрос не работает, и база DBF, сделаешь по старинке: цикл, поиск дублирующих элементов, их собрать в ТЗ, и потом вывод куда надо?
|
|||
14
kupec
25.06.21
✎
15:54
|
(13) такая мысль была сразу...более 70000 элементов....долго однако
|
|||
15
acanta
25.06.21
✎
15:57
|
А без группировки по товару что?
|
|||
16
acanta
25.06.21
✎
15:58
|
И условие последней строкой например..
|
|||
17
HawkEye
25.06.21
✎
16:42
|
(0) ВыбратьЭлементыПоРеквизиту()
|
|||
18
Ёпрст
25.06.21
✎
16:49
|
(0)На вот, развлекайся
|
|||
19
acanta
25.06.21
✎
16:52
|
Пробелы в образовании:(
|
|||
20
Arbuz
25.06.21
✎
17:51
|
(18) Почему больше 2? Больше одного же.
|
|||
21
Ёпрст
25.06.21
✎
17:54
|
(20) ну, равно там забыл добавить
|
|||
22
kupec
28.06.21
✎
16:26
|
(18) справочник подчиненный
|
|||
23
Arbuz
28.06.21
✎
17:16
|
(22) Продолжайте наблюдение!
|
|||
24
Ёпрст
28.06.21
✎
18:03
|
(22) и че ?
|
|||
25
Ёпрст
28.06.21
✎
18:04
|
тебе дали готовый код, нужно только замечание в (20) учесть
|
|||
26
Ёпрст
28.06.21
✎
18:05
|
Если ты его за 3 дня не смог проверить..ну..тут только
Вон из профессии! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |