Была доработана процедура автоматической передачи документов AutoSendDoc. Теперь можно настроить две и более автоматических передачи, в два и более филиала...

Ранее значения параметров функции AutoSendDoc (пути, даты и проч...) брались из параметров модуля "Приемо-передачи", теперь можно вызывать функцию

AutoSendDoс, передавая ключевые параметры напрямую.

Проиллюстрируем возможности этой функции на примере.

Предположим, что у нас имеется головное предприятие холдинга "Торговый дом" и два производственных филиала. Нам надо реализовать две автоматических

передачи документов:

1. Каждый день в 19 часов передавать все принятые заказы торговли в филиал ¹ 1

2. Раз в неделю по понедельникам передавать накладные реализации и банковские платежки в филиал ¹2, вне зависимости от того, на каком из предприятий

холдинга они были оформлены. Причем передавать только те документы, которые были оформлены на контрагентов закрепленных за филиалом ¹2.

Отличительный признак принадлежности контрагента к филиалу ¹2 - в поле "счет учета" в справочнике контрагентов R01 указано значение "62-2-к".

Кроме того надо предусмотреть, возможность ручного повтора передачи документов.

Вначале нам надо настроить типы передаваемых документов для каждого филиала и дополнительные условия отбора.

 

Заходим в справочник удаленных рабочих мест R133:

 

 

В нем содержится информация о предпритиях с которыми осуществляется обмен данными:

 

Вначале настроим передачу заказов

Становимся на строку "Филиал 1", и нажимаем клавишу F7 (Дополнительные условия отбора документов при передаче).

Здесь нам необходимо указать типы документа и доп. условия SQL, для автоматической передачи. Если мы этого не сделаем, при автопередаче документов для этого филиала будет

передана вся база документов. В каких-то случаях это необходимо, но нам создаст дополнительный трафик при обмене, так как нам надо передавать только заказы.

Нажмем F6 и добавим новую строку. Выберем тип  документа "заказы торговли":

 

Уровень документа заполнится автоматически, остальные поля оставляем пустыми, так как нам надо посылать в филиал №1 все заказы.

Теперь зададим условия для филиала №2. Здесь нам надо задать две строки документов "отгрузка продукции" и "банковское платежное поручение"

Кроме того, нам нужно отбирать только документы по контрагентам относящимся к филиалу №2.

Чтобы задать это условие для документов отгрузки есть два пути:

1. Выбрать тип значения аналитики для отбора "R20 магазины", и затем выбрать из справочника список значений аналитик, все магазины,

которые относятся к филиалу №2.

2. Написать в поле "дополнительное выражение для отбора SQL, выбрав тех контрагентов, у которых в справочнике счет учета установлен в значение "62-2-к".

При этом повторно отправлять свои же накладные обратно не следует, поэтому выражение будет выгнлядеть так:

NRMT IN ('0','1') and danal1 in

(

select kod from "\\server\fabius\REFLIS\R01" where bkacnt='62-2-к'

)

здесь NRMT - код филиала, danal1 - реквизит контрагента в накладных отгрузки, "\\server\fabius\REFLIS\R01" - полный путь к справочнику контрагентов R01,

bkacnt - поле счет учета в справочнике контрагентов.

Если вы знатет язык SQL, можете протестировать получившиеся условия в утилите SQLExplorer (Ctrl+Alt+Q в любом месте программы)

Затем добавляем аналогичным образом строку условий для банковских платежек. В конечном итоге спсиок условий по филиалу № 2 будет выглядеть так:

 

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

запуска и в планировщике заданий для автоматического.

 

 

Начнем с планировщика:

1. Вызываем сервис - планировщик заданий, по текущему пользователю текущей рабочей станции.

2. Добавляем новое задание F6.

3. Открываем справочник событий (F9 на поле событие) добавляем новое событие, называем его "Передача заказов в филиал №1"

4. В поле внешний метод пишем

      AutoSendDoc

   в аргументы метода пишем

      '1';'\\server\fabius\exchange\out\1';1;-1;true

где

'1' - код филиала куда передаем, '\\server\fabius\exchange\out\1' - путь, куда складывать архивы, 1 - кол-во дней вперед, -1 - кол-во дней назад,

(так странно задается поскольку нам нужно только заватрашнее число), true - только заказы принятые на текущем подразделении

5. Далее настраиваем вызов данного события:

 

 

 

Далее создаем еще одно задание аналогичным образом, создав новое событие "передача документов в филиал №2':

отличия будут следующие:

В аргументах функции AutoSendDoc пишем:

'2';'\\server\fabius\exchange\out\2';-1;8;false (код филиала 2, путь другой, чтобы друг друга не затирали, -1, 8 - интервал за прошлую неделю, false -

поскольку нам нужны все документы, в том числе и принятые из других филиалов.

Периодичностьи ставим каждую неделю, день недели - понедельник.

 

Теперь настроим ручной вызов процедуры.

 

Стоя на модуле "Приемо-передача" откроем дерево модулей  (Alt+M). В подпункте передача документов создадим новую ветку с двумя пунктами и заполним

в них вызов как на картинке

 

 

Как видите, вызов функции практически аналогичен планировщику.

После этого на родительской ветке "Автоматически" нажмем на замочек, чтобы сделать ветку частной и её не снесло при следующем обновлении.