Дополнительные возможности
Существуют общие события, которые либо относятся к документам обоих направлений, либо к работе модуля в целом.
После обработки ленты событий
При чтении ленты событий происходит получение информации о новых документах и обновление старых, например изменение статуса.
Чтение ленты событий выполняется:
нажатием на кнопку «Обмен с сервером»,
выполнением регламентного задания вызовом соответствующего метода основного модуля.
Для получения таблицы идентификаторов документов, которые пришли в текущей партии событий (не более 100), используется ПослеОбработкиЛентыСобытий.
Идентификаторы могут пригодиться для выполнения методов API.
Пример сохранения данных о пользователе или подразделении, которым были переданы документы на согласование.
Для Каждого СтруктураИдентификаторов Из ИдентификаторыДокументов Цикл
Если ЗначениеЗаполнено(СтруктураИдентификаторов.ДокументЭДО) Тогда
ДокументЭДО = СтруктураИдентификаторов.ДокументЭДО;
Иначе
BoxId = СтруктураИдентификаторов.BoxId;
LetterId = СтруктураИдентификаторов.LetterId;
DocumentId = СтруктураИдентификаторов.DocumentId;
ДокументЭДО = ОсновнойМодуль.ЭДО_Диадок_Документы_ПолучитьДокумент(BoxId, LetterId, DocumentId);
КонецЕсли;
Если Не ЗначениеЗаполнено(ДокументЭДО) Тогда
Продолжить;
КонецЕсли;
РеквизитыДокумента = ОсновнойМодуль.ЭДО_ПолучитьРеквизитыДокумента(ДокументЭДО);
МаршрутизацияДокумента = ОсновнойМодуль.ЭДО_ПолучитьМаршрутизациюДокумента(ПараметрыСервиса, РеквизитыДокумента);
Если МаршрутизацияДокумента.Количество() > 0 Тогда
ДанныеМаршрутизации = МаршрутизацияДокумента[МаршрутизацияДокумента.ВГраница()];
AttachmentType = ДанныеМаршрутизации.AttachmentType;
Если AttachmentType = "ResolutionRequest" Тогда
TargetResolution = Неопределено;
TargetResolutionString = Неопределено;
Если ЗначениеЗаполнено(ДанныеМаршрутизации.User) И ЗначениеЗаполнено(ДанныеМаршрутизации.UserId) Тогда
TargetResolution = ДанныеМаршрутизации.UserId;
TargetResolutionString = ДанныеМаршрутизации.User;
ИначеЕсли ЗначениеЗаполнено(ДанныеМаршрутизации.Department) И ЗначениеЗаполнено(ДанныеМаршрутизации.DepartmentId) Тогда
TargetResolution = ДанныеМаршрутизации.DepartmentId;
TargetResolutionString = ДанныеМаршрутизации.Department;
КонецЕсли;
Если ЗначениеЗаполнено(TargetResolution) Тогда
ОсновнойМодуль.ЭДО_СправочникМенеджер_УстановитьЗначениеДопРеквизита(ДокументЭДО, "TargetResolution", TargetResolution, TargetResolutionString);
КонецЕсли;
ИначеЕсли AttachmentType = "Resolution"
Или AttachmentType = "ResolutionRequestDenial"
Или AttachmentType = "ResolutionRouteRemovalAttachment" Тогда
ОсновнойМодуль.ЭДО_СправочникМенеджер_УдалитьДопРеквизит(ДокументЭДО, "TargetResolution");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Истина;
При изменении статуса документа
Если для документов при смене статуса требуется вносить изменения, например в связанный документ 1С, тогда следует использовать функцию ПослеУстановкиСтатусаДокумента.
Функция выполняется после нажатия на кнопку «Обмен с сервером» и при отправке ответа по входящему документу.
Пример записи в комментарий отправленного документа 1С о том, что он подписан контрагентом:
ДокументДД = Параметры.ДокументДД;
Статус = Параметры.Статус;
Если Найти(Статус, "Подписан") > 0
И ДокументДД.Документ <> Неопределено Тогда
Документ1С = ДокументДД.Документ.ПолучитьОбъект();
Документ1С.Комментарий = "Подписан";
Документ1С.ОбменДанными.Загрузка = Истина;
Документ1С.Записать();
КонецЕсли;
Возврат Истина;
Переопределение типов Организации и Контрагентов
Для нетиповых конфигураций может потребоваться изменить тип значения Организации и Контрагентов. В том числе для запросов.
Функция ОпределитьТипЗначенияОбъекта предназначена для получения нужного типа по синониму.
Обращение к ней происходит в следующих случаях:
при открытии форм организаций и контрагентов в модуле,
при определении типов значений для отборов СКД и быстрых отборов,
при получении списка контрагентов,
при групповом сопоставлении контрагентов.
Типовой вариант функции:
Если Параметры.Синоним = "Организации" Тогда
Результат = "СправочникСсылка.Организации";
ИначеЕсли Параметры.Синоним = "Контрагенты" Тогда
Результат = "СправочникСсылка.Контрагенты";
Иначе
Результат = Неопределено;
КонецЕсли;
Фильтр контрагентов для приглашения
В форме списка контрагентов модуля есть возможность отправить приглашение контрагентам из списка 1С.
В раздел «Поиск и приглашение» попадают те контрагенты, с которыми нет партнерских отношений.
Часто в списке контрагентов 1С есть те, с кем уже нет взаимодействий.
Для возможности фильтровать такие варианты, существует функция ПолучитьКоличествоДокументовЗаПериод, которая определяет значение поля «ДокументовЗаПериод».
По умолчанию происходит оценка количества накладных с контрагентами за 3 месяца. Но этот период, а также состав документов для отбора, можно изменять.
Пример запроса для расчета количества документов «Реализация товаров и услуг»:
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РеализацияТоваровУслуг.Контрагент КАК Связь1,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслуг.Ссылка) КАК ДокументовЗаПериод
|ПОМЕСТИТЬ ВТ_Документы
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Проведен = ИСТИНА
| И РеализацияТоваровУслуг.Организация = &Организация
| И РеализацияТоваровУслуг.Дата >= &ДатаНачала
| И РеализацияТоваровУслуг.Контрагент В(&МассивКонтрагентов)
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Контрагент
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_Документы.Связь1 КАК Связь1,
| СУММА(ВТ_Документы.ДокументовЗаПериод) КАК ДокументовЗаПериод
|ИЗ
| ВТ_Документы КАК ВТ_Документы
|
|СГРУППИРОВАТЬ ПО
| ВТ_Документы.Связь1";
Заполнение комментария в документе 1С
Через настройки возможно заполнить комментарий:
в документе 1С, который отправляется из базы;
в документе, который отражает входящий электронный документ после создания или сопоставления.
В событии ОбновитьКомментарийДокументаУчета определяется способ заполнения и записи в документ 1С, переданный в ПМ.
Пример заполнения комментария с датой отправки: