ПодготовитьДанныеДляОтправкиВнутреннихДокументов

Синтаксис:

ПодготовитьДанныеДляОтправкиВнутреннихДокументов

Описание:

Обработчик события позволяет дополнить или переопределить список пакетов для отправки внутренних документов. Срабатывает один раз перед вызовом типового обработчика события. Для добавления пакетов в список на отправку подготовьте временные таблицы, а их имена добавьте в возвращаемое значение. Для отключения типовых пакетов выключите стандартную обработку события, подробнее в описании параметра «СтандартнаяОбработка».

Временные таблицы должны быть следующей структуры:
  • Документ (тип ДокументСсылка) — учетный документ, на основании которого формируется пакет.

  • Организация (тип СправочникСсылка) — ссылка на организацию, сопоставленную с ящиком отправителя.

  • ПодразделениеОтправитель (тип СправочникСсылка) — ссылка на сущность, сопоставленную с подразделением-отправителем.

  • ПодразделениеПолучатель (тип СправочникСсылка) — ссылка на сущность, сопоставленную с подразделением-получателем.

  • ДатаДокумента (тип Дата) — дата документа пакета.

  • НомерДокумента (тип Строка) — номер документа пакета.

  • СуммаДокумента (тип Число) — необязательный параметр, сумма документа.

  • ДопРеквизит<N> (тип Произвольный) — необязательный параметр, значение для вывода в дополнительную колонку № <N>, где N — от 1 до 5.

Все поля, кроме описанных выше, игнорируются. Требования к порядку полей запроса отсутствуют. Допускается использовать произвольные параметры запросов. Допускается создание промежуточных временных таблиц, но обеспечьте их уничтожение самостоятельно.

Важно

  1. Имя временной таблицы должно быть уникальным. Поэтому рекомендуется добавлять какой-нибудь префикс к имени таблицы.

  2. Нельзя использовать префикс «Диадок_» в имени временных таблиц. Этот префикс зарезервирован для таблиц, формируемых модулем.

  3. Опция «Отправлять непроведенные документы» игнорируется в типовых обработчиках событий.

Входные параметры:

ПараметрыСобытия (тип Структура)

Элементы структуры:

  • ВидПакета (тип Строка) — идентификатор вида пакета. Например, «ID_УПД_ВНУТР».

  • НачалоПериода (тип Дата) — начало периода для выборки данных.

  • КонецПериода (тип Дата) — конец периода для выборки данных.

  • СтандартнаяОбработка (тип Булево) — возвращаемый параметр. Ложь, чтобы отключить типовой обработчик.

  • МенеджерВременныхТаблиц (тип МенеджерВременныхТаблиц) — возвращаемый параметр. Содержит таблицы:

    • ВТ_УчастникиВнутреннегоДокументооборота — содержит колонки:

    • Организация1С (тип СправочникСсылка) — сущность, сопоставленная с ящиком Диадока. Например, элементы справочника «Организации».

    • Подразделение1С (тип СправочникСсылка) — сущность, сопоставленная с подразделением в ящике Диадока. Например, элементы справочников «Подразделения» или «Склады (места хранения)».

    • ВТ_НастройкиВнутреннегоДокументооборота — содержит колонки:

    • Организация1С (тип СправочникСсылка) — сущность, сопоставленная с ящиком Диадока.

    • ВидПакетаID (тип Строка) — идентификатор вида пакета.

Возвращает:

Массив из Строка — имена добавленных временных таблиц с данными пакетов.

Пример:

Функция Обработчик_ПодготовитьДанныеДляОтправкиВнутреннихДокументов(ПараметрыСобытия)

       //ПараметрыСобытия.СтандартнаяОбработка = Ложь;

       ИменаТаблиц = Новый Массив;

       ВидПакетаID = ПараметрыСобытия.ВидПакета;
       МенеджерВТ = ПараметрыСобытия.МенеджерВременныхТаблиц;
       ДатаНач = ПараметрыСобытия.НачалоПериода;
       ДатаКон = ПараметрыСобытия.КонецПериода;

       Если ВидПакетаID = "ID_УПД_ВНУТР" Тогда

               ВТ_ПеремещениеОС = ДобавитьТаблицу_ПеремещениеОС(МенеджерВТ, ДатаНач, ДатаКон);
               ИменаТаблиц.Добавить(ВТ_ПеремещениеОС);

               ВТ_ПередачаОборудования = ДобавитьТаблицу_ПеремещениеТоваров(МенеджерВТ, ДатаНач, ДатаКон);
               ИменаТаблиц.Добавить(ВТ_ПередачаОборудования);

       КонецЕсли;

       Возврат ИменаТаблиц;

КонецФункции

// Формирует временную таблицу для отправки электронных документов на основании документа "Перемещение ОС".
// ВНИМАНИЕ: ЭТО ТОЛЬКО ПРИМЕР РЕАЛИЗАЦИИ.
//
// Параметры:
//   МенеджерВТ — МенеджерВременныхТаблиц — хранилище временных таблиц
//   ДатаНач — Дата — Начало периода
//   ДатаКон — Дата — Конец периода
//
// Возвращаемое значение:
//   Строка — имя временной таблицы для отправки документов на основании перемещений ОС
//
Функция ДобавитьТаблицу_ПеремещениеОС(МенеджерВТ, ДатаНач, ДатаКон)

       Запрос = Новый Запрос;
       // Для запроса следует установить менеджер временных таблиц из параметров события
       Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
 // Параметры НачалоПериода и КонецПериода определяют интервал выборки данных, установленный пользователем в списке на отправку
       Запрос.УстановитьПараметр("НачалоПериода", ДатаНач);
       Запрос.УстановитьПараметр("КонецПериода", ДатаКон);
 // можно использовать произвольные параметры
       Запрос.УстановитьПараметр("МойПараметр", Истина);

       Запрос.Текст =
       "ВЫБРАТЬ РАЗРЕШЕННЫЕ
       // Обязательные поля: Организация, ПодразделениеОтправитель, ПодразделениеПолучатель, Документ, НомерДокумента, ДатаДокумента
       |       ТаблицаДокументов.Организация КАК Организация,
       |       ВТ_Отправители.Подразделение1С КАК ПодразделениеОтправитель,
       |       ВТ_Получатели.Подразделение1С КАК ПодразделениеПолучатель,
       |       ТаблицаДокументов.Номер КАК НомерДокумента,
       |       ТаблицаДокументов.Дата КАК ДатаДокумента,
       |       ТаблицаДокументов.Ссылка КАК Документ,
       // Необязательные поля (могут отсутствовать в формируемой таблице):
       // СуммаДокумента, ДопРеквизит1, ДопРеквизит2, ДопРеквизит2, ДопРеквизит3, ДопРеквизит4, ДопРеквизит5
       |       0 КАК СуммаДокумента,
       |       ТаблицаДокументов.Ответственный КАК ДопРеквизит2,
       // Можно добавлять и любые другие поля, но они будут проигнорированы в итоговой выборке
       |       ТаблицаДокументов.СобытиеОС КАК СобытиеОС,
       |       ТаблицаДокументов.НачислениеАмортизации КАК НачислениеАмортизации
       // Эту таблицу модуль будет использовать для вывода данных в список на отправку.
       |ПОМЕСТИТЬ Кастом_ПеремещениеОС
       |ИЗ
       |       Документ.ПеремещениеОС КАК ТаблицаДокументов
       //              Первое соединение, чтобы исключить из выборки документы, у которых не сопоставлено подразделение—отправитель
       |               ЛЕВОЕ СОЕДИНЕНИЕ ВТ_УчастникиВнутреннегоДокументооборота КАК ВТ_Отправители
       |               ПО ТаблицаДокументов.Организация = ВТ_Отправители.Организация1С
       |                       И ТаблицаДокументов.ПодразделениеОрганизации = ВТ_Отправители.Подразделение1С
       //              Второе соединение с той же таблицей, чтобы исключить из выборки документы, у которых не сопоставлено подразделение—получатель
       |               ЛЕВОЕ СОЕДИНЕНИЕ ВТ_УчастникиВнутреннегоДокументооборота КАК ВТ_Получатели
       |               ПО ТаблицаДокументов.Организация = ВТ_Получатели.Организация1С
       |                       И ТаблицаДокументов.ПодразделениеПолучатель = ВТ_Получатели.Подразделение1С
       |ГДЕ
       |       ТаблицаДокументов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
       |       И НЕ ВТ_Отправители.Подразделение1С ЕСТЬ NULL
       |       И НЕ ВТ_Получатели.Подразделение1С ЕСТЬ NULL
       // Можно использовать собственные параметры запроса
       |       И &МойПараметр
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       // Можно определять любые временные таблицы
       |ВЫБРАТЬ ПЕРВЫЕ 1
       |       ИСТИНА КАК Поле1
       |ПОМЕСТИТЬ Кастом_ПростоДляПримера
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       // Служебные временные таблицы следует удалять самостоятельно
       |УНИЧТОЖИТЬ Кастом_ПростоДляПримера";

       Запрос.ВыполнитьПакет();

       // Имя сформированной таблицы необходимо добавить в ответ функции "ПодготовитьДанныеДляОтправкиВнутреннихДокументов"
       // ВАЖНО 1: Имя временной таблицы должно быть уникальным. Поэтому рекомендуется добавлять какой—нибудь префикс к имени таблицы
       // ВАЖНО 2: Нельзя использовать префикс "Диадок_" в имени временных таблиц. Этот префикс зарезервирован для таблиц, формируемых модулем
       Возврат "Кастом_ПеремещениеОС";

КонецФункции

Функция ДобавитьТаблицу_ПеремещениеТоваров(МенеджерВТ, ДатаНач, ДатаКон)

       Запрос = Новый Запрос;
       Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
       Запрос.УстановитьПараметр("НачалоПериода", ДатаНач);
       Запрос.УстановитьПараметр("КонецПериода", ДатаКон);

       Запрос.Текст =
       "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
       |       ТаблицаДокументов.Организация КАК Организация,
       |       ВТ_Отправители.Подразделение1С КАК ПодразделениеОтправитель,
       |       ВТ_Получатели.Подразделение1С КАК ПодразделениеПолучатель,
       |       ТаблицаДокументов.Номер КАК НомерДокумента,
       |       ТаблицаДокументов.Дата КАК ДатаДокумента,
       |       0 КАК СуммаДокумента,
       |       ТаблицаДокументов.Ссылка КАК Документ
       |ПОМЕСТИТЬ Кастом_ПеремещениеТоваров
       |ИЗ
       |       Документ.ПеремещениеТоваров КАК ТаблицаДокументов
       |               ЛЕВОЕ СОЕДИНЕНИЕ ВТ_УчастникиВнутреннегоДокументооборота КАК ВТ_Отправители
       |               ПО ТаблицаДокументов.Организация = ВТ_Отправители.Организация1С
       |                       И ТаблицаДокументов.СкладОтправитель = ВТ_Отправители.Подразделение1С
       |               ЛЕВОЕ СОЕДИНЕНИЕ ВТ_УчастникиВнутреннегоДокументооборота КАК ВТ_Получатели
       |               ПО ТаблицаДокументов.Организация = ВТ_Получатели.Организация1С
       |                       И ТаблицаДокументов.СкладПолучатель = ВТ_Получатели.Подразделение1С
       |ГДЕ
       |       ТаблицаДокументов.Проведен
       |       И ТаблицаДокументов.Дата МЕЖДУ &НачалоПериода И &КонецПериода
       |       И НЕ ВТ_Отправители.Подразделение1С ЕСТЬ NULL
       |       И НЕ ВТ_Получатели.Подразделение1С ЕСТЬ NULL";

       Запрос.Выполнить();

       Возврат "Кастом_ПеремещениеТоваров";

КонецФункции