Тема: Необходимо изменить пароль защиты отчета

Отчеты формируются с уже назначенным известным паролем. Все пользователи ее знают, и при необходимости корректируют сформированный отчет, сняв защиту листа. Как изменить пароль (123) на другой (известный только разработчикам), чтобы в сформированном отчете были данные только с БД.

Re: Необходимо изменить пароль защиты отчета

Сделайте например так:

1. Зайдите в "Справочники - Шаблоны - VBA модули"
2. Выберите на редактирование модуль Reports
3. На закладке VBA файлы выберите редактиорвать "Report.bas" и сохраните на диск.
4. Измените его как-нибудь так:

Attribute VB_Name = "Reports"
Sub Report()
Attribute Report.VB_ProcData.VB_Invoke_Func = "s\n14"
'
' процедура для запуска из TechnologiCS без отрисовки
' Ctrl-S
'
    Dim Rpt As Object
    Set Rpt = CreateObject("CSDNRPT.Report")
    Rpt.Run Application
       
      For cn = 1 To ActiveWorkbook.Worksheets.Count
            Sheets(cn).Unprotect Password:="123"
            Sheets(cn).Protect Password:="456", DrawingObjects:=True, Contents:=True, Scenarios:=True
       Next

End Sub

4. Загрузите его обратно, и никому не говорите новый пароль ("456")...

Re: Необходимо изменить пароль защиты отчета

Спасибо

Re: Необходимо изменить пароль защиты отчета

Это не серьезно...

Зная, куда сваливаются временные файлы, открываете папку, ищете файл Report.bas, просмотр и читаете пароль.

Почему нельзя реализовать установку пароля через параметры шаблонов???

(изменено: Виктор Бебякин, 11 мая 2012 09:43:54)

Re: Необходимо изменить пароль защиты отчета

  1. Зайдите в "Справочники - Шаблоны - VBA модули"

  2. Выберите на редактирование модуль Reports

  3. На закладке VBA файлы выберите редактировать "Report.bas" и сохраните на диск

  4. Замените его содержимое этим кодом:

  5. Загрузите его обратно

Attribute VB_Name = "Reports"

Private Function ExistRange(Nm, Shablon) As Boolean
    Dim TMP As String
    On Error GoTo 10
      TMP = Shablon.Names(Nm).Name
      ExistRange = True
    GoTo 20
10    ExistRange = False
20  On Error GoTo 0
End Function

Sub Report()
Attribute Report.VB_ProcData.VB_Invoke_Func = "s\n14"
 '
 ' процедура для запуска из TechnologiCS без отрисовки
 ' Ctrl-S
 '
  const RANGE_PASSWORD = "Пароль"
  const RANGE_PROTECTED = "Защита"
  Dim ProtectionSheet As Boolean
  Dim OldPassword As String
  Dim Sh As Object
  OldPassword = "123"
  NewPassword = ""
  ProtectionSheet = True
    For i = 1 to ActiveWorkbook.Worksheets.Count  
    Set Sh = ActiveWorkbook.Worksheets(i)
        if NewPassword="" And ExistRange(RANGE_PASSWORD, Sh) Then 
        NewPassword = CStr(Sh.Range(RANGE_PASSWORD).Cells(1, 1).Value)
    End If 
    If ExistRange(RANGE_PROTECTED, Sh) Then
            If CStr(Sh.Range(RANGE_PROTECTED).Cells(1, 1).Value)="Нет" Then ProtectionSheet = False
        End If
    Next

    Dim Rpt As Object
    Set Rpt = CreateObject("CSDNRPT.Report")
    Rpt.Run Application

    If ProtectionSheet and NewPassword <> "" Then
        For i = 1 To ActiveWorkbook.Worksheets.Count
            Sheets(i).Unprotect Password:=OldPassword
            Sheets(i).Protect Password:=NewPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True
        Next
    End If

End Sub

Sub Start()
Attribute Start.VB_ProcData.VB_Invoke_Func = "p\n14"
'
' формирование документа в отладочном режиме с отображением заполнения каждой строки документа
' Ctrl+P
'
    Dim Rpt As Object
    Set Rpt = CreateObject("CSDNRPT.Report")
    Rpt.Start Application
End Sub

Теперь пароль можно задавать 2-мя способами:

  1. Прямо в шаблоне создать область с именем "Пароль" и в качестве значения указать пароль.

  2. Открыть Справочники - Шаблоны - Параметры шаблонов, добавить строковый параметр с обозначением "Пароль" (Создать один раз).
    Открыть бланк на редактирование, добавить параметр "Пароль" и установить значение.

Внимание! В отчете вида Комплект, если пароль задан у нескольких бланков, то использоваться будет первый не пустой.

Спасибо сказали: Павел19741

Re: Необходимо изменить пароль защиты отчета

Здравствуйте. Продолжу тему.
Описанный выше код хорошо работает, если его ввести в модуль Reports.
Если создать новый модуль, например, Reports_2, то ничего не получается.
Если заменить в строке
Attribute VB_Name = "Reports"
на
Attribute VB_Name = "Reports_2", то эффекта также нет.

Можно ли использовать модуль с другим именем, или он всегда должен быть "Reports" ?

Re: Необходимо изменить пароль защиты отчета

Описанный выше код хорошо работает, если его ввести в модуль Reports.

Для отчета необходимо настроить список используемых модулей https://help.technologics.ru/7.0/TCSHelp/_700.htm.

Модуль может быть любым (хотя обычно нет особого смысла их плодить).

(изменено: Шишкина Наталия, 5 апреля 2016 11:03:04)

Re: Необходимо изменить пароль защиты отчета

Модуль в список добавлен, файл Reports_2.bas присоединён.
В закладке "Basic Модули" для бланка модуль Reports_2 прописан, а старый модуль Reports удалён.
Всё равно отчёт формируется так, как будто используется старый модуль Reports.
Тип набора данных "Документы в MS Excel (данные в БД на основе шаблона)".
Версия 6.3.

Проблема в следующем.
В системе на все шаблоны отчётов установлен единый пароль, прописанный в модуле Reports.
Нужно создать один шаблон, который не будет иметь защиты.
Если сейчас исправить модуль Reports, как указано выше, то придётся прописывать пароль для всех остальных шаблонов отчётов.
Поэтому есть идея создать новый модуль Reports_2 с вышеуказанным кодом и использовать его для шаблонов отчётов, для которых будет создаваться уникальный пароль.

Re: Необходимо изменить пароль защиты отчета

Попробуйте просто изменить имя процедуры Report() на ReportEx например, и сделайте ее вызов.

Re: Необходимо изменить пароль защиты отчета

Появляется ошибка.
"Не удается выполнить макрос "ReportEx". Возможно, этот макрос отсутствует в текущей книге либо все макросы отключены."

Re: Необходимо изменить пароль защиты отчета

Не удается выполнить макрос "ReportEx"

Изменить надо не только вызов, но и код в Report_2 ( то есть везде).

Если хотите убедиться что работает именно новый а не старый код.

Re: Необходимо изменить пароль защиты отчета

Изменила код, конечно.
Даже если удалить из списка модулей бланка оба модуля (Reports и Reports_2), то всё равно работает старый модуль Reports, как будто он в списке есть.
Это с типом набора данных никак не связано?
Для типа набора данных "Документы в MS Excel (данные в БД на основе шаблона)" закладка "Basic Модули" есть только для бланка, а не для всего набора данных.
Откуда же от тогда к Reports обращается?

Re: Необходимо изменить пароль защиты отчета

Документы в MS Excel (данные в БД на основе шаблона)

Может в этом дело конечно, это шибко старые отчеты, только в режиме совместимосит идут, там по другому может работать. Посмотрите на самом бланке может.

Спасибо сказали: Шишкина Наталия1