Внешний интерфейс обработки - API — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
Строка 9: Строка 9:
 
ВО = ВнешниеОбработки.Создать("d:\user\bronfeld\ВнешняяОбработка2\Sbis1C.epf");
 
ВО = ВнешниеОбработки.Создать("d:\user\bronfeld\ВнешняяОбработка2\Sbis1C.epf");
 
</source>
 
</source>
2. Получаем форму главного окна
+
2. Получаем форму "Внешний интерфейс"
 
<source lang="1C">
 
<source lang="1C">
ГлавноеОкно = ВО.ПолучитьФорму("ФормаГлавноеОкно");
+
ВИ = ВО.ПолучитьФорму("ВнешнийИнтерфейс");
 
</source>
 
</source>
 
'''Управляемое приложение'''
 
'''Управляемое приложение'''
Строка 19: Строка 19:
 
ВО = ВнешниеОбработки.Создать( "d:\user\bronfeld\ВнешняяОбработка2\Sbis1C_UF.epf", Ложь );
 
ВО = ВнешниеОбработки.Создать( "d:\user\bronfeld\ВнешняяОбработка2\Sbis1C_UF.epf", Ложь );
 
</source>
 
</source>
2. Получаем форму главного окна (выполняется на клиенте)
+
2. Получаем форму "Внешний интерфейс"(выполняется на клиенте)
 
<source lang="1C">
 
<source lang="1C">
ГлавноеОкно = ПолучитьФорму("ВнешняяОбработка.СБИС.Форма.ФормаГлавноеОкно");
+
ВИ = ПолучитьФорму("ВнешняяОбработка.СБИС.Форма.ВнешнийИнтерфейс");
 
</source>
 
</source>
 
'''Обычное и управляемое приложения'''
 
'''Обычное и управляемое приложения'''
Строка 27: Строка 27:
 
3. Вызываем функцию отправки документов
 
3. Вызываем функцию отправки документов
 
<source lang="1C">
 
<source lang="1C">
ГлавноеОкно.сбисОтправкаИзвне(СписокСтрок);
+
Результат = ВИ.сбисОтправка(СписокСтрок, ДополнительныеПараметры);
 
</source>
 
</source>
 
СписокСтрок – список значений. Каждое значение – структура с полем «СоставПакета».  
 
СписокСтрок – список значений. Каждое значение – структура с полем «СоставПакета».  
Строка 58: Строка 58:
 
СписокСтрок.Добавить(Новый Структура("СоставПакета",СоставПакета));
 
СписокСтрок.Добавить(Новый Структура("СоставПакета",СоставПакета));
 
</source>
 
</source>
 +
 +
 +
ДополнительныеПараметры - необязательный параметр. Структура с полями, аналогичными полям структуры Кэш.Парам в обработке. Если передается, то поля в Кэш.парам перезаписываются полями из переданной структуры. Например, можно передать параметры авторизации:
 +
<source lang="1C">
 +
ДополнительныеПараметры = Новый Структура("ВходПоСертификату,Сертификат", Истина, "65455636впав");
 +
 +
Если ДополнительныеПараметры не заполнены, то параметры авторизации должны быть сохранены путем предварительного запуска обработки в интерфейсе 1С предприятия под тем же пользователем, под которым будет происходить вызов функций внешнего интерфейса.
 +
 +
</source>
 +
 +
Функция возвращает структуру с результатами отправки либо текст ошибки.
  
 
=Открытие карточки электронного документа=
 
=Открытие карточки электронного документа=
Строка 105: Строка 116:
 
ВО = ВнешниеОбработки.Создать("d:\user\bronfeld\ВнешняяОбработка2\Sbis1C.epf");
 
ВО = ВнешниеОбработки.Создать("d:\user\bronfeld\ВнешняяОбработка2\Sbis1C.epf");
 
</source>
 
</source>
2. Получаем форму главного окна
+
2. Получаем форму "Внешний интерфейс"
 
<source lang="1C">
 
<source lang="1C">
ГлавноеОкно = ВО.ПолучитьФорму("ФормаГлавноеОкно");
+
ВИ = ВО.ПолучитьФорму("ВнешнийИнтерфейс");
 
</source>
 
</source>
 
'''Управляемое приложение'''
 
'''Управляемое приложение'''
Строка 115: Строка 126:
 
ВО = ВнешниеОбработки.Создать( "d:\user\bronfeld\ВнешняяОбработка2\Sbis1C_UF.epf", Ложь );
 
ВО = ВнешниеОбработки.Создать( "d:\user\bronfeld\ВнешняяОбработка2\Sbis1C_UF.epf", Ложь );
 
</source>
 
</source>
2. Получаем форму главного окна (выполняется на клиенте)
+
2. Получаем форму "Внешний интерфейс" (выполняется на клиенте)
 
<source lang="1C">
 
<source lang="1C">
ГлавноеОкно = ПолучитьФорму("ВнешняяОбработка.СБИС.Форма.ФормаГлавноеОкно");
+
ВИ = ПолучитьФорму("ВнешняяОбработка.СБИС.Форма.ВнешнийИнтерфейс");
 
</source>
 
</source>
 
'''Обычное и управляемое приложения'''
 
'''Обычное и управляемое приложения'''
  
3. Заполняем параметры фильтра. По указанным параметрам будут запрашиваться документы с online.sbis.ru для сопоставления с документами в 1С.
+
3. Заполняем параметры фильтра (не обязательно).
 +
Фильтр - структура. Может содержать поля, одноименные полям фильтра на главном окне: ФильтрДатаНач, ФильтрДатаКнц, ФильтрОрганизация, ФильтрКонтрагент. По указанным параметрам будут запрашиваться документы с online.sbis.ru для сопоставления с документами в 1С.
 +
 
 +
4. Вызываем функцию сопоставления
 
<source lang="1C">
 
<source lang="1C">
Фильтр = Новый Структура();
+
Результат = ВИ.сбисСопоставление(Фильтр, ДополнительныеПараметры);
Фильтр.Вставить( "ДатаС", Формат(ДатаНач,"ДФ=""дд.ММ.гггг ЧЧ.мм.сс""") );
 
Фильтр. Вставить ( "РазмерСтраницы",ЗаписейНаСтранице );
 
Фильтр. Вставить ( "ТипРеестра", "Входящие" );
 
 
</source>
 
</source>
ДатаНач – дата, с которой запрашиваются документы с сервера.
+
Если Фильтр не заполнен, то передаем пустую структуру. В этом случае для сопоставления будут запрашиваться все документы, начиная с последней даты сопоставления по текущую дату. Последняя дата сопоставления записывается в файл сбисПараметры.xml в каталоге настроек.
 +
 
 +
ДополнительныеПараметры - необязательный параметр (описан в разделе Отправка документов)
 +
 
 +
Функция возвращает структуру с полем "СопоставленныеДокументы".
 +
 
 +
СопоставленныеДокументы - массив структур. Каждая структура содержит Документ 1С, идентификаторы пакета, вложения и статус документа в СБИС.
  
ЗаписейНаСтранице – количество документов, возвращаемых с сервера за один запрос.
 
  
4. Вызываем функцию сопоставления из главного окна
 
<source lang="1C">
 
ГлавноеОкно.СопоставитьДокументыИзвне(Фильтр);
 
</source>
 
  
 
=Утверждение документов=
 
=Утверждение документов=
Утверждение полученных документов также можно выполнить, не запуская обработку. Например, можно утвердить полученные документы, которые однозначно сопоставляются с документами 1С.  
+
Утверждение полученных документов также можно выполнить, не запуская обработку. Например, можно утвердить полученные документы, которые однозначно сопоставились с документами 1С.
 +
Документы можно не только утвердить, но и выполнить любое другое действие, не требующее ввода комментария.  
  
 
Для утверждения документов выполняем следующие действия:
 
Для утверждения документов выполняем следующие действия:
Строка 144: Строка 157:
 
