доброе время суток,Внешний Отчет использует запрос из схемы компоновки данных, остальное выводится программно, на форме сделал свою команду и в процедуре ВыполнитьПрограммноНаСервере() все и происходит:
&НаСервере
Процедура ВыполнитьПрограммноНаСервере(ТабДок)
Если ТабДок.ВысотаТаблицы <> 0 Тогда
ТабДок.Очистить();
КонецЕсли;
КомпоновщикМакетаКД = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКД = КомпоновщикМакетаКД.Выполнить(СхемаКД, НастройкиКД);
ПроцессорКД = Новый ПроцессорКомпоновкиДанных;
ПроцессорКД.Инициализировать(МакетКД);
ТабДок.Очистить();
ПроцессорВыводаКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВыводаКД.УстановитьДокумент(ТабДок);
ПроцессорВыводаКД.НачатьВывод();
ПроцессорВыводаКД.Вывести(ПроцессорКД);
ПроцессорВыводаКД.ЗакончитьВывод();
ТабДок.ПоказатьУровеньГруппировокСтрок(3);
КонецПроцедуры
отчет формируется по кнопке "Выполнить программно", если не закрывая отчет нажать второй раз то почему то выводится уже два раза результат, если третий раз нажать то выводится уже три раза результат, сам таб док очищается но после строчки выполнения кода ПроцессорВыводаКД.Вывести(ПроцессорКД); в табДоке высота таблицы становится соответственно какой раз нажимаешь если первый раз высота 200 если второй высота 400 и т.д. что может быть? как исправить?
(3)
Если именно Табдок (а не результат) - реквизит формы то откажитесь от передачи параметра в контекстную серверную процедуру.
У вас имя реквизита формы совпадает с входным параметром серверной процедуры.
те на клиенте ВыполнитьПрограммноНаСервере()
и процедуру измените на
&НаСервере
Процедура ВыполнитьПрограммноНаСервере()
(6) Тогда вместо ТабДок.очистить();
Сделай Табдок= Новый ТабличныйДокумент;
Там были какие то ньюансы именно с очисткой. я даже залез в кодобазу - у меня создание нового объекта при программном переформировании.
(8) сделай функцию вместо процедуры и напиши на клиенте
ТабДок = Выполнитьпрограммнонасервере() и используй другие имена внутри функции на сервере для ТабДок.
(10) этот отчет для Кассиров и хотят чтоб каждый кассир видел только свое подразделение я взял схему компановки из типового отчета и там подразделения вываливались для всех, то сказали что это надо убрать и еще что бы пользователь не мог менять этот отчет и вытаскивать другие поля поэтому решил сделать все на форме и когда я пробовал делать это в процедуре ПриКомпоновкеРезультата то поведение было такое же
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший