Системные доп. возможности

Материал из Меасофт
Перейти к: навигация, поиск

Настройка для печатной документации

CustomGivnAct - Функция позволяет заменить печатную форму, акта передачи материальных ценностей (печать из выдачи) на пользовательскую. Включить использование этой возможности можно в переменных "Справочники" -> "Переменные" -> "Печать" -> "Акты передачи курьеру" -> "Печатная форма акта: Пользовательская". Объявленные переменные %code% - коды записей в выдаче которые необходимо распечатать %docdate% - дата установленная в выдаче %dockurier% - ФИО курьера показанного в выдаче %dockurierfull% - Значение выбранного элемента в дереве (если есть выбранный узел дерева , иначе фио курьера)

Пользовательская форма акта, будет печататься только по заказам со статусом "На руках".

OnBeforePrintNakls - Вызывается перед печатью накладных, содержит %code% - коды всех адресов (через запятую).

OnAfterPrintNakls - Вызывается после печати накладных, содержит %code% - коды всех адресов (через запятую).

OnBeforePrintOneNakl - Вызывается перед печатью накладной, содержит %code% - код адреса.

OnAfterPrintOneNakl - Вызывается после печати накладной, содержит %code% - код адреса.

OnBeforePrintSticker - Вызывается перед печатью наклейки, содержит %code% - код адреса, %barcode% - ШК наклейки.

OnAfterItemPrint - Вызывается после печати наклейки из карточки номенклатуры. Поддерживает поля ввода - input. Содержит %code% - код номенклатуры item.code, %Naimen% - наименование, %country% - название страны, %Count% - указанное количество копий к печати.

Настройка всплывающих окон

OnGivnStateChanged - Вызывается в транзакции при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId% указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)

OnAfterGivnStateChanged - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи. В %pickupDocId% указан код на таблицу docs, документ приема забранных корреспонденций у курьера (доска приема при закрытии забора)

OnBeforeAddressSave - Вызывается перед сохранением изменений в карточке корреспонденции. Код выполняется не в транзакции и есть возможность показывать диалоговые окна. В качестве параметра передан объект fieldlist (объект полный аналог addressrecord в доп. услугах). Тег %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: "Функции - Ввод заявок по фото". Если результат функции -1, то происходит отмена сохранения без ошибки (abort).

OnAfterAddressSave - Вызывается после сохранения карточки корреспонденции в транзакции. Тег %code% - равен коду адреса; %Form3FrameMode% равен 1, если корреспонденция заполняется из интерфейса: "Функции - Ввод заявок по фото".

OnBarScan - Скриптовая обработка штрих-кода перед поиском

AfterAddressAcceptance - Событие после приема корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется не в транзакции и есть возможность показывать диалоговые окна. Содержит %Code% - код адреса, %StrBarCode% - отсканированный штрих-код.

BeforeAddressAcceptance - Событие перед приемом корреспонденции на склад (например,заказы - прием корреспонденции). Код выполняется в транзакции. Содержит %Code% - код адреса; %StrBarCode% - отсканированный штрих-код; %mass% - массу, если значение меньше 0 значит весы выключены; %l%, %w%, %h% - габариты; %MultiBarCode% - истина если это наклейка на место; %SetKolvo% - проставлять принятые места, место может быть уже принято; %ClientCode% - код клиента (clients.code); %PackCode% - код места (packages.code) . Если функция возвращает значение больше 0, то это будет новой массой места или корреспонденции.

OnAddToShippingPlace - событие после добавление корреспонденции в мешок манифеста. Код выполняется в транзакции. Содержит %сode% - код адреса, %BarCode% - штрих код который отсканировали,%ShippingPlace% - код мешка

GetTypeShippingPlace - событие перед добавление корреспонденции в мешок манифеста. Задача события распределить корреспонденцию между мешками. Результат функции код мешка, в который необходимо поместить корреспонденцию. Содержит  %сode% - код адреса.

DAILY - задание выполняемое один раз в день

OnGivnKurierStateChanged - событие вызывается после изменений данных со слов курьера (статуса, времени или причины недоставки). Вызывается даже при получении данных из мобильного приложения курьера.В событии запрещено показывать диалоги, т.к. это может остановить синхронизацию данных с ЛК. Содержит %сode% - код выдачи.

OnBeforeGivnStatus - событие срабатывает перед установкой статуса выдачи, не в транзакции. В параметре %code% указан код выдачи, %status% - устанавливаемый статус,%kurier% - код курьера, %date% - дата выдачи

Настройка документов

CustomAddressPrnForm2 - Кастомная реализация упрощенной печатной формы. В карточке заказа установлена галка Простые, и установлена переменная "Справочники" -> "Переменные" -> "Печать" -> "Упрощенные печатные формы" -> "Тип упрощенной печатной формы: 5"

GetTypeShippingPlace - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code% - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.

OnShelvingBarScan - Обработка отсканированного штрих-кода при комплектации.

AdditionalStringForSMA - Дополнительные условия разделения актов на нал. и безнал.Содержит %code%, где передано значение типа акта: "nal" - наличный, "bnal"- безналичный.

CustomBillDetaling - Кастомная детализация счета. Установка переменной $CancelCustomDetail в true, включает вывод стандартной детализации. В переменной $schet - код счета по которому строится детализация.

OnSchetChanged - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code

