Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УНФ: в арендованной базе отчет пустой, в файловой копии работает

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

        ОбластьФилиал = Макет.ПолучитьОбласть("Филиал|Начало");
        ОбластьФилиал.Параметры.Заполнить(ВыборкаСтруктурнаяЕдиницаПродажи);
        ТабДок.Вывести(ОбластьФилиал);
        
        Для Каждого текСтрока Из отчет.СписокИПорядокПрайсов Цикл
            ОбластьФилиал = Макет.ПолучитьОбласть("Филиал|Прайс");
            ТабДок.Присоединить(ОбластьФилиал);
        КонецЦикла;
    
        ВыборкаМенеджер = ВыборкаСтруктурнаяЕдиницаПродажи.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
        Пока ВыборкаМенеджер.Следующий() Цикл
            // Вставить обработку выборки ВыборкаМенеджер

            ОбластьМенеджер = Макет.ПолучитьОбласть("Менеджер|Начало");
            ОбластьМенеджер.Параметры.Заполнить(ВыборкаМенеджер);
            ТабДок.Вывести(ОбластьМенеджер);
            
            Для Каждого текСтрока из отчет.СписокИПорядокПрайсов Цикл
                ОбластьМенеджер = Макет.ПолучитьОбласть("Менеджер|Прайс");
                ТабДок.Присоединить(ОбластьМенеджер);
            КонецЦикла;
    
            ВыборкаИНН = ВыборкаМенеджер.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаИНН.Следующий() Цикл
                
                ВыборкаЮЛ = ВыборкаИНН.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                Пока ВыборкаЮЛ.Следующий() Цикл
                    
                    ВыборкаДетальныеЗаписи = ВыборкаЮЛ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                        // Вставить обработку выборки ВыборкаДетальныеЗаписи

                        ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Начало");
                        ОбластьСтрока.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
                        ТабДок.Вывести(ОбластьСтрока);
                        
                        Для Каждого текСтрока Из отчет.СписокИПорядокПрайсов Цикл
                            ОбластьСтрока = Макет.ПолучитьОбласть("Строка|Прайс");
                            ОбластьСтрока.Параметры.Сумма = ПолучитьСумму(текСтрока.Прайс, ВыборкаДетальныеЗаписи.Номенклатура, ВыборкаДетальныеЗаписи.Количество);
                            ТабДок.Присоединить(ОбластьСтрока);
                        КонецЦикла;
                    КонецЦикла;
                КонецЦикла;                
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    
    Возврат ТабДок;

КонецФункции

Функция ПолучитьСумму(прайс, номенклатура, количество)
    //получаем цену по прайсу, умножаем на количество и возвращаем результат

    сумма = 0;
        
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        |            &ДатаПо,
        |            Актуальность = ИСТИНА
        |                И 
        | Номенклатура = &Номенклатура
        |                И ВидЦен = &Прайс) КАК ЦеныНоменклатурыСрезПоследних";
    
    Запрос.УстановитьПараметр("ДатаПо", КонецДня(отчет.ДатаПо));
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("Прайс", Прайс.ВидыЦен[0].ВидЦен);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        сумма = Количество * ВыборкаДетальныеЗаписи.Цена;
    КонецЦикла;
    
    Возврат сумма;

КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
    ТабДок = СформироватьНаСервере();
    //ТабДок = Новый ТабличныйДокумент;

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Показать();
КонецПроцедуры
   katerinaUniv
 
2 - 18.04.19 - 16:32
В чем может быть ошибка?
   Darych
 
3 - 18.04.19 - 16:33
кэш повантузь попробуй
   katerinaUniv
 
4 - 18.04.19 - 16:38
(3) по отладчику в той базе смотрю, в процедуру на сервере которая даже не проваливается
   katerinaUniv
 
5 - 18.04.19 - 16:38
Говорит о чем-нибудь?
   ДенисЧ
 
6 - 18.04.19 - 16:40
(4) Просто на сервере арендованном отладка на сервере не включена
   katerinaUniv
 
7 - 18.04.19 - 16:41
Тогда почему на файловой работает серверная процедура полностью, весь запрос собирается, а на серверной результат запроса пустой?
   Darych
 
8 - 18.04.19 - 16:42
к серверу рдп?
   katerinaUniv
 
