Страница 1 из 2

Печать нескольких реестров по выбору

Добавлено: 19 июн 2014, 15:43
savov
Доброго всем здоровья!
Возник некоторый вопрос. В модуле Заработная плата-Отчеты- Отчеты по оплате труда персонала - Реестры по перечислениям мы имеем несколько реестров. Надо напечатать содержимое нескольких реестров ( они там помечаются по ins - вот и хотелось бы оставить именно этот вариант). Т.е объединить данные произвольного числа реестров. Пробую настроить печать автоматической формы - не получается, печатает какой-то список, который не совпадает с данными выбранных мною реестров. Кто-то имел подобный опыт? или что присоветуете?

Re: Печать нескольких реестров по выбору

Добавлено: 19 июн 2014, 16:02
edward_K
Докомпиляция рулит. Я мож и делал такое но забыл для кого 8) , вопрос то точно был. Автоматический отчет формирует все - ему все равно что вы там пометили.

Re: Печать нескольких реестров по выбору

Добавлено: 19 июн 2014, 19:52
savov
Ну а тогда совсем наглый вопрос. Интерфейс Z_PAYREP::VIEWREESCOMBO сохраняет пометки в маркер, как я понимаю. Как его выудить?

Re: Печать нескольких реестров по выбору

Добавлено: 20 июн 2014, 01:46
Den
наверное вот этот
MarkedReg := InitMarker(if((ModeView and vfCanSelect) = vfCanSelect, 'VedRees_Marker',''), 8, 200, 100);

Re: Печать нескольких реестров по выбору

Добавлено: 01 июл 2014, 16:45
savov
Den писал(а):наверное вот этот
MarkedReg := InitMarker(if((ModeView and vfCanSelect) = vfCanSelect, 'VedRees_Marker',''), 8, 200, 100);
Не получается.
У меня следующая ситуация.
В фейсе Z_PAYREP::VIEWREESCOMBO добавлена строка в менюшку

Код: Выделить всё

menuId_re := LoadMenu('Z_PAYREP::REGISTERSPOPUP');
AddMenuItem(menuId_re,'separator',1);
AddMenuItem(menuId_re,'Печать группы реестров',cmRunGrR);
, вызывающая печать помеченных реестров.
В своем фейсе пытаюсь отловить помеченные в ( незакрытом, получается) Z_PAYREP::VIEWREESCOMBO записи:

Код: Выделить всё

MarkedReg := InitMarker('VedRees_Marker', 8, 200, 100);
MrkCount := GetMarkerCount(MarkedReg) - 1 ;
возвращает ноль. Всякие танцы с бубном с DoneMarker не помогают. Где я туплю (прочитал другие темы про маркеры - не помогло)?

Re: Печать нескольких реестров по выбору

Добавлено: 01 июл 2014, 16:56
edward_K
В фейсе за пометку отвечает маркер с handle в MarkedReg.
Перед тем как вызвать ваш сделайте
StoreMarker(MarkedReg,'ZP_REE') ну и у себя юзайте. А можно и просто отправить MarkedReg в качества параметра в свой фейс.

Re: Печать нескольких реестров по выбору

Добавлено: 01 июл 2014, 17:12
savov
edward_K писал(а):Перед тем как вызвать ваш сделайте
StoreMarker(MarkedReg,'ZP_REE') ну и у себя юзайте
т.е.

Код: Выделить всё

StoreMarker(MarkedReg,'ZP_REE');
MrkCount:=GetMarkerCount(MarkedReg)-1;
...
и никаких InitMarker не надо?

Re: Печать нескольких реестров по выбору

Добавлено: 01 июл 2014, 17:21
edward_K
Если отправить в качестве параметра, то не надо.
Если в родителе сделать Store.. (не в своем фейсе!), то конечно надо.
Это 2 разных механизма, вы у себя должны создать новый handle и загрузить его с dsk, куда запишите через Store, тогда как при передаче параметром вы получаете готовую ссылку на уже инициализированный маркер. Для того чтобы не вылететь при получении в фейс неинциализированного маркера, на всяк случай проверьте параметр на 0.

Re: Печать нескольких реестров по выбору

Добавлено: 01 июл 2014, 17:36
savov
Бр...
Так. Предположим, я в родителе перед вызовом печати пишу
StoreMarker(MarkedReg,'ZP_REE') ;
Тогда:
1) для родителя это ничего не нарушит?
2) что в этом случае будет значить MarkedReg? Он же не определен?

Re: Печать нескольких реестров по выбору

Добавлено: 01 июл 2014, 17:42
edward_K
В отличии от DoneMarker StoreMarker не очищает handle маркера. А попробовать тяжело?
инфы более чем достаточно для уяснения.
Считайте markerreg в родителе просто объектом (на самом деле он ссылка на объект, которую можно передавать как параметр куда угодно) - так понятней? InitMarker приводит к созданию объекта(в родителе он есть в cmInit - вам оттуда привели строку), DoneMarker(в родителе в cmDone) - к уничтожению и если задано куда, то к сохранению в DSK, StoreMarker просто сохраняет в dsk.

Re: Печать нескольких реестров по выбору

Добавлено: 01 июл 2014, 18:37
savov
Во-первых, большое спасибо, edward_K!
Конечно, пока идет ответ, я пробую :-) , но не всегда получается.
В данном вопросе ключевыми стали слова
edward_K писал(а):он есть в cmInit - вам оттуда привели строку
, чего я не знал. Все остальное вытекало из этого.
Еще раз всем спасибо!

Re: Печать нескольких реестров по выбору

Добавлено: 01 июл 2014, 19:23
m0p3e
Для универсальности, раз это отдельный интерфейс будет, я бы сделал собственный маркер, а в интерфейсе перед его вызовом сделал инициализацию и CopyMarker(). Будет проще использовать, если придется делать вызов из другого места.
Но это уже рюшечки. :)

Re: Печать нескольких реестров по выбору

Добавлено: 03 июл 2014, 20:12
savov
Работало все недолго.. До обновления :o После его установки маркер перестал работать...
Делаю предположение, что MarkedReg теперь ссылается не туда, куда мне надо.
Если это так, то как часто такое случается? Т.е. маркеры ненадежны?
Если я неправ,то что могло произойти?
Как тогда отлавливать помеченные записи, чтобы не зависеть от разработчиков?

Re: Печать нескольких реестров по выбору

Добавлено: 04 июл 2014, 10:21
edward_K
как правило разработчики достаточно ленивы, чтобы заниматься изменением таких мелочей. Хотя могли переделать на объект pmarker(IMarker) - смотрите vipprogr.chm - поиск. Какой там у вас патч?

Re: Печать нескольких реестров по выбору

Добавлено: 04 июл 2014, 11:08
savov
edward_K писал(а):Какой там у вас патч?
От 2014.06.09