Подключение ТСД к копии базы
Добрый вечер, всех с прошедшими праздниками.
Ситуация такая, захотел клиент копию базы, с переносом нескольких справочников (упр. учет)
Перенес я базу, справочники перетянулись. (Делал через обработку ВыгрузкаЗагрузкаДанныхXMLPlusV5.epf в идентичную пустую конфигурацию) Но вот ТСДшник перестал заполнять значения в документы. Причем в старой базе грузит. Проверил торговое оборудование, справочник и регистр сведений. Обработка идентична, модули так же.
Если убрать ТСД (вынуть кабель или отключить) старая база бодро говорит, что не нашла. Новая база всегда говорит, что я подлючилась, но при попытке выгрузке вылетает тайм аут ошибка.
Подскажите, что я еще мог не перенести? УТ 10.3 1С:Предприятие 8.3 (8.3.8.1784)
Проблема идет в момент подключения
ЗагрузитьВнешнююКомпоненту("CipherLab.dll");
Сообщить("Компонента ""CipherLab.dll"" загружена.");
Терминал = Новый("AddIn.CipherLab");
ЗагрузитьВнешнююКомпоненту("CipherLab.dll");
Сообщить("Компонента ""CipherLab.dll"" загружена.");
// создание объекта внешней компоненты
Попытка
Терминал = Новый("AddIn.CipherLab");
Сообщить( "Объект внешней компоненты создан.");
Исключение
Сообщить("Ошибка создания объекта внешней компоненты ""AddIn.CipherLab""!", СтатусСообщения.Внимание);
Сообщить("Объект внешней компоненты не создан!");
КонецПопытки;
Вот на косячной базе он всегда подключен и дальше пытается получить данные, естественно у него не получается.
Cipherlab dll как зарегистрировать
If you think you have been blocked in error, contact the owner of this site for assistance.
If you are a WordPress user with administrative privileges on this site, please enter your email address in the box below and click «Send». You will then receive an email that helps you regain access.
Block Technical Data
Block Reason: | Access from your area has been temporarily limited for security reasons. |
---|---|
Time: | Mon, 13 Jun 2022 14:29:55 GMT |
About Wordfence
Wordfence is a security plugin installed on over 4 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.
You can also read the documentation to learn about Wordfence’s blocking tools, or visit wordfence.com to learn more about Wordfence.
Click here to learn more: Documentation
Generated by Wordfence at Mon, 13 Jun 2022 14:29:55 GMT.
Your computer’s time: .
Регистрируем файл DLL в ОС Windows
После установки различных программ или игр можно столкнуться с ситуацией, когда при включении возникает ошибка «Запуск программы произвести невозможно, так как требуемой DLL нет в системе». Несмотря на то, что ОС семейства Windows обычно регистрируют библиотеки в фоновом режиме, после того, как вы скачаете и поместите ваш DLL файл в соответствующее место, ошибка все равно возникает, и система просто его «не видит». Чтобы это исправить, нужно зарегистрировать библиотеку. Как это можно сделать, будет рассказано далее в этой статье.
Варианты решения проблемы
Имеется несколько методов, позволяющих устранить данную проблему. Рассмотрим каждый из них подробнее.
Способ 1: OCX/DLL Manager
OCX/DLL Manager – это маленькая программа которая может помочь зарегистрировать библиотеку или файл OCX.
Для этого вам нужно будет:
- Нажать на пункт меню «Register OCX/DLL».
- Выбрать тип файла, который будете регистрировать.
- При помощи кнопки «Browse» указать местоположение DLL.
- Нажать на кнопку «Register» и программа сама зарегистрирует файл.
OCX/DLL Manager также умеет отменять регистрацию библиотеки, для этого понадобится выбрать в меню пункт «Unregister OCX/DLL» и в последствии проделать все те же операции, как и в первом случае. Функция отмены может вам понадобиться для сравнения результатов при активированном файле и при отключенном, а также в процессе удаления некоторых компьютерных вирусов.
В процессе регистрации, система может выдать вам ошибку, говорящую о том, что требуются права администратора. В таком случае, нужно запустить программу нажав на неё правой кнопкой мыши, и выбрать «Запуск от имени администратора».
Способ 2: Меню «Выполнить»
Можно зарегистрировать DLL, используя команду «Выполнить» в стартовом меню операционной системы Windows. Для этого нужно будет произвести следующие действия:
- Нажать клавиатурную комбинацию «Windows + R» или выбрать пункт «Выполнить» из меню «Пуск».
- Ввести имя программы, которая будет регистрировать библиотеку — regsvr32.exe, и путь, по которому размещен файл. В итоге должно получиться так:
где dllname — это имя вашего файла.
Этот пример подойдёт вам в том случае, если операционная система установлена на диск С. Если она находится в другом месте, то нужно будет поменять букву диска или воспользоваться командой:
В таком варианте программа сама находит папку где у вас установлена ОС и запускает регистрацию указанного DLL файла.
В случае с 64-разрядной системой у вас будет две программы regsvr32 — одна находится в папке:
и вторая по пути:
Это разные файлы, которые используются раздельно для соответствующих ситуаций. Если у вас 64-битная ОС, а файл DLL 32-битный, тогда сам файл библиотеки должен быть помещен в папку:
и команда будет выглядеть уже так:
Способ 3: Командная строка
Регистрация файла через командную строку не сильно отличается от второго варианта:
- Выберите команду «Выполнить» в меню «Пуск».
- Впишите в открывшемся поле для ввода cmd.
- Нажмите «Enter».
Перед вами появится окно, в котором нужно будет вводить те же команды, что и во втором варианте.
Надо отметить, что у окна командной строки имеется функция вставки скопированного текста (для удобства). Найти это меню можно, нажав правой кнопкой на пиктограмме в левом верхнем углу.
Способ 4: Открыть с помощью
- Откройте меню файла, который будете регистрировать, нажав по нему правой кнопкой мыши.
- Выберите «Открыть с помощью» в появившемся меню.
- Нажимаете «Обзор» и выберете программу regsvr32.exe из следующей директории:
или в случае, если вы работаете в 64-битной системе, а файл DLL 32-разрядный:
Возможные ошибки
«Файл не совместим с установленной версией Windows» — это означает, что вы, скорее всего, пытаетесь зарегистрировать 64-разрядную DLL в 32-битной системе или наоборот. Воспользуйтесь соответствующей командой, описанной во втором способе.
«Точка входа не найдена» — не все библиотеки DLL можно зарегистрировать, некоторые из них просто не поддерживают команду DllRegisterServer. Также, возникновение ошибки может быть вызвано тем, что файл уже зарегистрирован системой. Существуют сайты, распространяющие файлы, которые в реальности не являются библиотеками. В таком случае, естественно, зарегистрировать ничего не выйдет.
В заключение нужно сказать, что суть всех предложенных вариантов одна и та же — это просто разные методы запуска команды регистрации — кому как удобнее.
Cipherlab dll как зарегистрировать
Здравствуйте!
Предстоит работа с терминалом ChiphrLab 8300 — подключение к действующей складской программе на fox-e. Есть компонента Olecpt.dll, и библиотека CipherLab.dll.
С объектами и работе с внешними DLL сталкиваться ранее не приходилось.
Если можно, (как пример для обучения) привести текст программы,
где создается объект и обработка методов записи и удаления данных
из терминала под VFP.
Заранее Спасибо за помощь.
Привет!Есть опыт работы с ChiphrLab.dll (5,2,2,0).
Правда это было давно.
Вот описание основных комманд.
extern «C»
<
// Включите данный файл в Ваш проект
// НЕ забудьде указать в установках проекта линк на файл CipherLab.lib
// Данная версия будет работать с прошивками начиная с версии ВD01
// Для обмена данными терминал должен находиться в главном меню
// Перед использованием функции рекомендуется проверить состояние СОМ — порта
// А также либо Ping, либо GetCurrentState (СОМ-порт может быть открыт, а вот
// терминал может находиться не в стартовом меню.
// Указатель на строковую переменную рекомендуется использовать типа char szData[256]; преобразованный к(LPSTR)szData
// Поле не может превышать 256 байт, строка базы данных не может превышать 1024 байт
// Баз данных может быть до трех: от 1 до 3. Файлов данных до 10: от 0 до 9. Это зависит от
// задачи, сгенерированной в Генераторе Приложений
// Функция:Получить номер ошибки и её описание.
// Если какая-либо функция возвратила ошибку, эта функия даст её подробное описание
// Также Вы можете найти описание ошибок в файле Errors.txt
// Параметры:
// szData — указатель на строковую переменную, куда будет помещено описание ошибки или NULL, если нужен только номер
// Возвращаемое значание:
// номер ошибки
__declspec(dllimport) int __cdecl GetError(LPSTR szData);
// Функция:Открыть СОМ порт
// Параметры:
// int nCommPort — целое, номер СОМ-порта, 1..16
// int nCommSpeed — целое, скорость СОМ — порта, 1..5
// (1 — 115200, 2 — 57600, 3 — 38400, 4 — 19200, 5 — 9600)
// BOOL bIsIrDA — логическое, если обмен будет производиться через Ir адаптер
// Возвращаемое значание:
// TRUE — если СОМ порт успешно открыт
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl OpenComm(int nCommPort, int nCommSpeed, BOOL bIsIrDA);
// Функция:проверить состояние СОМ порта
// Рекомендуется вызывать для проверки состояния СОМ порта перед вызовом функций.
// Параметры:
// нет
// Возвращаемое значание:
// TRUE — если СОМ порт открыт
// FALSE — иначе.
BOOL __declspec(dllimport) __cdecl CheckComm();
// Функция:закрыть СОМ порт
// Рекомендуется вызывать перед выходом из приложения.
// СОМ порт при выходе все равно будет закрыт, но лучше не полагаться на систему.
// Параметры:
// нет
// Возвращаемое значание:
// нет
__declspec(dllimport) void __cdecl CloseComm();
// Функция:проверить наличие терминала на данном СОМ порту.
// Терминал должен находиться в главном меню или состоянии загрузки / вынгрузки
// Параметры:
// нет
// Возвращаемое значание:
// TRUE — если терминал отозвался
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl Ping();
//BOOL Ping();
// Функция:получить кол-во свободной памяти
// Параметры:
// нет
// Возвращаемое значание:
// длинное целое, кол-во свободной памяти в байтах
// 0 или ниже при возникновении ошибки
__declspec(dllimport) long __cdecl GetFreeMemory();
// Функция:получить серийный номер терминала
// Терминал должен находиться в главном меню или состоянии загрузки / вынгрузки
// Параметры:
// szData — указатель на строковую переменную, куда будет помещен номер терминала
// Возвращаемое значание:
// TRUE — если номер передан
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl GetSerialNumber(LPSTR szData);
// Функция:получить текущее системное время терминала
// Терминал должен находиться в главном меню или состоянии загрузки / вынгрузки
// Параметры:
// szData — указатель на строковую переменную, куда будет помещено время терминала в формате ГГГГММДДЧЧММСС
// Возвращаемое значание:
// TRUE — если время получено
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl GetTime(LPSTR szData);
// Функция:обновить время терминала
// В терминал будет переданно системное время
// Параметры:
// нет
// Возвращаемое значание:
// TRUE — если время обновленно
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl UpdateTime();
// Функция:проверяет — находится ли терминал в стартовом меню (готовность к обмену данными)
// Параметры:
// нет
// Возвращаемое значание:
// TRUE — если терминал готов к работе (находится в стартовом меню)
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl GetCurrentState();
// Функция:получить кол-во записей в документе номер (0-9)
// Параметры:
// nDoc — номер документа (0-9)
// Возвращаемое значание:
// длинное целое, кол-во записей
// -1 при возникновении ошибки
__declspec(dllimport) long __cdecl GetDataCount(int nDoc);
// Функция:получить кол-во записей в Базе Данных номер (1-3)
// Параметры:
// nBase — номер Базы Данных (1-3)
// Возвращаемое значание:
// длинное целое, кол-во записей
// -1 при возникновении ошибки
__declspec(dllimport) long __cdecl GetRecordsCount(int nBase);
// Функция:очистить содержимое документа номер (0-9)
// Параметры:
// nDoc — номер документа (0-9)
// Возвращаемое значание:
// TRUE — если успешно очищенно
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl ClearDoc(int nDoc);
// Функция:очистить содержимое Базы Данных номер (1-3)
// Параметры:
// nBase — номер Базы Данных (1-3)
// Возвращаемое значание:
// TRUE — если успешно очищенно
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl ClearDB(int nBase);
// Функция:очистить содержимое конкретного поля (1-8) Базы Данных номер (1-3)
// Параметры:
// nBase — номер Базы Данных (1-3)
// nField — номер поля Базы Данных (1-3)
// Возвращаемое значание:
// TRUE — если успешно очищенно
// FALSE — иначе.
// Примечание:
// Функция сразу возвращает ответ, даже, если операция незавершена.
// Т.е. TRUE вернется, если все параметры удовлетворяют и процесс очистки начался.
// Для того, чтобы выяснить, освободился ли ТСД (выполнилась ли команда до конца)
// следует использовать команду Ping(). Примерное время выполнения — 10тыс записей в минуту.
// Можно узнать число записей в БД и рассчитать примерное время выполнения команды,
// чтобы цикл с командой Ping() не делать вечным.
__declspec(dllimport) BOOL __cdecl ClearDBField(int nBase, int nField);
// Функция:получить очередную запись из документа номер (0-9)
// Если терминал находиться в главном меню, он будет переведен в состояние выгрузки
// Параметры:
// nDoc — номер документа (0-9)
// szData1-szData8 — указатели на строковые переменные, куда будут помещены поля документа
// Возвращаемое значание:
// 1 — успешно!
// 0 последняя запись, обмен завершен
// -1 при возникновении ошибки
__declspec(dllimport) int __cdecl ReadData(int nDoc, LPSTR szData1, LPSTR szData2, LPSTR szData3, LPSTR szData4,
LPSTR szData5, LPSTR szData6, LPSTR szData7, LPSTR szData8);
// Функция:получить очередную запись из документа (0) или Базы Данных номер (1-3)
// Если терминал находиться в главном меню, он будет переведен в состояние выгрузки
// Параметры:
// nBase — номер Базы данных (1-3)
// szData1-szData1 — указатели на строковые переменные, куда будут помещены поля базы данных
// Возвращаемое значание:
// 1 — успешно!
// 0 последняя запись, обмен завершен
// -1 при возникновении ошибки
__declspec(dllimport) int __cdecl ReadRecord(int nBase, LPSTR szData1, LPSTR szData2, LPSTR szData3, LPSTR szData4,
LPSTR szData5, LPSTR szData6, LPSTR szData7, LPSTR szData8);
// Функция:загрузить запись в Базу Данных номер (1-3). Самая первая команда автоматически очищает базу.
// Если терминал находиться в главном меню, он будет переведен в состояние загрузки дынных
// Параметры:
// nBase — номер Базы данных (1-3)
// szData1-szData1 — указатель на загружаемые поля базы данных
// Возвращаемое значание:
// TRUE — если запись успешно загружена
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl PutRecord(int nBase, LPSTR szData1, LPSTR szData2, LPSTR szData3, LPSTR szData4,
LPSTR szData5, LPSTR szData6, LPSTR szData7, LPSTR szData8);
// Функция:загрузить запись в Базу Данных номер (1-3). Если запись уже есть, то она обновится.
// Если терминал находиться в главном меню, он будет переведен в состояние загрузки дынных
// Параметры:
// nBase — номер Базы данных (1-3)
// szData1-szData8 — указатель на загружаемые поля базы данных
// Возвращаемое значание:
// TRUE — если запись успешно загружена
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl UpdateRecord(int nBase, LPSTR szData1, LPSTR szData2, LPSTR szData3, LPSTR szData4,
LPSTR szData5, LPSTR szData6, LPSTR szData7, LPSTR szData8);
// Для завершения загрузки и старта индексирования используйте данную функцию
// Также применяется для немедленного прерывания чтения из ТСД
// Параметры:
// нет
// Возвращаемое значание:
// TRUE — если загрузка успешно завершена
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl Finish();
// Показывает сообщение о ходе выполнения передачи данных
// Параметры:
// nAction — 1 Высвечивается надпись «Осталось получить: %d записей»
// — 0 Высвечивается надпись «Осталось передать: %d записей»
// nCount — число, которое будет подставляться в надписе.
// Возвращаемое значание:
// нет
__declspec(dllimport) void __cdecl ShowProgress(int nAction, int nCount);
// Изменяет значение разделителей в полях базы и документа
// Параметры:
// Base — разделитель для полей базы, по умолчание код 9 (табуляция)
// Doc — разделитель для полей базы, по умолчание код 9 (табуляция)
// Возвращаемое значание:
// нет
__declspec(dllimport) void __cdecl Delimiter(char Base, char Doc);
// Загружает данные в базу из файла
// Параметры:
// nBase — номер Базы данных (1-3)
// nPath — указатель на строковую переменную, где передается путь к файлу
// Возвращаемое значание:
// TRUE — если обмен успешно завершен
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl FileToBase(int nBase, LPSTR nPath);
// Выгружает из терминала документ и записывает в файл
// Параметры:
// nDoc — номер документа (0-9)
// nPath — указатель на строковую переменную, где передается путь к файлу
// Возвращаемое значание:
// TRUE — если обмен успешно завершен
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl DocToFile(int nDoc, LPSTR nPath);
// Выгружает из терминала базу и записывает в файл
// Параметры:
// nBase — номер Базы данных (1-3)
// nPath — указатель на строковую переменную, где передается путь к файлу
// Возвращаемое значание:
// TRUE — если обмен успешно завершен
// FALSE — иначе.
__declspec(dllimport) BOOL __cdecl BaseToFile(int nBase, LPSTR nPath);
// Возвращает значение задержки для повтора команды в ТСД,
// если от ТСД нет ответа.
// Параметры:
// нет
// Возвращаемое значание:
// Значение задержки. Если порт не открыт, функция вернет значение
// по-умолчанию (50), а GetError вернет ошибку №1
__declspec(dllimport) unsigned int __cdecl GetDelay(void);
// Устанавливает значение задержки для повтора команды в ТСД,
// если от ТСД нет ответа
// Параметры:
// Delay — значение задержки (50-10 000) шаг 50. Округляется в меньшую сторону.
// Возвращаемое значание:
// TRUE — если задержка установлена
// FALSE — иначе. GetError вернет ошибку №1
__declspec(dllimport) BOOL __cdecl SetDelay(unsigned int Delay);
>
Вот ещё старые записи:
*!* DECLARE LONG GetError IN (m.convpath+’CipherLab.dll’) string @szData
*!* DECLARE LONG OpenComm IN (m.convpath+’CipherLab.dll’) integer,integer,string
*!* DECLARE LONG CheckComm IN (m.convpath+’CipherLab.dll’)
*!* DECLARE LONG CloseComm IN (m.convpath+’CipherLab.dll’)
*!* DECLARE LONG Ping IN (m.convpath+’CipherLab.dll’)
*!* DECLARE LONG GetFreeMemory IN (m.convpath+’CipherLab.dll’)
*!* DECLARE LONG GetSerialNumber IN (m.convpath+’CipherLab.dll’) string @szData
*!* DECLARE LONG GetTime IN (m.convpath+’CipherLab.dll’) string @szData
*!* DECLARE LONG UpdateTime IN (m.convpath+’CipherLab.dll’)
*!* DECLARE LONG GetCurrentState IN (m.convpath+’CipherLab.dll’)
*!* DECLARE LONG GetDataCount IN (m.convpath+’CipherLab.dll’) integer
*!* DECLARE LONG GetRecordsCount IN (m.convpath+’CipherLab.dll’) integer
*!* DECLARE LONG ClearDoc IN (m.convpath+’CipherLab.dll’) integer
*!* DECLARE LONG ClearDB IN (m.convpath+’CipherLab.dll’) integer
*!* DECLARE LONG ClearDBField IN (m.convpath+’CipherLab.dll’) integer,integer
*!* DECLARE LONG ReadData IN (m.convpath+’CipherLab.dll’) ;
*!* integer,;
*!* string @szData1,;string @szData2,;string @szData3,;string @szData4,;
*!* string @szData5,;string @szData6,;string @szData7,;string @szData8
*!* DECLARE LONG ReadRecord IN (m.convpath+’CipherLab.dll’) ;
*!* integer,;
*!* string @szData1,;string @szData2,;string @szData3,;string @szData4,;
*!* string @szData5,;string @szData6,;string @szData7,;string @szData8
*!* DECLARE LONG PutRecord IN (m.convpath+’CipherLab.dll’) ;
*!* integer,;
*!* string @szData1,;string @szData2,;string @szData3,;string @szData4,;
*!* string @szData5,;string @szData6,;string @szData7,;string @szData8
*!* DECLARE LONG UpdateRecord IN (m.convpath+’CipherLab.dll’) ;
*!* integer,;
*!* string @szData1,;string @szData2,;string @szData3,;string @szData4,;
*!* string @szData5,;string @szData6,;string @szData7,;string @szData8
*!* DECLARE LONG Finish IN (m.convpath+’CipherLab.dll’)
*!* DECLARE LONG ShowProgress IN (m.convpath+’CipherLab.dll’) integer,integer
*!* DECLARE LONG Delimiter IN (m.convpath+’CipherLab.dll’) string,string
*!* DECLARE LONG FileToBase IN (m.convpath+’CipherLab.dll’) integer,string
*!* DECLARE LONG DocToFile IN (m.convpath+’CipherLab.dll’) integer,string
*!* DECLARE LONG BaseToFile IN (m.convpath+’CipherLab.dll’) integer,string
*!* DECLARE LONG GetDelay IN (m.convpath+’CipherLab.dll’)
*!* DECLARE LONG SetDelay IN (m.convpath+’CipherLab.dll’)
*nCommPort=1 && целое, номер СОМ-порта, 1..16
*nCommSpeed=1 && — целое, скорость СОМ — порта, 1..5 (1 — 115200, 2 — 57600, 3 — 38400, 4 — 19200, 5 — 9600)
*bIsIrDA=’.F.’ && — логическое, если обмен будет производиться через Ir адаптер
*!* sMsg=SPACE(255)
*!* sMsg1=SPACE(255)
*!* sMsg2=SPACE(255)
*!* sMsg3=SPACE(255)
*!* sMsg4=SPACE(255)
*!* sMsg5=SPACE(255)
*!* sMsg6=SPACE(255)
*!* sMsg7=SPACE(255)
*!* sMsg8=SPACE(255)
?CheckComm()
?GetFreeMemory(@sMsg)
=GetSerialNumber(@sMsg)
?sMsg
*!* =GetTime(@sMsg)
*!* ?sMsg
*!* ?GetDelay()
* ? UpdateTime()
*nBase=2 && номер Базы Данных (1-3)
*? GetRecordsCount(1)
*? GetDataCount(1)
*? GetDataCount(2)
*? DocToFile(2,’D:\Cipher_Fox\Test.txt’)
*? GetRecordsCount(nBase)
*? ClearDB(nBase)
*? FileToBase(nBase,»D:\Cipher_Fox\In.txt»)
*? GetError()
*? GetRecordsCount(nBase)
*? BaseToFile(nBase,’D:\Cipher_Fox\Out’)
*!* FOR i=1 TO nRecCount
*!* ?ReadRecord(1,@sMsg1,@sMsg2,@sMsg3,@sMsg4,@sMsg5,@sMsg6,@sMsg7,@sMsg8)
*!* ?ALLTRIM(sMsg1)
*!* ??ALLTRIM(sMsg2)
*!* ??ALLTRIM(sMsg3)
*!* ??ALLTRIM(sMsg4)
*!* ??ALLTRIM(sMsg5)
*!* ??ALLTRIM(sMsg6)
*!* ??ALLTRIM(sMsg7)
*!* ??ALLTRIM(sMsg8)
*!* ?ShowProgress(1,nRecCount-i)
*!* ENDFOR
GetError(@sMsg)
?sMsg
*?CloseComm()