|
Объект метаданных в запросе | ☑ | ||
---|---|---|---|---|
0
AlexeyVM
01.09.17
✎
06:32
|
Добрый день, подскажите пожалуйста
как мне правильно добавить в запрос объект метаданных справочники, чтобы запрос выполнялся по всем справочникам. Пишу так Для каждого Справочник из Метаданные.Справочники Цикл
При отладке в значении "Справочник" записано название справочника (например "Номенклатура"), а как я понял надо, чтобы было записано например - "Справочник.Номенклатура". Пробовал через Метаданные.НайтиПоПолномуИмени(Справочник);
но не находит ничего, подскажите, как правильно получить объект метаданных для запроса. |
|||
1
Zmich
01.09.17
✎
06:43
|
(0). Не очень понятно, в чем проблема.
"ВЫБРАТЬ | Таблица.Код |ИЗ | Справочник." + Справочник + " КАК Таблица"; |
|||
2
AlexeyVM
01.09.17
✎
06:47
|
А ну да, точно. Только сделал по-другому (т.к. надо было значения всех справочников)
ШаблонЗапроса = "
|
|||
3
Fram
01.09.17
✎
06:50
|
(2) ну, молодец, конечно.. а практический смысл этого запроса какой?
|
|||
4
VladZ
01.09.17
✎
06:52
|
(0) Зачем тебе это?
|
|||
5
AlexeyVM
01.09.17
✎
06:53
|
(3) Да мне надо будет вывести список дублей со всех справочников, по полям указанным в правилах обмена. Работы еще много. Теперь думаю как разные реквизиты подставлять в запрос, например у одного справочника надо будет искать дубли по наименованию, у другого по ИНН. Пока не представляю, как это сделать
|
|||
6
Sserj
01.09.17
✎
06:53
|
Вообще постановка задачи какая то бредовая если честно.
Но если уж совсем не в терпеж то должно быть что-то типа такого: КоллекцияСправочников = Метаданные["Справочники"]; ТекстЗапроса = " ВЫБРАТЬ Код ИЗ Справочник." + КоллекцияСправочников[0].Имя; Для индексСправочников = 1 ПО КоллекцияСправочников.Количество() - 1 Цикл ТекстЗапроса = ТекстЗапроса + " ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Код ИЗ Справочник." + КоллекцияСправочников.Получить[индексСправочников].Имя; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; |
|||
7
AlexeyVM
01.09.17
✎
06:54
|
Приведенный запрос был только для примера, чтобы объединить все справочники
|
|||
8
VladZ
01.09.17
✎
06:55
|
(7) И какой смысл их объединять?
|
|||
9
AlexeyVM
01.09.17
✎
06:56
|
хмм, ну так-то да, наверное смысла нету. Как-то потом надо будет делать группировку по справочникам
|
|||
10
VladZ
01.09.17
✎
06:57
|
(9) А группировка зачем?
|
|||
11
AlexeyVM
01.09.17
✎
06:58
|
Вывести список
Имя справочника 1 Неуникальный код 1 Элемент1 КодЭлемента1 что-то вроде Основные средства 123 Машина Ваз 2112 000123 |
|||
12
Sserj
01.09.17
✎
07:05
|
(11) Ну вообще то это сделать тоже не трудно, если скорость работы не особо важна.
ВЫБРАТЬ '" + КоллекцияСправочников[0].Имя + "' КАК ИДСправочника Код КАК КодЭлемента ИЗ .... ОБЪЕДИНИТЬ ВСЕ '" + КоллекцияСправочников.Получить[индексСправочников].Имя + " ИЗ ..... Это все во временную таблицу индексированную по КодЭлемента ВЫБРАТЬ .... ГДЕ КодЭлемента В (ВЫБРАТЬ КодЭлемента ИЗ ВременнаяТаблица СГРУППИРОВАТЬ ПО КодЭлемента ИМЕЮИЩЕ Количество(КодЭлемента) > 1) |
|||
13
Fram
01.09.17
✎
07:12
|
(5) если для каждого справочника отдельные условия дублирования (что логично) нафига объединять все в один запрос?
|
|||
14
AlexeyVM
01.09.17
✎
07:19
|
(12) При КоллекцияСправочников.Получить[индексСправочников].Имя
Ругается: Поле объекта не обнаружено (Получить) |
|||
15
AlexeyVM
01.09.17
✎
07:21
|
Наверное там круглые скобки?
|
|||
16
Sserj
01.09.17
✎
07:35
|
(15) Да конечно круглые.
|
|||
17
VladZ
01.09.17
✎
07:39
|
(11) Идея хорошая. Только есть одно но... В конфигурации куча справочников. Какие-то нужно контролировать, какие-то не нужно. Зачем анализировать ВСЕ?
|
|||
18
AlexeyVM
01.09.17
✎
07:44
|
(17) Так попросили сделать. Я понимаю, что многие справочники и сравнивать смысла нет. Все это делается, чтобы увидеть дубли в справочниках до переноса данных и исправить их вручную
|
|||
19
АнализДанных
01.09.17
✎
08:23
|
(0) У объекта метаданных есть метод "ПолноеИмя()" (с названием могу ошибиться) он возвещает то, что тебе надо "справочник.номенклатура"
|
|||
20
AlexeyVM
01.09.17
✎
09:49
|
Хотелось бы услышать советы, как в дальнейшем выбирать по какому полю искать дубли? Думал, думал, но поскольку опыта в программировании еще мало, идеи пришли на ум не очень хорошие - 1. Писать условия для каждого справочника, какие реквизиты надо вытаскивать запросом (смотреть вручную из ПКС), 2.Вытащить их из XML правил обмена, но что с ними делать потом в обработке пока не придумал, 3(Самая бредовая). Написать подзапрос для каждого справочника по разным реквизитам. 4. Использовать мой запрос для справочников, у которых объединение по коду, а что делать с остальными...
Короче идеи у меня вообще не очень, пока ничего в голову не приходит |
|||
21
dezss
01.09.17
✎
09:53
|
(20) определить соответствие и в него запихать Имя твоего справочника и название поля для поиска дублей. Откуда заполнять - это вопрос. Либо в коде, либо откуда-то вытаскивать. Можно попробовать вытаскивать и из xml правил.
|
|||
22
Мимохожий Однако
01.09.17
✎
09:53
|
(5) Есть готовые обработки по поиску и замене дублей в УТ10.3 и УТ11 с различными отборами
|
|||
23
AlexeyVM
01.09.17
✎
09:56
|
(22)
да, я смотрел готовую обработку, там нужно самостоятельно выбрать справочник и самостоятельно выбрать поля, по которым искать дубли. А мне надо, чтобы при нажатии кнопки выводился список сразу всех справочников с дублями по полям из ПКС. Конечно, можно было ничего не писать, а пользоваться готовой по очереди по всем справочникам, но для пользователей это слишком долго. |
|||
24
AlexeyVM
01.09.17
✎
09:57
|
(21) С соответствиями еще не сталкивался, почитаю сейчас, может быть поможет.
|
|||
25
Мимохожий Однако
01.09.17
✎
09:58
|
(23) Забота о пользователях похвальна. Лишь бы твоя разработка по времени исполнения была меньше обучения пользователей. ИМХО.
|
|||
26
dezss
01.09.17
✎
10:00
|
(24) Соответствие - это просто коллекция значений типа КлючИЗначение. Только ключи там все уникальны и оно типа индексировано.
На основании его уже строишь запрос. |
|||
27
AlexeyVM
01.09.17
✎
10:01
|
(25) Ну это да, но использоваться она будет не часто (перед переходом с БГУ 1 на БГУ 2), так что впринципе даже если пол дня будет работать, на ночь буду запускать)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |