Создание печатной формы

1. LOTR 18.03.19 11:03 Сейчас в теме
Привет, всем, создаю печатную форму, что бы разбить количество нужных мне собранных документов в выборке по месяцам, создаю макет с параметрами, вывожу нужную информацию, но не понимаю как считать месяца, подскажите пожалуйста, как допустим добавить количество и определить текущий месяц и предыдущий месяц в параметре <Месяц1>
По теме из базы знаний
Найденные решения
43. popro 19.03.19 10:09 Сейчас в теме
Если лепить из этого что можно примерно так


&НаСервере 
Функция ПоискДокумента() 
//Получить Макет 
ЭтотОбъект=РеквизитФормыВзначение("Объект"); 
Макет=ЭтотОбъект.ПолучитьМакет("Макет"); 
ТабДок=Новый ТабличныйДокумент; 
ОбластьМакета=Макет.ПолучитьОбласть("Шапка"); 
ТабДок.Вывести(ОбластьМакета); 
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы"); 

ОбластьМакета.Параметры.Месяц1 =  Формат(ТекущаяДата()),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц2 =  Формат(ДобавитьМесяц(ТекущаяДата(),-1),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц3 =  Формат(ДобавитьМесяц(ТекущаяДата(),-2),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц4 =  Формат(ДобавитьМесяц(ТекущаяДата(),-3),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц5 =  Формат(ДобавитьМесяц(ТекущаяДата(),-4),"ДФ='MMMM yyyy'");

ТабДок.Вывести(ОбластьМакета); 
ОбластьМакета=Макет.ПолучитьОбласть("Данные"); 
ТабДок.Вывести(ОбластьМакета); 

Запрос=Новый Запрос; 
Запрос.Текст="ВЫБРАТЬ 
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка, 
| ЭлектронныйДокументВходящий.Дата КАК Дата 
|ИЗ 
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий 
| 
|СГРУППИРОВАТЬ ПО 
| ЭлектронныйДокументВходящий.Дата, 
| ЭлектронныйДокументВходящий.Ссылка"; 

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

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Тип");
ТЗ.Колонки.Добавить("Количество");

Пока Результат.Следующий() Цикл 
	Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
		НС = ТЗ.Добавить();
		НС.Тип = ТипЗнч(Результат.Ссылка);
		НС.Количество = 1;
	КонецЕсли;
КонецЦикла

ТЗ.Свернуть("Тип","Количество");

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


Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. user633533_encantado 11 18.03.19 11:34 Сейчас в теме
(1) В запросе по документам разбей все по месяцам функцией "МЕСЯЦ(<Дата>)", где дата - дата твоего документа.
2. LOTR 18.03.19 11:06 Сейчас в теме
Вот мой макет
Прикрепленные файлы:
3. ranis888 104 18.03.19 11:25 Сейчас в теме
Месяц(ТекущаяДата()) 
Чтобы узнать текущий месяц
4. ranis888 104 18.03.19 11:30 Сейчас в теме
Чтобы предыдущий месяц, то
Месяц(ТекущаяДата()-1) 
5. user633533_encantado 11 18.03.19 11:32 Сейчас в теме
(4) Не не катит. Выдаст один и тот же месяц, если дата не начало месяца.
11. ranis888 104 18.03.19 11:39 Сейчас в теме
(5) А месяц(1); - выдаст январь?
12. ranis888 104 18.03.19 11:42 Сейчас в теме
(5)
Код
месяц(ТекущаяДата())-1 
Показать полностью
Выдает предыдущий месяц
30. user633533_encantado 11 18.03.19 13:57 Сейчас в теме
7. LOTR 18.03.19 11:36 Сейчас в теме
я сделал вот так, между периодами, пришлось добавить поле дата конца.
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);




Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";

Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("КонецПериода",ТекущаяДата()-6);
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ТабДок.Вывести(ОбластьМакета);
13. ranis888 104 18.03.19 11:44 Сейчас в теме
(7)
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("КонецПериода",ТекущаяДата()-6);


Этим ты хочешь получить, октябрь - март?
14. LOTR 18.03.19 11:48 Сейчас в теме
(13)все 6 предыдущих месяцев от начала текущего месяца
15. ranis888 104 18.03.19 11:49 Сейчас в теме
(14) Что выдает тебе
Результат
?
16. LOTR 18.03.19 11:49 Сейчас в теме
(13)я подставил "месяц" перед ТекущаяДата());
8. LOTR 18.03.19 11:37 Сейчас в теме
написал как Текущаядата -6
9. LOTR 18.03.19 11:38 Сейчас в теме
6 циклов видимо писать, где буду считать количество и ТекущуюДату-1 и тд
10. LOTR 18.03.19 11:38 Сейчас в теме
я только чайник в этом)) как хотябы 1 цикл написать, пока не понимаю))
17. LOTR 18.03.19 11:50 Сейчас в теме
не то выдало)) выдало текущую дату)) типа 18.03.2019 и время
18. ranis888 104 18.03.19 11:50 Сейчас в теме
23. ranis888 104 18.03.19 11:54 Сейчас в теме
(17)
не то выдало)) выдало текущую дату)) типа 18.03.2019 и время


Месяц(текущаяДата()); Сделал?
19. LOTR 18.03.19 11:52 Сейчас в теме
куда? У меня считай его у самого нет))
20. ranis888 104 18.03.19 11:53 Сейчас в теме
(19) к копу, где ты работаешь
21. LOTR 18.03.19 11:53 Сейчас в теме
это удаленный сервер, не получится
22. LOTR 18.03.19 11:53 Сейчас в теме
он еще и не мой, у меня урезаны права
24. ranis888 104 18.03.19 11:54 Сейчас в теме
(22)
Код
 Запрос=Новый Запрос; 
Запрос.Текст="ВЫБРАТЬ 
|   ЭлектронныйДокументВходящий.Ссылка КАК Ссылка, 
|   ЭлектронныйДокументВходящий.Дата КАК Дата 
|ИЗ 
|   Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий 
| 
|СГРУППИРОВАТЬ ПО 
|   ЭлектронныйДокументВходящий.Дата, 
|   ЭлектронныйДокументВходящий.Ссылка"; 

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


Что у тебя выдает?
25. LOTR 18.03.19 12:00 Сейчас в теме
(24)Ничего не выдает, ни ошибок ничего, просто ничего не выводит
26. ranis888 104 18.03.19 12:19 Сейчас в теме
(25) Значит запрос смотри
27. ranis888 104 18.03.19 12:20 Сейчас в теме
А стоп, у теья же вообще отбора нет
28. LOTR 18.03.19 12:37 Сейчас в теме
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);




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



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

Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ОбластьМакета.параметры.ТекущийМесяц=Результат.Дата;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабДок;
КонецФункции
29. LOTR 18.03.19 12:37 Сейчас в теме
совершенно ничего не выдает
31. ranis888 104 18.03.19 15:52 Сейчас в теме
(29)

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


Тогда у тебя эти моменты не правильные
Попробуй для начала поставить в ручную просто даты - "01.10.2018" и "01.03.2018"
32. ranis888 104 18.03.19 15:52 Сейчас в теме
(29) Просто у тебя Месяц(ТекущаяДата()) Вернет цифру 3.
33. ranis888 104 18.03.19 15:58 Сейчас в теме
Тогда уж можно в принципе так сделать%
a= Месяц(ТекущаяДата();
b = a-6;
Если b<0 тогда
с = 12-b;
иначе
c = b
конецЕсли;
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("НачалоПериода",Дата("1"+c+Год(ТекущаяДата())-1));
34. LOTR 18.03.19 16:06 Сейчас в теме
Нет вы не поняли при нажатии на кнопку, Найти документы, ничего не выводит
37. ranis888 104 18.03.19 16:26 Сейчас в теме
(34) Откаткой умеешь пользоваться?
35. LOTR 18.03.19 16:07 Сейчас в теме
&НаКлиенте
Процедура НайтиДокумент(Команда)
ПоискДокумента();
КонецПроцедуры


&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);




Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЭлектронныйДокументВходящий.Ссылка) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка
| ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
| ПО ВложенныйЗапрос.Ссылка.Ссылка = ЭлектронныйДокументВходящий.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка
|ИТОГИ
| СУММА(Количество)
|ПО
| ОБЩИЕ";



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

Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ОбластьМакета.Параметры.Количество=Результат.Количество;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабДок;
КонецФункции
38. ranis888 104 18.03.19 16:29 Сейчас в теме
(35)
&НаКлиенте
Процедура НайтиДокумент(Команда)
ПоискДокумента();
КонецПроцедуры



ПоискДокумента().Показать();
36. LOTR 18.03.19 16:07 Сейчас в теме
39. LOTR 18.03.19 16:34 Сейчас в теме
Кстати использовал в строчке Запрос.УстановитьПараметр("КонецПериода",Добавитьмесяц(ТекущаяДата(),-6));
40. LOTR 18.03.19 16:35 Сейчас в теме
но все равно не открывает отчет
41. LOTR 18.03.19 16:35 Сейчас в теме
останова то же молчит
42. ranis888 104 19.03.19 08:08 Сейчас в теме
(41)
Запрос=Новый Запрос; 
Запрос.Текст="ВЫБРАТЬ 
|	ЭлектронныйДокументВходящий.Ссылка КАК Ссылка, 
|	ЭлектронныйДокументВходящий.Дата КАК Дата 
|ИЗ 
|	Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий 
| 
|СГРУППИРОВАТЬ ПО 
|	ЭлектронныйДокументВходящий.Дата, 
|	ЭлектронныйДокументВходящий.Ссылка"; 
Показать


Вот это что у тебя выдает?
43. popro 19.03.19 10:09 Сейчас в теме
Если лепить из этого что можно примерно так