1. Подготовительные действия: пункты 1,2 из раздела [[#Сопоставление документов|«Сопоставление документов»]]
 
1. Подготовительные действия: пункты 1,2 из раздела [[#Сопоставление документов|«Сопоставление документов»]]
  
2. Вызываем функцию для формирования всех данных, необходимых для работы обработки
+
2. Вызываем функцию выполнения команды
 
<source lang="1C">
 
<source lang="1C">
Кэш = ГлавноеОкно.ПриОткрытииИзвне();
+
Результат = ВИ.сбисВыполнитьКоманду(МассивИд, ИмяКоманды, ДополнительныеПараметры);
 
</source>
 
</source>
3. Для каждого документа, который необходимо утвердить, вызываем функцию утверждения
+
МассивИд - массив, содержащий идентификаторы пакетов документов.
<source lang="1C">
+
 
Кэш. Интеграция.сбисВыполнитьКоманду(Кэш,ДокументСБИС,"Утвердить")
+
ИмяКоманды - название действия, которое необходимо выполнить с указанными пакетами, например, "Утвердить".
</source>
+
 
ДокументСБИС – структура документа в формате СБИС
+
ДополнительныеПараметры - необязательный параметр (описан в разделе Отправка документов)
 +
 
 +
 
 +
Результат - структура с полем РезультатВыполнения.
 +
 
 +
РезультатВыполнения - массив структур, содержащих идентификатор пакета и результат выполнения команды (истина/Ложь).
  
 
=Обработка служебных документов=
 
=Обработка служебных документов=
Строка 159: Строка 177:
 
1. Подготовительные действия: пункты 1,2 из раздела [[#Сопоставление документов|«Сопоставление документов»]]
 
1. Подготовительные действия: пункты 1,2 из раздела [[#Сопоставление документов|«Сопоставление документов»]]
  
2. Вызываем функцию для формирования всех данных, необходимых для работы обработки
+
2. Вызываем функцию обработки служебных
 
<source lang="1C">
 
<source lang="1C">
Кэш = ГлавноеОкно.ПриОткрытииИзвне();
+
ВИ.сбисОбработкаСлужебныхДокументов(ДополнительныеПараметры);
</source>
 
3. Вызываем обработку служебных документов
 
<source lang="1C">
 
Кэш.Интеграция.ОбработкаСлужебныхДокументов(Кэш);
 
 
</source>
 
</source>
 +
 +
ДополнительныеПараметры - необязательный параметр (описан в разделе Отправка документов)
 +
  
 
=Обновление статусов документов=
 
=Обновление статусов документов=
Строка 173: Строка 190:
 
1. Подготовительные действия: пункты 1,2 из раздела [[#Сопоставление документов|«Сопоставление документов»]]
 
1. Подготовительные действия: пункты 1,2 из раздела [[#Сопоставление документов|«Сопоставление документов»]]
  
2. Вызываем функцию для формирования всех данных, необходимых для работы обработки
+
2. Вызываем функцию обновления статусов документов
 
<source lang="1C">
 
<source lang="1C">
Кэш = ГлавноеОкно.ПриОткрытииИзвне();
+
ВИ.сбисОбновлениеСтатусов(ДополнительныеПараметры);
</source>
 
3. Вызываем функцию обработки статусов
 
<source lang="1C">
 
Кэш.Интеграция.ПолучитьСписокИзменений(Кэш);
 
 
</source>
 
</source>
 +
 +
ДополнительныеПараметры - необязательный параметр (описан в разделе Отправка документов)
 +
  
 
=Перемещение документов между этапами=
 
=Перемещение документов между этапами=

Версия 11:15, 30 мая 2016

Функционал внешней обработки можно использовать извне, то есть, не запуская саму обработку, а просто вызывая из нее определенные методы. Таким образом можно осуществлять формирование и предварительный просмотр пакета электронных документов, отправку документов, сопоставление электронных документов с документами 1С, утверждение документов, обработку служебных документов и обновление статусов.

Отправка документов

Для отправки документов из 1С в электронном виде без запуска внешней обработки необходимо лишь определиться, какие документы будем отправлять, и выполнить описанные ниже действия. Первые два пункта отличаются для обычного и управляемого приложений, третий – одинаковый.

Обычное приложение

1. Получаем внешнюю обработку

ВО = ВнешниеОбработки.Создать("d:\user\bronfeld\ВнешняяОбработка2\Sbis1C.epf");

2. Получаем форму "Внешний интерфейс"

ВИ = ВО.ПолучитьФорму("ВнешнийИнтерфейс");

Управляемое приложение

1. Получаем внешнюю обработку (выполняется на сервере)

ВО = ВнешниеОбработки.Создать( "d:\user\bronfeld\ВнешняяОбработка2\Sbis1C_UF.epf", Ложь );

2. Получаем форму "Внешний интерфейс"(выполняется на клиенте)

ВИ = ПолучитьФорму("ВнешняяОбработка.СБИС.Форма.ВнешнийИнтерфейс");

Обычное и управляемое приложения

3. Вызываем функцию отправки документов

Результат = ВИ.сбисОтправка(СписокСтрок, ДополнительныеПараметры);

СписокСтрок – список значений. Каждое значение – структура с полем «СоставПакета».

СоставПакета – список значений. Каждое значение может быть одним из двух типов:

  • Ссылка на документ 1С. В представление можно записать название файла настроек для данного документа. Если не указано, то будет использован файл настроек, соответствующий имени документа в конфигураторе. Можно указывать только документы, для которых есть файл настроек. Если хотя бы для одного документа из состава пакета не будет файла настроек, то весь пакет не будет сформирован и отправлен.
  • Строка с абсолютным путем к файлу (используется, если нужно отправить неформализованные вложения).

Первое вложение пакета должно быть ссылкой на документ 1С, т.к. по нему будут определяться отправитель и получатель пакета.

// Пример формирования списка документов для отправки

СписокСтрок = Новый СписокЗначений;

СоставПакета = Новый СписокЗначений;

СоставПакета.Добавить(Документы.РеализацияТоваровУслуг.НайтиПоНомеру("00000000031", ТекущаяДата()));

СоставПакета.Добавить(Документы.СчетФактураВыданный.НайтиПоНомеру("000000000019", ТекущаяДата()));

СоставПакета.Добавить("C:\Документы\Соглашение с ООО Солнышко.doc");

СписокСтрок.Добавить(Новый Структура("СоставПакета",СоставПакета));

СоставПакета = Новый СписокЗначений;

СоставПакета.Добавить(Документы.РеализацияТоваровУслуг.НайтиПоНомеру("00000000032", ТекущаяДата()));

СписокСтрок.Добавить(Новый Структура("СоставПакета",СоставПакета));


ДополнительныеПараметры - необязательный параметр. Структура с полями, аналогичными полям структуры Кэш.Парам в обработке. Если передается, то поля в Кэш.парам перезаписываются полями из переданной структуры. Например, можно передать параметры авторизации:

ДополнительныеПараметры = Новый Структура("ВходПоСертификату,Сертификат", Истина, "65455636впав");

Если ДополнительныеПараметры не заполнены, то параметры авторизации должны быть сохранены путем предварительного запуска обработки в интерфейсе 1С предприятия под тем же пользователем, под которым будет происходить вызов функций внешнего интерфейса.

Функция возвращает структуру с результатами отправки либо текст ошибки.

Открытие карточки электронного документа

Данный механизм используется при отправке документов непосредственно из карточки документа 1С по кнопке «Печать».

Обычное приложение

Для формирования пакета электронных документов и открытия окна предварительного просмотра необходимо выполнить следующие действия:

1. Получаем внешнюю обработку

ВО = ВнешниеОбработки.Создать("d:\user\bronfeld\ВнешняяОбработка2\Sbis1C.epf");

2. Вызываем функцию печати из обработки

ВО.Печать(Документ1С);

Документ1С – ссылка на документ 1С. Можно передавать документы только определенных типов, для которых в каталоге настроек внешней обработки есть файлы настроек с параметром «ЗапросСпискаДокументов». В запросе определяется состав пакета документов, который будет сформирован и открыт для предварительного просмотра.

Управляемое приложение

Необходимо выполнить следующие действия:

1. Получаем внешнюю обработку

ВО = ВнешниеОбработки.Создать("d:\user\bronfeld\ВнешняяОбработка2\Sbis1C_UF.epf", Ложь);

В параметре БезопасныйРежим указываем Ложь.

Данный код выполняется на сервере.

Следующие пункты выполняются на клиенте.

2. Получаем форму главного окна

ГлавноеОкно = ПолучитьФорму("ВнешняяОбработка.СБИС.Форма.ФормаГлавноеОкно");

3. Вызываем функцию печати из главного окна

ГлавноеОкно.Печать("", МассивДокументов);

МассивДокументов – массив с одним элементом – ссылкой на документ 1С.

Сопоставление документов

Документы, полученные в электронном виде можно автоматически сопоставить с документами, которые уже заведены в 1С, не запуская внешнюю обработку. Для этого необходимо выполнить следующие действия:

Обычное приложение

1. Получаем внешнюю обработку

ВО = ВнешниеОбработки.Создать("d:\user\bronfeld\ВнешняяОбработка2\Sbis1C.epf");

2. Получаем форму "Внешний интерфейс"

ВИ = ВО.ПолучитьФорму("ВнешнийИнтерфейс");

Управляемое приложение

1. Получаем внешнюю обработку (выполняется на сервере)

ВО = ВнешниеОбработки.Создать( "d:\user\bronfeld\ВнешняяОбработка2\Sbis1C_UF.epf", Ложь );

2. Получаем форму "Внешний интерфейс" (выполняется на клиенте)

ВИ = ПолучитьФорму("ВнешняяОбработка.СБИС.Форма.ВнешнийИнтерфейс");

Обычное и управляемое приложения

3. Заполняем параметры фильтра (не обязательно). Фильтр - структура. Может содержать поля, одноименные полям фильтра на главном окне: ФильтрДатаНач, ФильтрДатаКнц, ФильтрОрганизация, ФильтрКонтрагент. По указанным параметрам будут запрашиваться документы с online.sbis.ru для сопоставления с документами в 1С.

4. Вызываем функцию сопоставления

Результат = ВИ.сбисСопоставление(Фильтр, ДополнительныеПараметры);

Если Фильтр не заполнен, то передаем пустую структуру. В этом случае для сопоставления будут запрашиваться все документы, начиная с последней даты сопоставления по текущую дату. Последняя дата сопоставления записывается в файл сбисПараметры.xml в каталоге настроек.

ДополнительныеПараметры - необязательный параметр (описан в разделе Отправка документов)

Функция возвращает структуру с полем "СопоставленныеДокументы".

СопоставленныеДокументы - массив структур. Каждая структура содержит Документ 1С, идентификаторы пакета, вложения и статус документа в СБИС.


Утверждение документов

Утверждение полученных документов также можно выполнить, не запуская обработку. Например, можно утвердить полученные документы, которые однозначно сопоставились с документами 1С. Документы можно не только утвердить, но и выполнить любое другое действие, не требующее ввода комментария.

Для утверждения документов выполняем следующие действия:

1. Подготовительные действия: пункты 1,2 из раздела «Сопоставление документов»

2. Вызываем функцию выполнения команды

Результат = ВИ.сбисВыполнитьКоманду(МассивИд, ИмяКоманды, ДополнительныеПараметры);

МассивИд - массив, содержащий идентификаторы пакетов документов.

ИмяКоманды - название действия, которое необходимо выполнить с указанными пакетами, например, "Утвердить".

ДополнительныеПараметры - необязательный параметр (описан в разделе Отправка документов)


Результат - структура с полем РезультатВыполнения.

РезультатВыполнения - массив структур, содержащих идентификатор пакета и результат выполнения команды (истина/Ложь).

Обработка служебных документов

Для обработки служебных документов выполняем следующие действия:

1. Подготовительные действия: пункты 1,2 из раздела «Сопоставление документов»

2. Вызываем функцию обработки служебных

ВИ.сбисОбработкаСлужебныхДокументов(ДополнительныеПараметры);

ДополнительныеПараметры - необязательный параметр (описан в разделе Отправка документов)


Обновление статусов документов

Для обновления статусов документов выполняем следующие действия:

1. Подготовительные действия: пункты 1,2 из раздела «Сопоставление документов»

2. Вызываем функцию обновления статусов документов

ВИ.сбисОбновлениеСтатусов(ДополнительныеПараметры);

ДополнительныеПараметры - необязательный параметр (описан в разделе Отправка документов)


Перемещение документов между этапами

Для перемещения документа на следующий этап выполняем следующие действия:

1. Подготовительные действия: пункты 1,2 из раздела «Сопоставление документов»

2. Вызываем функцию для формирования всех данных, необходимых для работы обработки

Кэш = ГлавноеОкно.ПриОткрытииИзвне();

3. Вызываем функцию получения документа (заранее знаем его идентификатор Ид)

Документ = Кэш.Интеграция.ПрочитатьДокумент(Кэш,Ид)

4. Записываем действие которое собираемся выполнить для документа (какой переход будет сделан для документа)

Действие = Новый Структура; 		                   	// Готовим Действие (переход с текущего этапа документооборота)
Для каждого Переход Из Документ.Этап[0].Действие Цикл 	        // Перебираем возможные переходы для документа
	Если Переход.Название = НазваниеНужногоДействия Тогда   // Ищем среди них такой переход который нам нужен
		Действие.Вставить("Состав",Переход);          	// Если находим добавляем в объект Действие
	КонецЕсли;
КонецЦикла

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

Исполнитель = Новый Структура;
Исполнитель.Вставить("Имя","Глеб");
Исполнитель.Вставить("Фамилия","Никифоров");
Исполнитель.Вставить("Отчество","Станиславович");
Действие.Состав.Вставить("Исполнитель",Исполнитель);

5. Выполняем действие (передвигаем документ на следующий этап)

Этап = Документ.Этап[0];
Действие = Действие.Состав;
Комментарий = "Если обязателен для выполнения перехода, то нужно заполнить";
НазваниеПакета = "";
Кэш.Интеграция.сбисВыполнитьДействие(Кэш, Документ, Этап, Действие,Комментарий,НазваниеПакета);