Дополнительные возможности

Существуют общие события, которые либо относятся к документам обоих направлений, либо к работе модуля в целом.

После обработки ленты событий

При чтении ленты событий происходит получение информации о новых документах и обновление старых, например изменение статуса.

Чтение ленты событий выполняется:

  • нажатием на кнопку «Обмен с сервером»,

  • выполнением регламентного задания вызовом соответствующего метода основного модуля.

Для получения таблицы идентификаторов документов, которые пришли в текущей партии событий (не более 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С, который отправляется из базы;

  • в документе, который отражает входящий электронный документ после создания или сопоставления.

../../_images/Commentariy.png

В событии ОбновитьКомментарийДокументаУчета определяется способ заполнения и записи в документ 1С, переданный в ПМ.

Пример заполнения комментария с датой отправки:

../../_images/Kod-Commentariy.png