Так. Не получается выбрать конкретный заказ и соответсвующие ему строки.
В "Шапку" отчета идет самая первая запись таблицы rbook. А вот в строки идут все записи таблицы rbookm.
Нужно передавать параметры каким-либо образом. Либо приватные переменные, либо еще какая-нибудь таблица.
Ведь в отчетах есть источник bda.task и еще какой-то с информацией о текущем состоянии реестра.
P.S. В "шапку" Попадает запись, идущая первой по полю NNOPER(ID записи в данном случае). (Т.е. Я подозреваю, что сортировочка по умолчанию берется по главному индексу)
Может быть есть какие-нибудь догадки? Паблик и приват переменных довольно много, сказать приблизительно даже сложновато.
А вот сейчас думаю. Ведь перед вызовом формы идет её выбор? В спец окошке? Может быть оно и отвечает за передачу параметров?
Хоть в каком направлении копать? Пытаться инициализировать теже переменные что и в обычном реестре присутствуют или это вообще пустая трата времени и искать нужно где-то еще?
Что-то совсем как-то тихо в этой теме стало. А данный начал очень тесно переплетается, например, с формированием собственных складских документов...
Единственный предложенный способ для распечатки документов - это сделать oDoc:Hidden := 1 при формировании объекта-документа. Это просто ни в какие ворота( пользователь после oDocs:Run() может его редактировать).
Сейчас в данной теме предложили вызов конкретных форм на печать (отчетов). Но еще даже данный способ не представляется возможным реализовать (так и неизвестно какие параметры требуются)
Но уже очень бы хотелось иметь возможность вызывать это меню:
Саак Шахламджян пишет:
Что-то совсем как-то тихо в этой теме стало. А данный начал очень тесно переплетается, например, с формированием собственных складских документов...
Единственный предложенный способ для распечатки документов - это сделать oDoc:Hidden := 1 при формировании объекта-документа. Это просто ни в какие ворота( пользователь после oDocs:Run() может его редактировать).
Авторизация пользователю позволяет документ редактировать ?
nordk пишет:
Авторизация пользователю позволяет документ редактировать ?
Вопрос авторизации пользователя в данном случае считаю абсолютно неуместным. Речь идет об автоматическом создании документов, куда пользаватель не должен вмешиваться!!!
А мы ему это позволяем для распечатки!!!
Регулированием прав здесь ситуаци не разрешить.
Но специально для Вас я попытался это сделать. Ничего не вйдет,
смотрите почему:
Вопрос 1. Чтобы закрыть вмешательство пользователя (П.) в автоматически созданный документ придется
а) лишить его всех прав: создание, редактир, удаление в определенном виде движения, верно?
Но это противоречит б) и в):
б) Пользователь должен иметь возможность удалять документы. Но в Б-5 право на удаление документа и удаление строки документа - это одно и тоже => мы лишим П. возможности удалять документа!
Дело в том, что пользователь может удалять документы
в) Если у П. нет прав на создание, то он, собственно не сможет сохранить данный документ. Если же это право у него есть, то он сможет добавить лишнюю строку в формируемый нами документ...
(опять же по причине того, что создание строки и создание документа в Б-5 - это одно и тоже)
Надеюсь, по вопросу 1 я Вас убедил?
Как всегда на один вопрос ответите, а остальных как бы и не было... Всегда по 2-3 раза приходиться все вопросы писать.
Вопрос 2 А что с перемынными для Print_FastReport(Category,ReportTemplate,Preview) делать?
Вопрос 3 И Возможно ли вызвать то меню, которое я указал выше?
1Вопрос 1. Чтобы закрыть вмешательство пользователя (П.) в автоматически созданный документ придется
а) лишить его всех прав: создание, редактир, удаление в определенном виде движения, верно?
Только редактирования. За изменением количества строк можно проследить и убить документ
2 не знаю. Рекомендация разработчика делать через WinReport
Я об этом уже говорил.
3 Я Вам приводил выше пример как открывается подобное окно.
nordk пишет:
Только редактирования. За изменением количества строк можно проследить и убить документ
Интересно каким образом!????
"шерстить" Таблицу Mdocm.dbf, посчитав сколько строк записалось после сохранения??? Вам это извращением не кажется ли???
ИМХО в 1000 раз проще и правильнее было бы дать параметр прав доступа в классе oDoc (дополнительный параметр), либо, делать распечатку по-другому, что еще более правильнее в данном случае!!!!
(В объекте oDocs:ITEM: ничего не меняется после добвлений строк пользователем!!! Ни в объекте oErr:=Run() нет сведений о колич строк)
А что там шерстить :))) Несколько строчек :)))
Дак при открытии документа Вы ее так постоянно шерстите.
SCOPECOUNT() это вообще не проблема
Ну, во-первых, о SCOPECOUNT() еще нужно знать!!! (А его ни в хелпе Б-4 нет ни в Б-5, возможно, в обновленном хелпе СП 18 есть, я его еще не изучал )
А я когда-то по поводу того, как посчитать кол-во видимых записей на форуме задавал, или интересовался, но к сожалению не нашел ответа (я так понимаю SCOPECOUNT() считает кол-во видимых записей, установленных опред скопом)!!!
А, во-вторых, это все равно маразм... Удалять неверно сохранённый документ... Миллиард действий... А вместо этого есть 3 способа в 10 раз проще, лучше и быстрее. 2 уже назвал, а третий -это в oERR:=Run() выдавать больше информации, т.е. добавить инфу о строках, правда, документ все равно придется удалять... Да что угодно можно придумать, благо, фантазия неограничена.
В третьих, операция редактирования документа исчезнет!!!! Тоже, знаетели, не весело! (В стандартном варианте у П. есть возможность редактир, а в нашем нет!!!)
Честно, ну так ужасно получается из-за ерундовой распечатки.
P.S. только что проверил. Никаких проблем с редактированием строк и шапки нет. Права на редактирование "движения" у пользователя отсутсвуют. Никаких проблем с редактированием. Строки можно редактировать. Так что все во-первых, во-вторых и в третьих можно не читать... Не работает Ваш способ... Он распространяется, как я догадываюсь на уже сохранённые документы, а т.к. нет метода "открыть"/редактировать документ, то проблема по-прежнему остается!!!!! (Как распечатать документ?)
Саак Шахламджян пишет:
только что проверил. Никаких проблем с редактированием строк и шапки нет. Права на редактирование "движения" у пользователя отсутсвуют.
Вот это замечание постараюсь довести для устранения.
Про распечатку я уже говорил. Можете нарисовать сами, можно
довести решение а с запретом корректировки.
Считать строки - выеденного яйца не стоит
По изменению объекта тоже постараюсь озвучить.
А дальше путь разработчик выбирает сам путь решения.
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. Жду ответа по этому методу. Чем он плох и почему его не применяете?
И уже начинает интересовать по поводу счет-фактуры ПОЧЕМУ она не формируется???
Наконец-то получилось распечатать!!!
Спасибо Александру Титову! Он выдал "Великую тайну Бэст-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 не должен с ними пересекаться, иначе будет их дубляж и будет ошибка.
Код арма и код реестра можно, наверное, и не делать такими же как и у разработчиков в аналог меню.