|
пустой результат компоновки | ☑ | ||
---|---|---|---|---|
0
Папай
30.12.21
✎
11:37
|
всем привет.не знал как тему назвать.написал что было
Есть не большой код.вроде все правильно да не все.Результат возвращает ноль,однако консоль показывает что запрос отрабатывает и возвращает одну позицию номенклатуры. подскажите где ошибка: КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; СхемаСКД = ПолучитьМакет("ВыгрузкаНоменклатуры"); НовоеПоле = КомпоновщикСхемы.Настройки.ПараметрыДанных.Элементы.Найти("Узел"); НовоеПоле.Использование = Истина; НовоеПоле.Значение = ПланОбмена; НовоеПоле = КомпоновщикСхемы.Настройки.ПараметрыДанных.Элементы.Найти("НеОтборИзменениями"); НовоеПоле.Использование = Истина; НовоеПоле.Значение = НЕ ВыгружатьИзменения; //ОсновнаяГруппировка = КомпоновщикСхемы.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); //ОсновнаяГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаСКД, КомпоновщикСхемы.Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); Результат = Новый ТаблицаЗначений;//////тут ноль строк!а должна быть одна судя по консоли запросов ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); Для каждого СтрокаТовараДляОбработки Из Результат Цикл |
|||
1
acht
30.12.21
✎
12:00
|
В только что созданной таблице всегда ноль строк. Ты уверен, что написал комментарий в нужном месте?
|
|||
2
acht
30.12.21
✎
12:02
|
(0)
> НовоеПоле = КомпоновщикСхемы.Настройки.ПараметрыДанных.Элементы.Найти("НеОтборИзменениями"); > НовоеПоле.Использование = Истина; > НовоеПоле.Значение = НЕ ВыгружатьИзменения; Отличный пример вреда использования отрицания в идентификаторах. |
|||
3
Жан Пердежон
30.12.21
✎
12:04
|
Результат = Новый ТаблицаЗначений; // тут всегда и должно быть 0 строк
|
|||
4
acht
30.12.21
✎
12:04
|
(0) Пустой результат также может получится из-за некоректных настроек компоновки со сбитыми полями выбора и структурой вывода. Проверь, что поля действительно выбираются, а не только являются доступными.
|
|||
5
Kassern
30.12.21
✎
12:06
|
(0) "однако консоль показывает что запрос отрабатывает", а если не через консоль, а через обычный СКД отчет сформировать, так же 1 строчка будет?
|
|||
6
Папай
30.12.21
✎
12:16
|
перефразирую
Для каждого СтрокаТовараДляОбработки Из Результат Цикл результат ничего не содержит |
|||
7
Папай
30.12.21
✎
12:34
|
(5)а какая разница
|
|||
8
Папай
30.12.21
✎
12:42
|
я не совсем понимю НовоеПоле куда попадает
|
|||
9
Kassern
30.12.21
✎
12:43
|
(7) были такие ситуации, когда отчет скд был пустой, а этот же запрос в консоли заполнялся. Виной были ФО
|
|||
10
Папай
30.12.21
✎
12:47
|
(9)что за ФО.сейчас попробую отдельно скд запустить
|
|||
11
acht
30.12.21
✎
12:48
|
(7) Разница в том, что СКД смотрит на твой запрос из консоли запросов, выбрасывает его и строит свой с учетом настроек, прав и т.п. Используй консоль компоновки и все увидишь.
|
|||
12
Kassern
30.12.21
✎
12:53
|
(10) функциональные опции
|
|||
13
Папай
30.12.21
✎
13:20
|
(11)сделал отчет на том же скд .отчет показал одну позицию номенклатуры.
|
|||
14
Папай
30.12.21
✎
14:22
|
загрузил в консоль компоновки.почему то ругается Использование циклических параметров запрещено "Узел"
|
|||
15
Папай
30.12.21
✎
14:23
|
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка, Номенклатура.Родитель КАК Родитель, Номенклатура.АЧ_ВыгружатьМорфей КАК ВыгружатьМорфей, Номенклатура.АЧ_ВыгружатьIddy КАК ВыгружатьИдди {ВЫБРАТЬ Ссылка.*, Родитель.*, ВыгружатьМорфей, ВыгружатьИдди} ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ (Номенклатура.Ссылка В (ВЫБРАТЬ НоменклатураИзменения.Ссылка ИЗ Справочник.Номенклатура.Изменения КАК НоменклатураИзменения ГДЕ НоменклатураИзменения.Узел = &Узел) ИЛИ &НеОтборИзменениями) {ГДЕ Номенклатура.Ссылка.*, Номенклатура.Родитель.*, Номенклатура.АЧ_ВыгружатьМорфей КАК ВыгружатьИдди, Номенклатура.АЧ_ВыгружатьIddy КАК ВыгружатьМорфей} |
|||
16
Папай
30.12.21
✎
14:28
|
может можно проще запрос сделать?
|
|||
17
Kassern
30.12.21
✎
14:30
|
(16) "ГДЕ
(Номенклатура.Ссылка В (ВЫБРАТЬ НоменклатураИзменения.Ссылка ИЗ Справочник.Номенклатура.Изменения КАК НоменклатураИзменения" зачем вы так с номенклатурой?) |
|||
18
Папай
30.12.21
✎
14:32
|
может просто изменения выбирать ?
|
|||
19
Ryzeman
30.12.21
✎
14:39
|
(18) Вынеси во временную
ВЫБРАТЬ РАЗЛИЧНЫЕ НоменклатураИзменения.Ссылка КАК Ссылка ПОМЕСТИТЬ ТаблицаИзменений ИЗ Справочник.Номенклатура.Изменения КАК НоменклатураИзменения ГДЕ НоменклатураИзменения.Узел = &Узел А в условии будет ГДЕ (Номенклатура.Ссылка В (ВЫБРАТЬ ТаблицаИзменений.Ссылка ИЗ СТаблицаИзменений КАК ТаблицаИзменений) ИЛИ &НеОтборИзменениями) |
|||
20
Kassern
30.12.21
✎
14:41
|
(19) можно и связями соединить таблицу номенклатуры с временной таблицей изменений. В условии Выбор Когда &ТолькоИзменеия Тогда ЕстьNull(ВременнаяТаблица.Номенклатура,"")<>"" Иначе Истина Конец
|
|||
21
Kassern
30.12.21
✎
14:41
|
ну или что-то в этом роде
|
|||
22
Папай
30.12.21
✎
15:45
|
максимально упростил запрос выгрузил в xml загрузил в консоль системы компоновки все равно пишет Использование циклических параметров запрещено "Узел"
|
|||
23
Папай
30.12.21
✎
15:46
|
где тут цикличность то
ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура.Изменения КАК Номенклатура ГДЕ Номенклатура.Узел = &Узел |
|||
24
ДенисЧ
30.12.21
✎
15:52
|
(23) Параметр переменуй.
|
|||
25
Папай
30.12.21
✎
16:09
|
(24)спасибо!
|
|||
26
Папай
30.12.21
✎
16:52
|
я так думаю надо схему копать.запрос отрабатывает,выводит номенклатуру через консоль запросов, а консоль компоновки не выводит номенклатуру
|
|||
27
Папай
30.12.21
✎
16:53
|
в консоли системы компоновки на закладке табличный документ пусто
|
|||
28
Папай
30.12.21
✎
17:08
|
подскажите вот этот кусок что означает?
НовоеПоле = КомпоновщикСхемы.Настройки.ПараметрыДанных.Элементы.Найти("УзелОбмена"); НовоеПоле.Использование = Истина; НовоеПоле.Значение = ПланОбмена; |
|||
29
Папай
30.12.21
✎
17:13
|
и как он работает в (0)
|
|||
30
shuhard
30.12.21
✎
17:14
|
(28) мопед не твой ?
|
|||
31
Папай
30.12.21
✎
17:17
|
не мой.разбираюсь.пока не удачно.НовоеПоле куда оно идет потом? в процедуре оно нигде больше не встречается
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; СхемаСКД = ПолучитьМакет("ВыгрузкаНоменклатуры"); НовоеПоле = КомпоновщикСхемы.Настройки.ПараметрыДанных.Элементы.Найти("Узел"); НовоеПоле.Использование = Истина; НовоеПоле.Значение = ПланОбмена; НовоеПоле = КомпоновщикСхемы.Настройки.ПараметрыДанных.Элементы.Найти("НеОтборИзменениями"); НовоеПоле.Использование = Истина; НовоеПоле.Значение = НЕ ВыгружатьИзменения; //ОсновнаяГруппировка = КомпоновщикСхемы.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); //ОсновнаяГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаСКД, КомпоновщикСхемы.Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); Результат = Новый ТаблицаЗначений;//////тут ноль строк!а должна быть одна судя по консоли запросов ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); Для каждого СтрокаТовараДляОбработки Из Результат Цикл |
|||
32
Kassern
30.12.21
✎
17:19
|
||||
33
Папай
30.12.21
✎
18:33
|
я непонимаю как ПараметрДанных будет связан с моей СКД?
Есть параметр, предопределенное при открытии отчета каждый раз. Как его правильно указать в СКД? Можно делать так: Код 1C v 8.х Процедура ПриОткрытии() //........................ ПараметрДанных= КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Товар"); ПараметрДанных.Значение = Справочники.Номенклатура.НайтиПоНаименованию("Гвозди"); ПараметрДанных.Использование=Истина; //........................................... КонецПроцедуры |
|||
34
Папай
30.12.21
✎
18:33
|
(32)это оттуда
|
|||
35
Папай
30.12.21
✎
18:41
|
как можно это разобрать в отладчике чтобы посмотреть параметр установлен или нет?
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаСКД, КомпоновщикСхемы.Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); такое ощущение что это не срабатывает: НовоеПоле = КомпоновщикСхемы.Настройки.ПараметрыДанных.Элементы.Найти("УзелОбмена"); НовоеПоле.Использование = Истина; НовоеПоле.Значение = ПланОбмена; |
|||
36
Папай
30.12.21
✎
19:10
|
взял отсюда код http://1cmanager.ru/projects/all/wiki/Система_компоновки_данных_(СКД)
ПараметрДанных = КомпоновщикСхемы.Настройки.ПараметрыДанных.Элементы.Найти("УзелОбмена"); ПараметрДанных.Использование = Истина; ПараметрДанных.Значение = ПланОбмена; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаНоменклатуры, КомпоновщикСхемы.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТЗНоменклатура = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТЗНоменклатура); ПроцессорВывода.Вывести(ПроцессорКомпоновки); все равно пусто в ТЗ хоть тресни |
|||
37
Папай
30.12.21
✎
19:24
|
подскажите как проверить на наличие прааметра что не пустая ссылка передается в параметр?через отладчик?по этой строке
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаСКД, КомпоновщикСхемы.Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); |
|||
38
Kassern
30.12.21
✎
23:05
|
(33) У вас есть настройки "КомпоновщикСхемы.Настройки" куда вы заполняете параметры отбора, а далее, вот сюда КомпоновщикМакета.Выполнить() вы пихаете заполненные настройки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |