Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Помогите с запросом

Помогите с запросом
Я
   GF
 
22.08.18 - 04:44
В обработке есть форма.На ней только выбирается период и вызыввается печать даблдокумента (НачаоПериода и КонецПериода реквизиты обработки)
Функция ОсновныеДействияФормыВыполнить(Кнопка) Экспорт            
ЭтотОбъект.ПечатьМ11();    
КонецФункции

Далее надо обойти все табличные части документов за выбранный в форме период и те строки где есть арбитраж вывести в макет арбитраж, чтобы распечатать и так же точно со стабильностью. То есть должны открываться два макета.

    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ОтчетПроизводстваЗаСменуПродукция.НаправлениеВыпуска,
        |    ОтчетПроизводстваЗаСменуПродукция.СерияПродукции КАК СерияНоменклатуры,
        |    ОтчетПроизводстваЗаСменуПродукция.Количество КАК Количество,
        |    ОтчетПроизводстваЗаСменуПродукция.Ссылка.Дата КАК Дата,
        |    ОтчетПроизводстваЗаСменуПродукция.Ссылка.Номер КАК Номер,
        |    ОтчетПроизводстваЗаСменуПродукция.Ссылка.Ссылка КАК Ссылка,
        |    ОтчетПроизводстваЗаСменуПродукция.Ссылка.Организация КАК Организация,
        |    ОтчетПроизводстваЗаСменуПродукция.Ссылка.Склад КАК Склад,
        |    ОтчетПроизводстваЗаСменуПродукция.Ссылка.Подразделение КАК Подразделение,
        |    ВЫБОР
        |        КОГДА ОтчетПроизводстваЗаСменуПродукция.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Арбитраж)
        |                ИЛИ ОтчетПроизводстваЗаСменуПродукция.СтатьяЗатратПолучатель = &СтатьяАрбитраж
        |            ТОГДА 1
        |        КОГДА ОтчетПроизводстваЗаСменуПродукция.СтатьяЗатратПолучатель = &СтатьяСтабильность
        |                ИЛИ ОтчетПроизводстваЗаСменуПродукция.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Стабильность)
        |            ТОГДА 2
        |        ИНАЧЕ 0
        |    КОНЕЦ КАК АрбитражИСтабильность,
        |    ОтчетПроизводстваЗаСменуПродукция.Номенклатура КАК Номенклатура,
        |    ОтчетПроизводстваЗаСменуПродукция.ХарактеристикаНоменклатуры,
        |    ОтчетПроизводстваЗаСменуПродукция.КоличествоМест,
        |    ОтчетПроизводстваЗаСменуПродукция.ЕдиницаИзмерения,
        |    ОтчетПроизводстваЗаСменуПродукция.Коэффициент,
        |    ОтчетПроизводстваЗаСменуПродукция.ЕдиницаИзмеренияМест.Коэффициент
        |ИЗ
        |    Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция
        |ГДЕ
        |    ОтчетПроизводстваЗаСменуПродукция.Ссылка.Проведен = ИСТИНА
        |    И (ОтчетПроизводстваЗаСменуПродукция.НаправлениеВыпуска = ЗНАЧЕНИЕ(Перечисление.НаправленияВыпуска.НаСклад)
        |            ИЛИ ОтчетПроизводстваЗаСменуПродукция.НаправлениеВыпуска = ЗНАЧЕНИЕ(Перечисление.НаправленияВыпуска.НаЗатраты))
        |    И ОтчетПроизводстваЗаСменуПродукция.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
        //|    И ОтчетПроизводстваЗаСменуПродукция.Ссылка.Ссылка = &Ссылка

    
    Запрос.УстановитьПараметр("КонецПериода",ЭтотОбъект.КонецПериода);
    Запрос.УстановитьПараметр("НачалоПериода", ЭтотОбъект.НачалоПериода);    
    Запрос.УстановитьПараметр("СтатьяАрбитраж", Справочники.СтатьяАрбитраж.Указатель);
    Запрос.УстановитьПараметр("СтатьяСтабильность", Справочники.СтатьяСтабильность.Указатель);
        
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        Если Выборка.АрбитражИСтабильность = 0 Тогда
            Продолжить;
        ИначеЕсли Выборка.АрбитражИСтабильность = 1 Тогда
            
            ТабДокумент = Новый ТабличныйДокумент;
            ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_М11";
            
            // Вывод заголовка

            Макет = ПолучитьМакет("Арбитраж");    
            ПервыйДокумент = Истина;
            Если Не ПервыйДокумент Тогда
                ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            КонецЕсли;    
            ПервыйДокумент = Ложь;
            НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
            
    //заполним шапку

    Область = Макет.ПолучитьОбласть("Шапка");
    Область.Параметры.Заголовок     = "ТРЕБОВАНИЕ-НАКЛАДНАЯ № " + Выборка.Номер;
    Область.Параметры.ДатаСоставления = Выборка.Дата;    
    Область.Параметры.разрешил = "Разрешил:" + символы.ПС + "Начальник ОКК";
    Область.Параметры.Склад = Выборка.Склад;
    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата);
    Область.Параметры.ПредставлениеОрганизации   = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбОрганизации);
    Область.Параметры.КодОКПО                    = СведенияОбОрганизации.КодПоОКПО;    
    Область.Параметры.ПредставлениеПодразделения = "Склад Арбитраж";
    //Область.Параметры.ВидДеятельности = "Арбитраж";

    ТабДокумент.Вывести(Область);

      
           //Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Продукция Цикл

        Область = Макет.ПолучитьОбласть("Строка");
        Область.Параметры.Заполнить(Выборка);
        Область.Параметры.МатериалНаименование = СокрЛП(Выборка.Номенклатура.НаименованиеПолное) +ПредставлениеСерий(Выборка);//ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам);

        Область.Параметры.Коэффициент = Выборка.Коэффициент;
        Если ЗначениеЗаполнено(Выборка.КоличествоМест) тогда
            Область.Параметры.КолКоробок  = ?(Выборка.Количество-Выборка.КоличествоМест*Выборка.ЕдиницаИзмеренияМестКоэффициент=0, Выборка.КоличествоМест,Выборка.КоличествоМест+1);
        Конецесли;
          ТабДокумент.Вывести(Область);
    //КонецЦикла;        

            
    Область = Макет.ПолучитьОбласть("Подвал");                                                                      
    ТабДокумент.Вывести(Область);
    Область = Макет.ПолучитьОбласть("ПолосаВнизуТаб");
    ТабДокумент.Вывести(Область);
    
    ТабДокумент.РазмерСтраницы ="A4";
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; 
    ТабДокумент.АвтоМасштаб = Истина;
    
