![]() |
![]() |
|
По кнопке "Сформировать отчет" выводится несколько раз результат | ☑ | ||
---|---|---|---|---|
0
YamEgor
18.07.25
✎
04:38
|
доброе время суток,Внешний Отчет использует запрос из схемы компоновки данных, остальное выводится программно, на форме сделал свою команду и в процедуре ВыполнитьПрограммноНаСервере() все и происходит:
&НаСервере Процедура ВыполнитьПрограммноНаСервере(ТабДок) Если ТабДок.ВысотаТаблицы <> 0 Тогда ТабДок.Очистить(); КонецЕсли; СхемаКД = РеквизитФормыВЗначение("Отчет").СхемаКомпоновкиДанных; УстановитьНастройки(); НастройкиКД = Отчет.КомпоновщикНастроек.Настройки; КомпоновщикМакетаКД = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКД = КомпоновщикМакетаКД.Выполнить(СхемаКД, НастройкиКД); ПроцессорКД = Новый ПроцессорКомпоновкиДанных; ПроцессорКД.Инициализировать(МакетКД); ТабДок.Очистить(); ПроцессорВыводаКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВыводаКД.УстановитьДокумент(ТабДок); ПроцессорВыводаКД.НачатьВывод(); ПроцессорВыводаКД.Вывести(ПроцессорКД); ПроцессорВыводаКД.ЗакончитьВывод(); ТабДок.ПоказатьУровеньГруппировокСтрок(3); КонецПроцедуры отчет формируется по кнопке "Выполнить программно", если не закрывая отчет нажать второй раз то почему то выводится уже два раза результат, если третий раз нажать то выводится уже три раза результат, сам таб док очищается но после строчки выполнения кода ПроцессорВыводаКД.Вывести(ПроцессорКД); в табДоке высота таблицы становится соответственно какой раз нажимаешь если первый раз высота 200 если второй высота 400 и т.д. что может быть? как исправить? |
|||
1
palsergeich
18.07.25
✎
09:45
|
Всегда очищайте табдок без проверки на условие высоту.
т.е. вместо Если ТабДок.ВысотаТаблицы <> 0 Тогда ТабДок.Очистить(); КонецЕсли; просто ТабДок.Очистить(); |
|||
2
palsergeich
18.07.25
✎
04:42
|
+ покажите что у Вас в клиентском коде.
Табдок - это реквизит формы? |
|||
3
YamEgor
18.07.25
✎
05:42
|
(2)
&НаКлиенте Процедура ВыполнитьПрограммно(Команда) ВыполнитьПрограммноНаСервере(Результат); КонецПроцедуры Да Табдок это реквизит формы
|
|||
4
YamEgor
18.07.25
✎
05:39
|
(1) понятно
|
|||
5
palsergeich
18.07.25
✎
05:42
|
(3)
Если именно Табдок (а не результат) - реквизит формы то откажитесь от передачи параметра в контекстную серверную процедуру. У вас имя реквизита формы совпадает с входным параметром серверной процедуры. те на клиенте ВыполнитьПрограммноНаСервере() и процедуру измените на &НаСервере Процедура ВыполнитьПрограммноНаСервере() |
|||
6
YamEgor
18.07.25
✎
05:55
|
(5) все сделал пока все так же, на первом скрине высота таблицы 0, на втором скрине, после третьего нажатия высота таблицы уже 608
|
|||
7
palsergeich
18.07.25
✎
06:25
|
(6) Тогда вместо ТабДок.очистить();
Сделай Табдок= Новый ТабличныйДокумент; Там были какие то ньюансы именно с очисткой. я даже залез в кодобазу - у меня создание нового объекта при программном переформировании. |
|||
8
YamEgor
18.07.25
✎
06:42
|
(7) сделал пока все так же
|
|||
9
Franchiser
гуру
18.07.25
✎
10:46
|
(8) сделай функцию вместо процедуры и напиши на клиенте
ТабДок = Выполнитьпрограммнонасервере() и используй другие имена внутри функции на сервере для ТабДок. |
|||
10
Мультук
гуру
18.07.25
✎
11:15
|
(0)
1) Если это отчёт для типовой конфигурации, то непонятно "зачем всё это" 2) Почему "всё это" не в Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) |
|||
11
YamEgor
18.07.25
✎
12:11
|
(10) этот отчет для Кассиров и хотят чтоб каждый кассир видел только свое подразделение я взял схему компановки из типового отчета и там подразделения вываливались для всех, то сказали что это надо убрать и еще что бы пользователь не мог менять этот отчет и вытаскивать другие поля поэтому решил сделать все на форме и когда я пробовал делать это в процедуре ПриКомпоновкеРезультата то поведение было такое же
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |