Тема: Эскиз профиля в отчете

Отчет из итоговой спецификации
В отчет нужно вставить эскизы профилей.
Эскиз профиля находится в документах номенклатуры,
используемой как материал в техпроцессе
позиции номенклатуры итоговой спецификации.
Но этот эскиз не выгружается подобно операционному эскизу в техпроцессе
и путь выгрузки в таблице эскизов номенклатуры техпроцесса не указан:
RptSheet - итоговая спецификация->
->Technology - ТП позиции
->Technology_NMK - Номенклатурная позиция
->Technology_NMkDocTechnology - Документы номенклатуры
->Technology_NMkDocrPreviews - Эскизы:
P0    P1    P2    P3    P4    P5    P6    P7    P8    P9    P10    P11    P12    P13
1    1    1    2430    47702    123132    2    Операционный эскиз    30590    123123_123123(1).jpg    \    16    Растровое изображение JPG    123123_123123(1).jpg
Системный эскиз тоже пробовала назначать, тот же результат

Что можно предпринять?
Написать функцию Выполнить перед выполнением отчета, которая будет выгружать эскизы?

Re: Эскиз профиля в отчете

Ну похорошему эскиз правильнее привязать к элементу ТП - тогда однозначно понятно какой именно эскиз используется, и хоть какая то предсказуемость (иначе нет ясности где же он используется и что будет если изменят).

Но если по другому никак - тогда наверное проще всего в отчете на АПИ, в момент обращения получить эскиз и выгрузить его.

Re: Эскиз профиля в отчете

Олег Зырянов пишет:

Ну похорошему эскиз правильнее привязать к элементу ТП - тогда однозначно понятно какой именно эскиз используется, и хоть какая то предсказуемость (иначе нет ясности где же он используется и что будет если изменят).

Но если по другому никак - тогда наверное проще всего в отчете на АПИ, в момент обращения получить эскиз и выгрузить его.


Судя по примеру, это, видимо, оптимально. Спасибо.
Жаль, что само не выгружается.(((

Re: Эскиз профиля в отчете

Но если по другому никак - тогда наверное проще всего в отчете на АПИ, в момент обращения получить эскиз и выгрузить его.

Выгружаю эскиз
Function PrepareReport()
Dim I
Dim FileName
    PrepareReport = True
  Set RS = TCSRpt.RptFunc.OpenRptRecordSet( "NMkDocrPreviews" )

  'Dim RS As IReporterRecordSet
   RS.MoveFirst
      I = TCSRpt.RptFunc.ExecuteDirectSQL("UPDATE Technology_NMkDocrPreviews Set P10="&"'"&TCSApp.UnloadDocsFolder&"'" )

   Do While Not RS.IsEof
      FileName = TCSApp.UnloadDocsFolder + RS.FieldByIndex(13).AsSafeString
      I = GetSKETCHES(FileName, RS.FieldByIndex(4).AsSafeInteger)
      RS.MoveNext
   Loop

End Function

Function GetSKETCHES(FileName, VerID )
Dim I
Set SingleDoc = TCSApp.SingleDoc( CSDN_Const.dspSearchDocByVerID,VerID)
If Not SingleDoc Is Nothing Then
    I= SingleDoc.ShowModal("SingleDoc")
  Set SKETCHES = SingleDoc.Properties("SKETCHES").AsIDispatch
  If  Not SKETCHES Is Nothing Then
    I= SKETCHES.ShowModal(FileName)
    Call SKETCHES.SaveToFile(FileName)
  End If
  Set SKETCHES = Nothing
End if
Set SingleDoc = Nothing
End Function

Затем в отчете вызываю PreviewData
SELECT P10&P13 FROM Technology_NMkDocrPreviews
WHERE P7 = "Системный эскиз"


OUTPUT
IMAGE

При этом открыта папка выгрузки
C:\unloaded_docs

Прямо на глаз видно, что эскиз выгрузился, а репортер по команде
OUTPUT
IMAGE
его удаляет, и затем пишет, что файл не найден.
Если в запросе убрать
OUTPUT
IMAGE
то файл не удаляется, а в поле PreviewData выводится путь и имя файла

Что можно предпринять?

Re: Эскиз профиля в отчете

А описание ошибки можно? лог возможно, а может и сам отчет лучше.
Репортер вроде действительно файл удаляет, после того как картинку загрузил.
Хотя это обычно из его временной папки делается, в данном случае папка не его.

(изменено: Кузнецова Марина, 19 июля 2019 16:09:57)

Re: Эскиз профиля в отчете

Запуск из Итоговой спецификации Тестовый отчет во вложении
16:02:05 (Info): ------- Запускаем отчет на выполнение -------
16:02:05 (Info): Идентификатор отчета: 34403
16:02:05 (Info): Файл данных отчета: C:\Users\kuznetsovam\AppData\Roaming\TechnologiCS\TEMP\1880_A_ReportDB.mdb
16:02:05 (Info): Вызвал отчет: adm_TCS
16:02:05 (Info): Набор данных "НЕД" (Документы в MS Excel (данные в БД)). Бланк "НЕД1"
16:02:07 (Info): Формирование отчета в "Microsoft Excel 12.0"
16:02:07 (Error): Надстройка не подключена [Exception(EOleException)->Неверный индекс
16:02:26 (Error): PutEskiz [Exception(EOleException)->Указанный файл не найден
16:02:26 (Info): Формирование: "Ведомость" - "НЕД1" лист: 1
16:02:28 (Error): PutEskiz [Exception(EOleException)->Указанный файл не найден
16:02:28 (Info): Время формирования: 0:00:21
16:02:31 (Info): ------- Формирование отчета закончено -------

Кстати, если вызывать ?PreviewData из именованной области, то файл не удаляет, но все равно не находит и вместо эскиза выводит имя файла.

Post's attachments

???.rar 25.52 Кб, 3 скачиваний с 2019-07-19 

You don't have the permssions to download the attachments of this post.

Re: Эскиз профиля в отчете

Олег Зырянов пишет:

Хотя это обычно из его временной папки делается, в данном случае папка не его.

Я нашла!
Если файл просто вручную любой другой поместить под аналогичным именем 123123_123123(1).jpg
в папку
C:\Users\kuznetsovam\AppData\Roaming\TechnologiCS\TEMP

то именно он и будет вставлен в поле эскиза,
а не выгруженный в папку c:\unloaded_docs\123123_123123(1).jpg.

Re: Эскиз профиля в отчете

https://help.technologics.ru/7.7/TCSAPI … ory_13.htm

спасибо, посмотрим почему файлы удаляются.