ExceptionsForAPK - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает !ДВЕ! части sql запроса разделенных CRLF. При отборе в АПК используется два запроса. Первый - отбирает не доставленные заказы и возвраты документов, в него будет подставлено условие слева от разделителя CRLF. Второй запрос отбирает возращенные товары, в него будет подставлено условие справа от разделителя CRLF или вся строка условий если в строке нет разделителя CRLF (оставлено для обратной совместимости, в версии программы до 1115 фильтрация была только во втором запросе).

 пример кода по умолчанию, фильтр только по второму запросу,   вложение с названием "Доставка"  - не попадает в АПК
 <?>
   SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); 
   $ExcStr
 пример для изменения фильтрации сразу у двух запросов:
 <?>
    SET($WHERE1,''); rem('условие отбора не доставленных и возврата документов');
    SET($WHERE2, ''); rem('условие отбора возврата товаров');
    $WHERE1 + CHAR(13) + CHAR(10) + $WHERE2

OnOrderCountCalc -Для расчета стоимости доставки необходимо учитывать кол-во отправлений. Доп. возможность возвращает часть SQL запроса, уточняющий условия поиска. Содержит %code% - равен значению переменной "Считать кол-во отправлений по текущему месяцу" (UseCurrentMonthCount, нет - 0, да - 1)

Настройка вида маркера

Настройки находятся в "Отчеты" -> "Дополнительные возможности" - "Системные".

В функции передается объект Table2Map типа TFieldObject. Получить поля с примерами значений из него можно например так:

showmessage(table2map._GETTABLEINFO)

(текст большое сообщения можно скопировать в буфер комбинацией Ctrl-C).

Для доступа к данным пользуйтесь только этим объектом, т.к. любое обращение к базе приведет к значительному снижению скорости работы.

Так же текущее состояние окна карты доступно через переменные:

$PlanDate - Выбранная дата, на которую планируется.

$KurierCode - Код выделенного курьера.

$MetroCode - Код выделенной станции метро (маршрута).


Обратите внимание, что все ошибки, возникающие при отрисовке, подавляются системой. Поэтому, если вы допустите ошибку в скрипте, он просто не будет работать, никаких сообщений вы не увидите. Для отладочных целей можно заменить ошибки на сообщения такой конструкцией:

set($s, try( 
 error('вот тут ошибка, которую вы увидите в виде сообщения');
));
if($s, showmessage($s), );


MapObjectFigure - Доп. возможность позволяет установить вид маркера на карте. Результат определяет фигуру: 1 - перевернутый треугольник, 2 - треугольник, 3 - увеличенный треугольник, чтобы квадрат не мог его перекрыть, 4 - квадрат, 5 - ромб, все остальное круг. Ромб поддерживается с версии 960.
Например:

if(table2map.zabor, 2, if(StrDateToFloat(table2map.DatePeriod) = $PlanDate, 3, 4))

Выводит треугольник, если отправление - забор. Иначе - если дата план отправления равна дате, на которую планируется - увеличенный треугольник, иначе - квадрат.

MapObjectColor - Доп. возможность позволяет установить цвет маркера на карте. При помощи данных параметров можно создать условия отображения маркеров.

Для доступа к настройкам доступны переменные:

$Color

$DefaultColor

$PlanedColor

$SelectedPlanedColor

$GetKurierColor

Например:

if((table2map.kurier<20)*(StrDateToFloat(table2map.DatePeriod) = $PlanDate), 16753920, $color)

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

Настройка мобильного приложения

Скрипты

OnEveryStartApp - выполняется при запуске программы.

OnEveryCloseApp - выполняет при закрытии программы.

OnBarScan - выполняется при получении ШК со сканера, в параметре %code% - получаем ШК. Если функция, что-то возвращает, то система будет использовать возвращенный ШК.

OnMapBeforeGeolocation - Вызывается перед отображаем адреса на карте. В функцию передается объект fieldlist.

Пример скрипта, переводящий адреса в НЕ найденные на карте, если станция метро НЕОПЕРЕДЕЛЕННАЯ.
<?>
if(station=0, 
  _set('lon', null);
  _set('lat', null);
  _set('searchCoordinate', 'F');
,0)


OnSyncInsert - Выполняется для каждой добавленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.

OnSyncUpdate - Выполняется для каждой обновленной записи при синхронизации с ЛК. Содержит %tablename% - название синхронизируемой таблицы.

Если при получении новых адресов с ЛК, нужно поменять любое поле в таблице address, то необходимо использовать сразу два события OnSyncInsert и OnSyncUpdate. Адреса без вложений обрабатываются событием OnSyncInsert, адреса с вложениями будут обрабатываться событием OnSyncUpdate. Это связано с механизмом синхронизации, если в событии OnSyncInsert, проапдейтить поле в адресе с вложениями, то данные могут потеряться. 
Когда адрес без вложений, то у него сразу station = 65535 и можно апдейтить. Если с вложениями, то у него сначала station = 65534, а после синхронизации вложений есть отдельный апдейт на 65535. Пример кода, для апдейта поля в адресах, события OnSyncInsert и OnSyncUpdate:


<?>
rem(ticket 23584, 23583); 
if( ('%tablename%'='address'), 
  query('UPDATE address a 
    JOIN trace t ON t.address=a.code AND t.state=1 
    JOIN zakaz z ON z.code=a.zakaz
  SET 
    a.mode = IF(z.source=646, 3, 2)
  WHERE 
    a.code = %code%
    AND a.station=65535
    AND (
     (z.source=646 AND a.mode<>3) OR 
     (A.DATE_PUTN=DATE(t.Statetime) AND a.mode=1) OR
     (A.DATE_PUTN=DATE_ADD(DATE(t.Statetime), INTERVAL 1 DAY) AND TIME(t.Statetime) > "21:59:59" AND a.mode=1)
    )')
, '');