1C + Arduino + сканер отпечатков пальцев + RFID считыватель

Публикация № 889318

Администрирование - Администрирование данных 1С - Сервисные утилиты

Arduino сканер отпечатков пальцев RFID считыватель

73
Связываем 1C, Arduino, сканер отпечатков пальцев и RFID считыватель для системы учёта рабочего времени или пропускной системы.

Что нужно

 

  1. Модуль отпечатков пальцев FPM10A
  2. RFID-модуль RC522
  3. Arduino mega (теоретически можно использовать и другие платы но я остановился на данной из-за количества выводов)
  4. 1 лицензия на 1С 8.2 (толстый клиент в моём случае, под тонкий пилите сами)
  5. Связь по Com порту с помощью MsCommLib.MsComm (нужна лицензия, ягуглится даже тут)
  6. Среда разработки для ардуино (использована 1.8.5)
  7. Планшет с USB интерфейсом.
  8. Обвязка: Резистор 1 Кило ОМ, кнопка на замыкание, проводочки, "синяя" изолента, терморектальный крипоанализатор по желанию (можно скрутить проводочки если с данным прибором вас связывают тесные непередаваемые ощущения), USB кабель для ардуиино, прямые руки и кривые извилины среднестатистического 1с ника в т.ч. для изготовления корпуса для всего этого чуда.

Примечания: на фото цвета проводов разнятся - в процессе монтажа порвал несколько проводов т.к. они были совсем Huawei и пришлось брать других доступных цветов.

Система сообщений дублируется в критических моментах специально.
Сразу предупреждаю что может у среднестатистического инженера могут потечь слезы из глаз из канифоли но это мой вообще первый Ардуино проект да еще и такой сложности и вроде оно работает и работает стабильно. Сначала была идея сделать всё через сеть (wifi + проводная) но прикинув затраты на отладку и создание своего http сервиса и внедрение всё в 1с я решил использовать com, в любом случае всю логику можно без изменения конфы вынести во внешнюю обработку.

Можно ещё вставить систему фотографирования входящего сотрудника через web камеру планшета, добавить реле и управлять электронными воротами, допилить интеграцию с ЗУП через внешнюю обработку, передаваемую через параметры запуска и аннигиляцию масленницы для особо опасных проходных секретной важности ).

Полезная критика приветствуется.

Пролог


Видя цены на существующие пропусные системы и системы учета времени меня медленно начала душить зеленая сущность. Долго ходив около ардуинки и её модулей наткнулся на модуль отпечатков пальцев FPM10A. Данный модуль в зависимости от версии может запоминать большое количество отпечатков пальцев - от 50 до бесконечности её флеш памяти и используется в большинстве модулей производителей биометрического контроля. Однако в моём проекте из-за библиотеки оно ограниченно 254. Сразу предупреждаю что выкладываю свою измученно-найденную библиотеку для ардуино т.к. долго мучался с поиском и угробил 3 дня на поиски и отладку библиотеки для данного модуля.

 

Описание модулей

 

Библиотека, использованная в проекте позволяет использовать до 256 (byte) отпечатков пальцев. Мне это количество было избыточным, в крайнем случае можно использовать по 1 модулю на каждых 256 сотрудников.
Количество RFID меток ограниченно лишь уникальностью их UID т.к. база может хранится в 1С и привязанна к сотрудникам. Метки можно использовать все совместимые. Теоретически могут подходить всякие ключи от домофонов, карты метро и карты тройка.
Соединение с 1с идёт по com порту через библиотеку MsCommLib.MsComm но можно переписать под любую другую. Драйвера для com порта для Ардуинки должны ставится вместе со средой разработки ардуино но так же ягуглятся.
Всё спаенное прячется в коробку, связывается по сети (я использовал WiFi но можно и внешнюю USB сетевую карту использовать).


Алгоритм работы

Аппаратно:

  1. Модули ардуино спаиваем/скручиваем
  2. Подключаем к ПК-программатору и заливаем прошивку в арду, запускаем тест, убеждаемся в работоспособности команд
  3. Через USB соединяются с планшетом на Windows 10. На планшете заменяем либо через автозагрузку:

А) через батник:

  • пуск - выполнить: shell:startup

  • создаем там через "блокнот" файл с именем hz.bat и содержанием (уверен что сами справитесь с параметрами файловой базы - у меня sql): "C:\Program Files\1cv8\ ... \bin\1cv8.exe" ENTERPRISE /SServerName:Port\DBName" /NUser /PPassword

Б) более совершенный через замену шелла делаем через VB script (обязательно создайте кроме пользователя по умолчанию другого без запуска шелла):

  • создаем через "блокнот" файл с именем C:\hz\hz.vbs и содержанием

set oShell=createobject("wscript.shell") 
sCmd="""C:\Program Files\1cv8\ ... \bin\1cv8.exe"" ENTERPRISE /SServerName:Port\DBName" /NUser /PPassword"
oShell.run sCmd,,true
sCmd="shutdown /r /t 0" 
oShell.run sCmd

  • пуск - выполнить: regedit, идём по ветке: Current User\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

  • добавляем строковый параметр "Shell" (REG_SZ)

  • редактируем его: "wscript C:\hz\hz.vbs" (без кавычек в параметре)

  • ребут и тест. 1с должна запускаться без explorera

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

 

Программно:

  1. В обычном состоянии ардуино опрашивает сканер отпечатков пальцев, RFID сканер, кнопку администрирования и посылает по com порту команды ожидания.
  2. Как только в поле зрения считывателей появляется палец посылаем команду в com порт и 1с видит либо ID пальца, либо UID метки через чтение переменных.
  3. Кнопка нужна для администирования отпечатков. При её нажатии 1с опрашивает пароль-логин и дальше может присвоить сотруднику либо ID сканера либо UID карты через систему сообщений.

Для связи с 1с используется следующие строки (обработку я делал для своей конфы и своего табеля, она в проекте просто для примера но включена в исходники):


Подключение к com порту

Процедура СтартСистемы()
       ComPort = Новый COMОбъект("MsCommLib.MsComm");    
    Попытка
        ComPort.CommPort        = 3;
        ComPort.Settings        = "9600,N,8,1";
        ComPort.Handshaking     = 0;
        ComPort.InBufferCount   = 0;
        ComPort.InBufferSize    = 70;
        ComPort.InputLen        = 0;
        ComPort.InputMode       = 1;
        ComPort.NullDiscard     = 0;
        ComPort.PortOpen        = Истина;
    Исключение
        Предупреждение("Не возможно открыть порт!");
        ЭтаФорма.Закрыть();
    КонецПопытки;
    
    чСекунд = 0;
     ПодключитьОбработчикОжидания("ВывестиДанныеСПорта", 1, Ложь); // Подключим обработчик для мониторинга порта    
КонецПроцедуры

Отключение от com порта

Процедура КонецСистемы()
    ОтключитьОбработчикОжидания("ВывестиДанныеСПорта");
    ComPort.PortOpen            = Ложь;
    ComPort                     = "";
КонецПроцедуры

Считывание данных с com порта

Процедура ВывестиДанныеСПорта() Экспорт
    ДанныеСПорта = "";
    Если ComPort.PortOpen Тогда
        //ComPort.Output = "1";
        ДанныеСПорта = ComPort.Input;
        ОбработатьЗашифрованнуюСтроку(ДанныеСПорта);
        
        Если СокрЛП(ПредСотрудник) <> "" Тогда
            чСекунд = чСекунд + 1;
        КонецЕсли;
        Если чСекунд > 60 Тогда
            ПредСотрудник      = 0;
            чСекунд         = 0;
        КонецЕсли;
        
    Иначе
        Предупреждение("Порт не открывается");
        ЭтаФорма.Закрыть();
    КонецЕсли;
КонецПроцедуры

Процедура ОбработатьЗашифрованнуюСтроку(ДанныеСПорта)
    Массив = ДанныеСПорта.Выгрузить();
    ИндексМин = ДанныеСПорта.GetLowerBound(0);
    ИндексМакс = ДанныеСПорта.GetUpperBound(0);
    
    СтрокаИнфо = "";
    Для Индекс = ИндексМин По ИндексМакс - 1 Цикл
        СимволПолученный = СокрЛП(Массив.Получить(Индекс));
        Если СимволПолученный = "13" Тогда
            Если Не Приостановить Тогда
                СтрокаИнфо = ОбработкаСтроки(СтрокаИнфо); //Тут обработка сообщений
            КонецЕсли;
        Иначе
            СтрокаИнфо = СтрокаИнфо + Символ(Число(СимволПолученный)); 
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Отправка информации в com порт

Процедура ОтправитьВПорт(Отправить)
    Если ComPort.PortOpen Тогда
        ComPort.Output         = СокрЛП(Отправить);
    Иначе
        Сообщить("Порт не открывается",СтатусСообщения.ОченьВажное);
    КонецЕсли;    
КонецПроцедуры


Код проекта для Arduino Mega


#include <Adafruit_Fingerprint.h>                               // подключаем библиотеку для работы с модулем отпечатков пальцев
#include <SoftwareSerial.h>                                     // подключаем библиотеку для работы с программным UART

#include <SPI.h>
#include <MFRC522.h>

const int     buttonPin = 2;                                    // номер входа, подключенный к кнопке для входа в режим программирования
int           buttonState = 0;                                  // переменная для хранения состояния кнопки

int           modeState = 0;                                    // переменная для хранения состояния устройства. 0 - ожидание сканера отпечатков. 1 - программирование

uint8_t       id;                                               // идентификационный номер, под которым будет сохранён шаблон отпечатка пальца

String        frcUID = "";                                      // идентификационный номер считывателя rfid
int           rfidYes = 0;                                      // успешный ввод RFID

SoftwareSerial  mySerial(10, 11);                               // объявляем объект mySerial для работы с библиотекой SoftwareSerial ИМЯ_ОБЪЕКТА( RX, TX ); // Можно указывать любые выводы, поддерживающие прерывание PCINTx
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);  // объявляем объект finger   для работы с библиотекой Adafruit_Fingerprint ИМЯ_ОБЪЕКТА = Adafruit_Fingerprint(ПАРАМЕТР); // ПАРАМЕТР - ссылка на объект для работы с UART к которому подключен модуль, например: &Serial1

MFRC522 mfrc522(53, 5);                                         // Create MFRC522 instance

void setup() {

  pinMode(buttonPin, INPUT);                                    // инициализируем пин, подключенный к кнопке, как вход

  Serial.begin(9600);                                           // Инициализация аппаратного UART на скорости 9600
  while (!Serial);                                              // Ожидание инициализации аппаратного UART

  delay(500);
  SPI.begin();                                                  // Init SPI bus
  mfrc522.PCD_Init();                                           // Init MFRC522
  mfrc522.PCD_DumpVersionToSerial();                            // Show details of PCD - MFRC522 Card Reader details

  delay(500);                                                   // Ожидание инициализации модуля отпечатков пальцев
  Serial.println(". . . Scan sensor . . .");                    // Вывод сообщения "Поиск сенсора"
  finger.begin(57600);                                          // Инициализация программного UART на скорости 57600 (скорость модуля по умолчанию)
  Serial.println(finger.verifyPassword());
  if (finger.verifyPassword()) {
    Serial.println(". . . Found sensor! . . .");                 // Если модуль отпечатков    обнаружен, выводим сообщение "сенсор обнаружен"
  }
  else {
    Serial.println(". . . Did not find sensor . . .");          // Если модуль отпечатков не обнаружен, выводим сообщение "сенсор не обнаружен" и входим в бесконечный цикл: while(1);
    while (1);
  }
  Serial.println(". . . Please put your finger on the scanner or rfid . . .");

}

void loop() {

  //Работа с кнопкой!
  buttonState = digitalRead(buttonPin); // считываем значения с входа кнопки

  if (buttonState == HIGH) {
    modeState = 1;  // входим в режим программирования ДАЛЕЕ
  }

  switch (modeState) {
    case 0:

      frcUID = "";
      //Работа в режиме опроса отпечатков пальцев и rfid
      if (finger.getImage()         == FINGERPRINT_OK) {      // Захватываем изображение, если результат выполнения равен константе FINGERPRINT_OK (корректная загрузка изображения), то проходим дальше
        if (finger.image2Tz()         == FINGERPRINT_OK) {    // Конвертируем полученное изображение, если результат выполнения равен константе FINGERPRINT_OK (изображение сконвертировано), то проходим дальше
          if (finger.fingerFastSearch() == FINGERPRINT_OK) {  // Находим соответствие в базе данных отпечатков пальцев, если результат выполнения равен константе FINGERPRINT_OK (найдено соответствие), то проходим дальше
            frcUID = ". . . Found ID=" + String(finger.fingerID) + ", confidence=" + String(finger.confidence) + "! . . .";
            Serial.println(frcUID);
          }
        }
      }

      if (mfrc522.PICC_IsNewCardPresent()) {
        delay(100);
        if (mfrc522.PICC_ReadCardSerial()) {
          //mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
          frcUID = "";
          for (byte i = 0; i < mfrc522.uid.size; i++) {
            frcUID = frcUID + (mfrc522.uid.uidByte[i]);
          }
          frcUID = ". . . Found RFID UID=" + frcUID + "@ . . .";
          Serial.println(frcUID);
        }
      }

      delay(100);                                             // Задержка перед следующим сканированием 0,5 сек (нет смысла запускать на полной скорости)
      Serial.println(". . . Please put your finger on the scanner or rfid . . .");
      break;

    case 1:
      Serial.println(". . . Programming mode . . .");         // Входим в режим программирования
      delay(400);
      Serial.println(". . . Programming mode . . .");         // Входим в режим программирования
      delay(400);
      Serial.println(". . . Programming mode . . .");         // Входим в режим программирования
      delay(400);
      Serial.println(". . . Programming mode . . .");         // Входим в режим программирования

      id = readnumber();                                      // Ожидание получения цифры, введённой с COM-порта
      if (id >= 255) {                                        // Если 255 (макс ид) то входим в режим ожидания снова
        modeState = 0;
      } else {
        if (id < 254) {                                       // Если 254 то rfid иначе палец 0-253
          modeState = 2;                                      // Пытаемся отсканировать палец
        }
        else {
          modeState = 3;                                      // Пытаемся отсканировать rfid uid
        }
      }
      break;

    case 2:
      while (!getFingerprintEnroll());                        // Пытаемся получить ответ об присваивании ID
      modeState = 1;
      break;

    case 3:
      rfidYes = 0;

      Serial.println(". . . Put RFID in Scanner! . . .");
      delay(400);
      Serial.println(". . . Put RFID in Scanner! . . .");
      delay(400);      
      Serial.println(". . . Put RFID in Scanner! . . .");
      delay(5000);

      if (mfrc522.PICC_IsNewCardPresent()) {                  // Пытаемся отсканировать rfid uid
        delay(100);
        if (mfrc522.PICC_ReadCardSerial()) {
          //mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
          frcUID = "";
          for (byte i = 0; i < mfrc522.uid.size; i++) {
            frcUID = frcUID + (mfrc522.uid.uidByte[i]);
          }
          frcUID = ". . . New RFID UID=" + frcUID + "@ . . .";
          rfidYes = 1;
          Serial.println(frcUID);
          delay(400);
          Serial.println(frcUID);
          delay(400);
          Serial.println(frcUID);
          delay(400);
          Serial.println(frcUID);
        }
      }

      if (rfidYes == 0) {
        Serial.println(". . . RFID error! . . .");
        delay(400);
      }

      modeState = 1;
      break;
  }
}

// функция возвращает номер, введённый с COM-порта
uint8_t readnumber(void) {
  int num = -1;                                                 // Переменная с номером, который требуется вернуть
  while (num < 0) {                                             // Вход в цикл, пока переменная num не станет >= 0
    while (!Serial.available());                                // Ожидание пока в буфере COM-порта нет появятся данные
    while (Serial.available()) {                                // Цикл пока в буфере COM-порта не закончатся данные
      char c = Serial.read();                                   // Присваиваем очередной символ из COM-порта в переменную c
      if (isdigit(c)) {                                         // Если значение переменной с - цифра, то ...
        if (num < 0) {
          num = 0; // Увеличиваем значение num на один порядок
        } else {
          num *= 10;
        }
        num += c - '0';                                         // Прибавляем к значению num цифру из переменной c
      } delay(5);                                               // Задержка на 5мс, чтоб в буфер COM-порта успели догрузиться следующие символы (если таковые имеются)
    }
  }
  return num;                                                   // Возвращение введённого числа
}

uint8_t getFingerprintEnroll() {
  int p;                                                                                                                // Переменная для получения результатов выполнения функций
  //Загрузка первого изображения отпечатка пальца
  p = -1;
  Serial.println(". . . Please put your new finger on the scanner . . .");                                              // Вывод сообщения "Пожалуйста положите Ваш палец на сканер"
  delay(400);
  Serial.println(". . . Please put your new finger on the scanner . . .");                                              // Вывод сообщения "Пожалуйста положите Ваш палец на сканер"
  delay(400);
  Serial.println(". . . Please put your new finger on the scanner . . .");                                              // Вывод сообщения "Пожалуйста положите Ваш палец на сканер"
  delay(400);
  Serial.println(". . . Please put your new finger on the scanner . . .");                                              // Вывод сообщения "Пожалуйста положите Ваш палец на сканер"

  while (p != FINGERPRINT_OK) {                                                                                         // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_OK (корректная загрузка изображения)
    p = finger.getImage();                                                                                              // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p
    switch (p) {                                                                                                        // Проверка ответа ...
      case FINGERPRINT_OK:               Serial.println(" Ok!");                                              break;    // Изображение отпечатка пальца корректно загрузилось
      case FINGERPRINT_NOFINGER:         Serial.println(". . . Please put your new finger on the scanner . . ."); break;// Сканер не обнаружил отпечаток пальца
      case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . .");                   break;    // Ошибка соединения
      case FINGERPRINT_IMAGEFAIL:        Serial.println(". . . Imaging error Please try again . . .");        break;    // Ошибка изображения
      default:                           Serial.println(". . . Unknown error Please try again . . .");        break;    // Неизвестная ошибка
    }
  }
  //Конвертирование изображения первого отпечатка пальца
  p = finger.image2Tz(1);                Serial.print  (". . . Image converting . . .");                                // Конвертируем первое изображение и возвращаем результат выполнения данной операции в переменную p
  switch (p) {                                                                                                          // Проверка ответа ...
    case FINGERPRINT_OK:                 Serial.println("Ok!");                                               break;    // Изображение сконвертировано
    case FINGERPRINT_IMAGEMESS:          Serial.println(". . . Image too messy . . .");                       return p; // Изображение слишком нечеткое
    case FINGERPRINT_PACKETRECIEVEERR:   Serial.println(". . . Communication error . . .");                   return p; // Ошибка соединения
    case FINGERPRINT_FEATUREFAIL:        Serial.println(". . . No fingerprint on image . . .");               return p; // Ошибка конвертирования
    case FINGERPRINT_INVALIDIMAGE:       Serial.println(". . . No fingerprint on image . . .");               return p; // Ошибка изображения
    default:                             Serial.println(". . . Unknown error . . .");                         return p; // Неизвестная ошибка
  }
  //Просим убрать палец от сканера
  p = 0;
  while (p != FINGERPRINT_NOFINGER) {                                                                                // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_NOFINGER (сканер не обнаружил отпечаток пальца)
    Serial.println(". . . Please remove your finger from the scanner . . .");                                        // Вывод сообщения "Пожалуйста уберите Ваш палец со сканера"
    delay(400);

    p = finger.getImage();                                                                                           // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p
  }
  Serial.println(" Ok!");

  //Загрузка второго изображения отпечатка пальца
  p = -1;
  Serial.println(". . . Place same finger again . . .");                                                              // Вывод сообщения "Пожалуйста положите тот же палец еще раз"
  delay(400);

  while (p != FINGERPRINT_OK) {                                                                                      // Вход в цикл, пока переменная p не станет равна константе FINGERPRINT_OK (корректная загрузка изображения)
    p = finger.getImage();                                                                                           // Захватываем изображение и возвращаем результат выполнения данной операции в переменную p
    switch (p) {                                                                                                     // Проверка ответа ...
      case FINGERPRINT_OK:               Serial.println(" Ok!");                                      break;         // Изображение отпечатка пальца корректно загрузилось
      case FINGERPRINT_NOFINGER:         Serial.println(". . . Place same finger again . . .");       break;         // Сканер не обнаружил отпечаток пальца
      case FINGERPRINT_PACKETRECIEVEERR: Serial.println(". . . Communication error . . .");           break;         // Ошибка соединения
      case FINGERPRINT_IMAGEFAIL:        Serial.println(". . . Imaging error . . .");                 break;         // Ошибка изображения
      default:                           Serial.println(". . . Unknown error . . .");                 break;         // Неизвестная ошибка
    }
  }

  //Конвертирование изображения второго отпечатка пальца
  p = finger.image2Tz(2);                Serial.print  (". . . Image 2 converting . . .");                              // Конвертируем второе изображение и возвращаем результат выполнения данной операции в переменную p
  switch (p) {                                                                                                          // Проверка ответа ...
    case FINGERPRINT_OK:                 Serial.println("Ok!");                                               break;    // Изображение сконвертировано
    case FINGERPRINT_IMAGEMESS:          Serial.println(". . . Image too messy . . .");                       return p; // Изображение слишком нечеткое
    case FINGERPRINT_PACKETRECIEVEERR:   Serial.println(". . . Communication error . . .");                   return p; // Ошибка соединения
    case FINGERPRINT_FEATUREFAIL:        Serial.println(". . . No fingerprint on image . . .");               return p; // Ошибка конвертирования
    case FINGERPRINT_INVALIDIMAGE:       Serial.println(". . . No fingerprint on image . . .");               return p; // Ошибка изображения
    default:                             Serial.println(". . . Unknown error . . .");                         return p; // Неизвестная ошибка
  }
  //Создание модели (шаблона) отпечатка пальца, по двум изображениям
  p = finger.createModel();              Serial.print  (". . . Creating model . . .");                        // Создание модели (шаблона) отпечатка пальца, по двум изображениям
  if (p == FINGERPRINT_OK              ) {
    Serial.println(". . . Model create! Ok! . . .");
  } else // Модель (шаблон) отпечатка пальца создана
    if (p == FINGERPRINT_PACKETRECIEVEERR) {
      Serial.println(". . . Communication error . . .");
      return p;
    } else // Ошибка соединения
      if (p == FINGERPRINT_ENROLLMISMATCH  ) {
        Serial.println(". . . Fingerprints did not match . . .");
        return p;
      } else // Отпечатки пальцев не совпадают
      {
        Serial.println(". . . Unknown error . . .");                                  // Неизвестная ошибка
        return p;
      }
  //Сохранение, ранее созданной, модели (шаблона) отпечатка пальца, под определённым ранее, идентификационным номером
  p = finger.storeModel(id);
  //Serial.println(". . . Saving model . . .");
  Serial.println(". . . Saving model . . .");

  //Serial.println(". . . Saving model in ID="); Serial.print(id); Serial.print(": ");  // Сохранение модели (шаблона) отпечатка пальца, по двум изображениям
  if (p == FINGERPRINT_OK              ) {
    frcUID = ". . . Model save in ID=" + String(id) + "! . . .";
    Serial.println(frcUID);
    delay(1500);
    Serial.println(frcUID);
    delay(400);
    Serial.println(frcUID);
    delay(400);
    Serial.println(frcUID);

  } else // Модель (шаблон) отпечатка пальца сохранена
    if (p == FINGERPRINT_PACKETRECIEVEERR) {
      Serial.println(". . . Communication error . . .");
      return p;
    } else // Ошибка соединения
      if (p == FINGERPRINT_BADLOCATION     ) {
        Serial.println(". . . Could not store in that location . . .");
        return p;
      } else // Не удалось сохранить в этом месте
        if (p == FINGERPRINT_FLASHERR        ) {
          Serial.println(". . . Error writing to flash . . .");
          return p;
        } else // Ошибка записи в flash память
        {
          Serial.println(". . . Unknown error . . .");                              // Неизвестная ошибка
          return p;
        }
}


 

Эпилог

Цена планшета около 10 000 руб. (на самом деле от 7000 новые можно купить с 1 Gb ОЗУ но с 4Gb 1с будет поприятнее двигаться, я вообще взял б.у. с рук за 6000 в идеальном состоянии с 1Gb но повозился с оптимизацией).

Проходная делалась для мебельного производства поэтому корпус я изготовил там же. Думаю что можно напилить "смесь опилок с картоном" в магазине за 1 000 руб. и скрутить саморезами/склеить суперклеем. В крайнем случае можно взять готовый ящик (например электрошкафчик) и выпилить там окно.

Модули ардуинки и прочее около 2 000 руб.

Удовольствие от мозгового штурма и изготовления - бесценно!

 

73

Скачать файлы

Наименование Файл Версия Размер
Исходники и чертеж для Arduino Mega
.zip 607,82Kb
19.08.18
10
.zip 607,82Kb 10 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Черный Плащ 159 22.08.18 08:49 Сейчас в теме
А почему нельзя было использовать обычный usb сканер отпечатка пальца ?
held88; collider; +2 Ответить
2. Fator26 6 22.08.18 09:23 Сейчас в теме
(1)В Вас пропадает дух авантюризма...
Dmitri93; +1 Ответить
5. DGorgoN 102 22.08.18 12:46 Сейчас в теме
(1) А есть готовые примеры реализации?
3. Region102 22.08.18 11:36 Сейчас в теме
А как обрабатываются сбои, зависание arduinы, зависание 1С, зависание com порта? Внедряя проф скуд на предприятии, первые несколько месяцев были постоянные скандалы с опозданцами. Помогало видео наблюдение на проходной.
7. DGorgoN 102 22.08.18 12:49 Сейчас в теме
(3) Честно говоря пока никак, единственное что можно перезагрузить всё.
9. TitanLuchs 152 22.08.18 17:20 Сейчас в теме
(3) У "Меги" есть встроенный таймер, отслеживающий зависание. При его срабатывании контроллер перезагружается.
12. DGorgoN 102 22.08.18 19:40 Сейчас в теме
14. TitanLuchs 152 22.08.18 23:24 Сейчас в теме
(12) Там 3 строчки кода. Подключаешь стандартную библиотеку
#include <avr/wdt.h>

В setup() Устанавливаешь время, через которое должен сработать таймер:
wdt_enable(WDTO_2S);
WDTO_2S - это константа, в данном случае 2 секунды. Можно ставить от 15 мсек до 8 сек.

В цикле loop() сбрасываешь таймер:
wdt_reset();

Если контроллер зависает, то программа перестает сбрасывать таймер и через указанное в сетапе время происходит хард-резет. Именно хард, аналогичный нажатию кнопки "Сброс".
25. DGorgoN 102 24.08.18 19:02 Сейчас в теме
(14) "но дело в том, что все это работает только в Arduino Uno, а на Arduino Mega, Mini и Nano все это работает ровно наоборот, т.е. не работает совсем :)"
Ахах (
26. TitanLuchs 152 24.08.18 20:45 Сейчас в теме
(25) Загрузка нового бутлоадера решает проблему. В интернетах много информации на эту тему.
27. DGorgoN 102 24.08.18 22:56 Сейчас в теме
(26) Это понятно, буду мучать уже следующую версию, думаю всё таки если время будет то мучать буду уже по http
4. pro-rok 250 22.08.18 12:39 Сейчас в теме
Как я понял ардуинка связана с планшетом по usb. На планшете 1С (подключенная через Wi-Fi) обрабатывает посылки от ардуино.
В 1С вызывается внешнее событие или какое-то регламентное задание опрашивает ?
Так и не понял назначение MsCommLib.MsComm, она эмулирует com порт?
6. DGorgoN 102 22.08.18 12:48 Сейчас в теме
(4) В 1с с помощью MsComm считывается ком порт и посылаются туда значения с помощью обработки ожидания
8. pro-rok 250 22.08.18 14:17 Сейчас в теме
(6) Я подобную связь организовывал напрямую через ком. В 1С говорил например что на com 3 висит сканер ШК и подключал обработчик внешнего события. Как только ардуинка ловива показания от датчиков она отправляла значение в ком порт, предварительно ставил префикс события например D1 ( первый датчик), что бы понимать каккой датчик сработал. 1С отрабатывала как внешнее событие от сканера и передавала мне ШК, т.е. показание датчика.
13. DGorgoN 102 22.08.18 19:51 Сейчас в теме
(8) Напрямую через com это как?
17. pro-rok 250 23.08.18 13:02 Сейчас в теме
(13) С планшетом я не эксперементировал, но при подключении ардуинки к ПК через USB она автоматом эмулирует COM порт (через который собственно и прошивается само железо). В 1С я подключаю сканер ШК говорю что он работает через СОМ в качестве номера порта указываю тот, который эмулирует драйвер ардуино. Как только ардуино что то посылает в СОМ порт в 1С срабатывает обработка события. Тут правда получается односторонняя связь. В обратную сторону при необходимости можно использовать Ethernet, код не сложный нужна только плата.
void loop()
{

  char* params;                              // переменная для хранения полученного запроса
  if (params = ethernet.serviceRequest())    //Если чтото пришло, то считываем и выполняем код
  {    
    if(params[0] == '1'){   // Если пришла команда 1 то ...
     digitalWrite(10, LOW);   // выключаем реле
    ethernet.print(ch1);   // отправляем ответ "1"
    }
    else if(params[0] == '2'){   // иначе если пришла команда 2 то...
     digitalWrite(10, HIGH);       // включаем реле 
    ethernet.print(ch2);         // отправляем ответ "2"
Показать
19. DGorgoN 102 23.08.18 13:08 Сейчас в теме
(17) 1.Мне очень важна двухсторонняя связь
2. Планшет это тот же ПК на Win, они только форм-фактором различаются.
10. TitanLuchs 152 22.08.18 18:16 Сейчас в теме
Нормуль, но лучше все-таки было бы разобраться с http-сервисами и сделать все на них. Было бы более масштабируемо, надежнее и дешевле. Ардуина легко работает как с ethernert, так и с wi-fi. Планшет исключаем, вместо него можно поставить дисплей: или обычный сегментный, или LCD - они сейчас стоят копейки. Таким образом уходит еще одно слабое звено в виде соединения дуни с планшетом через сом-порт, заодно и лицензия одна сэкономится. При сканировании отпечатка или карты дергаем 1С через http-сервис, можно даже сразу от нее получать ответ, разрешение на вход, например, и при необходимости показывать на экране. Итого стоимость запчастей обойдется в 2500 рублей (это по максимуму).
Но в целом лайк, конечно.
11. DGorgoN 102 22.08.18 19:39 Сейчас в теме
(10) Я всё понимаю но это будет следующая версия
18. DGorgoN 102 23.08.18 13:06 Сейчас в теме
(10) И еще по поводу слабого звена. Через 1с ведь можно любой интерфейс нарисовать. Ещё там админка есть, которая сразу у аппарата позволяет присвоить человеку свой код
20. TitanLuchs 152 23.08.18 13:29 Сейчас в теме
(18) Я ж не настаиваю на своем варианте ) Все зависит от того, какой в итоге функционал вы хотите реализовать. Если интерфейс нужен более продвинутый, чем просто отображение одной строчки с сообщением, то конечно планшет с 1С тут выигрывает.
15. DGorgoN 102 23.08.18 02:06 Сейчас в теме
Просто еще нужно учесть что понятно что было бы прикольно экран к малине или ардуино и там свой софт без лицензии но ведь и устройство получилось ну очень интересным. Зная код на 1с можно управлять всякими ардуинами без посредников. Даешь робота на 1с!
16. TitanLuchs 152 23.08.18 09:34 Сейчас в теме
21. Region102 23.08.18 17:28 Сейчас в теме
Честно говоря к данной реализации отношусь скептически, ладно если работает, а что если при зависании одного из компонентов пропадут проходы тысячи сотрудников. Думаю вы услышите множество лестных слов в свой адрес. Не вник в код на ардуине, вы пишите проходы в постоянную память?
22. DGorgoN 102 23.08.18 17:53 Сейчас в теме
(21) Проходы сразу пишутся в базу 1с, если устройство зависнет то ребут.
Причём 1с сразу выводит на экране сотрудника, который проходит да еще вдобавок и пикает. Т.е. если ожидаемого не происходит то ребут. Никто не пройдет незамеченным.
23. Region102 24.08.18 06:16 Сейчас в теме
(22) Что происходит если 1С зависает? На проходной 100 человек и все хотят зайти. Я понимаю ребут ардуины по таймеру, а вот ребут 1С это дело не 30 секунд. Я не стараюсь критиковать, я стараюсь улучшить ваш продукт ). Сам люблю ардуинку, но 1С в нашей СКУД выполняла только роль backend-а, туда регламентым заданием забирались данные о проходах и строились отчеты из базы Firebase СКУД. В столовой у нас был подключен считыватель по вашему принципу, и были периодические глюки и зависания, вот основные по приоритетам:
1. Зависло регламентное задание опрашивающие считыватель и выводящее данные на дисплей.
2. Завис хаб.
3. Завис комп с 1С
4. Завис считыватель. Очень редко, но обычно удавалось вытащить проходы из его памяти.
Все зависания решались тем, что сотрудники писали свои проходы на листочке в ручную.
24. DGorgoN 102 24.08.18 15:50 Сейчас в теме
(23) Если 1с зависает то это очень и очень плохо. У меня 1с по настоящему зависала два раза в год из-за проблем с оборудованием. Всё остальное время она работала 24\24. Мне сложно представить что такое бывает.
Я проверю реализацию после эксплуатации и напишу вам!
28. pro-rok 250 30.08.18 09:07 Сейчас в теме
(23) Зависание хаба, компа или считывателя возможно даже если используется не 1С+Arduino, а нечто другое.
29. Region102 31.08.18 14:12 Сейчас в теме
(28) Использовали проф СКУД, считыватели за несколько лет не зависли ни разу. Внутренняя память в считывателе на 90тыс событий решала все проблемы с зависанием остальных компонентов. Зависали считыватели другого производителя, но они и стоили в 5 раз дешевле, правда зависание было своеобразным, считыватель переставал опрашиваться через сеть, но проходы продолжал писать в память.
30. DGorgoN 102 31.08.18 18:00 Сейчас в теме
Ну сделать рестарт на Ардуино это плюс 400 рублей денег. Поставить Ардуино мини и мониторить оба устройства и уже 2 надежность.
31. taishy 51 02.10.18 09:22 Сейчас в теме
+ напечатать корпус под это все на 3Д-принтере
32. alexander-lubich 02.10.18 09:36 Сейчас в теме
нормальное решение, считыватель может быть подключен к локальной базе , которую можно назвать "СКУД" и ее задача будет - накопление и информации и отправка ее в основную базу . зависание ардуино - 1 минута, перезагрузка компа с локальной базой - 3 минуты. + проработать пару сценариев развития учета в случае долговременного отказа , например второй комплект оборудования (комп+ считыватель на аруине) для ряда проектов вполне себе решение.

мне интересно как малину с 1С соединить, в ардуине тесно.
33. alexander-lubich 02.10.18 09:42 Сейчас в теме
если Ардуина работает c атоловским драйвером через UART и мы имеем подключение USB устройства к компьютеру то для Расберри я иного кроме вебсервисов не вижу пока.
34. Rik30 13 02.10.18 13:28 Сейчас в теме
Ну рукожопам всегда почёт и уважуха,хорошо описал тему. Вот только в стабильности данной разработки сомневаюсь.У меня 1500 чел.проходят в день через Anviz- и то траблов хватает.(Хотя это монолитное устройство) - только результаты считывай - ID сотрудника и время прихода-ухода по Ethetnetу.А тут такой "головняк".Каждое зависание данного устройства или его компонента -будет вызывать недоверие в его адекватности работы. Соответственно жуликоватые сотрудники- которые привыкли опаздывать - будут себя пяткой в грудь бить и говорить, что они отмечались, а эта электронная штуковина засбоила. Но в любом случае - работа хорошая - добавляю в закладки.
P.S, - Цена устройства Anviz (считывание отпечатков и карт) стоит порядка 12-14 тыс.
35. starik-2005 1971 02.10.18 14:07 Сейчас в теме
Код на С - отдельная песня, но за то, что еще раз вспомнили про ардвинку - однозначно плюс.

И да, в час, когда первые ступени многоразовых ракет приземляются на плавучие платформы в атлантических океанах, использовать что-то без WiFi (тот же ESP8266) - стыд и позор.
36. dmarenin 240 06.10.18 18:33 Сейчас в теме
(35) там не совсем с (обертка над c-avr)
37. starik-2005 1971 06.10.18 21:15 Сейчас в теме
(36) и чем отличается от С?)))
38. danil7772 26.06.19 13:28 Сейчас в теме
Никто не пробовал реализовать хранение отпечатков пальцев в базе данных типа Постгре и тп. ,чтобы хранить более 1000 отпечатков?
Оставьте свое сообщение

См. также

Закрытие незавершенных сеансов 38

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Сервисные утилиты Администрирование СУБД

Как удалять потерянные сеансы пользователей, чтобы они не мешали работе. Обработка протестирована на платформе версии 8.3.13.1644.

1 стартмани

20.09.2019    3591    16    AnatolPopov    6       

Мониторинг потребления ресурсов базами кластеров сервера 29

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты

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

2 стартмани

17.07.2019    3181    20    IVC_goal    34       

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android 25

Инструменты и обработки Программист Пользователь Расширение (cfe) v8 v8::Mobile Розница УНФ ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика УУ Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Абонемент ($m) Внешние источники данных Сканер штрих-кода Терминал сбора данных Работа с интерфейсом Мобильная разработка

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Для выгрузки базы штрихкодов и загрузки собранных штрихкодов в документы учетной системы используется Яндекс Диск или облачный сервис и расширение конфигурации. Работает с конфигурациями Розница 2, УНФ 1.6, УТ 11, ERP, КА2.

3 стартмани

22.04.2019    12207    61    suepifanov    63       

Блин, мы забыли включить регламентные задания… 51

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Абонемент ($m) Сервисные утилиты

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    7102    10    slozhenikin_com    36       

Bash-скрипт для установки 1С:Предприятие 8.3 и СУБД PostgreSQL на сервер CentOS 7 40

Инструменты и обработки Системный администратор Программист Архив с данными v8 Россия Linux Абонемент ($m) Сервисные утилиты

Данный скрипт позволяет практически полностью установить сервер 1С. В конце остается только настроить PostgreSQL для конкретного железа.

1 стартмани

07.04.2019    7954    25    Sedaiko    25       

Утилита для регистрации ComConnector и консоли администрирования сервером по установленным версиям платформы 39

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Россия Windows Абонемент ($m) Сервисные утилиты

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

1 стартмани

20.03.2019    3735    22    vardeg    10       

LicDataDecoder - расшифровка файла программной лицензии 1С 101

Инструменты и обработки Системный администратор Приложение (exe) v8 1cv8.cf Россия Windows Абонемент ($m) Сервисные утилиты

Представляю вашему вниманию утилиту, предназначенную для работы с файлами программных лицензий 1С (*.lic).

1 стартмани

10.02.2019    12830    168    GeraltSnow    48       

Удобная консоль регламентных и фоновых заданий 45

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Универсальные обработки Сервисные утилиты Администрирование данных 1С

Аналог обработки БСП "РегламентныеИФоновыеЗадания". Не требует наличия библиотек, может использоваться в качестве внешней обработки. В отличие от обработки БСП предоставляет больше информации о свойствах регламентных и фоновых заданий, а также об ошибках и сообщениях для пользователей, возникших во время их выполнения. Позволяет управлять регламентными (создание, удаление, настройка расписания, ручной запуск) и фоновыми (прерывание) заданиями.

1 стартмани

06.02.2019    5590    95    Alxby    15       

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь полноценный оффлайн (обновление от 15.08.19)! 173

Инструменты и обработки Программист Архив с данными v8 v8::Mobile БУ УУ Android Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Абонемент ($m) Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    21851    219    informa1555    172       

Универсальный монитор лицензий 1С 57

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Сервисные утилиты

Хотите узнать, какие программные лицензии установлены на сервере и все их технические подробности? А может быть, вам нужна информация по использованию всех видов лицензий кластера? Нет ничего проще, читай далее, чтобы быть в курсе!

3 стартмани

03.01.2019    13423    130    Xershi    42       

Централизованное управление списком доступных баз 1С у пользователей 8

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Россия Windows Абонемент ($m) Стартеры 1С Сервисные утилиты Рабочее место

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

5 стартмани

05.12.2018    5606    7    RomikR    7       

Чистка кэша 1С (теперь в .exe) 49

Инструменты и обработки Системный администратор Приложение (exe) v8 Windows Абонемент ($m) Сервисные утилиты

Попробуйте поискать в интернете "Очистить кэш 1С". Практически везде вы наткнетесь на всякие батники, ps-скрипты, рекомендации зайти и удалить вручную, поставить /ClearCache для баз на УФ и т.д. В подавляющем большинстве случаев предлагается бездумно удалить все содержимое \Roaming\1C\1cv8\ и \Local\1C\1cv8\, но это как переустановить Windows, чтобы почистить Temp.

1 стартмани

18.11.2018    8650    76    riposte    42       

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек. 32

Инструменты и обработки Системный администратор Компонента, плагин (dll, vbs,..) v8 1cv8.cf Россия Windows Абонемент ($m) Чистка базы Сервисные утилиты Администрирование данных 1С

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

1 стартмани

04.11.2018    19635    287    Eugen-S    34       

Go. Разбор лога технологического журнала. Достойная альтернатива perl'у 85

Статья Системный администратор Программист Архив с данными v8 1cv8.cf Абонемент ($m) Сервисные утилиты Инструментарий разработчика

Началось все с того, что я познакомился с перловыми скриптами для парса ТЖ которые размещены на kb.1c.ru (например в этой статье https://kb.1c.ru/articleView.jsp?id=113). По началу мне дико понравилось то, что перл разбирал гигабайты логов за считанные минуты, но позитив мой угасал обратно пропорционально с тем, насколько глубже я погружался в "кроличью нору" ....

1 стартмани

24.10.2018    10561    4    lazarenko    39       

1С:Коммандер (УФ) 31

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Сервисные утилиты

Коммандер для просмотра файлов на клиенте и сервере.

1 стартмани

07.09.2018    5113    21    Student1C    9       

ЕГАИС 3 Контролёр для 1С:Розница 7

Инструменты и обработки Системный администратор Пользователь Внешняя обработка (ert,epf) v8 Розница Розничная и сетевая торговля (FMCG) Россия УУ Android Розничная торговля Абонемент ($m) Терминал сбора данных

Оградите себя от рисков отзыва лицензии на торговлю алкоголем, штрафов и блокировок в ЕГАИС. Проверяйте поступающую алкогольную продукцию помарочно на соответствие ТТН ЕГАИС v3 перед тем, как подтвердить получение и принять её на баланс в ЕГАИС. С 01.07.2018 начинается переход ЕГАИС на помарочный учет алкогольной продукции на всех стадиях товародвижения, начиная от производства или ввоза на территорию России, до реализации в розничной торговле, т.н. "ЕГАИС 3.0". В типовой Рознице уже появилась обработка для контроля поступивших акцизных марок на ПК. Предлагаю ознакомиться с мобильным решением. Контроль производится в Android приложении на ТСД или на обычном смартфоне.

1 стартмани

13.06.2018    9760    16    kuld    30       

Автоматическое заполнение графиков в ЗУП 3.1 6

Инструменты и обработки Бухгалтер Архив с данными v8 v8::СПР ЗУП3.x Россия БУ Зарплата Учет рабочего времени Абонемент ($m) Обработка справочников

Данная разработка будет актуальна для организаций с большим количеством графиков (несколько десятков/сотен).

1 стартмани

05.05.2018    8819    15    notserioussam    1       

Очередная система ведения учета задач 50

Отчеты и формы no Архив с данными v8 Россия УУ Учет рабочего времени Абонемент ($m) Рабочее место Личная эффективность

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

7 стартмани

28.02.2018    12180    117    asdes    42       

Мониторинг изменений рабочих конфигураций. Часть 1. Сохранение конфигураций из базы SQL без конфигуратора 104

Статья Системный администратор Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты

Выгружаем исходники из SQL напрямую скриптом, собираем CF и контролируем реальные изменения в рабочих базах из браузера.

1 стартмани

28.02.2018    14467    16    user768334    25       

Практика доступа в базу 1С через протокол oData. Чтение данных 283

Статья Системный администратор Программист Бизнес-аналитик Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Сервисные утилиты Практика программирования Администрирование данных 1С

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    58015    252    Dementor    43       

Мобильное приложение "Отчет по проделанной работе" 8

Инструменты и обработки Программист Конфигурация (md, cf) v8 Россия УУ Учет рабочего времени Абонемент ($m) Мобильная разработка

Приложение выполняет фиксацию рабочего времени у клиентов, а также заявок на работы, пригодится как шаблон для разработки своего или как готовое решение для работников в сфере услуг, которые фиксируют время у клиентов. В приложении 2 документа: первый "отчет за день", второй "заявка" и полезный инструмент "Отчет задачи", который в свою очередь создан для просмотра, анализа и закрытия заявок. Тестировал на Iphone 6s.

10 стартмани

01.12.2017    13093    10    olejnikov_m    6       

Быстрое удаление неиспользуемых версий 1С:Предприятие 8, кэша метаданных и информационных баз 45

Инструменты и обработки Системный администратор Приложение (exe) v8 Windows Абонемент ($m) Сервисные утилиты

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

1 стартмани

14.11.2017    14909    85    bonv    15       

V8 Log Scanner - утилита для быстрого парсинга логов ТЖ 75

Инструменты и обработки Системный администратор Программист Архив с данными v8 Россия Абонемент ($m) Сервисные утилиты

Как можно быстро настраивать logcfg.xml и парсить логи технологического журнала с помощью самописной open-source утилиты V8LogScanner. Без необходимости погружаться в регулярные выражения.

1 стартмани

07.11.2017    13783    5    ripreal1    27       

Графическая оболочка для консольной утилиты cnvdbfl.exe 105

Инструменты и обработки Системный администратор Архив с данными v8 Windows Абонемент ($m) Сервисные утилиты

Графическая оболочка для консольной утилиты cnvdbfl.exe предназначенной для преобразования размера внутренней страницы файла базы 1С.

1 стартмани

25.10.2017    30571    215    frkbvfnjh    43       

Удаление данных напрямую в SQL 55

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::СКД 1cv8.cf Абонемент ($m) Сервисные утилиты

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

1 стартмани

08.07.2017    11155    76    denacid    29       

ОСкрипты для деплоя и копирования базы данных 128

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Абонемент ($m) Сервисные утилиты

Набор оскриптов для деплоя базы 1С через хранилище и копирование через sql-бекап одной базы в другую

1 стартмани

02.05.2017    17845    33    Stepa86    25       

Автокликер для 1С 70

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты

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

1 стартмани

03.04.2017    24060    69    slava_1c    49       

Система учета задач 148

Инструменты и обработки Программист Бизнес-аналитик Конфигурация (md, cf) v8 УУ Учет рабочего времени Абонемент ($m) Управление проектом Личная эффективность

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

1 стартмани

20.10.2016    32801    213    Fragster    117       

Организация файлового хранилища на базе MS SQL Server с доступом из 1С 79

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент Сервисные утилиты

Пример реализации хранения файлов в базе MS SQL Server с использованием различных технологий. Подробно рассмотрен потоковый доступ к файлам с использованием технологии FileStream.

1 стартмани

27.07.2016    18754    40    tohandr    23       

Анализ настроек кластеров 1С (+ менеджер файлов на сервере) 36

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Инструментарий разработчика Универсальные обработки

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

10 стартмани

26.12.2015    20343    48    zenechka    25       

Складские операции на ТСД 9

Инструменты и обработки Пользователь Конфигурация (md, cf) v8 УУ Учет ТМЦ Абонемент ($m) Терминал сбора данных

Складская мобильная программа для терминалов сбора данных.

1 стартмани

15.11.2015    19101    5    JetBrain    8       

Скачивание обновлений типовых конфигураций с портала 1С:ИТС 37

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Windows Абонемент ($m) Сервисные утилиты

С помощью этой конфигурации можно скачивать обновления с портала 1С:ИТС. Отличительные особенности: 1. Скачивание только тех пакетов, которые необходимы для обновления от текущей версии до самой новой; 2. Запуск скачивания с помощью VBS-скрипта; 3. Написана на родном языке ;)

1 стартмани

06.10.2015    18551    116    Wezoowy    32       

Простой отчет по фактическим отпускам 6

Отчеты и формы Бизнес-аналитик Бухгалтер Пользователь Внешний отчет (ert,erf) v8 ЗУП2.5 УПП1 БУ УУ Управление персоналом (HRM) Учет рабочего времени Абонемент ($m) Бухгалтерские Управленческие

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

2 стартмани

18.08.2015    24876    89    VBod    5       

Работа с push сервисами только средствами 1С 8.2 24

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Сервисные утилиты Инструментарий разработчика Универсальные обработки

Обработка для настройки, тестирования и использования с предустановками для 3-х сервисов. Текст модуля для внедрения в конфигурацию или другие обработки. Уведомления на телефон, компьютер, браузер.

1 стартмани

18.08.2015    24166    45    anig99    1       

Telemonitor - объединяем Telegram и 1С 170

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Администрирование данных 1С Мобильная разработка

Не так давно Telegram предоставил API для создания ботов. Telemonitor - программа, позволяющая легко настроить собственного бота для работы с 1С.

1 стартмани

09.08.2015    69973    230    salexdv    175       

Отключение назойливых окон и подтверждение легальности обновления(!) для БП 3.0 при помощи расширения 77

Инструменты и обработки no Расширение (cfe) v8 БП3.0 Россия Абонемент ($m) Сервисные утилиты

Отключение назойливых окон и подтверждение легальности обновления(!) для БП 3.0 при помощи расширения

1 стартмани

25.06.2015    40980    285    Йожкин Кот    55       

Завершение работы пользователей (выгонялка) 12

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Сервисные утилиты

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

1 стартмани

17.06.2015    25102    263    Rusleg    27       

Мониторинг аппаратных лицензий 1С 31

Отчеты и формы Системный администратор Внешний отчет (ert,erf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Администрирование данных 1С

Отчет по используемым лицензиям HASP по рабочим станциям и серверам лицензирования.

1 стартмани

31.03.2015    21945    288    due    20       

Направляем список пользователей, не закрывающих терминальные сессии 1С, на почту ИТ директору 39

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Инструментарий разработчика Email

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

1 стартмани

16.03.2015    26535    23    O-Planet    42       

ОКСи:Тестирование веб-сервиса 30

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Сервисные утилиты Инструментарий разработчика Тестирование и исправление

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

3 стартмани

24.02.2015    12975    64    linsa    15       

UsersLog.exe. Система полной отчетности об использовании рабочего времени пользователями. 1С, Word, Excel, Кино, Интернет, Одноклассники, ВКонтакте и т.д. Не только 1С, но и все активные окна Windows посекундно! 65

Инструменты и обработки Системный администратор Пользователь Приложение (exe) v8 1cv8.cf Windows Учет рабочего времени Абонемент ($m) Администрирование данных 1С

Система полной отчетности об использовании рабочего времени пользователями. Не только 1С, но и все активные окна Windows. Сколько времени и на что потрачено... Клиент UsersLog.exe запускается фоном на рабочих местах пользователей. Постоянно отслеживает активное окно Windows, его заголовок и имя процесса. Все это пишется в центральную базу данных sql, dbf или Excel. Конфигурация на 1С анализирует эти данные и строит любые отчеты использования рабочего времени по пользователям. Вплоть до конкретного заголовка любого окна. В случае отключения от центральной базы (ноутбук уехал в командировку) все данные пишутся локально, а при подключении к центральной базе - перемещаются в неё. Используются только официальные и документированные функции Windows.

1 стартмани

26.01.2015    15887    202    Kis_s    76       

Hasher Pro 1C \ 8.x \ Абсолютная очистка Кэша \ Кеша \ Хеша \ Временных файлов \ Мусора \ Создание гибкого скрипта очистки VBS \ BAT \ Дополнительные возможности \ УФ и Обычные \ Яркие впечатления 107

Инструменты и обработки Системный администратор Программист Пользователь Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Чистка базы Администрирование данных 1С

Hasher Pro 1C - это новый подход в очистке кэша 1С:Предприятия. В сообществе временные файлы пользователя 1С называют по разному: кэш, кеш, хеш и т.д. Как правило этот мусор хранится годами на вашем компьютере и занимает очень много места - сотни гигабайт могут быть заняты бесполезными файлами. Hasher Pro 1C сочетает в себе ТРИ варианта очистки Кэша: 1) Быстрый и безопасный, подходит для любого пользователя 1С. 2) Полный и более тщательный, для программистов и уверенных пользователей. 3) Агрессивный с дополнительными административными возможностями. * А так же интерактивное создание скрипт файлов VBS или BAT для отложенной очистки или передачи скрипта коллегам. Используйте обработку Hasher Pro 1C как незаменимый инструмент при работе с 1С:Предприятием 8.1, 8.2 и 8.3 в клиент-серверном и файловом варианте. Поддержка толстого клиента, тонкого клиента, управляемых форм, интерфейса Такси. Совместимость: Windows XP/Vista/7/8/10 (x32/x64) + Серверные платформы.

3 стартмани

02.01.2015    40080    541    ya.Avoronov    34       

Безопасное копирование файловых баз данных 1С (1Cv8.1CD) 37

Инструменты и обработки Системный администратор Приложение (exe) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Архивирование (backup)

Безопасное копирование файловых баз данных 1С (1Cv8.1CD) При подключенных пользователях!

1 стартмани

22.12.2014    43524    116    BorovikSV    27       

Очистка кэша 1С 8.1 - 8.2 - 8.3 (удаление кэша для ВСЕХ пользователей терминального сервера) + запуск с ключом. 44

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты

Удаляет кэш 1С 8.1 8.2 8.3. Возможность удалять кэш или все настройки всех пользователей терминального сервера.

1 стартмани

30.11.2014    64539    702    LUD22    34