Размножение отчета

1. VVSVVS 17.09.10 09:08 Сейчас в теме
Наткнулся на такую странную вещь. Формирую отчет. Командой Т.Показать() вывожу на экран. Затем убираю его. Затем снова нажимаю кнопку "Сформировать". А в процедуре Сформировать() и есть команда Т=СоздатьОбъект("Таблица"). При выводе на экран в окне отчета уже два отчета-дубликата и далее 3, 4. Т.е. окно не очищается. Применил команду Т.Очистить() после создания таблицы. Безрезультатно. В чем дело? Подскажите, пожалуйста.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. jmw 60 17.09.10 09:13 Сейчас в теме
А кроме кнопки "Сформировать" там ещё кнопочка "ОК" есть?
Попробуй её понажимать...
А потом посмотри в модуле как это дело обрабатывается...
//-----------------------------------------------------------------------------------
Если у тебя не стандартная обработка, то поищи расхождения в модуле со стандартными.
3. Ёпрст 1064 17.09.10 09:38 Сейчас в теме
(0)

Перем Таб;
.........

	Если (ТипЗначенияСтр(Таб) <> "Таблица") Тогда
	   	Таб = СоздатьОбъект("Таблица");
	Иначе
	 	Таб.Очистить();
	КонецЕсли; 
Показать
4. Ёпрст 1064 17.09.10 09:39 Сейчас в теме
А так, ничего странного, сколько объектов Таблица создал через СоздатьОбъект - столько и видишь на экране после Таб.Показать()
5. VVSVVS 17.09.10 09:46 Сейчас в теме
Я взял 1-совскую оборотку по счету. Вписался в нее немного для того, чтобы используя их механизм выборки оформить свой отчет. Их таблицу я не подавлял. Добавил свою.Может их таблицу полностью задавить?
6. VVSVVS 17.09.10 09:58 Сейчас в теме
Нет. Ничего не изменилось. Я заремарил все. что касается их таблицы. По прежнему отчет размножает.
7. Ёпрст 1064 17.09.10 10:27 Сейчас в теме
(6) читай (3), много думай.
8. VVSVVS 17.09.10 11:00 Сейчас в теме
Если в процедуре Сформировать() у меня: Т.СоздатьОбъект("Таблица") и даже Т.Очистить(), т.е.
Если (ТипЗначенияСтр(Таб) <> "Таблица") Тогда
Таб = СоздатьОбъект("Таблица");
Иначе
Таб.Очистить();
КонецЕсли;

я много не думая и ничего не читая, наивно предполагаю, что при нажатии кн. Сформировать я имею исходное состояние таблицы. Разве я ошибаюсь?
9. Ёпрст 1064 17.09.10 11:02 Сейчас в теме
(8) Если у тебя в Сформировать написано
Т = создатьОбъект("Таблица") - то ты ВСЕГДА СОЗДАЕШЬ НОВУЮ ТАБЛИЦУ

Что тут может быть непонятного ?
Тебе нужно создать её 1 раз, а при повторном вызове сформировать, проверить, если таблица ужо есть - то не создавать её, а Очистить.
10. VVSVVS 17.09.10 11:11 Сейчас в теме
Во чего у меня:
Если (ТипЗначенияСтр(Та) <> "Таблица") Тогда
Та = СоздатьОбъект("Таблица");
Иначе
Та.Очистить();
КонецЕсли;


Но, епэрэсэтэ, все-равно множит, причем в одном окне. Не понятно мне.
11. Ёпрст 1064 17.09.10 11:17 Сейчас в теме
(10) Та объяви глобальной для модуля, т.е Перем ТА; воткни в самый вверх.
12. VVSVVS 17.09.10 11:18 Сейчас в теме
13. Ёпрст 1064 17.09.10 11:52 Сейчас в теме
(12) кидай свою нетленку поглядеть. Гадать неохота.
14. jmw 60 17.09.10 12:59 Сейчас в теме
VVSVVS пишет:
Я взял 1-совскую оборотку по счету. Вписался в нее немного для того, чтобы используя их механизм выборки оформить свой отчет. Их таблицу я не подавлял. Добавил свою.Может их таблицу полностью задавить?

Вот где истина!
1C сама нигде не хранит все ваши параметры, заданные при формировании отчета.
Это должен сделать программист.

В типовых делается примерно так:
- в модуле отчёта объявляется глобальная переменная Таб - смотри в самом верху
- там-же объявляются переменные Обновить и Расшифровка
- в процедуре ПриОткрытии() есть примерно такой кусок кода:
	Если глФлагРасшифровки = 1 Тогда 
		Обновить = глОбновить;
		
		// восстанавливаем настройки из списка
		ДатаНачала 		= глРасшифровка.Получить("ДатаНачала");
		....
		глРасшифровка.Получить("Группировки").Выгрузить(Группировки);
		
	
		Если Обновить <> 0 Тогда
			Таб = глТаблица;
		КонецЕсли;           
		
		Если Обновить <> 2 Тогда
			Сформировать();
			СтатусВозврата(0);
			Возврат;       
		КонецЕсли;           
	Иначе
		Обновить = 0;
	КонецЕсли;                      
Показать

Его сюда не для красоты воткнули, а именно для управления обновления таблицы
- в самой процедуре сформировать:
	Если (ТипЗначенияСтр(Таб) <> "Таблица") ИЛИ (Обновить = 0) Тогда
	   	Таб = СоздатьОбъект("Таблица");
	Иначе
	 	Таб.Очистить();
	КонецЕсли;    

как раз и происходит обращение к обнавляемой таблице ( Таб.Очистить() ) или создание таковой.
- чуть ниже устанавливаются параметры расшифровки, которые получаем при открытии
в строках ниже следующей строки:
		// восстанавливаем настройки из списка

Примерно вот такие условия нужно выполнить, чтобы механизм Обновления/Настройки работал.
Там ещё есть несколько вещей... Таких как например: имя таблицы должно совпадать с именем отчета/обработки либо задаваться параметром из расшифровки.
15. VVSVVS 17.09.10 13:02 Сейчас в теме
Кидаю. Свои вписания в оборотку я пометил: //АААААААААААААААААААААААААААААААААААА
Прикрепленные файлы:
Отчет для ОРДО 1.ert
17. Ёпрст 1064 17.09.10 13:12 Сейчас в теме
(15) ты нажимаешь на Сформировать, или на ОК ?
+ ты нажимаешь в отчете на "Обновить" ?
16. VVSVVS 17.09.10 13:07 Сейчас в теме
Вроде-бы мои вписания не затрагиваются глРасшифровкой. Хотя, возможно, ошибаюсь.
18. VVSVVS 17.09.10 13:19 Сейчас в теме
На сформировать. На ОК не надо, не хочу убирать форму отчета
19. VVSVVS 17.09.10 13:20 Сейчас в теме
На обновить не нажимаю
20. tdr1225 37 17.09.10 13:23 Сейчас в теме
Откуда выводишь в таблицу, из запроса или из таблицы значений?
21. Ёпрст 1064 17.09.10 13:27 Сейчас в теме
Ну и ? Если нажимаешь сформировать, то твоя таблица "ведомость по комунальным услугам" не "плодится" - а висит всегда одна и таже.
22. VVSVVS 17.09.10 13:27 Сейчас в теме
Из таблицы значений ТЗа
26. tdr1225 37 17.09.10 13:55 Сейчас в теме
27. VVSVVS 17.09.10 13:58 Сейчас в теме
tdr1225 пишет:

(22) ее очищаешь?


Да
Если (ТипЗначенияСтр(Та) <> "Таблица") Тогда
Та = СоздатьОбъект("Таблица");
Иначе
Та.Очистить();
КонецЕсли;
28. tdr1225 37 17.09.10 13:59 Сейчас в теме
(27) я имею в виду
ТЗа.УдалитьСтроки()
30. VVSVVS 17.09.10 14:13 Сейчас в теме
tdr1225 пишет:

(27) я имею в виду
[/QUOT[IS-QUOTE]tdr1225 пишет:

(27) я имею в виду
[/QUOT[IS-QUOTE]tdr1225 пишет:

(27) я имею в виду
E]E]

Вот оно где. Нет, НЕ ОЧИЩАЮ!!!. А товатищей немного потренировал. Прошу прощения!
31. Ёпрст 1064 17.09.10 14:15 Сейчас в теме
(30) достаточно было Таа (таблицу значений) не объявлять глобальной для модуля.
23. VVSVVS 17.09.10 13:31 Сейчас в теме
Ёпрст пишет:

Ну и ? Если нажимаешь сформировать, то твоя таблица "ведомость по комунальным услугам" не "плодится" - а висит всегда одна и таже.


Она не висит. Она в одном окне расширяется, дублируется или добавляется, если изменю условие выборки. Я сделал много отчетов и всегда было достаточно для обновления: Т=СоздатьОбъект("Таблица") И Т.Очистить() я никогда не применял до сих пор.
24. Ёпрст 1064 17.09.10 13:35 Сейчас в теме
(23) у тебя там 2 таблицы формируется, какая из них "множится " ? первая, или вторая ?
Если твоя ТА - то она всегда обновляется, их 2 на экране быть не может, если ты только на Сформировать нажимаешь и не нажимаешь в первом отчете на кнопки настройка и обновить.
25. VVSVVS 17.09.10 13:39 Сейчас в теме
Множится моя Та только. Повторяю, в одном окне дописывается снизу
29. Ёпрст 1064 17.09.10 14:00 Сейчас в теме
(25) врешь. Не множится она.
Оставьте свое сообщение

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