Как организовать удаленную разработку для работы с ТСД и штрихкодированием документов в 1С 7.7?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Автоматизация складской логистики на базе платформы 1С 7.7 остается актуальной задачей, особенно когда требуется интегрировать терминалы сбора данных (ТСД) для контроля отгрузок и проведения документов. Одной из главных сложностей здесь выступает организация процесса разработки в удаленном режиме, когда у программиста нет физического доступа к оборудованию. Разберем подробно, как выстроить архитектуру такой системы, какие методы кодирования выбрать и как отладить код без наличия ТСД под рукой.

Архитектура штрихкода: что именно кодировать?

В начале пути часто возникает соблазн зашифровать в штрихкоде (ШК) максимум информации: код контрагента, сумму, дату и даже перечень номенклатуры. Проанализируем этот подход. Линейные штрихкоды (например, Code 128 или EAN-13) имеют жесткие ограничения по количеству символов. Попытка уместить в них состав документа приведет к созданию сверхдлинного кода, который будет крайне плохо считываться обычными сканерами.

Рассмотрим более надежный вариант — кодирование только уникального идентификатора документа. В 1С 7.7 это может быть сочетание вида документа, его номера и даты, либо внутренний идентификатор ID. Процесс должен выглядеть следующим образом:

  1. При печати документа в 1С 7.7 формируется ШК, содержащий только уникальный ключ.
  2. При сканировании ТСД передает этот ключ в систему.
  3. Программа выполняет поиск объекта по индексу и мгновенно извлекает все необходимые данные (состав, контрагента, остатки) из базы.

Если же бизнес-задача требует обязательного наличия всех данных внутри ШК (например, для работы в режиме «офлайн»), необходимо использовать 2D-коды (QR-код или DataMatrix). Для их формирования в 1С 7.7 потребуются внешние компоненты, такие как Barcode.ocx или специализированные шрифты.

Удаленная разработка и отладка без физического ТСД

Многие разработчики задаются вопросом: как проверить работоспособность кода, если ТСД находится на складе у заказчика? Выясним основные способы симуляции процесса сканирования.

Во-первых, ТСД в большинстве случаев работает либо в режиме эмуляции клавиатуры, либо через COM-порт. Для отладки логики поиска документа нам достаточно создать обычное текстовое поле на форме обработки. Мы можем вручную вводить или копировать туда значение ШК и имитировать нажатие клавиши Enter. Если запрограммировать суффикс CR (перенос каретки), то поведение системы будет идентично работе реального сканера.

Во-вторых, рассмотрим ситуацию работы через удаленный рабочий стол (RDP). В этом режиме сканер, подключенный к локальному компьютеру, может «пробрасывать» данные в терминальную сессию. Для программиста это означает, что никакой разницы между сканером и клавиатурным вводом в текстовое поле ШтрихКодВвод не будет.

Реализация обработки внешнего события

Профессиональный подход подразумевает использование драйвера сканера штрихкодов, который инициирует в 1С процедуру ОбработкаВнешнегоСобытия. Это позволяет считывать ШК в любой момент времени, независимо от того, в каком поле стоит курсор. Разберем пример кода для интеграции:


Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Перем ТекДок;
    Если Событие = "BarCodeValue" Тогда
        // Получаем считанный код
        СчитанныйШК = СокрЛП(Данные);
        
        // Алгоритм поиска документа по ШК
        ТекДок = СоздатьОбъект("Документ.Реализация");
        Если ТекДок.НайтиПоНомеру(СчитанныйШК, РабочаяДата()) = 1 Тогда
            // Если документ найден, выполняем его перепроведение
            Если ТекДок.Проведен() = 0 Тогда
                ТекДок.Провести();
                Сообщить("Документ " + ТекДок.НомерДок + " успешно проведен");
            КонецЕсли;
        Иначе
            Предупреждение("Документ с таким ШК не найден!");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Если же драйверов на сервере нет, мы можем использовать обходной путь через текстовое поле с обработкой нажатия клавиши. Это надежный метод для удаленной работы, так как он не зависит от настроек портов на сервере.

Логика работы склада: от Заявки к Реализации

Часто задача стоит шире: не просто найти документ, а трансформировать «Заявку на склад» в «Реализацию» с учетом фактической сборки. Проанализируем сценарий, когда кладовщик сканирует товар по факту. В этом случае нам необходимо предусмотреть механизм сравнения плановых и фактических данных.

Рекомендуется использовать временную таблицу или промежуточный документ «Сборочный лист». При сканировании позиций программа должна проверять:

Для автоматического создания Реализации на основании Заявки используем следующий программный паттерн:


// Создание реализации на основании отсканированных данных
ДокРеал = СоздатьОбъект("Документ.Реализация");
ДокРеал.Новый();
ДокРеал.НазначитьФорму("ФормаДокумента");
ДокРеал.Заполнить(ДокЗаявка); // Копируем шапку и состав из основания

// Проходим по табличной части и корректируем количество
ДокРеал.ВыбратьСтроки();
Пока ДокРеал.ПолучитьСтроку() = 1 Цикл
    // Здесь логика замены количества на фактически собранное через ТСД
    ДокРеал.Количество = ПолучитьФактИзТСД(ДокРеал.Номенклатура);
КонецЦикла;

ДокРеал.Записать();
Если ДокРеал.Провести() = 0 Тогда
    Сообщить("Ошибка проведения реализации!");
КонецЕсли;

Проблема перепроведения и прав доступа

Важный нюанс, упомянутый в обсуждении: права доступа. Кладовщик часто не имеет прав на проведение финансовых документов. Чтобы обойти это ограничение, в 1С 7.7 можно использовать запуск процесса под системным пользователем или механизм «отложенного проведения».

Важно: При программном перепроведении документов в конце дня следует учитывать последовательность. Если за день было много перемещений товаров, простое перепроведение документов «задним числом» может привести к отрицательным остаткам. Рассмотрим вариант использования обработки, которая выстраивает документы в хронологическом порядке и проводит их один за другим, контролируя результат выполнения функции Провести().

Выводы и рекомендации

Подводя итог, можно сказать, что удаленная разработка для ТСД в среде 1С 7.7 вполне реальна. Основные шаги, которые мы разобрали:

  1. Использование текстового поля с суффиксом Enter для эмуляции сканера при отладке.
  2. Отказ от избыточного кодирования данных в пользу использования уникального ID документа.
  3. Настройка ОбработкиВнешнегоСобытия для полноценной интеграции с оборудованием в будущем.
  4. Тщательная проработка бизнес-логики сопоставления «план-факт» при сборке заказов.

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

← На главную