|
v7: Запрос 1с 7.7 (соединение 2 справочников | ☑ | ||
---|---|---|---|---|
0
Oneal13
26.02.19
✎
10:21
|
Добрый день.
Сам начинал с 8-ки поэтому туплю жутко. Есть справочник книги и справочник инвентарные номера, где владелец = книга. Подскажите пожалуйста как по синтаксису в запросе соединить 2 эти таблицы по полю Спрвочник.Книги.ТекущийЭлемент = Справочник.ИнвентарныеНомера.Владелец ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы все; |Без итогов; |Заголовок = Справочник.Книги.ТекущийЭлемент; |ИнвентарныйНомер = Справочник.ИнвентарныеНомера.ТекущийЭлемент; |Владелец = Справочник.ИнвентарныеНомера.Владелец; |Группировка ТекущийЭлемент упорядочить по ТекущийЭлемент.Наименование без групп; |"//}}ЗАПРОС |
|||
1
Builder
26.02.19
✎
10:22
|
Заголовок = Справочник.Книги.ТекущийЭлемент,Справочник.ИнвентарныеНомера.Владелец;
|
|||
2
Builder
26.02.19
✎
10:26
|
Только тут вопрос что тебе надо получить то?
А то и соединения не нужно, так достаточно? "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ИнвентарныйНомер = Справочник.ИнвентарныеНомера.ТекущийЭлемент; |Владелец = Справочник.ИнвентарныеНомера.Владелец; |Группировка Владелец без групп; |"//}}ЗАПРОС |
|||
3
Oneal13
26.02.19
✎
10:30
|
(2) Мне нужны книги с инвентарными номерами и еще некоторыми реквизитами из справочника книги
|
|||
4
Oneal13
26.02.19
✎
10:32
|
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы все; |Без итогов; |Дисциплина = Справочник.Книги.Родитель; |Заголовок = Справочник.Книги.ТекущийЭлемент,Справочник.ИнвентарныеНомера.Владелец; |Автор = Справочник.Книги.Автор; |ДатаИздания = Справочник.Книги.ДатаИздания; |Количество = Справочник.Книги.Количество; |ИнвентарныйНомер = Справочник.ИнвентарныеНомера.ТекущийЭлемент; |Группировка ТекущийЭлемент упорядочить по ТекущийЭлемент.Наименование без групп; |"//}}ЗАПРОС Так будет правильно? |
|||
5
Builder
26.02.19
✎
10:32
|
(3) Ну и выбирай из справочника "ИнвентарныеНомера", группируй по Владелец, ничего соединять не надо.
|
|||
6
Oneal13
26.02.19
✎
10:34
|
(5) Т.е. брать ДатаИздания как Справочник.ИнвентарныеНомера.Владелец.ДатаИздания?
|
|||
7
Builder
26.02.19
✎
10:35
|
"//{{ЗАПРОС(Сформировать)
|Заголовок = Справочник.ИнвентарныеНомера.Владелец; |ИнвентарныйНомер = Справочник.ИнвентарныеНомера.ТекущийЭлемент; |Группировка ТекущийЭлемент; |"//}}ЗАПРОС Дальше обходишь группировку. Книга = Запрос.Заголовок; Автор = Книга.Автор; и т.д. Группы в группировке - Дисциплина |
|||
8
Builder
26.02.19
✎
10:37
|
|Группировка Заголовок;
|
|||
9
Builder
26.02.19
✎
10:38
|
Вот это все можно выкинуть, ты не документы выбираешь.
|Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы все; |Без итогов; |
|||
10
Провинциальный 1сник
26.02.19
✎
10:39
|
(0) Если начинал с восьмерки - сразу бери прямые запросы и 1с++. Иначе тяжко будет мозги уродовать черными запросами.
|
|||
11
Oneal13
26.02.19
✎
10:52
|
(10) Ваще все небекрень)
|
|||
12
Oneal13
26.02.19
✎
10:52
|
(7) Почему то инвентарные выводит, а владельца нет
|
|||
13
Builder
26.02.19
✎
10:53
|
(12) Запрос скинь что получилось.
|
|||
14
Oneal13
26.02.19
✎
11:00
|
(13) Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Дисциплина = Справочник.Книги.Родитель; |Заголовок = Справочник.Книги.ТекущийЭлемент,Справочник.ИнвентарныеНомера.Владелец; |Автор = Справочник.Книги.Автор; |ДатаИздания = Справочник.Книги.ДатаИздания; |Количество = Справочник.Книги.Количество; |ИнвентарныйНомер = Справочник.ИнвентарныеНомера.ТекущийЭлемент; |Группировка Заголовок; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка() = 1 Цикл // Заполнение полей Сформировать Таб.ВывестиСекцию("Сформировать"); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
|||
15
Oneal13
26.02.19
✎
11:00
|
(13) Не очень понял где обход делать
|
|||
16
Builder
26.02.19
✎
11:03
|
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Заголовок = Справочник.ИнвентарныеНомера.Владелец; |ИнвентарныйНомер = Справочник.ИнвентарныеНомера.ТекущийЭлемент; |Группировка Заголовок; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка() = 1 Цикл // Заполнение полей Сформировать Книга = Запрос.Заголовок; Автор = Книга.Автор; и т.д.... Таб.ВывестиСекцию("Сформировать"); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
|||
17
Builder
26.02.19
✎
11:05
|
Пока Запрос.Группировка() = 1 Цикл
// Заполнение полей Сформировать Книга = Запрос.Заголовок; Если Книга.ЭтоГруппа()=1 Тогда // Это дисциплина Иначе Автор = Книга.Автор; КонецЕсли; и т.д.... Таб.ВывестиСекцию("Сформировать"); КонецЦикла; |
|||
18
Oneal13
26.02.19
✎
11:17
|
Не показывает Владельца. Хотя справочник Инв ном подчинен спраочнику книга
Книга |
|||
19
Builder
26.02.19
✎
11:25
|
(18) Где не показывает? Так показывает?
Книга = Запрос.Заголовок; Сообщить("Книга "+Книга); |
|||
20
Builder
26.02.19
✎
11:30
|
А инвентарные номера нужны? Тогда еще одну группировку надо.
|Заголовок = Справочник.ИнвентарныеНомера.Владелец; |ИнвентарныйНомер = Справочник.ИнвентарныеНомера.ТекущийЭлемент; |Группировка ТекущийЭлемент; |Группировка ИнвентарныйНомер; |
|||
21
Builder
26.02.19
✎
11:30
|
|Заголовок = Справочник.ИнвентарныеНомера.Владелец;
|ИнвентарныйНомер = Справочник.ИнвентарныеНомера.ТекущийЭлемент; |Группировка Заголовок; |Группировка ИнвентарныйНомер; |
|||
22
Oneal13
26.02.19
✎
11:36
|
(19) Так в служебных показывает
Но в таблиице отчета нет колонки заголовок |
|||
23
Oneal13
26.02.19
✎
11:37
|
||||
24
Oneal13
26.02.19
✎
11:38
|
||||
25
Mikeware
26.02.19
✎
11:38
|
(22) ну так выводи ее в отчет..
|
|||
26
Oneal13
26.02.19
✎
12:11
|
(25) https://radikal.ru/lfp/b.radikal.ru/b09/1902/4c/8aee07066580.png/htm Что сюда написать не догоню
|
|||
27
Builder
26.02.19
✎
12:24
|
Книга
Тип - "Выражение" |
|||
28
Kigo_Kigo
26.02.19
✎
12:25
|
(26) Запрос.ЗначениеУпорядочивания(2)
|
|||
29
Oneal13
26.02.19
✎
12:55
|
(28) Так двоит данные
|
|||
30
Builder
26.02.19
✎
13:02
|
(29) Таблица видит переменные формы.
Пиши туда прям так - Книга или например Книга.Автор |
|||
31
Kigo_Kigo
26.02.19
✎
13:06
|
(29) Правильно двоит, потому что надо запилить 2 цикла и выводить разные строчки
Пока Запрос.ЗначениеУпорядочивания(1) Цикл Таб.ВывестиСтроку("Строка_1"); Пока Запрос.ЗначениеУпорядочивания(2) Цикл Таб.ВывестиСтроку("Строка_2"); КонецЦикла; КонецЦикла; |
|||
32
Kigo_Kigo
26.02.19
✎
13:11
|
Да и вообще запрос конечно круто, но вся задача решается 8 строками кода и перебором 2-х справочников
|
|||
33
Oneal13
26.02.19
✎
14:33
|
(32) Возьмешься?
|
|||
34
Kigo_Kigo
26.02.19
✎
14:46
|
Книга = СоздатьОбъект("Справочник.Книги");
ИнвНомер = СроздатьОбъект("Справочник.ИнвентарныеНомера"); Таб = СоздатьОбъект("Таблица"); Таб.ИспользоватьТаблицу("Таблица"); Книга.ВыбратьЭлементы(); Пока Книга.ПолучитьЭлемент() = 1 Цикл Таб.ВывестиСтроку("Строка_1");//тут выводим книгу ИнвНомер.ИспользоватьВладельца(Книга.ТекущийЭлемент()); Пока ИнвНомера.ПолучитьЭлемент() = 1 Цикл Таб.ВывестиСтроку("Строка_1");//тут выводим инвномера КонецЦикла; КонецЦикла; Таб.Показать(); |
|||
35
Oneal13
26.02.19
✎
15:32
|
Спасибо большое всем, все получилось!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |