|
не очищается поле табличного документа | ☑ | ||
---|---|---|---|---|
0
LivingStar
30.07.13
✎
10:48
|
На форме лежит поле табличного документа, в него вывожу секции отчета.
Перед каждом формировании отчета хочу очищать предыдущий результат. Почему эта инструкция не очищает поле? ЭлементыФормы.ТабРезультат.Очистить(); |
|||
1
Капитан О
30.07.13
✎
10:49
|
ползут по пустыне три черепашки..
|
|||
2
Rie
модератор
30.07.13
✎
10:50
|
(0) Не очищает - и ничего не говорит?
А она точно выполняется? |
|||
3
LivingStar
30.07.13
✎
10:53
|
(2) Так вот в этом то и дело, ошибки не выдает, и очищать не очищает. Формирую отчет, потом выбираю контрагента по которому нет данных. должно очиститься, а все остается на месте, отрабатывает только код и все. Точно выполняется !!!
|
|||
4
mikecool
30.07.13
✎
10:54
|
а так ТабРезультат.Очистить();
|
|||
5
mikecool
30.07.13
✎
10:55
|
(1) +1 )
|
|||
6
Капитан О
30.07.13
✎
10:56
|
Первая черепаха говорит: — Передо мной нет черепах, а за мной — две черепахи.
|
|||
7
Maxus43
30.07.13
✎
10:56
|
ну не бывает чудес жеж
|
|||
8
Rie
модератор
30.07.13
✎
10:57
|
(3) Не верю.
На форме точно есть поле табличного документа с именем ТабРезультат? Именно в это поле табличного документа выводится отчёт? "Точно выполняется!!!" - как проверено? Что после выполнения получается в поле табличного документа? Два отчёта один за другим - или нечто иное? |
|||
9
LivingStar
30.07.13
✎
10:58
|
(4) так пишет что переменная не определена ТабРезультат
|
|||
10
LivingStar
30.07.13
✎
10:59
|
(8) есть, в него выводится
ЭлементыФормы.ТабРезультат.Вывести(ОбластьСтрока1); |
|||
11
Rie
модератор
30.07.13
✎
11:01
|
(10) И что получается-то в результате?
|
|||
12
Любопытная
30.07.13
✎
11:02
|
А почему через ЭлементыФормы все делается? Как-то странно
|
|||
13
Godofsin
30.07.13
✎
11:03
|
(12) Ну наверное потому что ТабРезультат не принадлежит к реквизитам объекта =)
|
|||
14
Maxus43
30.07.13
✎
11:03
|
(10) у ЭлементыФормы.ТабРезультат в свойствах в поле Данные - там смотри чего, и его очищай
|
|||
15
Капитан О
30.07.13
✎
11:04
|
(12) нормально
|
|||
16
LivingStar
30.07.13
✎
11:04
|
(11) данные если есть выводятся, если нет, отчет стоит со старым формированием
|
|||
17
Любопытная
30.07.13
✎
11:04
|
(13) Мне кажется - это какое-то легкое извращение
|
|||
18
Rie
модератор
30.07.13
✎
11:05
|
(16) А вот с этого места - поподробнее...
Если данные есть - то они выводятся _вместо_ (поверх, затирая) старого отчёта? |
|||
19
LivingStar
30.07.13
✎
11:05
|
(14) метод Очистить() есть именно у Элементыформы.ТабРезультат, у данных наверное нет его...
вот процедура вывода: Процедура ПечатьТз(ТабЗнач) Ном = 1; ЭлементыФормы.ТабРезультат.Очистить(); ЭлементыФормы.ТабРезультат.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Возвраты"; ЭлементыФормы.ТабРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ЭлементыФормы.ТабРезультат.АвтоМасштаб = Истина; ЭлементыФормы.ТабРезультат.ПолеСверху = 0; ЭлементыФормы.ТабРезультат.ПолеСлева = 0; ЭлементыФормы.ТабРезультат.ПолеСнизу = 0; ЭлементыФормы.ТабРезультат.ПолеСправа = 0; ЭлементыФормы.ТабРезультат.РазмерКолонтитулаСверху = 0; ЭлементыФормы.ТабРезультат.РазмерКолонтитулаСнизу = 0; ЭлементыФормы.ТабРезультат.ФиксацияСверху = 6; // Установка опций форматированной печати -> //ТабДок = Новый ТабличныйДокумент; //ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Возвраты"; //ТабДок.Очистить(); Макет = ПолучитьМакет("Макет"); //ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; //ТабДок.АвтоМасштаб = Истина; //ТабДок.ПолеСверху = 0; //ТабДок.ПолеСлева = 0; //ТабДок.ПолеСнизу = 0; //ТабДок.ПолеСправа = 0; //ТабДок.РазмерКолонтитулаСверху = 0; //ТабДок.РазмерКолонтитулаСнизу = 0; // <- // Определение областей шапки печатной формы макета -> ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка|Первая"); ОбластьШапка2 = Макет.ПолучитьОбласть("Шапка|Номер"); ОбластьШапка3 = Макет.ПолучитьОбласть("Шапка|НоменклатураВозврата"); //ОбластьШапка4 = Макет.ПолучитьОбласть("Шапка|Количество"); ОбластьШапка5 = Макет.ПолучитьОбласть("Шапка|КолЕдОтч"); ОбластьШапка6 = Макет.ПолучитьОбласть("Шапка|Сумма"); ОбластьШапка7 = Макет.ПолучитьОбласть("Шапка|ТипВозврата"); ОбластьШапка8 = Макет.ПолучитьОбласть("Шапка|Контрагент"); ОбластьШапка9 = Макет.ПолучитьОбласть("Шапка|ТорговаяТочка"); ОбластьШапка10 = Макет.ПолучитьОбласть("Шапка|ТА"); // ОбластьШапка2.Параметры.ДатаНач = ФОРМАТ(ЭлементыФормы.ДатаНач.Значение, "ДЛФ=Д"); ОбластьШапка2.Параметры.ДатаКон = ФОРМАТ(ЭлементыФормы.ДатаКон.Значение, "ДЛФ=Д"); Если ФильтрСкладов.Количество() <> 0 Тогда Для каждого Стр Из ФильтрСкладов Цикл Если Стр.НомерСтроки = 1 Тогда ПереченьСкладов = СокрЛП(Стр.Склад); Иначе ПереченьСкладов = ПереченьСкладов +", "+ СокрЛП(Стр.Склад); КонецЕсли; КонецЦикла; Иначе ПереченьСкладов = "По всем"; КонецЕсли; Если ФильтрНоменклатуры.Количество() <> 0 Тогда Для каждого Стр Из ФильтрНоменклатуры Цикл Если Стр.НомерСтроки = 1 Тогда ПереченьНоменклатуры = СокрЛП(Стр.Номенклатура); Иначе ПереченьНоменклатуры = ПереченьНоменклатуры +", "+ СокрЛП(Стр.Номенклатура); КонецЕсли; КонецЦикла; Иначе ПереченьНоменклатуры = "По всей"; КонецЕсли; ОбластьШапка2.Параметры.Склад = ПереченьСкладов; ОбластьШапка2.Параметры.Номенклатура = ПереченьНоменклатуры; Если ЗначениеЗаполнено(Контрагент) Тогда ОбластьШапка2.Параметры.Контрагент = Контрагент; Иначе ОбластьШапка2.Параметры.Контрагент = "По всем"; КонецЕсли; Если ЗначениеЗаполнено(ТА) Тогда ОбластьШапка3.Параметры.ТА = ТА; Иначе ОбластьШапка3.Параметры.ТА = "По всем"; КонецЕсли; // <- // Вывод областей шапки печатной формы макета -> // 1. Первая ЭлементыФормы.ТабРезультат.Вывести(ОбластьШапка1); // 2. Номер ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка2); // 3. НоменклатураВозврата ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка3); // 4. Количество //ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка4); // 5. КолЕдОтч ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка5); // 6. Сумма ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка6); // 7. ТипВозврата ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка7); // 8. Контрагент Если Не ЗначениеЗаполнено(Контрагент) или Контрагент.ЭтоГруппа Тогда ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка8); КонецЕсли; // 9. ТорговаяТочка //Если Не ЗначениеЗаполнено(ТА) Тогда ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка9); //КонецЕсли; // 10. ТА ЭлементыФормы.ТабРезультат.Присоединить(ОбластьШапка10); // <- // 1. ОбластьСтрока1 = Макет.ПолучитьОбласть("Строка|Первая"); // 2. ОбластьСтрока2 = Макет.ПолучитьОбласть("Строка|Номер"); // 3. ОбластьСтрока3 = Макет.ПолучитьОбласть("Строка|НоменклатураВозврата"); // 4. //ОбластьСтрока4 = Макет.ПолучитьОбласть("Строка|Количество"); // 5. ОбластьСтрока5 = Макет.ПолучитьОбласть("Строка|КолЕдОтч"); // 6. ОбластьСтрока6 = Макет.ПолучитьОбласть("Строка|Сумма"); // 7. ОбластьСтрока7 = Макет.ПолучитьОбласть("Строка|ТипВозврата"); // 8. ОбластьСтрока8 = Макет.ПолучитьОбласть("Строка|Контрагент"); // 9. ОбластьСтрока9 = Макет.ПолучитьОбласть("Строка|ТорговаяТочка"); // 10. ОбластьСтрока10 = Макет.ПолучитьОбласть("Строка|ТА"); // вывод строк и столбцов макета печатной формы // Для каждого Стр из ТабЗнач Цикл // 1. Первая ЭлементыФормы.ТабРезультат.Вывести(ОбластьСтрока1); // 2. Номер ОбластьСтрока2.Параметры.Ном = Ном; ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока2); // 3. НоменклатураВозврата ОбластьСтрока3.Параметры.Номенклатура = Стр.Номенклатура; ОбластьСтрока3.Параметры.пНоменклатура = Стр.Номенклатура; ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока3); // 4. Количество //ОбластьСтрока4.Параметры.Количество = Стр.Количество; //ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока4); // 5. КолЕдОтч ОбластьСтрока5.Параметры.КолЕдОтч = ФОРМАТ(Стр.КолЕдОтч, "ЧЦ=10; ЧДЦ=3"); ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока5); // 6. Сумма ОбластьСтрока6.Параметры.Сумма = Стр.Сумма; ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока6); // 7. ТипВозврата ОбластьСтрока7.Параметры.ТипВозврата = Стр.ТипВозврата; ОбластьСтрока7.Параметры.пТипВозврата = Стр.Ссылка; ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока7); // 8. Контрагент Если Не ЗначениеЗаполнено(Контрагент) или Контрагент.ЭтоГруппа Тогда ОбластьСтрока8.Параметры.Контрагент = Стр.Контрагент; ОбластьСтрока8.Параметры.пКонтрагент = Стр.Контрагент; ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока8); КонецЕсли; // 9. ТорговаяТочка ОбластьСтрока9.Параметры.ТорговаяТочка = Стр.ТорговаяТочка; ОбластьСтрока9.Параметры.пТорговаяТочка = Стр.ТорговаяТочка; ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока9); // 10. ТА //Если Не ЗначениеЗаполнено(ТА) Тогда ОбластьСтрока10.Параметры.ТА = Стр.ТА; ОбластьСтрока10.Параметры.пТА = Стр.ТА; ЭлементыФормы.ТабРезультат.Присоединить(ОбластьСтрока10); //КонецЕсли; Ном = Ном + 1; КонецЦикла; ЭлементыФормы.ТабРезультат.ТолькоПросмотр = Истина; КонецПроцедуры |
|||
20
Капитан О
30.07.13
✎
11:05
|
(16) ещё один вопрос остался, соберись
|
|||
21
Rie
модератор
30.07.13
✎
11:06
|
(19) А эта замечательная процедура - при каких условиях вызывается?
|
|||
22
Maxus43
30.07.13
✎
11:07
|
(21) +1. наверняка туда и не заходит, если ТЗ пустая
|
|||
23
LivingStar
30.07.13
✎
11:08
|
(18) Ну да, переформировывая сформированный предварительно отчет.
(19) При нажатии кнопки сформировать она вызывается. |
|||
24
LivingStar
30.07.13
✎
11:08
|
(22) заходит в любом случае, ставлю же точку останова, цикл перебора не срабатывает если нет строк в Тз
|
|||
25
Капитан О
30.07.13
✎
11:08
|
(23) вот там ты её и не вызываешь
|
|||
26
Капитан О
30.07.13
✎
11:09
|
хм, а это ловко придумано
Если ФильтрСкладов.Количество() <> 0 Тогда Для каждого Стр Из ФильтрСкладов Цикл |
|||
27
LivingStar
30.07.13
✎
11:11
|
очистилась
|
|||
28
Rie
модератор
30.07.13
✎
11:11
|
(24) Если бы заходила в любом случае - то очищала бы.
Значит, не заходит. Код обработчика нажатия кнопки покажи. |
|||
29
Любопытная
30.07.13
✎
11:13
|
(27)Мистика :)
|
|||
30
Капитан О
30.07.13
✎
11:14
|
а я такую мистику наблюдаю при редактировании обработки с запущенной отладкой
|
|||
31
Любопытная
30.07.13
✎
11:15
|
(30) Думаешь ТС дописывал Очистить() после того, как посмотрел, что получилось?
|
|||
32
Капитан О
30.07.13
✎
11:16
|
(31) ТС - легенда, от него всего можно ожидать
|
|||
33
Infsams654
30.07.13
✎
11:20
|
(12), (15) это не нормально, как впрочем (32)
|
|||
34
LivingStar
30.07.13
✎
11:20
|
(28)
Процедура КнопкаСформироватьНажатие(Кнопка) ЭлементыФормы.ТабРезультат.Очистить(); Тз = СформироватьТзЗапроса(); Если Тз <> 0 Тогда ПечатьТз(Тз); КонецЕсли; КонецПроцедуры вот сюда эту строку перенёс, стало очищать!!! |
|||
35
Капитан О
30.07.13
✎
11:21
|
(34) поздравлять?
|
|||
36
Maxus43
30.07.13
✎
11:21
|
(34) Если Тз <> 0 Тогда
и зачем врал то? |
|||
37
Rie
модератор
30.07.13
✎
11:21
|
(34) А ведь прав был (22)!
|
|||
38
LivingStar
30.07.13
✎
11:22
|
(36) я не врал не досмотрел просто... вот значит как, я то смотрю что точка останова через раз работает!!!
|
|||
39
Rie
модератор
30.07.13
✎
11:22
|
(34) Но ТЗ<>0 - это ты о чём?
|
|||
40
Капитан О
30.07.13
✎
11:23
|
СформироватьТЗ возвращает число. тоже ловко придумано
|
|||
41
LivingStar
30.07.13
✎
11:23
|
(39)
Если Не Рез.Пустой() Тогда ТчВыборка = Рез.Выгрузить(); Возврат ТчВыборка; КонецЕсли; Возврат 0; КонецФункции |
|||
42
Rie
модератор
30.07.13
✎
11:25
|
(41) Тогда понятно...
|
|||
43
Любопытная
30.07.13
✎
11:26
|
Это чтоб никто не догадался))
|
|||
44
cw014
30.07.13
✎
11:31
|
(41) Эээээ, это очень тонкое извращение
|
|||
45
LivingStar
30.07.13
✎
11:33
|
(44) Это прямая реализация, движение к цели, возможно что то не то попутно было придумано, или не совсем то, ко всему можно вернуться и переправить на то как желаемо. Что вам не нравится незнаю.
|
|||
46
Infsams654
30.07.13
✎
11:33
|
(43) Да, уж... Если уж функция возвращает значения разных типов, то по правильному надо при получении определять тип значения,
а так бы лучше ТчВыборка = Новый ТаблицаЗначений(); далее заполнение как в (41) а в приеме проверить ТчВыборка.Количество() |
|||
47
Rie
модератор
30.07.13
✎
11:35
|
(45) Да нет, что Вы, нравится! Я просто тащусь!..
|
|||
48
Любопытная
30.07.13
✎
11:37
|
(45) Всем все нравится! Просто создается впечатление, что ты пытаешься бежать вверх по эскалатору, который движется вниз)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |