Была
доработана процедура автоматической передачи документов 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). В
подпункте передача документов создадим новую ветку с двумя пунктами и заполним
в них вызов
как на картинке
Как видите,
вызов функции практически аналогичен планировщику.
После этого
на родительской ветке "Автоматически" нажмем на замочек, чтобы
сделать ветку частной и её не снесло при следующем обновлении.