Имя: Пароль:
1C
1С v8
Не выводит отчет
,
0 rapashocker
 
20.03.19
15:08
Привет всем,написал отчет где по периоду буду выводить количество ссылок на документ и сами типы документов в макет, реальных данных у меня нет, но он совсем не выводит месяца,выдает пустой отчет фактически
Помогите пожалуйста понять в чем проблема, не исключено что в логике написания.
&НаКлиенте
Процедура НайтиДокумент(Команда)
ПоискДокумента().Показать();
КонецПроцедуры


&НаСервере
Функция ПоискДокумента() Экспорт
//Получить Макет
ТабДок=Новый ТабличныйДокумент;
ОтчетОбъект=РеквизитФормыВзначение("Объект");
Макет=ОтчетОбъект.ПолучитьМакет("Макет");
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьМакета.Параметры.ТекущийМесяц =  Формат(ТекущаяДата(),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц1 =  Формат(ДобавитьМесяц(ТекущаяДата(),-1),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц2 =  Формат(ДобавитьМесяц(ТекущаяДата(),-2),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц3 =  Формат(ДобавитьМесяц(ТекущаяДата(),-3),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц4 =  Формат(ДобавитьМесяц(ТекущаяДата(),-4),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц5 =  Формат(ДобавитьМесяц(ТекущаяДата(),-5),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц6 =  Формат(ДобавитьМесяц(ТекущаяДата(),-6),"ДФ='MMMM yyyy'");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |    ЭлектронныйДокументВходящийДокументыОснования.Ссылка КАК типдокумента,
             |    ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата КАК Дата,
             |    ВложенныйЗапрос.Ссылка.ДокументыОснования.(
             |        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДокументОснование) КАК СсылкаДокументОснование
             |    ) КАК Количество
             |ИЗ
             |    Документ.ЭлектронныйДокументВходящий.ДокументыОснования КАК ЭлектронныйДокументВходящийДокументыОснования,
             |    (ВЫБРАТЬ
             |        ЭлектронныйДокументВходящийДокументыОснования.Ссылка КАК Ссылка
             |    ИЗ
             |        Документ.ЭлектронныйДокументВходящий.ДокументыОснования КАК ЭлектронныйДокументВходящийДокументыОснования) КАК ВложенныйЗапрос
             |ГДЕ
             |    ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода";




Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода",ДобавитьМесяц(ТекущаяДата(),-6));

Результат=Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
    Если ОбластьМакета.Параметры.ТекущийМесяц = НачалоМесяца(ТекущаяДата()) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество = Результат.Количество;
        ИначеЕсли ОбластьМакета.Параметры.Месяц1 = ДобавитьМесяц(ТекущаяДата(),-1) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество1 = Результат.Количество;
        ИначеЕсли  ОбластьМакета.Параметры.Месяц2 = ДобавитьМесяц(ТекущаяДата(),-2) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество2 = Результат.Количество;
        ИначеЕсли ОбластьМакета.Параметры.Месяц3 = ДобавитьМесяц(ТекущаяДата(),-3) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество3 = Результат.Количество;
        ИначеЕсли ОбластьМакета.Параметры.Месяц4 = ДобавитьМесяц(ТекущаяДата(),-4) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество4 = Результат.Количество;
        ИначеЕсли ОбластьМакета.Параметры.Месяц5 = ДобавитьМесяц(ТекущаяДата(),-5) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество5 = Результат.Количество;
        ИначеЕсли ОбластьМакета.Параметры.Месяц6 = ДобавитьМесяц(ТекущаяДата(),-6) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество6 = Результат.Количество;
        ТабДок.Вывести(ОбластьМакета);
    КонецЕсли;
КонецЦикла;
Возврат ТабДок;
ТабДок.ТолькоПросмотр=Истина;
КонецФункции
1 rapashocker
 
20.03.19
15:08
Вывести надо за текущий месяц и предыдущие 6
2 hhhh
 
20.03.19
15:11
(1) ну началопериода и конецпериода перепутал
3 rapashocker
 
20.03.19
15:19
А по точнее? Сначала конец выбирать а потом начало ?  или как это
4 Greeen
 
20.03.19
15:20
(3), холодно
место причины начинается на букву З (в совокупности с подсказкой в (2))
5 rapashocker
 
20.03.19
15:38
ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода";

В этой строке? сначало начало потом конец?
6 rapashocker
 
20.03.19
15:39
ой сначала конец потом начало?
7 sqr4
 
20.03.19
15:40
Запрос.УстановитьПараметр("КонецПериода",ДобавитьМесяц(ТекущаяДата(),-6));
8 sqr4
 
20.03.19
15:41
(3) как раз в точку, так пойдет меня начало с концом местами и будет тебе счастье)
9 rapashocker
 
20.03.19
15:46
Странно как это все повлияет на вывод данных))
10 pasha_d
 
20.03.19
15:52
Может стОит местами поменять?

Возврат ТабДок;
ТабДок.ТолькоПросмотр=Истина;
11 hhhh
 
20.03.19
15:53
(9) сейчас в вашем периоде нет ни одного дня. Поэтому отчет пустой. Если вы добавите туда дни, то может что-то появится, то есть на вывод данных точно повлияет.
12 sqr4
 
20.03.19
15:57
(9) ну да 01.06.2019 - начало периода.
Потом такой херак
01.06.2019 - 6мес - Конец периода
Ага, механизм то рабочий, ошибок при компиляции не обнаружено.
13 rapashocker
 
20.03.19
16:05
То есть переписать цикл придется?
Или добавить еще месяца в запрос?
14 rapashocker
 
20.03.19
16:07
местами я поменял и ничего не изменилось
15 sqr4
 
20.03.19
16:13
(14) 01.06.2019 - дата начала
01.06.2019 - 6 мес = 01.01.2016 - Дата Окончания
С такими параметрами ничего не отберет.

ОбластьМакета.Параметры.ТекущийМесяц - тут тип Строка
НачалоМесяца(ТекущаяДата())  - тут тип дата
Они никогда не будут равны
Правильность запросов и прочей херни не проверял
16 sqr4
 
20.03.19
16:13
Садись кол, вообще не готов, даже книжку не открывал.
17 rapashocker
 
20.03.19
16:28
Я новичок)) Не подскажите как это правильнее всего реализовать? Я так понимаю нужны еще параметры))
18 rapashocker
 
20.03.19
16:28
или более правильно их ввести
19 hhhh
 
20.03.19
16:34
(18) единственно правильное - это когда начало периода меньше конца периода.

А по жизни, не в 1с, ты тоже так периоды фигачишь? Начало периода, например, 31 марта, а конец периода 1 марта? Или всё-таки начало периода 1 марта ставишь?
20 sqr4
 
20.03.19
16:34
(17) задача не по вам, объективно не хватает знаний.
самое простое это заменить условие цикла на подобное
НачалоМесяца(ДобавитьМесяц(ТекущаяДата(),-1)) = НачалоМесяца(Результат.Дата)

Глянул запрос, а там просто мрак, используйте консоль запросов - прям в гугле наберите и скачайте обработку и добейтесь правильного запроса
21 rapashocker
 
20.03.19
16:44
А как мне даты по параметрам раскидать, когда результат пишется в (Результат.Дата)
22 hhhh
 
20.03.19
16:47
(21) вот здесь ты даты раскидываешь по параметрам

Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода",ДобавитьМесяц(ТекущаяДата(),-6));

раскидай по-другому
23 rapashocker
 
20.03.19
16:48
я про параметры макета
24 rapashocker
 
20.03.19
16:48
как результат вывести в параметр макета
25 sqr4
 
20.03.19
16:48
26 sqr4
 
20.03.19
16:48
(24) Выводить также, условие меняется
27 rapashocker
 
21.03.19
18:45
сделал, как вы вчера сказали,выдает ошибку Преобразование в тип дата не может быть выполнено, проверил точкой останова что у меня в моих параметрах, вроде все верно, код теперь такой, код параметров и цикла
Запрос.УстановитьПараметр("КонецПериода",НачалоДня(НачалоМесяца(ТекущаяДата())));
Запрос.УстановитьПараметр("НачалоПериода",НачалоДня(НачалоМесяца(ДобавитьМесяц(ТекущаяДата(),-30))));
Результат=Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
    Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество = Результат.Количество;
        ИначеЕсли НачалоМесяца(Результат.Дата) = ДобавитьМесяц(ТекущаяДата(),-1) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество1 = Результат.Количество;
        ИначеЕсли  НачалоМесяца(Результат.Дата) = ДобавитьМесяц(ТекущаяДата(),-2) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество2 = Результат.Количество;
        ИначеЕсли НачалоМесяца(Результат.Дата) = ДобавитьМесяц(ТекущаяДата(),-3) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество3 = Результат.Количество;
        ИначеЕсли НачалоМесяца(Результат.Дата) = ДобавитьМесяц(ТекущаяДата(),-4) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество4 = Результат.Количество;
        ИначеЕсли НачалоМесяца(Результат.Дата) = ДобавитьМесяц(ТекущаяДата(),-5) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество5 = Результат.Количество;
        ИначеЕсли НачалоМесяца(Результат.Дата) = ДобавитьМесяц(ТекущаяДата(),-6) Тогда
        областьмакета.Параметры.Тип = Результат.типдокумента;
        областьмакета.Параметры.Количество6 = Результат.Количество;
        ТабДок.Вывести(ОбластьМакета);
    КонецЕсли;
КонецЦикла;
Возврат ТабДок;
КонецФункции
28 rapashocker
 
21.03.19
18:46
Ошибка приходится на данную строку  Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
29 rapashocker
 
21.03.19
18:46
думаю и на последующие такого же типа так же будут ругаться
30 hhhh
 
21.03.19
19:06
(28) посмотрите отладчиком, точку останова поставить на этой строчке и посмотреть Результат.Дата.

А запрос такой же как указан здесь?
31 kuka66
 
21.03.19
19:57
ничего не понятно
32 rapashocker
 
22.03.19
10:28
запрос другой
33 rapashocker
 
22.03.19
10:29
результат.дата тип Null
34 rapashocker
 
22.03.19
10:34
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СчетФактураПолученныйДокументыОснования.Ссылка) КАК количество,
             |    СчетФактураПолученныйДокументыОснования.Ссылка.Дата КАК Дата,
             |    СчетФактураПолученныйДокументыОснования.Ссылка КАК типдокумента
             |ИЗ
             |    Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования
             |ГДЕ
             |    СчетФактураПолученныйДокументыОснования.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
             |
             |СГРУППИРОВАТЬ ПО
             |    СчетФактураПолученныйДокументыОснования.Ссылка.Дата,
             |    СчетФактураПолученныйДокументыОснования.Ссылка
             |ИТОГИ
             |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ количество)
             |ПО
             |    ОБЩИЕ
             |АВТОУПОРЯДОЧИВАНИЕ";
35 rapashocker
 
22.03.19
10:34
запрос вот такой
36 rapashocker
 
22.03.19
10:34
запрос рабочий и параметры указаны верно, выдают то что надо, проверял точкой останова
37 sqr4
 
22.03.19
10:36
Итоги отключи
38 rapashocker
 
22.03.19
10:41
отключи и итоги и автоупорядочивание, ошибки нет но и отчета нет))
39 rapashocker
 
22.03.19
10:43
а Результат.Дата равен -30 месяцам, просто данные в ИБ есть только за этот промежуток, то бишь 14\07\2017
40 rapashocker
 
22.03.19
10:43
на сервере еще дата очень говняная
41 rapashocker
 
22.03.19
10:43
она по Американскому стилю идет, и считает с 12 дня вообще, но думаю это мелочи
42 sqr4
 
22.03.19
10:49
я ничего не понял)
43 rapashocker
 
22.03.19
10:50
Результат.Дата сейчас дает значение 01.07.2017
44 rapashocker
 
22.03.19
10:54
как я подозреваю то это не то, так как НачалоМесяца(ТекущаяДата()) = 01.09.2019 тому самому значению что мне нужно
45 edem911
 
22.03.19
10:56
(0)ох и намудрил... Тебе нужно вывести количество электронных документов по месяцам?
46 rapashocker
 
22.03.19
10:57
ну в теории да и соответственно их ссылки в поле тип документов
47 rapashocker
 
22.03.19
10:59
запрос с счетами фактуры, делаю из-за того, что ЭДО нет в моей базе, а предоставить доступ к реальным данным никто не хочет, приходится так писать
48 edem911
 
22.03.19
11:03
(46) Вот вывод чисто запросом, а вообще сделай через отчет через скд и все будет красиво

ВЫБРАТЬ
    ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
    МЕСЯЦ(ЭлектронныйДокументВходящий.Дата) КАК Месяц,
    1 КАК Количество
ПОМЕСТИТЬ ЭД
ИЗ
    Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
ГДЕ
    ЭлектронныйДокументВходящий.Дата МЕЖДУ &Начало И &Конец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЭД.Месяц КАК Месяц,
    ЭД.Количество КАК Количество,
    ЭД.Ссылка КАК Ссылка
ИЗ
    ЭД КАК ЭД
ИТОГИ
    СУММА(Количество)
ПО
    Месяц
49 rapashocker
 
22.03.19
11:14
яерез скд против все сильно
50 rapashocker
 
22.03.19
11:14
через*
51 edem911
 
22.03.19
11:17
(49) Ну тогда формируй табдок ручками, логику понял?
52 rapashocker
 
22.03.19
13:29
логику понял, но я сделал по своему
53 rapashocker
 
22.03.19
13:41
и представьте себе где ошибка))
54 rapashocker
 
22.03.19
13:41
мой запрос вывелся
55 rapashocker
 
22.03.19
13:41
ошибка в том что я область не правильно обозначил
56 rapashocker
 
22.03.19
13:41
область с данными
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.