![]() |
![]() |
![]() |
|
v7plus.dll | ☑ | ||
---|---|---|---|---|
0
Bekas
25.05.04
✎
22:21
|
Скажите, а кроме v7plus.als есть какие-нибудь методические материалы?
|
|||
1
bazvan
25.05.04
✎
22:24
|
Твой диск.
|
|||
2
bazvan
25.05.04
✎
22:24
|
На ИТС какая то шняга была. С примерчиками всякими
|
|||
3
SnarkHunter
25.05.04
✎
22:27
|
(0)Много напрацювал?
|
|||
4
Bekas
25.05.04
✎
22:55
|
все примеры, что я встречал, про почту. а мне хочется почитать про использование HTTP
|
|||
5
Asmody
25.05.04
✎
22:58
|
(4) Есть описалово с одного из последних ИТС в pdf. 480Кб. Куда скинуть?
|
|||
6
Bekas
25.05.04
✎
23:01
|
у меня дома пследний - февральский. там оно есть?
|
|||
7
Bekas
25.05.04
✎
23:15
|
там рази поймешь по трезвому? лажа какая-то, а не ИТС...
может, кто на пальцах объяснит? послать на сайт команду и получить ответ. на сайте пхп-скрипты работают... |
|||
8
Волшебник
25.05.04
✎
23:17
|
О, PHP! Уважаю! :)
|
|||
9
Asmody
25.05.04
✎
23:25
|
Чем не устраивает
Получить(URL, Приемник, ТипПриемника) Помещает содержимое указанного ресурса в файл или указанную переменную, в зависимости отуказанного типа приемника. |
|||
10
Волшебник
25.05.04
✎
23:32
|
Вот про HTTP:
http://chin.dataltd.ru/index2.php?id=1c_http http://money.karagandy.com/update.shtml Вот про XML: http://chin.dataltd.ru/index2.php?id=1c_xml Вот про e-mail: Отправка почты черех v7plus (нашел через Яндекс :) http://www.perlscript.ru/v77_20.shtml |
|||
11
Bekas
25.05.04
✎
23:33
|
устраивает. я не знаю, в каком виде скрипт должен отдать информацию и как ее обработать.
Предполагаю что-то типа такого: URL="http://www.mysite.com?action=add&clientid=Клиент.Код&sum=100"; Получить(URL, MyVar, "String"); и обработать MyVar как строку? |
|||
12
Волшебник
25.05.04
✎
23:37
|
Работа с HTTP с помощью v7plus.dll:
====================================================== Иногда возникает потребность в получении (импортировании) тех или иных данных из Интернета либо с веб-сайта компании, содержащихся в html-страничках, с последующей обработкой в импортирующей программе. Такими данными могут быть сведения о номеклатуре, товарные запасы, цены на товары, курсы валют, сведения о погоде в конце концов. В роли импортирующей программы может выступать 1С. В качестве примера, рассмотрим задачу для получения курса валюты на заданную дату с сайта Центраьного Банка Российской Федерации. Превое, что нам нужно, это собственно узнать точный URL к страничке с необходимыми сведениями. Немного походив по сайту, такую страничку находим по адресу http://www.cbr.ru/currency_base/D_print.asp?date_req=datakursa. Собственно это не страничка, а скрипт, формирующий отчет о котировках валюты на заданную дату, передаваемую в datakursa. В качестве инструмента для работы с HTTP-протоколом будем использовать стандартную бибилиотеку v7plus.dll, поставляемую самой 1С и содержащую необходимый нам класс V7HttpReader. Данный класс, позволяет получить страничку с заданного адреса в виде "текста", который мы можем проанализировать на наличие нужной нам информации. Код, реализующий данный метод, довольно прост: Попытка Соединение= СоздатьОбъект("AddIn.V7HttpReader"); // используем запрос к версии для печати. Ответ меньше получается. Соединение.Получить("http://www.cbr.ru/currency_base/D_print.asp?date_req="+Стр,Результат,2); Соедиенение= 0; Если ПустоеЗначение(Результат) = 1 Тогда Предупреждение("Не получен ответ от интернет-ресурса www.cbr.ru"); Возврат; КонецЕсли; Поз= Найти(Результат,"Доллар США </td>"); ЕслиПоз= 0 Тогда Предупреждение("В ответе интернет-ресурса не найден курс доллара!"+РазделительСтрок+ "Попробуйте использовать просмотр по всем валютам."); Возврат; КонецЕсли; // просто вырезаем курс из html-файла Если Найти(Результат,"не зарегистрированы") > 0 Тогда Сообщить("На данную дату курсы валют не зарегистрированы","!!"); КонецЕсли; Результат= Прав(Результат,СтрДлина(Результат)-Поз-36); Поз= Найти(Результат, "<"); Результат= Лев(Результат,Поз-1); Курс=Результат; Исключение Предупреждение("Ошибка при создании объекта доступа к интернет-ресурсу"); Возврат; КонецПопытки; В переменной Стр передается дата курса. Необходимые нам данные о курсе доллара содержатся между последовательностью символов "Доллар США </td>" и "<", кои собственно и "отлавливаем" с помощью оператора Найти(). "Очищенный" результат заносим в переменную Курс. Естественно, чтобы определить точное местоположение нужных данных, желательно иметь хоть какое-то представление о HTML-форматировании. ========================================================== Источник: http://chin.dataltd.ru/index2.php?id=1c_http |
|||
13
Волшебник
25.05.04
✎
23:38
|
Работа с XML с помощью v7plus.dll (создание XML-файла):
====================================================== XML , как известно, один из языков разметки. Подробно о нем можно прочитать в книге и в Инете. С его помощью легко реализовать древовидную структуру хранения данных , а также задать жесткие правила построения дерева, что уменьшит ошибки, связанные с доступом к данным. Применительно к 1С с его помощью можно реализовать множество задач, в частности по документообороту внутри компании и с внешними корреспондентами, всевозможные переносы справочников и документов между конфигурациями, обмен данными с другими приложениями, поддерживающими формат XML. XML-документ вкратце можно представить следующим образом. Верхним в иерархии является корневой элемент. Все остальные элементы (кроме сведений о формате файла) являются вложенными по отношению к нему (подчиненными), назовем их ветви. Каждый элемент, в т.ч. и корневой поименован. Каждый элемент имеет атрибуты, может содержать данные, а также может иметь множество других вложенных в него элементов. В качестве примера разберем задачу по переносу приходно-кассовых ордеров и банковских выписок, формируемых оперативнм отделом с помощью ТиС в бухгалтерию. Код Вы можете посмотреть в ert-обработке. Данный пример показывает простые приемы работы со структурой XML-документа. Примечание: Конфигурации ТиС и Бухгалтерии - переделанные на основе типовых, поэтому какие-то поля и реквизиты данных могут отличаться от Ваших. Необходимо было обеспечить перенос сведений о поступлении денежных средств, формируемых оперативным отделом. Для этого предполагается выгружать из ТиС приходно кассовые ордера, выписки, а также справочники Контрагентов, Договоров и сведения о документах-основаниях. Справочник Номеклатуры выгрузке не подлежит, т.к. по учетной политике компании в бухгалтерии достаточно сведений о товародвижении только в разрезе 10-ти и 20-ти процентных ставках НДС на товар. Код с пояснениями: //Сначала проинициализируем компоненту v7plus, предоставляющую объекты для работы с XML: Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда Предупреждение("Компонента v7plus.dll не найдена!"); КонецЕсли; КонецЕсли; Анализатор = СоздатьОбъект("AddIn.XMLParser"); //Теперь начнем строить дерево документа. Заодно занесем служебную информацию о файле выгрузки в атрибуты корневого элемента Корень=Анализатор.СоздатьДокумент(); Данные =Корень.СоздатьПодчиненныйЭлемент("Данные"); Данные.УстановитьАтрибут("ИБ",КаталогИБ()); Данные.УстановитьАтрибут("Дата",Строка(РабочаяДата())); Данные.УстановитьАтрибут("Оператор",ИмяПользователя()); Примечание: Пусть Вас не смущает, что открыв XML-документ, Вы увидите, что визуально корневым элементом будет элемент Данные. Просто в процессе разбирательства с работой с XML я задал такие имена переменным и стал использовать их в последующих разработках. Просто мне так привычнее. //И создади две основные ветви Справочники и Документы Справочники=Данные.СоздатьПодчиненныйЭлемент("Справочники"); Документы=Данные.СоздатьПодчиненныйЭлемент("Документы"); // в общей ветке Справочники создадим ветку для справочника Контрагентов Клиенты=Справочники.СоздатьПодчиненныйЭлемент("Клиенты"); //А вот так заполняются элементы для справочников. Каждый реквизит справочника выносится в отдельный элемент дерева. Т.к. в данном задании выбрана схема синхронизации справочника Контрагентов по ИНН, то в значение элемента записываем ИНН, а для наглядности в атрибут элемента заносим наименование клиента К=СписокКлиентов.ПолучитьЗначение(х); Состояние("Выгружаются сведения по: " +К.Наименование); Клиент=Клиенты.СоздатьПодчиненныйЭлемент("Клиент"); Клиент.УстановитьАтрибут("Наименование",К.Наименование); Клиент.Значение=К.ИНН; // выгружаем все нужные реквизиты контрагента ПН=Клиент.СоздатьПодчиненныйЭлемент("ПолнНаименование"); ПН.Значение=К.ПолнНаименование; ВК=Клиент.СоздатьПодчиненныйЭлемент("ВидКонтрагента"); ВК.Значение=К.ВидКонтрагента.Идентификатор(); // и так далее по всем необходимым реквизитам, аналогично заполняется информация о документах в соответствии с разработанной схемой обмена с бухгалтерией. // Завершающие шаги и сохранение файла ИмяФайла= СтрЗаменить(Строка(ДатаВыгрузки)+Строка(ДатаВыгрузки1),".","") + ".xml"; ПапкаФайла= "C:\1C\Change\Sweet\"; Корень.Записать(ПапкаФайла+ИмяФайла); Полученный файл Вы можете посмотреть в Интернет Эксплорере или в любом другом просмотрщике xml-документов. =========================================================== Источник: http://chin.dataltd.ru/index2.php?id=1c_xml1 |
|||
14
Волшебник
25.05.04
✎
23:40
|
Работа с XML с помощью v7plus.dll (создание XML-файла):
=========================================================== В первой части статьи были рассмотрены простейшие приемы работы по созданию XML-документа. В этой части будут описаны способы получения данных. Основным моментом, на который я хотел бы обратить Ваше внимание, является следующее правило: сперва с помощью методов .ВыбратьУзел() или .ВыбратьУзлы() производится выборка узла/элемента, а затем с помощью методов соответственно .ПолучитьПодчиненныйПоНомеру() и .ПолучитьУзел() обеспечивается непосредственный доступ к узлам/элементам документа. Впрочем, здесь можно провести аналогию работы со справочниками и документами в 1С: сначала делаем выборку с помощью .ВыбратьЭлементы() или .ВыбратьДокументы(), а затем получаем сами объекты .ПолучитьЭлемент() или ПолучитьДокумент(). Оба приема используются в данном примере. Код с пояснениями: Инициализацию компоненты опустим. Для чтения она ничем не отличается. //создадим объект для доступа к xml-файлу, загрузим в него файл и получим ссылку на корневой элемент xml-документа. Напомню, что у нас он назван "Данные" ФайлДанных=Анализатор.СоздатьДокумент(); ФайлДанных.Загрузить(ФайлЭксп); ВсеУзлы=ФайлДанных.ВыбратьУзлы("Данные"); // получаем доступ к корневому узлу/элементу и читаем его атрибуты Данные=ВсеУзлы.ПолучитьУзел(0); Сообщить("Идет загрузка данных из базы: " +Данные.ПолучитьАтрибут("ИБ")); Сообщить("Выгрузка производилась: " +Данные.ПолучитьАтрибут("Дата")); Сообщить("Выгрузку произвел/произвела: " +Данные.ПолучитьАтрибут("Оператор")); Примечание: на данном этапе через переменную Данные мы имеем доступ к корневому узлу/элементу всего документа. // следующими операторами мы получаем доступ к двум основным ветвям: ветки Справочники и ветке Клиенты Справочники=Данные.ВыбратьУзел("Справочники"); Документы=Данные.ВыбратьУзел("Документы"); // "спускаемся" по иерархии глубже и получаем доступ к элементу Клиенты, Выписки и Приходники Клиенты=Справочники.ВыбратьУзел("Клиенты"); Выписки=Документы.ВыбратьУзел("Выписки"); Приходники=Документы.ВыбратьУзел("Приходники"); //если очень интересно сколько прийдется загружать Контрагентов, то можно воспользоваться следующей конструкцией Сообщить("Количество клиентов: " + Строка(Клиенты.КоличествоПодчиненных())); // организация перебора всех элементов узла Клиенты Длях= 1 ПоКлиенты.КоличествоПодчиненных() Цикл Клиент=Клиенты.ПолучитьПодчиненныйПоНомеру(х); ИНН=Клиент.Значение; ЕслиПустоеЗначение(ИНН) = 1 Тогда Сообщить("Ошибка. В файле выгрузки не задан ИНН клиента " +Клиент.ПолучитьАтрибут("Наименование"),"!!"); Продолжить; КонецЕсли; КонецЦикла; Как видите ничего сложного в работе с XML нет. Чтобы не запутаться перед началом работы по созданию той или иной схемы обмена желательно нарисовать/составить четкую структуру переносимых данных, определить какие данные и характеристики будут выгружаться и что к чему относится. Как раз для этого и предназначены "Схемы данных", но о них мы поговорим в слудующих статьях. =========================================================== Источник: http://chin.dataltd.ru/index2.php?id=1c_xml2 |
|||
15
Asmody
25.05.04
✎
23:41
|
(11)
ТипПриемника=1 - Значение переменной Приемник интерпретируется как путь к файлу, в который следует записать содержимое ответа сервера. ТипПриемника=2 - ответ сервера запоминается в переменной Приемник в виде строки. ТипПриемника=3 - переменная Приемник должна иметь тип объекта OLE-Automation, имплементирующего интерфейс IStream. Cодержимое ответа будет передано этому интерфейсу, способ обработки этих данных будет зависеть от реализации OLE-объек та. |
|||
16
Bekas
25.05.04
✎
23:55
|
Спасибо.
|
|||
17
vas
27.05.04
✎
11:28
|
Как с помощью 1С создать нормальную HTML страницу
|
|||
18
Bekas
27.05.04
✎
11:32
|
(17) HTML-страница, какая бы там ни было, есть ОБЫКНОВЕННЫЙ текстовый файл.
|
|||
19
SnarkHunter
27.05.04
✎
11:32
|
Критерии "нормальности" каковы?
|
|||
20
vas
27.05.04
✎
12:53
|
Критерии таковы...что в отчете то и в на странице...включая рисунки ...размеры таблиц текст...и.т.д.
|
|||
21
SnarkHunter
27.05.04
✎
12:54
|
(20)См. (18)
|
|||
22
vas
27.05.04
✎
13:00
|
Получается что только програмным способом...а готового экспорта случайно нет?...
|
|||
23
Bekas
30.06.04
✎
18:38
|
22: "сохранить как..." выбираешь тип HTML-документ
|
|||
24
427
30.06.04
✎
18:48
|
Бекас опять диск рекламирует.
|
|||
25
XML - ВыбратьУзлы
27.10.04
✎
19:48
|
Документ.ВыбратьУзлы("Данные/Документы/Документ_РасходнаяНакладная")
Не работает если если прописана схема а узле Данные xmlns="myshema.biz" и работает если не прописана. Но если не прописана то не выполняется проверка корректности данных. Как выполнять выборку узлов с прописаной схемой ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |