Дополнительные возможности
Настройка для печатной документации
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% указан код выдачи.
OnAfterGivnStateChanged - Вызывается после транзакции, при изменении статуса выдачи. В параметре %code% указан код выдачи.
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, то это будет новой массой места или корреспонденции.
DAILY - задание выполняемое один раз в день
Настройка документов
CustomAddressPrnForm2 - Кастомная реализация упрощенной печатной формы. В карточке заказе установлена галка Простые, и установлена переменная "Справочники" -> "Переменные" -> "Печать" -> "Упрощенные печатные формы" -> "Тип упрощенной печатной формы: 5"
GetTypeShippingPlace - Выполняется при помещении корреспонденции в мешок манифеста. Содержит %code% - код корреспонденции. Возвращаемое значение это код мешка (shippingpalce.code), если его указать , то это изменит мешок, в который будет помещена корреспонденция.
OnShelvingBarScan - Обработка отсканированного штрих-кода при комплектации.
AdditionalStringForSMA - Дополнительные условия разделения актов на нал. и безнал.Содержит %code%, где передано значение типа акта: "nal" - наличный, "bnal"- безналичный.
CustomBillDetaling - Кастомная детализация счета
OnSchetChanged - Выполняется при удалении счета и его изменении. Содержит %code% - код счета schet.code
ExceptionsForAPK - Задает дополнительные критерии поиска корреспонденции при формировании акта передачи корреспонденции(АПК). Содержит %Boxes% - псевдоним таблицы вложений используемый в запросе. Функция возвращает часть sql запроса при отборе вложений
пример кода по умолчанию, вложение с названием "Доставка" - не попадает в АПК <?> SET($ExcStr,' and %Boxes%.Name not like ''%Доставка%'' '); $ExcStr
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. С другими таблицами все проще. Пример кода для апдейта адресов: <?> 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) )') , '');