Имя: Пароль:
1C
 
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
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"
и
работает если не прописана.

Но если не прописана то не выполняется проверка корректности данных.

Как выполнять выборку узлов с прописаной схемой ?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn