Архив автора: Руслан Хут

REST сервис для 1С 7.7 продолжение

После нескольких недель работы с базой через http-сервис хочу поделиться несколькими замечаниями относительно особенностей работы с 1С – и самой по себе и как с COM-объектом.

Рабочий код текущей версии сервиса и пример модуля 1С можно посмотреть на GitHub: REST service for 1C77 application. Используемое Андроид-приложение: Помощник.

Напомню упрощенную схему взаимодействия:

Читать далее

Выполнение задач по расписанию в 1С 7.7

Один из больших недостатков платформы 7.7 – отсутствие планировщика заданий, штатными средствами невозможно настроить, например, запуск нужной процедуры в определенное время.

Частично решить эту проблему можно используя процедуру ОбработкаОжидания(). В ней указывается имя необходимой процедуры и таймер повторения, таким образом задание будет исполняться с нужным интервалом. Как вариант, можно перед запуском проверять текущее время и выполнять процедуру только в нужные часы-минуты.

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

Читать далее

Mонитору активности не удается выполнить запросы к серверу

Для восстановления работоспособности монитора активности Microsoft SQL Server нужно в командной строке выполнить следующее:

lodctr /r

REST сервис для 1С 7.7

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

  • сервер приложений Apache-Tomcat, он принимает http запрос и запускает сервлет
  • сервлет, написанный на Java, который при получении http запроса запускает 1С через COM-объект, получает выборку данных, форматирует ответ в формате JSON и отправляет назад
  • Java-библиотека для обращения сервлета к 1С – Jawin
  • 1С:Предприятие 7.7, в конфигурацию необходимо внести дополнения – функции, через которые сервлет будет получать данные и выполнять нужные операции

Постараюсь описать по шагам, как заставить всё это работать вместе.

Читать далее

Подключение MG-T707TS к 1С 7.7

Отличительной особенностью кассового аппарата MG-T707TS является его способность работать без использования специального OLE драйвера, как это обычно делается в 1С. Вместо драйвера можно использовать протокол Http – внутри кассового аппарата работает Web-сервер, к которому можно обращаться через локальную сеть с помощью Get и Post запросов. В 1С версий 8.х можно все операции провести встроенными средствами, а вот в “семерке” встроенных средств не хватает, но это легко обходится компонентами, доступными в Windows-среде.

Читать далее

Пример использования PUSH-сообщений

На базе приложения Агент был реализован интересный способ использования PUSH-сообщений в 1С. Документы, переданные сотрудниками с мобильных устройств в базу, в конце дня собираются в итоговые ведомости по каждому сотруднику отдельно. Ведомости распечатывают и подписывают две стороны – бухгалтерия и торговый агент. Поскольку в 1С уже налажен канал связи между сервером и мобильным приложением, возникла идея подписывать ведомости электронным способом – в сформированном в 1С документе инициируется запрос агенту на подтверждение, при получении положительного ответа с устройства, в документе появляется соответствующая отметка.

Читать далее

Отправка PUSH сообщений

Это заметка о том, как отправить PUSH сообщение из 1С на Андроид-устойство с использованием сервиса Firebase Cloud Messaging.

  • если нужно отправить сообщение на определенное устройство, понадобится его токен – он формируется сервисом FirebaseMessagingService, его нужно прочитать в приложении и передать на сервер для последующего использования
  • понадобится ключ API приложения, его можно найти в параметрах проекта в Firebase Console, на вкладке Cloud Messaging
  • используя токен и ключ нужно составить и отправить на сервер службы сообщений POST-запрос.
Читать далее

Язык платформы в Ubuntu

Чтобы запустить 1С с нужным языком интерфейса в Ubuntu можно отредактировать ярлык запуска: в папке пользователя ~/.local/share/applications/1cestart.desktop в строку Exec нужно добавить параметр “/L uk” или “/L ru” например.

Но! Стандарнтый ярлык запуска, с именем 1cestart.desktop переписывается после каждого запуска 1с, по этому лучше сделать копию ярлыка и в ней прописать нужный ключ языка.

Не найдено ни одного принтера

В Windows 2008 R2 при попытке подключения к сетевому принтеру выводится сообщение “Не найдено ни одного принтера”, хотя сетевые ресурсы и принтер в том числе видны в проводнике при обзоре сети. Если попытаться установить принтер через локальный порт, указав адрес вручную, выводится ошибка “Отказано в доступе”. Также примечательно, что другие компьютеры в сети подключаются и работают с этим принтером без проблем, т.е. источник проблемы – система, из которой происходит попытка подключения.

Для устранения проблемы необходимо удалить содержимое ветки в реестре:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers

Сообщение об ошибке на английском: “No printers were found”, код ошибки: 0x00000bc4.

 

Ошибка формата потока

Еще один способ вылечить базу при появлении сообщения “Ошибка формата потока”. Если база работает в формате SQL и возможности зайти в режим конфигуратора нет, то можно откатить изменения в конфигурации, скопировав рабочую версию конфигурации из резервной копии. Конфигурация хранится в таблице dbo.Config, т.е. достаточно выполнить скрипт:

USE [MyDB]
GO
DELETE FROM [MyDB].[dbo].[Config]
GO
INSERT INTO [MyDB].[dbo].[Config] SELECT * FROM [MyDBcopy].[dbo].[Config]
GO

Здесь MyDB – поврежденная база, MyDBcopy – рабочая резервная копия.