// Возврат ТабДокумент;


    
ИначеЕсли Выборка.АрбитражИСтабильность = 2 Тогда

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_М11";
    
    //Вывод заголовка

    Макет = ПолучитьМакет("Стабильность");    
    ПервыйДокумент = Истина;
    Если Не ПервыйДокумент Тогда
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;    
    ПервыйДокумент = Ложь;
    НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
    
    //заполним шапку

    Область = Макет.ПолучитьОбласть("Шапка");
    Область.Параметры.Заголовок     = "ТРЕБОВАНИЕ-НАКЛАДНАЯ № " + Выборка.Номер;
    Область.Параметры.ДатаСоставления = Выборка.Дата;    
    Область.Параметры.разрешил = "Разрешил:" + символы.ПС + "Начальник ОКК";
    Область.Параметры.Склад = Выборка.Склад;
    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата);
    Область.Параметры.ПредставлениеОрганизации   = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбОрганизации);
    Область.Параметры.КодОКПО                    = СведенияОбОрганизации.КодПоОКПО;    
    Область.Параметры.ПредставлениеПодразделения = "Склад Стабильность";
    //Область.Параметры.ВидДеятельности = "Стабильность";


    ТабДокумент.Вывести(Область);
    

      
      //    Для Каждого ТекущаяСтрока Из Выборка.Продукция Цикл

        Область = Макет.ПолучитьОбласть("Строка");
        Область.Параметры.Заполнить(Выборка);
        Область.Параметры.МатериалНаименование = СокрЛП(Выборка.Номенклатура.НаименованиеПолное) +ПредставлениеСерий(Выборка);//ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам);

        Область.Параметры.Коэффициент = Выборка.Коэффициент;
        Если ЗначениеЗаполнено(Выборка.КоличествоМест) тогда
            Область.Параметры.КолКоробок  = ?(Выборка.Количество-Выборка.КоличествоМест*Выборка.ЕдиницаИзмеренияМестКоэффициент=0, Выборка.КоличествоМест,Выборка.КоличествоМест+1);
        Конецесли;
          ТабДокумент.Вывести(Область);
    //КонецЦикла;    

            
    Область = Макет.ПолучитьОбласть("Подвал");                                                                      
    ТабДокумент.Вывести(Область);
    Область = Макет.ПолучитьОбласть("ПолосаВнизуТаб");
    ТабДокумент.Вывести(Область);
    
    ТабДокумент.РазмерСтраницы ="A4";
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; 
    ТабДокумент.АвтоМасштаб = Истина;
    
КонецЕсли;
КонецЦикла;

    Возврат ТабДокумент;    
КонецФункции;

После выбора периода нажимаю кнопку "выполнить" и ничего не происходит. Подскажите где ошибка.
Почему макеты не заполняются!?
 
 
   shadow_sw
 
1 - 22.08.18 - 06:53
запрос данные то показывает? а то может у тебя все в 0
   lesorubka
 
2 - 22.08.18 - 07:05
а команда ТабДокумент.Показать() есть?
   GF
 
3 - 22.08.18 - 07:05
Да,показывает, в консоли. Да и отладчиком тоже показывает, что все находит.
   GF
 
4 - 22.08.18 - 07:06
(2) Поподробнее можно
   мистер игрек
 
5 - 22.08.18 - 07:07
Отладчик что показывает?
   GF
 
6 - 22.08.18 - 07:07
(2) Не попадалась мне что-то табдоокумен.показать() нив  одной печатной форме
   shadow_sw
 
7 - 22.08.18 - 07:07
(2) точно!
   GF
 
8 - 22.08.18 - 07:09
(7) Подскажите,плиз, в каком блин месте надо это воткнуть.
   shadow_sw
 
9 - 22.08.18 - 07:11
вместо возврат Табдокумент
   GF
 
10 - 22.08.18 - 07:16
(9) {ВнешняяОбработка.М11.МодульОбъекта(233)}: Обращение к процедуре объекта как к функции (Показать)
    Возврат ТабДокумент.Показать();


У меня же функция Печать()
 
 Рекламное место пустует
   shadow_sw
 
11 - 22.08.18 - 07:20
куда возвращает функция то?
   GF
 
12 - 22.08.18 - 07:22
(11) эм... самое начало моего обращения собственно
В обработке есть форма.На ней только выбирается период и вызыввается печать табдокумента (НачаоПериода и КонецПериода реквизиты обработки)
Функция ОсновныеДействияФормыВыполнить(Кнопка) Экспорт            
ЭтотОбъект.Печать();    
КонецФункции

Остальное это функция в модуле формы экспортная Печать() соответственно
   GF
 
13 - 22.08.18 - 07:24
(11) тьфу ты в модуле объекта конечно же Печчать()
   МимохожийОднако
 
14 - 22.08.18 - 07:26
Дойди отладчиком до конца. Т.е. до момента заполнения табличного документа. ИМХО, до туда еще не добирался. И смотри как заполняется. Гадать на форуме-всё кофе кончится.
   GF
 
15 - 22.08.18 - 07:40
(14)
Пока выборка.Следующий() Цикл 
      
           //Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Продукция Цикл

        Область = Макет.ПолучитьОбласть("Строка");
        Область.Параметры.Заполнить(Выборка);
        Область.Параметры.МатериалНаименование = СокрЛП(Выборка.НоменклатураНаименованиеПолное) +ПредставлениеСерий(Выборка);//ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам);

        Область.Параметры.Коэффициент = Выборка.Коэффициент;
        Если ЗначениеЗаполнено(Выборка.КоличествоМест) тогда
            Область.Параметры.КолКоробок  = ?(Выборка.Количество-Выборка.КоличествоМест*Выборка.ЕдиницаИзмеренияМестКоэффициент=0, Выборка.КоличествоМест,Выборка.КоличествоМест+1);
        Конецесли;
          ТабДокумент.Вывести(Область);
КонецЦикла;



Вот сюда в цикл почему-то совсем не заходит
   catena
 
16 - 22.08.18 - 08:02
(12)А зачем Печать() - это функция, если ты из нее никакого возврата не ждешь?
   GF
 
17 - 22.08.18 - 08:17
(16) я жду из нее заполненный табдокумент так-то
   dmt
 
18 - 22.08.18 - 08:25
(16) это внешняя печатная форма похоже
(15) отладчиком остановись на строчке "Выборка = Результат.Выбрать();", вычисли выражение Результат.Выгрузить() и посмотри, в ТЗ строки вообще есть?
   dmt
 
19 - 22.08.18 - 08:28
и вывод неправильно организован, если ты хочешь 2 таб.документа получить
   GF
 
20 - 22.08.18 - 09:03
(19)     
    Выборка = ВыборкаДокументов.Выбрать(); 
//строки 


Пока выборка.Следующий() Цикл 

В выборкеДокументов есть данные, а вот в выборке уже нет
   GF
 
21 - 22.08.18 - 09:04
(19) Подскажи,пожалуйста, как правильно организовать вывод
   dmt
 
22 - 22.08.18 - 09:15
(21) выложил бы отчет, чтоб время не тратить
А принцип такой: в запрос добавляешь секцию Итоги по АрбитражИСтабильность

Вывод такой:

    Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока Выборка.Следующий() Цикл

        // вывод шапки д/каждого АрбитражИСтабильность

        
        ВыборкаДетальные = Выборка.Выбрать(ОбходРезультатаЗапроса.Прямой);
        Пока ВыборкаДетальные.Следующий() Цикл
        
            // вывод строки

        
        КонецЦикла;

    КонецЦикла;
   catena
 
23 - 22.08.18 - 10:47
(17)Нет, не ждешь. Ты результат функции никому не присваиваешь
Функция ОсновныеДействияФормыВыполнить(Кнопка) Экспорт            
ЭтотОбъект.ПечатьМ11();    
КонецФункции

(18)Ну так, даже с внешними надо понимать, что делает код, а не писать строчки в случайном порядке в надежде на "Войну и мир" на выходе.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует