Имя: Пароль:
1C
1С v8
ЗапуститьПриложение
0 AlexandraV
 
19.03.14
16:26
Добрый день! Объясните мне, пожалуйста

Процедура ОткрытьВнешнийФайл(Элемент)
КомандаПриложения = "rundll32.exe shimgvw.dll,ImageView_Fullscreen";    
        UdlФайл = Новый Файл(КаталогПрограммы() + "ElArchive.udl");    
Если Не UdlФайл.Существует() Тогда
                Предупреждение("Не найден файл подключения к БД '" + КаталогПрограммы() + "ElArchive.udl" + "'");
            Иначе
            //    Сообщить("Найден файл подключения к БД '" + КаталогПрограммы() + "ElArchive.udl" + "'");
        СтрокаСоединенияССерверомElArchive   =  "File Name=" + КаталогПрограммы() + "\ElArchive.udl" ;
Соединение = Новый COMОбъект("ADODB.Connection");
      
    Соединение.ConnectionString = (СтрокаСоединенияССерверомElArchive);
      
    Попытка
          Соединение.Open();
РекордСет=Новый COMОбъект("ADODB.REcordset");
         Поток=Новый COMОбъект("ADODB.Stream");
         Поток.Type=1;
         Поток.Mode=3;
         Поток.Open();
РекордСет.ActiveConnection=Соединение;
         РекордСет.CurSorLocation=3;
         Попытка
РекордСет.Open("Select DocumentArhNumber, PageContent From dbo.ContractsForBuh Where DocumentArhNumber='"+СокрЛП(Код)+"'",Соединение);
             Если РекордСет.RecordCount=0 Тогда
                Предупреждение("По договору № "+СокрЛП(Код)+" сканы не найдены");
            Иначе
                         РекордСет.MoveFirst();
Иначе
                         РекордСет.MoveFirst();
Попытка
    //             Сообщить(КаталогВременныхФайлов());
                 УдалитьФайлы(КаталогВременныхФайлов(),"*.bmp");
         Исключение
             Сообщить(ОписаниеОшибки());
         КонецПопытки;
          Пока РекордСет.EOF()=0 Цикл
          ////Для i=1 По РекордСет.RecordCount Цикл
              
              НомерДоговора=РекордСет.Fields("DocumentArhNumber").Value;
    //          Сообщить(НомерДоговора);
              Поток.Write(РекордСет.Fields("PageContent").Value);
              ИмяВременногоФайла = ПолучитьИмяВременногоФайла("bmp");
              
              Поток.SaveToFile(ИмяВременногоФайла);
              
              Попытка
                  ЗапуститьПриложение(КомандаПриложения + " " + ИмяВременногоФайла);
                Сообщить(ИмяВременногоФайла);

                  Исключение
                 Сообщить(ОписаниеОшибки());
               КонецПопытки;
  РекордСет.MoveNext();
              
          КонецЦикла;
      КонецЕсли;
      
          Исключение Сообщить(ОписаниеОшибки());
          КонецПопытки;
          Поток.Close();
          РекордСет.Close();
          Соединение.Close();
          
          
          Исключение
          Сообщить("Не могу подключиться к базе!!! ");
      КонецПопытки;
      КонецЕсли;
  КонецПроцедуры

Читаю из сторонней sql-базы сканы договоров. Один договор содержит, например, 5 листов. Формирую 5 временных bmp-файлов в каталог временных файлов. А команда ЗапуститьПриложение открывает только 4 первых. В чем проблема? Постоянно теряется последняя страница.
1 AlexandraV
 
19.03.14
16:29
Во временном каталоге лежат все 5 картинок. Почему не открывается последняя... Очень нужно...
2 AlexandraV
 
19.03.14
16:34
Причем иногда срабатывает верно, например, при первом открытии, а потом непонятное
3 Ц_У
 
19.03.14
16:37
а если не получить имя временного файла а через счетчик 1.бмп, 2.бмп, тогда как открывает?
4 AlexandraV
 
19.03.14
16:42
надо попробовать
5 Ц_У
 
19.03.14
16:43
или, как вариант, сохранять, например в массив, имена файлов, а после закрытия потока, открывать
6 AlexandraV
 
19.03.14
17:00
(5), ага, спасибо, попробую
Независимо от того, куда вы едете — это в гору и против ветра!