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

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

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

      
           //Для Каждого ТекущаяСтрока Из СсылкаНаОбъект.Продукция Цикл
        Область = Макет.ПолучитьОбласть("Строка");
        Область.Параметры.Заполнить(Выборка);
        Область.Параметры.МатериалНаименование = СокрЛП(Выборка.Номенклатура.НаименованиеПолное) +ПредставлениеСерий(Выборка); //ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам);
        Область.Параметры.Коэффициент = Выборка.Коэффициент;
        Если ЗначениеЗаполнено(Выборка.КоличествоМест) тогда
            Область.Параметры.КолКоробок  = ?(Выборка.Количество-Выборка.КоличествоМест*Выборка.ЕдиницаИзмеренияМестКоэффициент=0, Выборка.КоличествоМест,Выборка.КоличествоМест+1);
        Конецесли;
          ТабДокумент.Вывести(Область);
    //КонецЦикла;        
            
    Область = Макет.ПолучитьОбласть("Подвал");                                                                      
    ТабДокумент.Вывести(Область);
    Область = Макет.ПолучитьОбласть("ПолосаВнизуТаб");
    ТабДокумент.Вывести(Область);
    
    ТабДокумент.РазмерСтраницы ="A4";
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДокумент.АвтоМасштаб = Истина;
    
// Возврат ТабДокумент;

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

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

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

      
       //    Для Каждого ТекущаяСтрока Из Выборка.Продукция Цикл
        Область = Макет.ПолучитьОбласть("Строка");
        Область.Параметры.Заполнить(Выборка);
        Область.Параметры.МатериалНаименование = СокрЛП(Выборка.Номенклатура.НаименованиеПолное) +ПредставлениеСерий(Выборка); //ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаПоСтрокам);
        Область.Параметры.Коэффициент = Выборка.Коэффициент;
        Если ЗначениеЗаполнено(Выборка.КоличествоМест) тогда
            Область.Параметры.КолКоробок  = ?(Выборка.Количество-Выборка.КоличествоМест*Выборка.ЕдиницаИзмеренияМестКоэффициент=0, Выборка.КоличествоМест,Выборка.КоличествоМест+1);
        Конецесли;
          ТабДокумент.Вывести(Область);
    //КонецЦикла;    
            
    Область = Макет.ПолучитьОбласть("Подвал");                                                                      
    ТабДокумент.Вывести(Область);
    Область = Макет.ПолучитьОбласть("ПолосаВнизуТаб");
    ТабДокумент.Вывести(Область);
    
    ТабДокумент.РазмерСтраницы ="A4";
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДокумент.АвтоМасштаб = Истина;
    
КонецЕсли;
КонецЦикла;

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

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


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

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



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

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

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

А принцип такой: в запрос добавляешь секцию Итоги по АрбитражИСтабильность

Вывод такой:

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

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

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

    КонецЦикла;
23 catena
 
22.08.18
10:47
(17)Нет, не ждешь. Ты результат функции никому не присваиваешь

Функция ОсновныеДействияФормыВыполнить(Кнопка) Экспорт            
ЭтотОбъект.ПечатьМ11();    
КонецФункции

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