Страница 1 из 2
Печать нескольких реестров по выбору
Добавлено: 19 июн 2014, 15:43
savov
Доброго всем здоровья!
Возник некоторый вопрос. В модуле Заработная плата-Отчеты- Отчеты по оплате труда персонала - Реестры по перечислениям мы имеем несколько реестров. Надо напечатать содержимое нескольких реестров ( они там помечаются по ins - вот и хотелось бы оставить именно этот вариант). Т.е объединить данные произвольного числа реестров. Пробую настроить печать автоматической формы - не получается, печатает какой-то список, который не совпадает с данными выбранных мною реестров. Кто-то имел подобный опыт? или что присоветуете?
Re: Печать нескольких реестров по выбору
Добавлено: 19 июн 2014, 16:02
edward_K
Докомпиляция рулит. Я мож и делал такое но забыл для кого
, вопрос то точно был. Автоматический отчет формирует все - ему все равно что вы там пометили.
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
Работало все недолго.. До обновления
После его установки маркер перестал работать...
Делаю предположение, что MarkedReg теперь ссылается не туда, куда мне надо.
Если это так, то как часто такое случается? Т.е. маркеры ненадежны?
Если я неправ,то что могло произойти?
Как тогда отлавливать помеченные записи, чтобы не зависеть от разработчиков?
Re: Печать нескольких реестров по выбору
Добавлено: 04 июл 2014, 10:21
edward_K
как правило разработчики достаточно ленивы, чтобы заниматься изменением таких мелочей. Хотя могли переделать на объект pmarker(IMarker) - смотрите vipprogr.chm - поиск. Какой там у вас патч?
Re: Печать нескольких реестров по выбору
Добавлено: 04 июл 2014, 11:08
savov
edward_K писал(а):Какой там у вас патч?
От 2014.06.09