Привет, всем, создаю печатную форму, что бы разбить количество нужных мне собранных документов в выборке по месяцам, создаю макет с параметрами, вывожу нужную информацию, но не понимаю как считать месяца, подскажите пожалуйста, как допустим добавить количество и определить текущий месяц и предыдущий месяц в параметре <Месяц1>
По теме из базы знаний
- Быстрое создание печатных форм на основании отсканированного документа.
- Шаблон внешней печатной формы в управляемом приложении. Пример создания печатной формы.
- Создание внешней печатной формы в формате документа Word
- Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3
- Вебинар PrintWizard: Удобное создание печатных форм и централизованное управление в едином конструкторе для 1С 8.3
Найденные решения
Если лепить из этого что можно примерно так
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьМакета.Параметры.Месяц1 = Формат(ТекущаяДата()),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц2 = Формат(ДобавитьМесяц(ТекущаяДата(),-1),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц3 = Формат(ДобавитьМесяц(ТекущаяДата(),-2),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц4 = Формат(ДобавитьМесяц(ТекущаяДата(),-3),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц5 = Формат(ДобавитьМесяц(ТекущаяДата(),-4),"ДФ='MMMM yyyy'");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("КонецПериода",ДобавитьМесяц(ТекущаяДата(),-6));
Результат=Запрос.Выполнить().Выбрать();
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Тип");
ТЗ.Колонки.Добавить("Количество");
Пока Результат.Следующий() Цикл
Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
НС = ТЗ.Добавить();
НС.Тип = ТипЗнч(Результат.Ссылка);
НС.Количество = 1;
КонецЕсли;
КонецЦикла
ТЗ.Свернуть("Тип","Количество");
Для каждого Строка Из ТЗ Цикл
ОбластьМакета.Параметры.Заполнить(Строка);
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
я сделал вот так, между периодами, пришлось добавить поле дата конца.
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("КонецПериода",ТекущаяДата()-6);
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ТабДок.Вывести(ОбластьМакета);
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("КонецПериода",ТекущаяДата()-6);
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ТабДок.Вывести(ОбластьМакета);
(22)
Что у тебя выдает?
Код |
---|
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("КонецПериода",ТекущаяДата()-6);
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ТабДок.Вывести(ОбластьМакета); Показать полностью |
Что у тебя выдает?
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|ГДЕ
| ЭлектронныйДокументВходящий.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";
Запрос.УстановитьПараметр("НачалоПериода",Месяц(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода",Месяц(ТекущаяДата()-6));
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ОбластьМакета.параметры.ТекущийМесяц=Результат.Дата;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабДок;
КонецФункции
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|ГДЕ
| ЭлектронныйДокументВходящий.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";
Запрос.УстановитьПараметр("НачалоПериода",Месяц(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода",Месяц(ТекущаяДата()-6));
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ОбластьМакета.параметры.ТекущийМесяц=Результат.Дата;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабДок;
КонецФункции
Тогда уж можно в принципе так сделать%
a= Месяц(ТекущаяДата();
b = a-6;
Если b<0 тогда
с = 12-b;
иначе
c = b
конецЕсли;
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("НачалоПериода",Дата("1"+c+Год(ТекущаяДата())-1));
a= Месяц(ТекущаяДата();
b = a-6;
Если b<0 тогда
с = 12-b;
иначе
c = b
конецЕсли;
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("НачалоПериода",Дата("1"+c+Год(ТекущаяДата())-1));
&НаКлиенте
Процедура НайтиДокумент(Команда)
ПоискДокумента();
КонецПроцедуры
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЭлектронныйДокументВходящий.Ссылка) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка
| ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
| ПО ВложенныйЗапрос.Ссылка.Ссылка = ЭлектронныйДокументВходящий.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка
|ИТОГИ
| СУММА(Количество)
|ПО
| ОБЩИЕ";
//Запрос.УстановитьПараметр("НачалоПериода",Месяц(ТекущаяДата()));
//Запрос.УстановитьПараметр("КонецПериода",Месяц(ТекущаяДата()-6));
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ОбластьМакета.Параметры.Количество=Результат.Количество;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабДок;
КонецФункции
Процедура НайтиДокумент(Команда)
ПоискДокумента();
КонецПроцедуры
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЭлектронныйДокументВходящий.Ссылка) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка
| ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
| ПО ВложенныйЗапрос.Ссылка.Ссылка = ЭлектронныйДокументВходящий.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка
|ИТОГИ
| СУММА(Количество)
|ПО
| ОБЩИЕ";
//Запрос.УстановитьПараметр("НачалоПериода",Месяц(ТекущаяДата()));
//Запрос.УстановитьПараметр("КонецПериода",Месяц(ТекущаяДата()-6));
Результат=Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбластьМакета.Параметры.Тип=Результат.Ссылка;
ОбластьМакета.Параметры.Количество=Результат.Количество;
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабДок;
КонецФункции
(41)
Вот это что у тебя выдает?
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";
ПоказатьВот это что у тебя выдает?
Если лепить из этого что можно примерно так
&НаСервере
Функция ПоискДокумента()
//Получить Макет
ЭтотОбъект=РеквизитФормыВзначение("Объект");
Макет=ЭтотОбъект.ПолучитьМакет("Макет");
ТабДок=Новый ТабличныйДокумент;
ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьМакета.Параметры.Месяц1 = Формат(ТекущаяДата()),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц2 = Формат(ДобавитьМесяц(ТекущаяДата(),-1),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц3 = Формат(ДобавитьМесяц(ТекущаяДата(),-2),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц4 = Формат(ДобавитьМесяц(ТекущаяДата(),-3),"ДФ='MMMM yyyy'");
ОбластьМакета.Параметры.Месяц5 = Формат(ДобавитьМесяц(ТекущаяДата(),-4),"ДФ='MMMM yyyy'");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=Макет.ПолучитьОбласть("Данные");
ТабДок.Вывести(ОбластьМакета);
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектронныйДокументВходящий.Ссылка КАК Ссылка,
| ЭлектронныйДокументВходящий.Дата КАК Дата
|ИЗ
| Документ.ЭлектронныйДокументВходящий КАК ЭлектронныйДокументВходящий
|
|СГРУППИРОВАТЬ ПО
| ЭлектронныйДокументВходящий.Дата,
| ЭлектронныйДокументВходящий.Ссылка";
Запрос.УстановитьПараметр("НачалоПериода",ТекущаяДата());
Запрос.УстановитьПараметр("КонецПериода",ДобавитьМесяц(ТекущаяДата(),-6));
Результат=Запрос.Выполнить().Выбрать();
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Тип");
ТЗ.Колонки.Добавить("Количество");
Пока Результат.Следующий() Цикл
Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
НС = ТЗ.Добавить();
НС.Тип = ТипЗнч(Результат.Ссылка);
НС.Количество = 1;
КонецЕсли;
КонецЦикла
ТЗ.Свернуть("Тип","Количество");
Для каждого Строка Из ТЗ Цикл
ОбластьМакета.Параметры.Заполнить(Строка);
ТабДок.Вывести(ОбластьМакета);
КонецЦикла;
Показать
(46) Если не менять запрос, то можно воспользоваться ИначеЕсли. Будет что-то вроде
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Тип");
ТЗ.Колонки.Добавить("Количество");
ТЗ.Колонки.Добавить("Количество1");
Пока Результат.Следующий() Цикл
Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
НС = ТЗ.Добавить();
НС.Тип = ТипЗнч(Результат.Ссылка);
НС.Количество = 1;
ИначеЕсли НачалоМесяца(Результат.Дата) = НачалоМесяца(ДобавитьМесяц(ТекущаяДата(),-1) Тогда
НС = ТЗ.Добавить();
НС.Тип = ТипЗнч(Результат.Ссылка);
НС.Количество1 = 1;
КонецЕсли;
КонецЦикла
ТЗ.Свернуть("Тип","Количество,Количество1");
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Тип");
ТЗ.Колонки.Добавить("Количество");
ТЗ.Колонки.Добавить("Количество1");
Пока Результат.Следующий() Цикл
Если НачалоМесяца(Результат.Дата) = НачалоМесяца(ТекущаяДата()) Тогда
НС = ТЗ.Добавить();
НС.Тип = ТипЗнч(Результат.Ссылка);
НС.Количество = 1;
ИначеЕсли НачалоМесяца(Результат.Дата) = НачалоМесяца(ДобавитьМесяц(ТекущаяДата(),-1) Тогда
НС = ТЗ.Добавить();
НС.Тип = ТипЗнч(Результат.Ссылка);
НС.Количество1 = 1;
КонецЕсли;
КонецЦикла
ТЗ.Свернуть("Тип","Количество,Количество1");
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЭлектронныйДокументВходящийДокументыОснования.Ссылка) КАК всего,
| ВложенныйЗапрос.Ссылка КАК типдокумента,
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата КАК Дата
|ИЗ
| (ВЫБРАТЬ
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка КАК Ссылка
| ИЗ
| Документ.ЭлектронныйДокументВходящий.ДокументыОснования КАК ЭлектронныйДокументВходящийДокументыОснования) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйДокументВходящий.ДокументыОснования КАК ЭлектронныйДокументВходящийДокументыОснования
| ПО ВложенныйЗапрос.Ссылка.ДокументыОснования.Ссылка = ЭлектронныйДокументВходящийДокументыОснования.ДокументОснование
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка,
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата";
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЭлектронныйДокументВходящийДокументыОснования.Ссылка) КАК всего,
| ВложенныйЗапрос.Ссылка КАК типдокумента,
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата КАК Дата
|ИЗ
| (ВЫБРАТЬ
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка КАК Ссылка
| ИЗ
| Документ.ЭлектронныйДокументВходящий.ДокументыОснования КАК ЭлектронныйДокументВходящийДокументыОснования) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронныйДокументВходящий.ДокументыОснования КАК ЭлектронныйДокументВходящийДокументыОснования
| ПО ВложенныйЗапрос.Ссылка.ДокументыОснования.Ссылка = ЭлектронныйДокументВходящийДокументыОснования.ДокументОснование
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка,
| ЭлектронныйДокументВходящийДокументыОснования.Ссылка.Дата";
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот