Как прервать выполнение отчета программно?

1. German_Tagil 42 07.08.20 06:29 Сейчас в теме
Суть проблемы.
Из формы документа вызываю отчет.
В отчете есть признак записывать в документ или нет.
Если записывать - значит задание выполнено и можно выходить из отчета
Хотелось бы сделать это программно
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. PerlAmutor 129 07.08.20 07:07 Сейчас в теме
Что за признак такой? В какой момент решается, и кем, что признак необходимо установить? Признак является результатом отчета или его параметром?
Схема очень странная.

Можно прервать выполнение фонового задания в котором формируется отчет (если оно у вас фоновое). Если формируется с блокировкой пользовательского интерфейса, то ничего не сделать, т.к. вызов к СУБД без прерывания соединения не отменить.
alex-l19041; +1 Ответить
4. German_Tagil 42 07.08.20 07:11 Сейчас в теме
(2) Параметром
(3) это не обработка - отчет
и мне надо чтобы отчет завершился в случае записи
5. PerlAmutor 129 07.08.20 07:14 Сейчас в теме
(4) Если есть признак "записывать", зачем вообще вызывать формирование отчета?
7. German_Tagil 42 07.08.20 07:15 Сейчас в теме
(5) Отчет формирует данные которые по признаку надо записать в документ
8. PerlAmutor 129 07.08.20 07:16 Сейчас в теме
(7) Тогда зачем его прерывать, если его результатом должен быть признак?
9. loki03 07.08.20 07:18 Сейчас в теме
(7) вам (5) правильно ответили.
Если признак = записывать НЕ надо - НЕ запускаете отчет
если надо записывать - запускаете отчет и не прерываете его.
6. loki03 07.08.20 07:15 Сейчас в теме
(4) да какая разница. обработка/отчет

в документе:
Процедура кнОтчетНажатие(Элемент)
	Обр=Отчеты.Отчет1.Создать();
	Обр.флЗаписывать=флЗаписывать;
	Обр.Сформировать();
КонецПроцедуры



в отчете:
Процедура Сформировать() Экспорт
	Сообщить("Запустили отчет");
	Если флЗаписывать Тогда 
		Сообщить("Прерываем");
		Возврат;
	КонецЕсли;
	Сообщить("Работаем дальше");
КонецПроцедуры

Показать
3. loki03 07.08.20 07:10 Сейчас в теме
В документе:
Процедура кнОтчетНажатие(Элемент)
	Обр=Обработки.Обработка1.Создать();
	Обр.флЗаписывать=флЗаписывать;
	Обр.Сформировать();
КонецПроцедуры




в вызываемой обработке:
Процедура Сформировать() Экспорт
	Если флЗаписывать Тогда 
		Возврат;
	КонецЕсли;
	Сообщить("Работаем дальше");
КонецПроцедуры
10. German_Tagil 42 07.08.20 07:26 Сейчас в теме
Вот картинка чтобы было понятно
Ни (6), Ни (3) варианты не подходят
просто возвращаемся в отчет
Прикрепленные файлы:
11. PerlAmutor 129 07.08.20 07:37 Сейчас в теме
(10) Вам просто нужно закрыть форму отчета после того как пользователь нажмет кнопку "Записать"? Или запись должна происходить автоматически после того как отчет сформируется? Или отчет вообще должен формироваться для пользователя неявно и его результаты должны куда-то записываться?
alex-l19041; +1 Ответить
12. German_Tagil 42 07.08.20 07:42 Сейчас в теме
(11) Пользователь решает что надо записать - отчет формируется и записывает данные после этого хотелось бы прекратить выполнение отчет те закрыть его
Да закрыть форму отчета
13. PerlAmutor 129 07.08.20 07:48 Сейчас в теме
(12) В процедуре обработки кнопки "Записать" в конце пишите такой код и все

Если ЭтаФорма.Открыта() Тогда
    ЭтаФорма.Закрыть();
КонецЕсли;
14. German_Tagil 42 07.08.20 07:56 Сейчас в теме
(13) Это не кнопка - параметр булево
15. PerlAmutor 129 07.08.20 07:58 Сейчас в теме
(14) Я вижу там и параметр и кнопку. Если параметр "Записывать"="Да", что должно происходить?
17. loki03 07.08.20 08:00 Сейчас в теме
(14) ОМГ
пользователь на какую кнопку жмет? Сформировать или Записать?
Если на "Сформировать" - смотрите какая процедура висит на этой кнопке и в конце процедуры пишете:

Если ПараметрЗаписать Тогда // Это проверка вашего параметра булево
ЭтаФорма.Закрыть();
КонецЕсли;

Если пользователь жмет на другую кнопку - ищете процедуру для нее и делаете то же самое.
18. German_Tagil 42 07.08.20 08:02 Сейчас в теме
(17) Сформировать


процедура Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
при написании ЭтаФорма.Закрыть(); выдает ошибку
19. loki03 07.08.20 08:15 Сейчас в теме
(17) неправда. Не может эта процедура висеть на кнопке.
в той которая на кнопке - должен быть параметр "Команда" и дериктива &НаКлиенте.
то что вы написали - серверная процедура в которой никакой формы нет.
16. German_Tagil 42 07.08.20 08:00 Сейчас в теме
Формируется отчет записываются данные в документ
20. German_Tagil 42 07.08.20 08:17 Сейчас в теме
Я понимаю - поэтому и задаю вопрос
Отчет стандартный
а манипуляции с данными я и произвожу в
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
21. loki03 07.08.20 08:21 Сейчас в теме +0.2 $m
(20) а форму нужно закрывать в процедуре Сформировать()
&НаКлиенте
Процедура Сформировать(Команда)
 ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка);
 Если ПараметрЗакрыть Тогда
  ЭтаФорма.Закрыть();
 КонецЕсли;
КонецПроцедуры
Показать
22. German_Tagil 42 07.08.20 09:32 Сейчас в теме
(21) Попробую но похоже не сегодня ...
23. German_Tagil 42 10.08.20 09:56 Сейчас в теме
в общем получилось примерно так :
в расширении в ФормаОтчета


&НаКлиенте
&После("ОтчетСкомпоноватьРезультат")
Процедура СН_ОтчетСкомпоноватьРезультат(Команда)
	 Регистратор = ложь;
	
Попытка
		
	 	 Регистратор = ложь;
Регистратор=Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("проба")).ИдентификаторПользовательскойНастройки).Значение; 
	 

 если  Регистратор = истина тогда

	
	этаформа.Закрыть();
	
конецесли;	

 Исключение    
    КонецПопытки;

КонецПроцедуры

Показать



спасибо за помощь
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Программист 1С:ERP
Москва
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день