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

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

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

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

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

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

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