9 - 18.04.19 - 16:44
(8)Да. Но у меня запускается не полноценное рдп, а только приложение
   katerinaUniv
 
10 - 18.04.19 - 16:44
Это может быть что-то из серии асинхронных и синхронных вызовов процедур?
   katerinaUniv
 
11 - 18.04.19 - 16:44
Я не читала об этом еще
   Жан Пердежон
 
12 - 18.04.19 - 16:48
может данных в базе нет?

ПолучитьСумму() - &НаСервере не хватает, да и вообще запросы в цикле - зло.
   Жан Пердежон
 
13 - 18.04.19 - 16:51
Кстати, почему не СКД? Попробуй обработку сделать, а не отчет.
   RomanYS
 
14 - 18.04.19 - 16:55
Сильно):
        |ГДЕ
        |   ....
        |    И ЗаказПокупателяДополнительныеРеквизиты.Свойство = &Свойство
        |    И ФактОплатыЗаказов.СуммаОплаты + ФактОплатыЗаказов.СуммаАванса - ФактОплатыЗаказов.Сумма >= 0
   katerinaUniv
 
15 - 18.04.19 - 17:20
(14) как лучше тогда такое писать? Тремя вложенными запросами?
   katerinaUniv
 
16 - 18.04.19 - 17:20
почему запрос не отрабатывает на сервере?
   katerinaUniv
 
17 - 18.04.19 - 17:24
через консоль он не пустой, через обработку - пустой на серверной базе
   Darych
 
18 - 18.04.19 - 17:24
см (3).. на сервере попинай... а так еще может быть: у тебя говноотчет - твой комп привык, а серв еще нет
   Rovan
 
19 - 18.04.19 - 17:25
Вангую: дело в
ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Менеджер по продажам")
   Rovan
 
20 - 18.04.19 - 17:29
(+19) тоже создаю отчеты под УНФ и делаю там обычно так:
= ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту(
   "Заголовок", "Тут что-то написано");
   kzot
 
21 - 18.04.19 - 17:36
(20) Может лучше Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.Свойство.Имя = "Здесь значение строки для разработчиков.");
хотя хз про УНФ, должно быть.
   katerinaUniv
 
22 - 18.04.19 - 17:46
(18)во-первых, на скорую руку
во-вторых, можно сказать, что именно не так и как сделать лучше. А то получается бессмысленное "фу". Я пришла сюда за помощью, а не за тем, чтобы кто-то написал, что может лучше. Не думаю, что с утробы матери тут сразу все все умели...
   katerinaUniv
 
23 - 18.04.19 - 17:48
(20) Дело не в этом параметре. Убрала запрос и в отчете пусто. Показывает только шапку.
   hhhh
 
24 - 18.04.19 - 17:49
(22) намекаете на что, не называть говноотчет говноотчетом?
   katerinaUniv
 
25 - 18.04.19 - 17:52
(24) Говорить, как бы сделали иначе. Я же не прихожу к буху и глядя в красноту на оборотке не говорю, что там говно, а потом не ухожу домой) Показываю, что не так и как не делать
   kzot
 
26 - 18.04.19 - 17:56
(0) может клиент потолще, ПолучитьОбласть Доступность:  Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
   katerinaUniv
 
27 - 18.04.19 - 17:57
(26)да нет, все-таки в отборе дело...
   katerinaUniv
 
28 - 18.04.19 - 17:58
Просто когда убирала - убрала во внешнем, а проверила тот, что в расширении
   Darych
 
29 - 18.04.19 - 17:59
(25) поверьте.. я так делал.. Меня это не красит, но
   Darych
 
30 - 18.04.19 - 17:59
а было где слово про расширение?
 
 Рекламное место пустует
   kzot
 
31 - 18.04.19 - 17:59
(27) Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.Свойство.Имя = "Здесь значение строки для разработчиков.");

вроде лучше будет )
   katerinaUniv
 
32 - 18.04.19 - 18:01
(31) ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.Свойство.Имя = "Здесь значение строки для разработчиков." - такая конструкция вернет тот реквизит?
   katerinaUniv
 
33 - 18.04.19 - 18:08
kzot, спасибо огромное. Для меня необычно, что только такая конструкция работает, но видимо так оно теперь работает))) Не так часто занимаюсь разработкой. Да и отчет нужен на один-два раза. Система мотивации меняется. Спасибо еще раз огромное, удачного вечера!!!


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