Использование скриптов в Задачах

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

Сканирование штрихкода и печать этикеток для найденного товара

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

Решение

Добавьте задачу.

JavaScript

Используйте следующий скрипт.

const cMsg_001 = 'Отсканируйте штрих-код или введите его вручную и нажмите [Enter]. Нажмите "Отмена", чтобы выйти.';
const cMsg_002 = 'Не найден товар со штрихкодом "%s".';


function processInput() {

    // Показываем диалоговое окно для ввода / сканирования штрихкода
    let bc = azureLabel.showInput('', '', cMsg_001, false, false, false);
	if (bc === operationCanceledByUser) {
		return false;
	}
	azureLabel.log(bc);

    recordsToPrint.clear();
    // Ищем запись с данным штрихкодом
    let finded = false;
	const loadedDataCount = loadedData.count();
    for (let i = 0; i < loadedDataCount; i++) {

        if (loadedData.getFieldValue(i, barcodeFieldName) === bc){
	        azureLabel.copyRowFromOneListToAnother(loadedData,
	                                    i,
	                                    recordsToPrint,
	                                    -1)
	        finded = true;
	        break;
        }
    }

    // Запись с таким штрихкодом не найдена
    if (!finded) {
        azureLabel.showMessage('', azureLabel.format(cMsg_002, bc), 0, 0, 0, 2);
        return true;
    }

    // Печатаем этикетки
    try {
        azureLabel.printLabels( recordsToPrint, -1, '', '', true, showPreview);
	}
	catch (error) {
        azureLabel.showMessage('', error.toString(), 0, 0, 0, 2);
	}
    return true;
}

// Показывать предварительный просмотр этикеток
const showPreview = false;

// Библиотека AzureLabel необходима чтобы использовать специальный класс ListOfRecords
const ext = require('azurelabel_ext');
// Создаем список записей для передачи в функцию печати этикеток
const recordsToPrint = new ext.ListOfRecords;
// Создаем список записей для хранения данных из Данные для печати этикеток
const loadedData = new ext.ListOfRecords;
// Загружаем в список данные из Данные для печати этикеток
azureLabel.getLoadedData(loadedData);

// Название поля со штрихкодами для версий программы <= 12.27
let barcodeFieldName = 'Barcode';
let operationCanceledByUser = '';
try {
	// Если версия программы > 12.27
	// Найдем имя поля с признаком 'Это поле штрихкода'
	barcodeFieldName = loadedData.getBarcodeFieldName(0);
	operationCanceledByUser = 'OperationCanceledByUser';
}
catch (error) {
}

// Цикл получения штрихкода и печати этикеток
while (processInput());

Запустите задачу.

После запуска задачи вы увидите диалоговое окно для сканирования штрихкодов.