При работе с конфигурацией «Управление торговлей 10.3» программисты часто сталкиваются с ситуацией, когда в форме списка документа Кассовая смена отображаются данные (например, имя компьютера или пользователь), которых физически нет в реквизитах самого документа в конфигураторе. Это вызывает закономерные вопросы: откуда берутся эти данные, как они связаны с документом и нужно ли вообще использовать этот объект в кастомных схемах автоматизации.
В этой статье мы подробно разберем внутреннюю логику работы документа Кассовая смена, выясним механизмы связи с торговым оборудованием и поймем, как система идентифицирует рабочее место кассира.
Разберем ситуацию, когда в списке документов мы видим колонку «Компьютер», но, открыв состав реквизитов документа в дереве метаданных, не находим там соответствующего поля. Рассмотрим подробнее, как 1С реализует это «магическое» появление данных.
В типовом решении УТ 10.3 (начиная с релизов, поддерживающих 54-ФЗ) форма списка документа Кассовая смена часто строится на основе произвольного запроса динамического списка. Поле «Компьютер» не хранится в таблице документов, а вычисляется «на лету» по следующей цепочке связей:
КассаККМ (ссылка на справочник КассыККМ).КассыККМ указано конкретное торговое оборудование (фискальный регистратор).ПодключаемоеОборудование).Таким образом, 1С логично предполагает, что если смена открыта на конкретной ККТ, то она жестко привязана к тому рабочему месту, к которому эта ККТ подключена физически. Если вы удалите запись о настройке оборудования из регистра, информация о компьютере в списке документов исчезнет, хотя сам документ останется неизменным.
Проанализируем ситуацию с реквизитом «Ответственный». В большинстве документов 1С это стандартный реквизит, но в Кассовой смене он может отсутствовать. Это обусловлено методологией:
Во-первых, юридически значимым лицом при работе с кассой является кассир, данные которого передаются в фискальный накопитель и ОФД. Эти данные берутся из настроек пользователя в 1С или параметров торгового оборудования, а не из реквизитов документа.
Во-вторых, если вам необходимо программно определить, кто открыл смену, можно использовать следующий подход — найти первый по времени документ Чек ККМ, связанный с этой сменой. У документа Чек ККМ реквизит Ответственный присутствует всегда.
Выясним причину возможных проблем при работе через удаленный рабочий стол. Часто функция ИмяКомпьютера() в среде RDP возвращает имя сервера, а не локальной машины пользователя. Это приводит к тому, что для системы все кассиры «сидят за одним компьютером».
Для корректного определения рабочего места в УТ 10.3 при работе через терминал рекомендуется использовать идентификацию по Client ID (сочетание имени сервера и сетевого имени клиента). Если вы разрабатываете свою систему обмена, рассмотрите пример записи данных в регистр сведений:
// Пример логики определения рабочего места
ИмяМашины = СокрЛП(ИмяКомпьютера());
ИмяПользователяОС = СокрЛП(ИмяПользователяСети());
УникальноеРабочееМесто = ИмяМашины + "_" + ИмяПользователяОС;
// Поиск оборудования по привязке к этому идентификатору
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.ТорговоеОборудование ГДЕ РабочееМесто = &РабочееМесто";
Запрос.УстановитьПараметр("РабочееМесто", УникальноеРабочееМесто);
Многие разработчики, внедряющие ручную отправку данных на ККМ (через драйвер, минуя типовые обработки), задаются вопросом: стоит ли вообще создавать этот документ? Посмотрим на ситуацию с точки зрения системной логики УТ 10.3:
Кассовая смена вам придется полностью переписывать процедуру закрытия смены и формирования сводных отчетов.Чек ККМ. После фиксации закрытия смены в 1С чеки переходят в архив, освобождая оперативную базу от лишних движений.Подведем итог: данные о компьютере и пользователе в Кассовой смене — это производная информация, которая строится на связях между кассой, оборудованием и рабочим местом. Даже если вы планируете отказаться от стандартных обработок обслуживания, создание этого документа крайне рекомендуется для сохранения целостности типового функционала розничных продаж в 1С:УТ 10.3.