Объявление

Свернуть
Пока нет объявлений.

VBS скрипт poisk_nedoplaty

Свернуть
X
  • Фильтр
  • Время
  • Показать
  • Сортировать
  • Упорядочить по
Очистить всё
новые сообщения

    #16
    Сообщение от VinnieThePOOH Посмотреть сообщение
    Там вроде бы достаточно сохранить из XLS в CSV и обрабатывать сразу CSV, что намного проще.
    Программисту, конечно, проще, но пользователю - вряд ли. Получается много лишних и не всегда понятных щелчков, а у меня нет ресурсов, чтобы постоянно отвечать на вопрос, а что же такого надо сделать с файлом, чтобы он открывался. Так что предпочту непосредственную работу с xls, даже за счёт необходимости иметь Office. Но при этом остальной функционал наличия Office требовать не будет.

    Комментарий


      #17
      Сообщение от lubezniy Посмотреть сообщение
      Программисту, конечно, проще, но пользователю - вряд ли. Получается много лишних и не всегда понятных щелчков, а у меня нет ресурсов, чтобы постоянно отвечать на вопрос, а что же такого надо сделать с файлом, чтобы он открывался. Так что предпочту непосредственную работу с xls, даже за счёт необходимости иметь Office. Но при этом остальной функционал наличия Office требовать не будет.
      Не очень понимаю, зачем пользователю работать с файлом XLS? Если программист может взять XLS, сохранить в CSV и загрузить остатки?



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

      Ну да вам виднее, просто работать с опен-офисом из внешнего приложения - то еще удовольствие..

      Комментарий


        #18
        Сообщение от VinnieThePOOH Посмотреть сообщение
        просто работать с опен-офисом из внешнего приложения - то еще удовольствие..
        +1

        Комментарий


          #19
          Сообщение от VinnieThePOOH Посмотреть сообщение
          Не очень понимаю, зачем пользователю работать с файлом XLS? Если программист может взять XLS, сохранить в CSV и загрузить остатки?
          Похоже, мы несколько с разных позиций смотрим на постановки. Лично я понимаю ситуацию так. Если встаёт разовая задача загрузки остатков, её поручают программисту - тут проблемы нет, программист разберётся. Если же нужно организовать контроль отчётности, особенно массовый, с этим делом сложнее - программиста может и не быть рядом. Сколько файлов нужно ручками перевести из xls в csv, чтобы затем обработать в программе? Сколько щелчков для этого нужно сделать?
          Единственное, что меня смущает во всём этом деле - а что же будет, если результат запроса будет получен на основании не полностью или как-то криво загруженных в ПТК СПУ данных?

          Комментарий


            #20
            Сообщение от lubezniy Посмотреть сообщение
            Лично я понимаю ситуацию так. Если встаёт разовая задача загрузки остатков, её поручают программисту - тут проблемы нет, программист разберётся. Если же нужно организовать контроль отчётности, особенно массовый, с этим делом сложнее - программиста может и не быть рядом. Сколько файлов нужно ручками перевести из xls в csv, чтобы затем обработать в программе? Сколько щелчков для этого нужно сделать?
            Естественно, из XLS программно забрать данные не проблема, главное, чтобы была неурезанная версия офиса, позволяющая работу по OLE.
            Непонятно другое. ПФР по просьбе страхователя выгружает ему остатки в XLS. В чем проблема выгружать в CSV, или в XML, или в TXT, те в любом формате, не требующем наличия офисов?

            Комментарий


              #21
              Сообщение от lubezniy Посмотреть сообщение
              Похоже, мы несколько с разных позиций смотрим на постановки. Лично я понимаю ситуацию так. Если встаёт разовая задача загрузки остатков, её поручают программисту - тут проблемы нет, программист разберётся. Если же нужно организовать контроль отчётности, особенно массовый, с этим делом сложнее - программиста может и не быть рядом. Сколько файлов нужно ручками перевести из xls в csv, чтобы затем обработать в программе? Сколько щелчков для этого нужно сделать?
              Единственное, что меня смущает во всём этом деле - а что же будет, если результат запроса будет получен на основании не полностью или как-то криво загруженных в ПТК СПУ данных?
              А что будет, если формат файла поменяется? В любом случае, без программиста не обойтись.

              Мне кажется, проще написать скрипт на WsShell (например) для сохранения из xls в csv. То есть скрипт будет имитировать нажатия клавиш, которые нажимал бы пользователь по инструкции.

              Помнится, лет пять назад я писал подобный скрипт для 1с77, чтобы обновлять автоматически конфигурации, без участия программиста, и в общем получалось Но потом надобность в этом отпала. Рассказываю просто в качестве идеи, может быть, пригодится.

              Комментарий


                #22
                Сообщение от VinnieThePOOH Посмотреть сообщение
                А что будет, если формат файла поменяется? В любом случае, без программиста не обойтись.
                Формат не каждый день меняется даже в условиях отсутствия нормативных документов. Так что не считаю это проблемой.
                Сообщение от VinnieThePOOH Посмотреть сообщение
                Мне кажется, проще написать скрипт на WsShell (например) для сохранения из xls в csv. То есть скрипт будет имитировать нажатия клавиш, которые нажимал бы пользователь по инструкции.
                А экзотические схемы оформления, разрешение экрана и прочие особенности этому никак не мешают? Сам ни разу так не пробовал.
                Сообщение от VinnieThePOOH Посмотреть сообщение
                Помнится, лет пять назад я писал подобный скрипт для 1с77, чтобы обновлять автоматически конфигурации, без участия программиста, и в общем получалось Но потом надобность в этом отпала. Рассказываю просто в качестве идеи, может быть, пригодится.
                Не сталкивался в этом плане с 7.7, а у 8.1/8.2 мне для этих целей командная строка понравилась больше, хоть и документирована она в официальных описаниях не очень хорошо.

                Комментарий


                  #23
                  Сообщение от lubezniy Посмотреть сообщение
                  Формат не каждый день меняется даже в условиях отсутствия нормативных документов. Так что не считаю это проблемой.
                  Проблема там в том, что с опен-офисом не так просто работать через OLE, как, например, с екселом. Я попробовал и понял, что трудозатраты несопоставими с эффектом (для меня). Но учитывая ваш объем работ, наверное, для вас нормально будет. Только я бы лучше работал с такими файлами через excel

                  Сообщение от lubezniy Посмотреть сообщение
                  А экзотические схемы оформления, разрешение экрана и прочие особенности этому никак не мешают? Сам ни разу так не пробовал.
                  Не понял ваш вопрос, что-то потерял мысль. Уточните. пожалуйста, о каких схемах оформления идет речь?

                  Не сталкивался в этом плане с 7.7, а у 8.1/8.2 мне для этих целей командная строка понравилась больше, хоть и документирована она в официальных описаниях не очень хорошо.
                  Ну там совсем другие возможности А вот в 7.7 не было. У меня было более 100 баз клиентов в отделе ведения учета, одна фирма - одан база, руками обновлять - замучался. Сделал скрипт, который обновлял сам - открывал конфигуратор через батник, далее имитировал нажатия клавиш.

                  Комментарий


                    #24
                    Сообщение от VinnieThePOOH Посмотреть сообщение
                    Проблема там в том, что с опен-офисом не так просто работать через OLE, как, например, с екселом. Я попробовал и понял, что трудозатраты несопоставими с эффектом (для меня). Но учитывая ваш объем работ, наверное, для вас нормально будет. Только я бы лучше работал с такими файлами через excel
                    Я пока ещё не знаю, как буду делать. Исходно предполагаю: при наличии MS Office работать с ним, при наличии опенофиса - с ним, иначе работать, но без обработки этих файлов.

                    Не понял ваш вопрос, что-то потерял мысль. Уточните. пожалуйста, о каких схемах оформления идет речь?
                    Экранных. Я так понимаю, даётся команда щёлкнуть мышью в позиции X,Y , которая может варьироваться в зависимости от положения окна, его размера, разрешения экрана, размеров шрифта и т. п. ?

                    Комментарий


                      #25
                      Сообщение от VinnieThePOOH Посмотреть сообщение
                      Проблема там в том, что с опен-офисом не так просто работать через OLE, как, например, с екселом. Я попробовал и понял, что трудозатраты несопоставими с эффектом (для меня). Но учитывая ваш объем работ, наверное, для вас нормально будет. Только я бы лучше работал с такими файлами через excel
                      В скрипте, который выложил upfr06, есть готовый пример на скриптовом Visual BASIC. При беглом просмотре не вижу в нём особой сложности, хотя, конечно, на Delphi его придётся переписать, и не исключены подводные камушки.

                      Комментарий


                        #26
                        Сообщение от lubezniy Посмотреть сообщение
                        Экранных. Я так понимаю, даётся команда щёлкнуть мышью в позиции X,Y , которая может варьироваться в зависимости от положения окна, его размера, разрешения экрана, размеров шрифта и т. п. ?
                        Я имел ввиду другое. Работал с меню, "посылая" в приложение "нажатые" клавиши. Например, F10 для входа в меню, далее несколько RightArrow для выбора нужного раздела меню, далее нужное количество DownArrow для выбора пункта меню, Enter для выбора пункта и так далее. Это была работа с конфигуратором 1с77.

                        С мышью так не работал, да и WsShell вроде бы не предназанчен для имитации работы с мышью.

                        Про опенофис и доступ к нему - возможно, сделали нормальный доступ по OLE, но раньше не было. То есть нельзя было просто открыть приложение как COM-объект, и далее пользоваться его свойствами и методами, наподобие Excel.Application

                        То есть нельзя было обратиться к книге как объекту, сослаться на лист и на нужную ячейку в нем по адресу.

                        Комментарий


                          #27
                          Сообщение от lubezniy Посмотреть сообщение
                          В скрипте, который выложил upfr06, есть готовый пример на скриптовом Visual BASIC. При беглом просмотре не вижу в нём особой сложности, хотя, конечно, на Delphi его придётся переписать, и не исключены подводные камушки.
                          Этот скрипт, скорее всего, для Excel. Open-office его вроде бы не поддерживает, во всяком случае, когда изучал этот вопрос - не поддерживал.
                          Возможно, в современных сборках что-то изменилось..

                          Комментарий


                            #28
                            Сообщение от VinnieThePOOH Посмотреть сообщение
                            Этот скрипт, скорее всего, для Excel. Open-office его вроде бы не поддерживает, во всяком случае, когда изучал этот вопрос - не поддерживал.
                            Возможно, в современных сборках что-то изменилось..
                            Угу... скорее всего...
                            Код:
                            ' Для доступа к ОпенОфис
                            	Set StarOffice = WScript.CreateObject("com.sun.star.ServiceManager")
                            	Set StarDesktop = StarOffice.CreateInstance("com.sun.star.frame.Desktop")
                            
                            ' *-- Выводим диалоговое окно "Выбор файла из запроса 12.18" 
                            	Set oDialogFile = CreateObject("UserAccounts.CommonDialog")
                            	oDialogFile.Filter = "Файл из запроса 12.18 (*.xls)|*.xls"
                            	oDialogFile.FilterIndex = 2
                            	If oDialogFile.ShowOpen=0 Then
                            		Wscript.Quit
                            	End If
                            	aFileUrl = "file:///" + Replace( oDialogFile.FileName, "\", "/" )
                            	Set args(0) = StarOffice.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
                            	Set args(1) = StarOffice.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
                               
                            	args(0).Name = "Hidden"
                            	args(0).Value = True
                            	args(1).Name = "ReadOnly"
                            	args(1).Value = False
                              Set oDok = StarDesktop.LoadComponentFromURL(aFileUrl, "_blank", 0, args)
                            	Set oSheet = oDok.getSheets().getByIndex(0) ' get Sheet by index,

                            Комментарий


                              #29
                              Сообщение от upfr06
                              Хм.. мдя.. Формально вам правильно ответили. Выгрузка данных о которых идет речь, производится в ПО Статистика БД ПТК СПУ [Is2002-Ufa] v.2.4.59 в результате исполнения номерного запроса в файл xls. Вполне возможно, что в ТО ПФР просто нет доступа к [Is2002-Ufa], а есть только на регионе..
                              Однако... Т. е., пункт
                              Указанный файл может быть выдан страхователю при его обращении в территориальный орган Пенсионного фонда по месту регистрации в качестве плательщика страховых взносов.
                              в каких-то территориальных органах может быть недоступен?

                              Комментарий


                                #30
                                Сообщение от lubezniy Посмотреть сообщение
                                Угу... скорее всего...
                                Код:
                                ' Для доступа к ОпенОфис
                                	Set StarOffice = WScript.CreateObject("com.sun.star.ServiceManager")
                                	Set StarDesktop = StarOffice.CreateInstance("com.sun.star.frame.Desktop")
                                
                                ' *-- Выводим диалоговое окно "Выбор файла из запроса 12.18" 
                                	Set oDialogFile = CreateObject("UserAccounts.CommonDialog")
                                	oDialogFile.Filter = "Файл из запроса 12.18 (*.xls)|*.xls"
                                	oDialogFile.FilterIndex = 2
                                	If oDialogFile.ShowOpen=0 Then
                                		Wscript.Quit
                                	End If
                                	aFileUrl = "file:///" + Replace( oDialogFile.FileName, "\", "/" )
                                	Set args(0) = StarOffice.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
                                	Set args(1) = StarOffice.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
                                   
                                	args(0).Name = "Hidden"
                                	args(0).Value = True
                                	args(1).Name = "ReadOnly"
                                	args(1).Value = False
                                  Set oDok = StarDesktop.LoadComponentFromURL(aFileUrl, "_blank", 0, args)
                                	Set oSheet = oDok.getSheets().getByIndex(0) ' get Sheet by index,


                                Читала в 1с7.7 файл (*.xlsx) через ОпенОфис:

                                Код:
                                	Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");  
                                	Скрипт.language="javascript";                           
                                	Массив=Скрипт.eval("new Array()");
                                	СервисМанагер=Скрипт.eval("СервисМанагер=new ActiveXObject('com.sun.star.ServiceManager')"); 
                                	Парам=Скрипт.eval("Парам=СервисМанагер.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
                                	Парам.Name="Hidden";     Видимость=?(ФлВ=0,"true", "false"); 
                                	Скрипт.eval("Парам.Value="+Видимость);//false - показывать; true - не показывать, !на нижнем регистре!
                                	Массив.push(Парам);
                                	
                                	Десктоп = СервисМанагер.createInstance("com.sun.star.frame.Desktop");        
                                	Докум = Десктоп.LoadComponentFromURL("file:///"+Путь2, "_blank", 0, Массив ); 
                                	
                                	Листы = Докум.getSheets();
                                	Лист = Листы.getByIndex(0);     //получаем первый лист      
                                
                                	//получим размер таблицы:		 				  
                                	True=-1;  //для 1С !
                                	Ячейка = Лист.getCellByPosition(0, 0);
                                	Курсор = Лист.createCursorByRange(Ячейка);                           
                                  //Курсор.gotoStartOfUsedArea();       //начало рабочей области !
                                	Курсор.GotoEndOfUsedArea(True);     //конец рабочей области !    
                                	Адрес  = Курсор.RangeAddress(); 
                                	LastRow = Адрес.EndRow()   ;  //Последняя используемая строка  в OpenOffice Calc (отсчет от 0!)
                                	LastCol = Адрес.EndColumn();  //Последняя используемая колонка в OpenOffice Calc (отсчет от 0!)
                                	
                                Строк=LastRow+1;  Столб=LastCol+1;
                                    
                                	
                                	//////////////////////
                                	//  читаем таблицу: //
                                	//////////////////////
                                	//заголовки колонок:
                                	Для к = 1 По Столб Цикл 
                                		Ячейка=Лист.getCellByPosition(к-1,0);
                                		Зн[к]=Ячейка.string;    //строка
                                	КонецЦикла;
                                ////	Табл.ВывестиСекцию("Шапка");
                                	                                                                  
                                	//сама таблица:
                                	Для с = 2 По Строк Цикл
                                		Для к = 1 По Столб Цикл   
                                			Ячейка=Лист.getCellByPosition(к-1,с-1);          
                                			ТипЯч= Ячейка.getType();   
                                			if     ТипЯч=0  then   Зн[к]=Ячейка.value;   //пусто 
                                			elsif  ТипЯч=1  then   Зн[к]=Ячейка.value;   //число 
                                			elsif  ТипЯч=2  then   Зн[к]=Ячейка.string;  //строка	  
                                			elsif  ТипЯч=3  then   Зн[к]=Ячейка.formula;  //формула 
                                			  //Предупреждение(" В колонке "+(Ячейка.CellAddress().Column +1)+" Обнаружена формула : "+Зн[к]+" ! 
                                			    Предупреждение(" В колонке "+к+" Обнаружена формула : "+Зн[к]+" ! 
                                			  	               | Приведите данные в строковый или числовой формат!");
                                			endif;
                                		КонецЦикла;
                                		//..... что-то делаем
                                	КонецЦикла;
                                	Докум.Close(-1);
                                	Скрипт=0;

                                Комментарий

                                реклама

                                Свернуть
                                Обработка...
                                X