Касса самообслуживания на 1С, или повод познакомиться с HTML

20.08.25

Разработка - Работа с интерфейсом

Небольшой рассказ о том, как я разрабатывал интерфейс для кассы самообслуживания на базе 1С.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Бесплатно
Пример HTML страницы с товарами
.html 7,66Kb
9 Скачать бесплатно

Содержание

 

Предисловие

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

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

  1. Покупатель совместно с менеджером магазина подбирает список товаров
  2. Менеджер применяет все существующие скидки и печатает счет на оплату
  3. Далее покупатель со счетом на оплату может подойти либо к "живому" кассиру, либо к КСО
  4. Параллельно менеджеры собирают и упаковывают выбранные товары, снимают бирки/метки
  5. После оплаты покупатель возвращается к менеджеру за товаром

Соответственно, с точки зрения магазина было желание хотя бы частично решить проблему с текучкой кассиров. Косвенно, был сделан упор на психологическую составляющую: при умелой рекламе в сочетании с маркетинговыми акциями факт каких-то новшеств в магазине может некоторый пул клиентов побудить прийти посмотреть, а там, возможно, что-то и приобрести.

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

 

Муки выбора

Когда, наконец, решение о внедрении кассы самообслуживания у клиента созрело, настал момент выбора программной составляющей для кассы. Первый порыв был выбрать что-то уже готовое, даже начали анализировать различные варианты по типу 1С:Касса. Но из-за специфики функционала поняли, что стороннее приложение будет не самым лучшим вариантом:

  1. стороннее решение, будь даже оно из мира 1С - это еще одна линия интеграции, которых и так сейчас в избытке
  2. на синхронизацию в режиме реального времени можно не рассчитывать
  3. существенное количество доработок в основной конфигурации приведет неизбежно к необходимости доработки форматов обмена

В итоге было принято решение сделать в основной конфигурации отдельную форму для интерфейса покупателя.

 

Выбор подхода к реализации

Клиент в своей работе использует конфигурацию "1С:Комплексная автоматизация 2.5" с огромным количеством доработок, но регулярно обновляемую. Поскольку конфигурацию мы регулярно обновляем, было решено максимально использовать типовые процедуры и функции по фискализции чеков и работе с Честным Знаком.

Первое, что пришло на ум (да, такое случается даже с самыми лучшими))) - это использовать существующую форму РМК, но убрав оттуда все, до чего обычный покупатель не должен дотянуться своими любопытными руками. Кто видел РМК в семействе конфигураций УТ/КА/ERP сразу поймет, почему такое стыдно выкатывать на обозрение клиентам) Тем, кто всё-таки не видел - показываю:

 

 

Пользователи 1С к такому уже привычные и неплохо ориентируются, а вот неподготовленных покупателей невзрачные серые таблички могут вогнать в тоску)

Поэтому было решено использовать комбинированный подход: основные процедуры и функции для работы с торговым оборудованием "выдрать" из формы РМК, а вот интерфейс под это дело придумать свой.

 

Рисуем интерфейс

Поскольку времени на разработку вполне хватало, решил попробовать погрузиться в HTML и CSS. К тому же разработать что-то удобоваримое на "чистом" 1С - дело не такое уж и тривиальное. Плюс как ни кастомизируй, но интерфейс 1С все равно с легкостью угадывается). С головой погружаться не стал: некоторые промежуточные формы делал на 1С, но форму корзины решил реализовать именно через поле HTML-документа. 

На первом подходе решил использовать давно проверенную практику: найди что-то готовое и переделай под себя) Думая как 1Сник, решил вывести список товаров в виде таблицы. Соответственно, не стал париться и нашел несколько шаблонов для html-таблиц. Получилось довольно-таки стыдно и, что называется, колхозно)))

 

image (2459).png

 

Вот это выглядело на самой КСО:

 

 

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

  1. Основное пространство - прозрачный список или "плашки" с товаром, количеством, ценой и скидкой
  2. Внизу крупный блок с итоговой стоимостью
  3. Отдельный блок с подсветкой общей суммы скидки
  4. Режим пошагового помощника: Корзина - Далее - Выбор типа оплаты - Оплата - Страница с благодарностью за покупку

 

Все это выглядит +/- примерно следующим образом (случайная картинка из интернетов):

 

 

div'ы, class'ы, flex'ы....

Как только стала понятна общая концепция, настало время реализации! После просмотра форумов и различных онлайн-библиотек по HTML и CSS стало ясно, что в моем случае (без скриптов, анимаций и прочей мишуры) отрисовать форму будет не сложнее, чем в конфигураторе.

Итак, универсальный элемент на все случаи жизни - это div-контейнеры: элементы, группы форм - в HTML вместо всей этой братии используется div-контейнеры. Все, что мы задаем в свойствах элемента формы 1С - в HTML будет задаваться в стилях. Как только это осознаешь - сразу все становится на свои места. Это примерно как в разговорных языках: на начальном этапе мозг продолжает "думать" на родном языке и из-за этого человек сначала составляет фразы на родном языке, а потом переводит их на целевой; после глубокого изучения (обычно после пребывания в новой среде), мозг учится думать сразу на нескольких языках и пропадает необходимость в промежуточном звене - формировании фраз на "эталонном" языке. Примерно так же произошло и в моем случае: в какой-то момент при взгляде на картинки у меня уже было сразу представление, как расположить div'ы и какие стили к ним применять.

 

Первые подводные камни

В отличие от редактора форм платформы 1С инструментарий HTML по настройке элементов дает просто колоссальные возможности. Соответственно, в сети можно найти порой большое количество примеров реализации одной и той же компоновки элементов разными способами. Поэтому поначалу у меня получился сплошной "зоопарк" из различных подходов: flex-контейнеры были вперемешку с обычными, часть размеров задавалась в абсолютных значениях, другая - в относительных. В итоге даже самое небольшое внесенное изменение приводило к непредсказуемым последствиям, а поле HTML-документа в 1С вообще отображало совсем не то, что отображалось в браузерах.

 

display:flex

Как только мне надоело бороться с поехавшим интерфейсом,  было принято решение максимально перейти на использование flex-контейнеров и задание размеров элементов в относительных значениях. Не сказал бы, что в итоге полностью разобрался в теме, но разработка сдвинулась с места. Возможностей по настройке flex-контейнеров просто огромное: в сочетании с настройками родительских/дочерних элементов можно как построить элегантный гибкий интерфейс, так и погрузиться в настоящий ад) Тут, конечно, нужно больше опыта, хорошее знание (и главное - понимание!) всех возможностей flex-контейнеров и много часов апробации этих возможностей.

 

Карусель, карусель...

После подготовки уже более-менее презентабельного варианта и запуска его на кассе самообслуживания, обнаружилось,  что примерно 60-70% экрана занимает пустота. В большинстве случаев количество позиций в чеке не превышает трех. В принципе долго гадать не стал и предложил заполнить пустое пространство рекламными баннерами с информацией о действующих акциях. И тут начались сплошные танцы с бубнами...

Во-первых, нужно было выбрать метод вывода слайдера с картинками. На чистом HTML решил не заморачиваться, поэтому начал искать какие-то готовые решения. В принципе в сети их достаточно много, но решил остановиться на Slick Slider. Каких-то объективных причин выбора я вам не приведу. Это был буквально первый попавшийся вариант с достаточно подробной информацией о встройке и настройке. Завелся сразу и без каких-либо проблем, описание настроек вполне понятные, в сети есть масса гайдов, примеров использования и обсуждений на форумах. Рано радовался...

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

 

 

Пришлось немного "поколдовать" с контейнерами, переопределить свойства картинок слайдера и методом подбора определить оптимальные размеры картинок.

И, в-третьих, нужно было определить источник, откуда брать картинки для слайдера. Первое, что пришло на ум - пусть загружают в саму 1С, а выводить буду, передавая base64-строку в свойство src тега img. Но после тестов стало понятно, что интерфейс ощутимо быстрее работает, если в src передавать ссылку на картинку. Поэтому решили картинки загружать на сайт и сделать небольшую API-шку, с помощью которой 1С смогла бы получать список ссылок на картинки активных баннеров.

 

Что там в итоге?

 
 Начальная страница
 
 Список товаров
 
 Выбор способа оплаты
 
 Режим администратора

 

Некоторые особенности реализации

  1. Для запуска 1С в режиме КСО используется отдельная роль
  2. Для препятствования случайного и намеренного выхода в ОС используется режим основного окна - Киоск
  3. Для перехода в режим администрирования используется служебный штрихкод
  4. Страница со списком товаров сделана полностью в виде поля HTML-документа
  5. Текст для страницы списка товаров формируется динамически по выбранному чеку
  6. Для удобства редактирования основного цвета элементов используется элемент стиля - Цвет
  7. Удалось добиться использования полностью типовых процедур и функций для работы с ККТ, эквайринговыми терминалами и для взаимодействия с Честным Знаком

 

UPD. К статье добавил пример HTML-кода со страницей корзины.

 

Благодарности и ссылки

Благодарю пользователя Евгений Абдуразаков за его экранную клавиатуру для 1С: она позволила сэкономить много времени) Используется для ввода адреса электронной почты покупателя

Спасибо пользователю DeerCven за его наводку про отключение уведомлений о проблемах с расширениями

Большая благодарность сайту https://icons8.ru/ за огромное количество интересных иконок.

Огромное количество полезной информации по HTML и CSS - https://developer.mozilla.org/ru/

Посмотреть в живую на результат можно вот в этом магазине

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С v8.3 8.3.14 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Скачайте бесплатную обработку "Анализ данных для использования в подсистеме 1С Инфоборды" и узнайте возможность внедрения подсистемы у себя в конфигурации! Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения "Инфоборды". Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране.

26400 руб.

27.03.2025    10621    22    16    

31

Работа с интерфейсом Рабочее место 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    65672    45    60    

84

Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    21345    31    6    

48

Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    35110    mrXoxot    44    

135

Работа с интерфейсом Программист 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    20393    smielka    37    

106

Работа с интерфейсом 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    20772    1274    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    14613    175    acces969    31    

131

Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

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

12.08.2022    9112    rpgshnik    39    

94
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. aximo 2389 20.08.25 11:27 Сейчас в теме
Сыровато конечно, но для развития пойдет!
RocKeR_13; +1 Ответить
2. RocKeR_13 1433 20.08.25 11:37 Сейчас в теме
(1) Спасибо за отзыв, все изучал по ходу реализации) По дальнейшему развитию пока туманно: есть желание продолжать, но ресурсы и время сильно ограничены
3. Константин С. 676 20.08.25 11:50 Сейчас в теме
Не навязчивая реклама, своего магазина ))))

Симпатичненько. Не думали сделать отдельное приложение, с подключение к базе?
4. RocKeR_13 1433 20.08.25 11:57 Сейчас в теме
(3)
Не навязчивая реклама, своего магазина ))))

Действительно как-то об этом не подумал) Но магазин не мой, я чисто как подрядчик


Симпатичненько. Не думали сделать отдельное приложение, с подключение к базе?

Всё-таки компетенций пока не хватит) Сначала думал в сторону мобильного приложения на 1С для клиентов, чтобы могли сами накидывать в корзину товары и делать заказы, но клиент не захотел развивать это вариант
Константин С.; +1 Ответить
5. aximo 2389 20.08.25 12:45 Сейчас в теме
у КА и УТ РМК одинаковые.. и достаточно легкоизменяемые - это плюс

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

а вообще, конечно, за этим будущее

а мобильное приложение на чем - только на Андройд?
8. RocKeR_13 1433 20.08.25 13:48 Сейчас в теме
(5) мобильное приложение осталось только в виде предложения. Думал также на платформе 1С писать. Но нет)
6. SpartakM 74 20.08.25 13:25 Сейчас в теме
это касса атол? там андроид стоит? ну и почему не выложили свои наработки?)
9. RocKeR_13 1433 20.08.25 13:52 Сейчас в теме
(6) железяка да, от Атола, но стоит там обычный Windows. Решение местами со спецификой клиента, поэтому для широких масс нужно выделять в отдельное расширение и допиливать) Если будет интересно - скину заполненный html с тестовыми данными.
11. SpartakM 74 20.08.25 14:12 Сейчас в теме
(9) да конечно интересно. можете поделиться. могу в тг например вопросы свои поздавать?
12. RocKeR_13 1433 20.08.25 14:16 Сейчас в теме
(11) Да, конечно, для вопросов открыт
13. пользователь 20.08.25 14:24
Сообщение было скрыто модератором.
...
7. akR00b 25 20.08.25 13:25 Сейчас в теме
Отличное решение, плашка 1С вверху экрана конечно все портит в плане нельзя полностью занять весь экран, а так выглядит симпатично. +
10. RocKeR_13 1433 20.08.25 13:54 Сейчас в теме
(7) да, 1С все равно даст о себе знать) Плюс пришлось пошаманить, чтобы не вылезали информационные сообщения о проблемах с расширениями. Вот, кстати, забыл выписать благодарность тоже за это: чуть позже отмечу)
14. chuvak9999 20.08.25 15:09 Сейчас в теме
16. RocKeR_13 1433 20.08.25 15:34 Сейчас в теме
(14) спасибо за внимательность - исправил)
15. WellMaster 104 20.08.25 15:21 Сейчас в теме
Хотел поставить плюс, но после рекламы в интерфейсе РМК/кассы самообслуживания передумал.
А в целом интересный подход, спасибо.
17. RocKeR_13 1433 20.08.25 15:38 Сейчас в теме
(15) куда же без нее..) Тем не менее, смотрится куда лучше, чем с пустотой. К тому же там именно инфа по текущим скидкам и активностям, а не просто реклама брендов.
18. Red_Devil 181 20.08.25 17:38 Сейчас в теме
Оставьте свое сообщение