|   |   | 
| 
 | пустой результат компоновки | ☑ | ||
|---|---|---|---|---|
| 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) У вас есть настройки "КомпоновщикСхемы.Настройки" куда вы заполняете параметры отбора, а далее, вот сюда КомпоновщикМакета.Выполнить() вы пихаете заполненные настройки     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |