BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Использование отчетов в своём InitList.

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: Пред. 1 2
RSS
Использование отчетов в своём InitList., Как пользоваться .frf шаблонами при распечатке?
 
Так. Не получается выбрать конкретный заказ и соответсвующие ему строки.

В "Шапку" отчета идет самая первая запись таблицы rbook. А вот в строки идут все записи таблицы rbookm.

Нужно передавать параметры каким-либо образом. Либо приватные переменные, либо еще какая-нибудь таблица.
Ведь в отчетах есть источник bda.task и еще какой-то с информацией о текущем состоянии реестра.


P.S. В "шапку" Попадает запись, идущая первой по полю NNOPER(ID записи в данном случае). (Т.е. Я подозреваю, что сортировочка по умолчанию берется по главному индексу)
Изменено: Саак Шахламджян - 13.02.2009 11:22:55
 
а в RBOOR вы DBGOTO() делаете ?
А на RBOOKM скоп накладываете ?
А активный алиас у Вас какой перед печатью ?
Изменено: nordk - 16.02.2009 13:16:13
 
Цитата
nordk пишет:
1. а в RBOOR вы DBGOTO() делаете ?
2. А на RBOOKM скоп накладываете ?
3. А активный алиас у Вас какой перед печатью ?



1. Нет, у меня же свой initList. В момент распечатки "курсор" находиться на нужной строке. (А потом проводил эксперименты, ниже будет код.)

2. Да и скоп и фильтр пробовал.

3. Активный Rbook. (А вернее MDOC - именно так называется в стандартном варианте)
Код
SetKey(-8,{||Print1(),1})
...............
static Function Print1()
sScope:=Mdoc->NNOPER
DbPush("Mdocm","Tag_Oper_","NNOPER_==sScope")
//SetScope("NNOPER_+UPPER(Grup+NNum+MDim+Partia+Sclad)",sScope)
//Select("MDOC")
DbPush("Mdoc","RBook_D","NNOPER==sScope")
Print_FastReport(Category,ReportTemplate,.T.)
AltD()
return


Дмитрий Шлыков сказал, что они чз переменные передаются эти параметры. (В источниках есть параметры сортировки и пр.)
Изменено: Саак Шахламджян - 16.02.2009 14:57:12
 
Может быть есть какие-нибудь догадки? Паблик и приват переменных довольно много, сказать приблизительно даже сложновато.

А вот сейчас думаю. Ведь перед вызовом формы идет её выбор? В спец окошке? Может быть оно и отвечает за передачу параметров?

Хоть в каком направлении копать? Пытаться инициализировать теже переменные что и в обычном реестре присутствуют или это вообще пустая трата времени и искать нужно где-то еще?
 
Что-то совсем как-то тихо в этой теме стало. А данный Вопрос начал очень тесно переплетается, например, с формированием собственных складских документов...
Единственный предложенный способ для распечатки документов - это сделать oDoc:Hidden := 1 при формировании объекта-документа. Это просто ни в какие ворота( пользователь после oDocs:Run() может его редактировать).
Сейчас в данной теме предложили вызов конкретных форм на печать (отчетов). Но еще даже данный способ не представляется возможным реализовать (так и неизвестно какие параметры требуются)

Но уже очень бы хотелось иметь возможность вызывать это меню:
Изменено: Саак Шахламджян - 24.02.2009 13:42:02
 
Цитата
Саак Шахламджян пишет:
Что-то совсем как-то тихо в этой теме стало. А данный Вопрос начал очень тесно переплетается, например, с формированием собственных складских документов...
Единственный предложенный способ для распечатки документов - это сделать oDoc:Hidden := 1 при формировании объекта-документа. Это просто ни в какие ворота( пользователь после oDocs:Run() может его редактировать).

Авторизация пользователю позволяет документ редактировать ?
 
Цитата
nordk пишет:
Авторизация пользователю позволяет документ редактировать ?

Вопрос авторизации пользователя в данном случае считаю абсолютно неуместным. Речь идет об автоматическом создании документов, куда пользаватель не должен вмешиваться!!!
А мы ему это позволяем для распечатки!!!
Регулированием прав здесь ситуаци не разрешить.
Но специально для Вас я попытался это сделать. Ничего не вйдет,
смотрите почему:
Вопрос 1. Чтобы закрыть вмешательство пользователя (П.) в автоматически созданный документ придется
а) лишить его всех прав: создание, редактир, удаление в определенном виде движения, верно?
Но это противоречит б) и в):
б) Пользователь должен иметь возможность удалять документы. Но в Б-5 право на удаление документа и удаление строки документа - это одно и тоже => мы лишим П. возможности удалять документа!
Дело в том, что пользователь может удалять документы