&НаСервере 
Функция ПоискДокумента() 
//Получить Макет 
ЭтотОбъект=РеквизитФормыВзначение("Объект"); 
Макет=ЭтотОбъект.ПолучитьМакет("Макет"); 
ТабДок=Новый ТабличныйДокумент; 
ОбластьМакета=Макет.ПолучитьОбласть("Шапка"); 
ТабДок.Вывести(ОбластьМакета); 
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы"); 

ОбластьМакета.Параметры.Месяц1 =  Формат(ТекущаяДата()),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц2 =  Формат(ДобавитьМесяц(ТекущаяДата(),-1),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц3 =  Формат(ДобавитьМесяц(ТекущаяДата(),-2),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц4 =  Формат(ДобавитьМесяц(ТекущаяДата(),-3),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц5 =  Формат(ДобавитьМесяц(ТекущаяДата(),-4),"ДФ='MMMM yyyy'");

ТабДок.Вывести(ОбластьМакета); 
ОбластьМакета=Макет.ПолучитьОбласть("Данные"); 
ТабДок.Вывести(ОбластьМакета); 

Запрос=Новый Запрос; 
Запрос.Текст="ВЫБРАТЬ 
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка, 
| ЭлектронныйДокументВходящий.Дата КАК Дата 
|ИЗ 
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий 
| 
|СГРУППИРОВАТЬ ПО 
| ЭлектронныйДокументВходящий.Дата, 
| ЭлектронныйДокументВходящий.Ссылка"; 

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

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Тип");
ТЗ.Колонки.Добавить("Количество");

Пока Результат.Следующий() Цикл 
	Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
		НС = ТЗ.Добавить();
		НС.Тип = ТипЗнч(Результат.Ссылка);
		НС.Количество = 1;
	КонецЕсли;
КонецЦикла

ТЗ.Свернуть("Тип","Количество");

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


Показать
46. LOTR 19.03.19 11:24 Сейчас в теме
(43)И как расчет делать для всех месяцев, придется несколько раз Если писать?
49. popro 19.03.19 11:53 Сейчас в теме
(46) Если не менять запрос, то можно воспользоваться ИначеЕсли. Будет что-то вроде


ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Тип");
ТЗ.Колонки.Добавить("Количество");
ТЗ.Колонки.Добавить("Количество1");

Пока Результат.Следующий() Цикл
Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
НС = ТЗ.Добавить();
НС.Тип = ТипЗнч(Результат.Ссылка);
НС.Количество = 1;
ИначеЕсли НачалоМесяца(Результат.Дата) = НачалоМесяца(ДобавитьМесяц(ТекущаяДата(),-1) Тогда
НС = ТЗ.Добавить();
НС.Тип = ТипЗнч(Результат.Ссылка);
НС.Количество1 = 1;
КонецЕсли;
КонецЦикла

ТЗ.Свернуть("Тип","Количество,Количество1");
54. LOTR 19.03.19 12:37 Сейчас в теме
(49)Мне придется добавлять НС.Месяц1=ТипЗнч(Результат.дата )как я понял
44. LOTR 19.03.19 11:17 Сейчас в теме
А вместо НС.Количество = 1; я могу написать результат.всего допустим
45. LOTR 19.03.19 11:18 Сейчас в теме
ну то есть рассчитаю и впишу туда значение из запроса
47. popro 19.03.19 11:50 Сейчас в теме
(45) Да, лучше в запросе, только не забывайте что у вас в разрезе типа значений. Нужно добавить поле ТИПЗНАЧЕНИЯ(ЭлектронныйДокументВходящий.Ссылка)
48. LOTR 19.03.19 11:53 Сейчас в теме
50. LOTR 19.03.19 11:53 Сейчас в теме
а как для для всех месяцев выполнить, и что я храню в НачалоМесяца(Результат.Дата), мой запрос слегка поменялся
51. LOTR 19.03.19 11:57 Сейчас в теме
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЭлектронныйДокументВходящийДокументыОснования.Ссылка) КАК всего,
| ВложенныйЗапрос.Ссылка КАК типдокумента,
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата КАК Дата
|ИЗ
| (ВЫБРАТЬ
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка КАК Ссылка
| ИЗ
| Документ.ЭлектронныйДокументВходящий.ДокументыОснования КАК ЭлектронныйДокументВходящийДокументыОснования) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйДокументВходящий.ДокументыОснования КАК ЭлектронныйДокументВходящийДокументыОснования
| ПО ВложенныйЗапрос.Ссылка.ДокументыОснования.Ссылка = ЭлектронныйДокументВходящийДокументыОснования.ДокументОснование
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка,
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата";
52. LOTR 19.03.19 12:00 Сейчас в теме
Результат.дата, там ведь надо в параметр что то выводить
53. LOTR 19.03.19 12:31 Сейчас в теме
Еще вопрос мне надо получить количество документов которые ссылаются на другой, это новые параметры получается?
55. LOTR 19.03.19 17:33 Сейчас в теме
Можно ли Результат.Дата поменять на Результат.Месяц1 и тд
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот