Сообщение от VinnieThePOOH
Посмотреть сообщение
Объявление
Свернуть
Пока нет объявлений.
VBS скрипт poisk_nedoplaty
Свернуть
X
-
- Спасибо 0
-
Сообщение от lubezniy Посмотреть сообщениеПрограммисту, конечно, проще, но пользователю - вряд ли. Получается много лишних и не всегда понятных щелчков, а у меня нет ресурсов, чтобы постоянно отвечать на вопрос, а что же такого надо сделать с файлом, чтобы он открывался. Так что предпочту непосредственную работу с xls, даже за счёт необходимости иметь Office. Но при этом остальной функционал наличия Office требовать не будет.
В общем-то операция настолько простая, что даже рядовой пользователь способен пересохранить в нужный формат, при наличии под рукой толкового описания.
Ну да вам виднее, просто работать с опен-офисом из внешнего приложения - то еще удовольствие..
- Спасибо 0
Комментарий
-
Сообщение от VinnieThePOOH Посмотреть сообщениепросто работать с опен-офисом из внешнего приложения - то еще удовольствие..
- Спасибо 0
Комментарий
-
Сообщение от VinnieThePOOH Посмотреть сообщениеНе очень понимаю, зачем пользователю работать с файлом XLS? Если программист может взять XLS, сохранить в CSV и загрузить остатки?
Единственное, что меня смущает во всём этом деле - а что же будет, если результат запроса будет получен на основании не полностью или как-то криво загруженных в ПТК СПУ данных?
- Спасибо 0
Комментарий
-
Сообщение от lubezniy Посмотреть сообщениеЛично я понимаю ситуацию так. Если встаёт разовая задача загрузки остатков, её поручают программисту - тут проблемы нет, программист разберётся. Если же нужно организовать контроль отчётности, особенно массовый, с этим делом сложнее - программиста может и не быть рядом. Сколько файлов нужно ручками перевести из xls в csv, чтобы затем обработать в программе? Сколько щелчков для этого нужно сделать?
Непонятно другое. ПФР по просьбе страхователя выгружает ему остатки в XLS. В чем проблема выгружать в CSV, или в XML, или в TXT, те в любом формате, не требующем наличия офисов?
- Спасибо 0
Комментарий
-
Сообщение от lubezniy Посмотреть сообщениеПохоже, мы несколько с разных позиций смотрим на постановки. Лично я понимаю ситуацию так. Если встаёт разовая задача загрузки остатков, её поручают программисту - тут проблемы нет, программист разберётся. Если же нужно организовать контроль отчётности, особенно массовый, с этим делом сложнее - программиста может и не быть рядом. Сколько файлов нужно ручками перевести из xls в csv, чтобы затем обработать в программе? Сколько щелчков для этого нужно сделать?
Единственное, что меня смущает во всём этом деле - а что же будет, если результат запроса будет получен на основании не полностью или как-то криво загруженных в ПТК СПУ данных?
Мне кажется, проще написать скрипт на WsShell (например) для сохранения из xls в csv. То есть скрипт будет имитировать нажатия клавиш, которые нажимал бы пользователь по инструкции.
Помнится, лет пять назад я писал подобный скрипт для 1с77, чтобы обновлять автоматически конфигурации, без участия программиста, и в общем получалось Но потом надобность в этом отпала. Рассказываю просто в качестве идеи, может быть, пригодится.
- Спасибо 0
Комментарий
-
Сообщение от VinnieThePOOH Посмотреть сообщениеА что будет, если формат файла поменяется? В любом случае, без программиста не обойтись.
Сообщение от VinnieThePOOH Посмотреть сообщениеМне кажется, проще написать скрипт на WsShell (например) для сохранения из xls в csv. То есть скрипт будет имитировать нажатия клавиш, которые нажимал бы пользователь по инструкции.
Сообщение от VinnieThePOOH Посмотреть сообщениеПомнится, лет пять назад я писал подобный скрипт для 1с77, чтобы обновлять автоматически конфигурации, без участия программиста, и в общем получалось Но потом надобность в этом отпала. Рассказываю просто в качестве идеи, может быть, пригодится.
- Спасибо 0
Комментарий
-
Сообщение от lubezniy Посмотреть сообщениеФормат не каждый день меняется даже в условиях отсутствия нормативных документов. Так что не считаю это проблемой.
Сообщение от lubezniy Посмотреть сообщениеА экзотические схемы оформления, разрешение экрана и прочие особенности этому никак не мешают? Сам ни разу так не пробовал.
Не сталкивался в этом плане с 7.7, а у 8.1/8.2 мне для этих целей командная строка понравилась больше, хоть и документирована она в официальных описаниях не очень хорошо.
- Спасибо 0
Комментарий
-
Сообщение от VinnieThePOOH Посмотреть сообщениеПроблема там в том, что с опен-офисом не так просто работать через OLE, как, например, с екселом. Я попробовал и понял, что трудозатраты несопоставими с эффектом (для меня). Но учитывая ваш объем работ, наверное, для вас нормально будет. Только я бы лучше работал с такими файлами через excel
Не понял ваш вопрос, что-то потерял мысль. Уточните. пожалуйста, о каких схемах оформления идет речь?
- Спасибо 0
Комментарий
-
Сообщение от VinnieThePOOH Посмотреть сообщениеПроблема там в том, что с опен-офисом не так просто работать через OLE, как, например, с екселом. Я попробовал и понял, что трудозатраты несопоставими с эффектом (для меня). Но учитывая ваш объем работ, наверное, для вас нормально будет. Только я бы лучше работал с такими файлами через excel
- Спасибо 0
Комментарий
-
Сообщение от lubezniy Посмотреть сообщениеЭкранных. Я так понимаю, даётся команда щёлкнуть мышью в позиции X,Y , которая может варьироваться в зависимости от положения окна, его размера, разрешения экрана, размеров шрифта и т. п. ?
С мышью так не работал, да и WsShell вроде бы не предназанчен для имитации работы с мышью.
Про опенофис и доступ к нему - возможно, сделали нормальный доступ по OLE, но раньше не было. То есть нельзя было просто открыть приложение как COM-объект, и далее пользоваться его свойствами и методами, наподобие Excel.Application
То есть нельзя было обратиться к книге как объекту, сослаться на лист и на нужную ячейку в нем по адресу.
- Спасибо 0
Комментарий
-
Сообщение от lubezniy Посмотреть сообщениеВ скрипте, который выложил upfr06, есть готовый пример на скриптовом Visual BASIC. При беглом просмотре не вижу в нём особой сложности, хотя, конечно, на Delphi его придётся переписать, и не исключены подводные камушки.
Возможно, в современных сборках что-то изменилось..
- Спасибо 0
Комментарий
-
Сообщение от 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,
- Спасибо 0
Комментарий
-
Сообщение от upfr06Хм.. мдя.. Формально вам правильно ответили. Выгрузка данных о которых идет речь, производится в ПО Статистика БД ПТК СПУ [Is2002-Ufa] v.2.4.59 в результате исполнения номерного запроса в файл xls. Вполне возможно, что в ТО ПФР просто нет доступа к [Is2002-Ufa], а есть только на регионе..
Указанный файл может быть выдан страхователю при его обращении в территориальный орган Пенсионного фонда по месту регистрации в качестве плательщика страховых взносов.
- Спасибо 0
Комментарий
-
Сообщение от 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;
- Спасибо 0
Комментарий
реклама
Свернуть
Комментарий