в) Если у П. нет прав на создание, то он, собственно не сможет сохранить данный документ. Если же это право у него есть, то он сможет добавить лишнюю строку в формируемый нами документ...
(опять же по причине того, что создание строки и создание документа в Б-5 - это одно и тоже)
Надеюсь, по вопросу 1 я Вас убедил?


Как всегда на один вопрос ответите, а остальных как бы и не было... Всегда по 2-3 раза приходиться все вопросы писать.

Вопрос 2 А что с перемынными для Print_FastReport(Category,ReportTemplate,Preview) делать?

Вопрос 3 И Возможно ли вызвать то меню, которое я указал выше?
Изменено: Саак Шахламджян - 25.02.2009 13:07:32
 
Цитата
Вопрос 1Вопрос 1. Чтобы закрыть вмешательство пользователя (П.) в автоматически созданный документ придется
а) лишить его всех прав: создание, редактир, удаление в определенном виде движения, верно?

Только редактирования. За изменением количества строк можно проследить и убить документ

Вопрос 2 не знаю. Рекомендация разработчика делать через WinReport
Я об этом уже говорил.

Вопрос 3 Я Вам приводил выше пример как открывается подобное окно.
 
Цитата
nordk пишет:
Только редактирования. За изменением количества строк можно проследить и убить документ

Интересно каким образом!????
"шерстить" Таблицу Mdocm.dbf, посчитав сколько строк записалось после сохранения??? Вам это извращением не кажется ли???

ИМХО в 1000 раз проще и правильнее было бы дать параметр прав доступа в классе oDoc (дополнительный параметр), либо, делать распечатку по-другому, что еще более правильнее в данном случае!!!!

(В объекте oDocs:ITEM: ничего не меняется после добвлений строк пользователем!!! Ни в объекте oErr:=Run() нет сведений о колич строк)
Изменено: Саак Шахламджян - 25.02.2009 13:26:15
 
Цитата
Саак Шахламджян пишет:
Интересно каким образом!????
"шерстить" Таблицу Mdocm.dbf, посчитав сколько строк записалось после сохранения??? Вам это извращением не кажется ли???

А что там шерстить :))) Несколько строчек :)))
Дак при открытии документа Вы ее так постоянно шерстите.
SCOPECOUNT() это вообще не проблема
 
Цитата
nordk пишет:

А что там шерстить :))) Несколько строчек :)))
Дак при открытии документа Вы ее так постоянно шерстите.
SCOPECOUNT() это вообще не проблема

Ну, во-первых, о SCOPECOUNT() еще нужно знать!!! (А его ни в хелпе Б-4 нет ни в Б-5, возможно, в обновленном хелпе СП 18 есть, я его еще не изучал )
А я когда-то Вопрос по поводу того, как посчитать кол-во видимых записей на форуме задавал, или интересовался, но к сожалению не нашел ответа (я так понимаю SCOPECOUNT() считает кол-во видимых записей, установленных опред скопом)!!!
А, во-вторых, это все равно маразм... Удалять неверно сохранённый документ... Миллиард действий... А вместо этого есть 3 способа в 10 раз проще, лучше и быстрее. 2 уже назвал, а третий -это в oERR:=Run() выдавать больше информации, т.е. добавить инфу о строках, правда, документ все равно придется удалять... Да что угодно можно придумать, благо, фантазия неограничена.
В третьих, операция редактирования документа исчезнет!!!! Тоже, знаетели, не весело! (В стандартном варианте у П. есть возможность редактир, а в нашем нет!!!)
Честно, ну так ужасно получается из-за ерундовой распечатки.

P.S. только что проверил. Никаких проблем с редактированием строк и шапки нет. Права на редактирование "движения" у пользователя отсутсвуют. Никаких проблем с редактированием. Строки можно редактировать. Так что все во-первых, во-вторых и в третьих можно не читать... Не работает Ваш способ... Он распространяется, как я догадываюсь на уже сохранённые документы, а т.к. нет метода "открыть"/редактировать документ, то проблема по-прежнему остается!!!!! (Как распечатать документ?)
Изменено: Саак Шахламджян - 25.02.2009 15:25:07
 
Цитата
Саак Шахламджян пишет:
только что проверил. Никаких проблем с редактированием строк и шапки нет. Права на редактирование "движения" у пользователя отсутсвуют.

Вот это замечание постараюсь довести для устранения.

Про распечатку я уже говорил. Можете нарисовать сами, можно
довести решение Вопроса с запретом корректировки.
Считать строки - Вопрос выеденного яйца не стоит

По изменению объекта тоже Вопрос постараюсь озвучить.
А дальше путь разработчик выбирает сам путь решения.
 
Цитата
nordk пишет:
Цитата Саак Шахламджян пишет:
только что проверил. Никаких проблем с редактированием строк и шапки нет. Права на редактирование "движения" у пользователя отсутсвуют.
Вот это замечание постараюсь довести для устранения.

Про распечатку я уже говорил. Можете нарисовать сами, можно
довести решение Вопроса с запретом корректировки.
Считать строки - Вопрос выеденного яйца не стоит

По изменению объекта тоже Вопрос постараюсь озвучить.
А дальше путь разработчик выбирает сам путь решения.

Нет ли возможности сделать вызов реестра документов, с фильтром на mdoc, разумеется??? Если есть можно было бы вызвать данный реестр после формирования документа. И пользователь сможет окрыть уже созранённый документ и распечатать.

Лучше бы изменить форму редактирования. Дать возможность самому передавать параметры доступа, НО только если речь идет о еще несохраненном документе. (Т.е. в классе oDoc сделать параметр aRights:={lCanChangeHead,lCanAdd,lCanChange,lCanSave,...}, а форма редактирования "подхватывала бы" их, и вела бы себя так как хочется программисту, невзирая на права доступа.)
P.S. По поводу строк моё мнение - это жуткое решение... Я такое раньше использовал, когда не работало правильно событие "перед удалением", приходилось на "после удаление" вешать плагин проверки и восстанавливать удаленные записи. Такое решение не очень еще и потому, что м\б "сбой" в сети.
 
Цитата
Саак Шахламджян пишет:
Нет ли возможности сделать вызов реестра документов, с фильтром на mdoc, разумеется??? Если есть можно было бы вызвать данный реестр после формирования документа. И пользователь сможет окрыть уже созранённый документ и распечатать.

Для открытия сохраненного документа в БЭСТе есть функция, подвешенная на кнопку "Документ" (в главной книге в ренестре проводок например).
Она подойдет ?
 
Цитата
nordk пишет:
Цитата Саак Шахламджян пишет:
Нет ли возможности сделать вызов реестра документов, с фильтром на mdoc, разумеется??? Если есть можно было бы вызвать данный реестр после формирования документа. И пользователь сможет окрыть уже созранённый документ и распечатать.
Для открытия сохраненного документа в БЭСТе есть функция, подвешенная на кнопку "Документ" (в главной книге в ренестре проводок например).
Она подойдет ?

А поподробнее?

Я просто хочу из своего реестра сделать так:
1. Пользователь сделал все, что ему надо. (отметил позиц для формир документа)
2. Я сам вызываю поле этого новый initlist, в котором виден один документ, который только что был сформирован пользователем.
2. Либо. Я вызываю функцию Открыть_Реестр_Документов(№ документа)
И дальше все идет по-Бэстовски.

3. Там горит кнопочка "открыть".
3. Либо 3. Что очень было б здорово. Можно вызвать на печать данный документ.
4. Вот она-то и запускает далее стд функцию Б-5 открытие документа, с контролем всех прав (ХОТЯ это тоже довольно плохенько. Ну, с запретом на редактирование еще можно прожить кое-как. Но только с ним)
 
Цитата
nordk пишет:
Для открытия сохраненного документа в БЭСТе есть функция, подвешенная на кнопку "Документ" (в главной книге в ренестре проводок например).Она подойдет ?

Послушайте, а как же метод AddDocPrintAltF9(oDoc)???
Ведь он работает!??? Почему Вы им не пользуетесь!!!?

Я сейчас осторожненько опробовал - работает вполне прилично. И не позволяет редактировать документ!!!!!!

P.S. Жду ответа по этому методу. Чем он плох и почему его не применяете?
И уже начинает интересовать Вопрос по поводу счет-фактуры ПОЧЕМУ она не формируется???
Изменено: Саак Шахламджян - 27.02.2009 13:30:15
 
Наконец-то получилось распечатать!!!
Спасибо Александру Титову! Он выдал "Великую тайну Бэст-5", которую я пытался выудить месяц.
Код
Private GlobalTask1:="144",GlobalTask6:=Mdoc->dopcode,GlobalTask7:=Mdoc->NNOPER,GlobalTask8:=""
GlobalTask:="05"
Public ReestrParam:={;
                      {"Код реестра", "C", 3, 0,"{||GlobalTask1}"},;
                      {"Регистрационный номер документа", "C", 6, 0,"{||GlobalTask6}"},;
                      {"Уникальный код документа", "C", 22, 0,"{||GlobalTask7}"},;
                      {"Сортировка строк", "C", 0, 0,"{||GlobalTask8}"};
}
InitTaskParam()

InitTaskParam() инициализирует переменную TaskParam, которая, наверное и является источником Task.Bda.
Она инииализирует параметры Task.Bda на основе ReestrParam + параметры по умолчанию, поэтому ReestrParam не должен с ними пересекаться, иначе будет их дубляж и будет ошибка.

Код арма и код реестра можно, наверное, и не делать такими же как и у разработчиков в аналог меню.
Изменено: Саак Шахламджян - 03.03.2009 14:34:22
Страницы: Пред. 1 2
Читают тему (гостей: 1)