Tool1CD Beta в деле

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

Разработка - Разработка внешних компонент

tool_1cd tool1cd C++ 1cd файловые базы

Пс, парень! Не хочешь немного сырых байтов?

Для тех, кто на минуту хочет забыть про средиземье, эффективных манагеров и прочие эфемерные сопли про джаваскрипт - Back to the roots! К дикому коду, сырым данным и хардкорному C++.

Предлагаю вашему внимаю краткое пошаговое руководство по подключению библиотеки tool1cd к 1С через внешнюю компоненту. Предполагается, что вы уже умеете разрабатывать внешние компоненты по типу Native, разбираетесь в C++, умеете готовить CMake, а слова «собрать Boost» вызывают у вас приступ иронии и боли, примерно так:

грустный Гарольд за ноутбуком

Приведённый в статье пример разрабатывался в следующих условиях:

  • Версия платформы: 8.3.10.2667 х32
  • Под Windows 10 Home: Microsoft Visual Studio 2017 Community Edition с модулем CMake
  • Под Ubuntu 16.04: CLion 2017.3 (встроенная поддержка CMake), g++ 5.4
  • Boost: 1.65
  • ZLIB: 1.2.8

Пара слов про ограничения выше. Версия платформы значения не имеет: пример будет работать под 8.2 и 8.3 любых версий. Среда разработки может быть любая, лишь бы поддерживала формат проектов CMake: CLion, QtCreator, консоль. Буст: версия 1.66 и выше поддерживается только в CMake начиная с версии 3.11.0, поэтому проверьте версию. Поддержка CMake 3.11 в Visual Studio появилась буквально на днях в версии 15.7 - обновитесь. Если нет возможности обновиться, используйте Буст версии 1.65 и ниже.

Часть 0. Подготовка каркаса

В качестве подготовки надо скачать ZLib и Boost указанных версий и собрать (вы ведь умеете это делать, да?). Буст должен быть собран с параметрами “link=static runtime-link=static”. Все мы помним статью на ИТС и её совет включать зависимости статически? Вот это как-раз для этого.

Собрали? Теперь переходим к вкусному. Создадим компоненту, которая будет делать нечто невообразимое простейшее – получение сведений о конфигурации из файла 1CD: создадим функцию ПолучитьДанныеОФайле / GetFileInfo, которая на вход получает строку – путь к файлу, а на выходе отдаёт строку с описанием конфигурации или число с кодом ошибки (как упрощение).

Итак, скачиваем с ИТС архив VNCOMPS.ZIP, распаковываем, заходим в каталог examples (не template) и вашим любимым гит-клиентом клонируем в этот каталог URL https://github.com/e8tools/tool1cd.git .

Запускаем студию и открываем CMake-проект в каталоге examples. Укажем необходимые параметры для CMake (CMake – Изменить параметры CMake – AddIn):

  1. Нам нужна конфигурация x86-Release
  2. Убедимся, что inheritEnvironments = msvc_x86
  3. Убедимся, что configurationType установлен во что угодно помимо Debug
  4. В разделе variables необходимо указать настройки:

TARGET_PLATFORM_32

YES

BOOST_ROOT

Корневой каталог, где лежит Буст

BOOST_LIBRARYDIR

В Бусте подкаталог stage\lib

BOOST_INCLUDEDIR

Корневой каталог Буста

ZLIB_LIBRARY

Полный путь к библиотеке zlibstatic.lib

ZLIB_INCLUDE_DIR

Корневой каталог zlib

NOGUI

YES

Boost_USE_STATIC_LIBS

YES

Boost_USE_STATIC_RUNTIME

YES

 

Теперь подключим библиотеку tool1cd к нашему CMake-проекту. Открываем CMakeLists.txt в корне и после условия if (TARGET_PLATFORM_32) … endif() дописываем немножко волшебства:

if (MSVC)
    foreach (flag_var
                     CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
                     CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
 
              if (${flag_var} MATCHES "/MD")
                     string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
              endif (${flag_var} MATCHES "/MD")
 
       endforeach(flag_var)
       set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB:MSVCRT")
endif()

Коротко опишу, что здесь мы подменяем сборку с динамическим рантаймом на сборку со статическим (про статическое включение зависимостей помним, да?).

Потом убираем из сборки проекты AddInChrome и AddInIE, чтобы они сейчас нам не мешали, и в самом конце дописываем заветную строчку:

add_subdirectory(tool1cd/src/tool1cd)

Тем самым мы включаем в свой проект исходные коды библиотеки tool1cd и будем их собирать вместе с компонентой. Дико? Дико. Но на данном этапе жизни проекта tool1cd – это самый безболезненный способ избежать подводных камней.

Теперь открываем CMakeLists.txt в каталоге NativeAPI. Там нам надо подключить Буст и tool1cd, дописываем в конце:

find_package (Boost 1.53 REQUIRED COMPONENTS filesystem)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries (${PROJECT_NAME} ${Boost_LIBRARIES})
include_directories(${CMAKE_SOURCE_DIR}/tool1cd/src/tool1cd)
target_link_libraries(${PROJECT_NAME} tool1cd)

а также после SET(AddInNative_SRC) дописать:

if (MSVC)
       set (AddInNative_SRC ${AddInNative_SRC} AddInNative.def)
endif()

Запускаем сборку (CMake – Собрать всё), убеждаемся, что нет ошибок, и идём дальше.

 

Часть 1. Создаём полезную нагрузку

Добавим новую функцию: добавить в enum Methods, g_MethodNames, g_MethodNamesRu, GetNParams, HasRetVal – это всё за рамками статьи.

Добавим в класс CAddInNative функцию GetFileInfo с сигнатурой, совпадающей с CallAsFunc (копипастим объявление). В коде функции CallAsFunc допишем вызов новой функции:

case eMethGetFileInfo:
{
	try {
		return GetFileInfo(lMethodNum, pvarRetValue, paParams, lSizeArray);
	}
	catch (std::exception &exc) {
		// TODO: сделать addError
		TV_VT(pvarRetValue) = VTYPE_I4;
		TV_I4(pvarRetValue) = 1;
	}
	return true;
}

Перенаправляем вызов в новую функцию и ловим все исключения, создавая код возврата 1.

Перейдём к реализации функции GetFileInfo. Вкратце, Алгоритм действий:

      1. Открываем файл с базой
      2. Находим таблицу CONFIG
      3. В таблице CONFIG находим запись с FILENAME=”root”, считываем BINARYDATA
      4. Извлекаем из BINARYDARA гуид конфигурации
      5. В таблице CONFIG находим запись с FILENAME=гуид_конфигурации, считываем BINARYDATA
      6. Извлекаем из BINARYDATA данные о конфигурации

 

Подключим заголовочные файлы:


#include <boost/filesystem.hpp>
#include <Class_1CD.h>
#include <TableIterator.h>

Чтобы открыть файл базы, нам нужно извлечь путь к базе из параметра.  Возьмём за образец готовый кусок кода из eMethLoadPicture и немножко доработаем:

boost::filesystem::path filepath;
// переделанный кусок кода из eMethLoadPicture
{
	if (!lSizeArray || !paParams)
		return false;

	switch (TV_VT(paParams))
	{
	case VTYPE_PSTR:
		filepath = boost::filesystem::path(std::string(paParams->pstrVal));
		break;
	case VTYPE_PWSTR:
	{
		wchar_t *wsTmp = nullptr;
		::convFromShortWchar(&wsTmp, TV_WSTR(paParams));
		filepath = boost::filesystem::path(std::wstring(wsTmp));
		delete[] wsTmp;
		break;
	}
	default:
		return false;
	}
}

// теперь в filepath у нас путь к файлу.

Открываем базу:

// заранее заготовим тип Число для возврата ошибки
TV_VT(pvarRetValue) = VTYPE_I4;

// теперь в filepath у нас путь к файлу.
if (!boost::filesystem::exists(filepath)) {
	TV_I4(pvarRetValue) = 2;
	return true;
}

T_1CD db(filepath, nullptr, false);
if (!(db.is_open() && db.is_infobase())) {
	TV_I4(pvarRetValue) = 3;
	return true;
}


 Находим таблицу CONFIG:

// находим таблицу CONFIG
Table *cfg = nullptr;
{
	for (int i = 0; i < db.get_numtables(); i++) {
		Table *tbl = db.get_table(i);
		if (System::EqualIC(tbl->get_name(), "Config")) {
			cfg = tbl;
			break;
		}
	}
	if (cfg == nullptr) {
		// не нашли :(
		TV_I4(pvarRetValue) = 4;
		return true;
	}
}

Находим root, считываем BINARYDATA и разбираем ГУИД конфигурации:

std::string guid;
{
	// находим root
	TableIterator it(cfg);
	while (!it.eof()) {
		std::string filename = it.current().get_string("FILENAME");
		if (!System::EqualIC(filename, "root")) {
			it.next();
			continue;
		}

		// нашли - считываем данные

		Field *f_BinaryData = cfg->get_field("BINARYDATA");
		System::Classes::TStream *data;
		if (!it.current().try_store_blob_data(f_BinaryData, data, true)) {
			TV_I4(pvarRetValue) = 4;
			return true;
		}

		// поток data содержит текстовое представление дерева (скобочные данные)
		data->Seek(3, soFromBeginning); // пропускаем первые 3 байта - BOM

		// извлекаем гуид
		std::unique_ptr<Tree> tree = parse_1Cstream(data, "");
		guid = (*tree)[0][1].get_value();
		break;
	}

	if (guid.empty()) {
		TV_I4(pvarRetValue) = 5;
		return true;
	}
}


 Последний шаг, ищем файл с описанием конфигурации и извлекаем нужные данные:

{
	TableIterator it(cfg);
	while (!it.eof()) {
		std::string filename = it.current().get_string("FILENAME");
		if (!System::EqualIC(filename, guid)) {
			it.next();
			continue;
		}

		// нашли нужный файл, извлекаем данные
		Field *f_BinaryData = cfg->get_field("BINARYDATA");
		System::Classes::TStream *data;
		if (!it.current().try_store_blob_data(f_BinaryData, data, true)) {
			TV_I4(pvarRetValue) = 6;
			return true;
		}

		// поток data содержит текстовое представление дерева (скобочные данные)
		data->Seek(3, soFromBeginning); // пропускаем первые 3 байта - BOM

		std::unique_ptr<Tree> tree = parse_1Cstream(data, "");

		// цепочки цифр вычислены опытным путём
		// широкомасштабного обследования конфигураций не проводилось
		std::string config_name = (*tree)[0][3][1][1][1][1][2].get_value();
		std::string config_ver = (*tree)[0][3][1][1][15].get_value();

		// тут мы получили нужный нам итог в кодировке utf-8
		std::string utf8result = config_name + ", " + config_ver;

		// во имя кроссплатформенности, нужно перевести его в utf-16
		std::vector<uint8_t> result = System::SysUtils::TEncoding::Unicode->fromUtf8(utf8result);
		
		m_iMemory->AllocMemory((void**)&pvarRetValue->pwstrVal, result.size());
		memcpy((void*)pvarRetValue->pwstrVal, result.data(), result.size());

		// меняем результат на Строка и успешно завершаем работу
		TV_VT(pvarRetValue) = VTYPE_PWSTR;
		pvarRetValue->wstrLen = result.size() / sizeof(WCHAR_T);

		return true;
	}
}

// сюда доходим в случае, если не нашли файл метаданных конфигурации
TV_I4(pvarRetValue) = 7;
return true;


На этом наша функция готова.

Тестовый код для 1С:

ПутьККомпоненте = "C:\Users\dmpas\...\RelWithDebInfo\AddInNativeWin32.dll";

Если Не ПодключитьВнешнююКомпоненту(ПутьККомпоненте, "CDReader", ТипВнешнейКомпоненты.Native) Тогда

	Сообщить("Ошибочка");
	Возврат;

КонецЕсли;


ФайлБазы = "C:\1C\...\1Cv8.1CD";
Читалка = Новый("AddIn.CDReader.AddInNativeExtension");
Сообщить("GFI = " + ЗначениеВСтрокуВнутр(Читалка.ПолучитьДанныеОФайле(ФайлБазы)));

Если что-то не заработало, внимательно читаем ещё раз и задаём вопросы в комментариях.

 

Часть 2. Что дальше?

Перед тем, как рассказать, что будет дальше, я расскажу, что было раньше.

Год назад, в апреле 2017, автор проекта Валерий Агеев, опубликовал исходный код своей программы, что должно было стать толчком к её дальнейшему развитию. Для того, чтобы привлечь к разработке больше заинтересованных разработчиков, исходный код должен соответствовать определённым требованиям, некоему «духу опенсурса». Для программ на C++ под этим обычно подразумевают свежий стандарт языка, поддержка разных компиляторов и переносимость на другие платформы. С учётом всех этих факторов исходный формат проекта – C++ Builder – совершенно нас не устраивал и мы, закатав рукава, взялись за адаптацию. Вот теперь, спустя год, мы можем похвастаться:

  • Проект отвязан от C++ Builder и от Windows. Отныне можно работать также под Ubuntu и MacOS, используя любую среду разработки, которая поддерживает CMake.
  • Основной функционал выделен в библиотеку. Что как-раз представлено в статье: есть библиотека tool1cd, а к ней уже можно прикручивать свои оболочки.
  • Настроена инфраструктура проекта. Сборка, тестирование, поддержка через гиттер и гитхаб

 

Соответственно, что дальше - очевидно. Клонируйте проект, дорабатывайте функционал, присылайте ваши доработки!

Сейчас проект в статусе Беты, нам крайне важны ваша помощь и обратная связь.

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

Наименование Файл Версия Размер
AddInNativeWin32.dll

.dll 1,89Mb
08.05.18
9
.dll 1,89Mb 9 Скачать
VNCOMP83-tool1cd.zip

.zip 800,31Kb
08.05.18
24
.zip 800,31Kb 24 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Evil Beaver 6757 09.05.18 22:47 Сейчас в теме
Эфемерные сопли про джаваскрипт!!!

Начало потрясное просто.

Позволю пару слов уточнения для тех, кто не понял что это было... Знаменитая утилита tool1cd Валерия Агеева (R.I.P.) для работы с файловыми базами 1С, в том числе для их спасения, когда они не открываются ничем кроме tool1cd - теперь доступна в виде исходных кодов на c++, доступна на linux и macos (вероятно)

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

Спасибо ребята!
Solovyeff; Gureev; Uncore; 2ncom; nporrep; Terve!R; Bukaska; kuntashov; корум; RegrZ; amon_ra; jif; rpgshnik; nakh72; yukon; fishca; artbear; Йожкин Кот; ktb; pythonchik; 1ceo_2015; baton_pk; awk; JohnyDeath; nixel; karpik666; TIS_08; vikad; +28 Ответить
2. Infactum 288 10.05.18 12:53 Сейчас в теме
Предполагается, что вы уже умеете разрабатывать внешние компоненты по типу Native, разбираетесь в C++, умеете готовить CMake, а слова «собрать Boost» вызывают у вас приступ иронии и боли

.. и вы почему-то работаете "программистом 1С"

Понимаю, что статья писалась в основном, чтобы рассказать об успех в наведении порядка в кодовой базе tool1CD, но местная публика, очевидно, ждет готовые бинарники графической утилиты, либо собранную native API обвязку.
Magister; klinval; RegrZ; +3 Ответить
3. baton_pk 401 10.05.18 13:05 Сейчас в теме
(2) таки пока мы в полной бете, то из местной публики хочется выцепить разрабов-плюсовиков - кто готов мириться с неидеальностью бытия. Как выйдем из беты - там будут и бинари, и нескучные обои.
bulpi; artbear; +2 Ответить
9. Evil Beaver 6757 11.05.18 09:09 Сейчас в теме
(3) а GUI-бинарники в виде беты может тоже выложить? Пусть фидбек хотя бы люди дадут, ошибки на ГХ накидают...

Эгеей!! Сотрудники фирмы 1С! Мы знаем, что вы читаете инфостарт, и что вы плюсовики. Даешь контрибьютинг инкогнито! #ДиджиталРезистанс! :) :)
корум; JohnyDeath; +2 Ответить
10. baton_pk 401 11.05.18 09:10 Сейчас в теме
(9) виндовые гуй-бинари есть на гитхабе: https://github.com/e8tools/tool1cd/releases
На инфостарт я их побоялся выкладывать - тут уже один раз баннили такое.
11. baton_pk 401 11.05.18 09:23 Сейчас в теме
(9)
Даешь контрибьютинг инкогнито!

эмм... чую, первым пулл-реквестом будет проверка на наличие лицензии :)
12. Evil Beaver 6757 11.05.18 09:25 Сейчас в теме
(11) Ну докажут свою троллепригодность, как минимум. Уже хорошо
13. baton_pk 401 11.05.18 09:34 Сейчас в теме
(12)
докажут свою троллепригодность

вот когда появится конфа "1С:Восстановление файловых баз", вот тогда это будет истинное 1С:Трололо.
корум; JohnyDeath; +2 Ответить
14. Evil Beaver 6757 11.05.18 13:10 Сейчас в теме
(13) если там будет внешняя компонента из статьи, то да
15. vadim1011985 79 16.05.18 09:01 Сейчас в теме
(3) а с каким форматом баз работает компонента ? 8.3.8 поддерживает ?
16. baton_pk 401 16.05.18 09:08 Сейчас в теме
(15)
8.3.8 поддерживает ?

да, поддерживает. От 8.2.14 (форматы ниже не проверял, может и работают) до 8.3.8 (с ним могут быть косяки, но пока они не встречались).
17. vadim1011985 79 16.05.18 12:01 Сейчас в теме
(16) не редко приходится восстанавливать файловые базы , для этого использую связку Tool1d , и библиотеку 1сd_lib ( тоже внешняя компонента так же открывает базу и читает данные + там организована взаимосвязь между метаданными базы и Таблицами, так же в отличии от tools1cd позволят удалять сразу несколько таблиц) , но работает только со старым форматом , что не очень удобно. Есть один алгоритм восстановления базы от ошибки «ошибка формата потока» который хотелось автоматизировать , но так как я не очень знаком с C++ хотелось бы узнать возможно ли с помощью вашей компоненты на уровне 1с осуществить удалять таблицы А так же импортировать и Экспортировать данные таблиц целиком ?
18. baton_pk 401 16.05.18 12:10 Сейчас в теме
(17)
возможно ли с помощью вашей компоненты

с помощью компоненты, что в статье - нет. это просто пример использования библиотеки. Библиотека, да, имеет функционал экспорта/импорта таблиц, их удаления - эти возможности надо ещё проверить и обкатать, потому сейчас я их не показываю. Опишите словами алгоритм и я, возможно, попробую его воспроизвести в одной из следующих статей.
19. vadim1011985 79 16.05.18 12:48 Сейчас в теме
(18) алгоритм таков
1) берётся чистая база того же релиза что и поврежденная , из неё удаляются все таблицы данных кроме служебных , за исключением таблиц Params , и DBSHEMA( которые будут перенесены из служебной базы ) имена служебных таблиц известны , желательно перед удалением экспортировать таблицы в виде файлов в каталог ( в Tools1cd кнопка экспорт таблиц данных )
2) из повреждённой базы выгружаются только таблицы данных , + 2 служебные таблицы Params и DBShema (тоже в виде файлов)
3) далее в чистую базу грузятся сначала служебные таблицы , а потом таблицы данных ( в tools кнопка - Импорт и создание таблиц)
В принципе все , единственный момент , что таблицы данных могут быть битыми ( например недавно столкнулся , в одной из таблиц файл BLOB весил 300 МБ ) , и при загрузке Tools валился с ошибкой , и надо было загружать таблицы по несколько шт. что бы отловить на какой происходит ошибка. А для исправления ситуации приходилось искать такую же таблицу из выгруженные таблиц чистой базы , и загружать ее с подменой файла описания таблицы descr из повреждённой базы ( т.е . Грузилась чистая таблица ) .

Надеюсь , что описал понятно
baton_pk; +1 Ответить
20. baton_pk 401 16.05.18 12:52 Сейчас в теме
(19) да, спасибо. Попробую воспроизвести этот сценарий.
21. vadim1011985 79 16.05.18 12:56 Сейчас в теме
(20) И Вам спасибо , надеюсь получится
4. artbear 1184 10.05.18 16:37 Сейчас в теме
Очень круто!

Вышли из тени наконец-то :) ?
5. fishca 1179 10.05.18 16:49 Сейчас в теме
Плюсиков маловато пока...
6. baton_pk 401 10.05.18 17:24 Сейчас в теме
(5) ты погоди, скоро начнут рассказывать, что это не нужно и что мы фигнёй занимаемся :)
7. bulpi 174 10.05.18 19:30 Сейчас в теме
(6)
Это очень нужно. Памятник при жизни из чистого золота в полный рост :)
8. baton_pk 401 10.05.18 20:18 Сейчас в теме
(7)
Памятник при жизни из чистого золота в полный рост

боюсь, немного не успели.
CSiER; nixel; user811063; NecroJew; +4 Ответить
24. Teopemuk 15.08.18 17:08 Сейчас в теме
(8)
Прошу прощения, но что значит "не успели"?
22. user811063 25.06.18 04:29 Сейчас в теме
Вот это действительно стоящая статья!!! Побольше бы таких на данном ресурсе!!!
23. baton_pk 401 25.06.18 07:52 Сейчас в теме
(22) Спасибо! Рад, что понравилось.
25. nomadon 383 16.08.18 13:08 Сейчас в теме
```
if (MSVC)
set (AddInNative_SRC ${AddInNative_SRC} AddInNative.def)
endif()
```
В шаблоне не указано подключение дефа? а как тогда dll работает? или шаблон предназначен не для CMake, он просто рядом что ли?
26. baton_pk 401 16.08.18 13:49 Сейчас в теме
(25)
дключение дефа? а как тогда

В шаблоне для DLL, насколько я помню, предполагается делать по-старинке - через проект Студии. Там всё прописано.
Оставьте свое сообщение

См. также

Внешняя компонента для работы по Web-socket протоколу Промо

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

5 стартмани

30.03.2018    23151    32    Ditron    68    

Универсальная обертка для использования NATIVE компонент на платформе 1С 7.7, 8.0 и 8.1

Разработка внешних компонент v8 Абонемент ($m)

Используете 1С 7.7, 8.0 или 8.1 и вас раздражает, что под вашу 1С уже не выпускаются современные компоненты. А хотелось бы?

1 стартмани

07.07.2020    723    1    karpik666    0    

Нано HTTP сервер - внешняя компонента для мобильного приложения 1C, на Android

Разработка внешних компонент Мобильная разработка v8 v8::Mobile 1cv8.cf Абонемент ($m)

Нано HTTP сервер на терминале сбора данных "ATOL Smart.Lite android 7.0". Работает только с GET и POST запросами. Аутентификация BASE64. Не поддерживает HTTPS и не передает файлы. В прикрепленном архиве исходники на компоненту (С++ и java для Android Studio 3.6.2), ЦФ - мобильного приложения и тестовая обработка.

1 стартмани

22.06.2020    878    3    SanyMaga    0    

Получение фото с веб-камеры

Разработка внешних компонент v8 Абонемент ($m)

Получение фото с веб-камеры без ActiveX. Внешняя компонента по технологии Native API.

1 стартмани

25.03.2020    2831    21    berezdetsky    15    

TextRadar - нечеткий поиск в тексте Промо

Разработка внешних компонент Поиск данных v8 1cv8.cf Абонемент ($m)

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

1 стартмани

19.09.2018    15420    18    TSSV    18    

Пауза без загрузки процессора. Внешняя компонента Native API на C++

Разработка внешних компонент v8 Абонемент ($m)

Внешняя компонента Native API на C++ для Win32 и Win64 позволяет установить паузу на заданное количество секунд без загрузки процессора.

2 стартмани

21.03.2020    1341    3    DNN13    25    

Быстрая печать этикеток (ZPL, EPL, TSPL, EZPL, GEPL, TSPL-EZ)

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Качественная и быстрая печать на внутреннем языке принтеров этикеток.

4 стартмани

02.02.2020    4460    21    Johny_v    5    

Сканирование по TWAIN в 1С (обычные и управляемые формы)

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка показывает пример, как можно в 1С проводить сканирование с помощью компоненты TWAIN.

3 стартмани

03.01.2020    3710    17    Denr83    0    

Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент. Промо

Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Данная разработка создана для использования сборок .Net в 1С через преобразование объектов и классов в COM-объекты, которые можно использовать в 1С. Достигается это путем создания класса, реализующего методы интерфейса IReflect public class AutoWrap: IReflect.

1 стартмани

28.11.2013    79329    231    Serginio    71    

Клиент событий в «бесконечном» HTTP-соединении для 1С: Предприятие 8

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Native Компонента в отдельном потоке обрабатывает пакеты событий, в "бесконечном" http соединении и передаёт данные в очередь внешних событий.

10 стартмани

02.12.2019    2894    1    starovton    5    

Управление окнами и мониторами в 1С

Сервисные утилиты Разработка внешних компонент v8 1cv8.cf 1С:Франчайзи, автоматизация бизнеса Абонемент ($m)

Управление размерами, активностью и положением окон из 1С с возможностью вывода окон на второй монитор и запретом изменения окна.

1 стартмани

28.10.2019    7333    6    Grigoriy251    5    

Маленькая и скромная мобильная внешняя компонента

Разработка внешних компонент v8 Абонемент ($m)

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

1 стартмани

21.10.2019    8016    4    ripreal1    25    

NativeDraw: Компонента рисования для 1С [V2.6.2] Промо

Разработка внешних компонент Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.07.2015    44515    419    ПерваяСистема    147    

Native внешняя компонента для оповещения по UDP или TCP

Разработка внешних компонент v8 Абонемент ($m)

Native внешняя компонента для оповещения по UDP или TCP, которая реализует возможность в 1С передавать сообщения с сервера на клиента. Исходный код компоненты также представлен.

1 стартмани

06.10.2019    7476    13    vdv2701    26    

Внешняя компонента Sundries: несколько полезных системных функций

Разработка внешних компонент v8 Абонемент ($m)

Звук, пауза, буфер обмена, раскладки клавиатуры и т.д.

3 стартмани

30.08.2019    4429    4    sivin-alexey    10    

Native внешняя компонента для передачи по UDP

Разработка внешних компонент v8 УТ10 Россия Абонемент ($m)

Внешняя компонента Native-API для организации передачи с использованием UDP.

1 стартмани

29.07.2019    3327    4    axae    0    

Компоненты распознавания и печати штрих-кодов Промо

Разработка внешних компонент Сканер штрих-кода v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA. P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.

10 стартмани

10.07.2015    66306    83    igorberezhnov    95    

Менеджер буфера обмена. Нативная внешняя компонента win 32/64

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Добавляет возможности получения информации из почтовых вложений или файлов с других рабочих столов (RDP) с помощью операций копирования/вставки. Может «прослушивать»: любые изменения буфера обмена; нажатие клавиш соответствующих вставке (paste); нажатие клавиш копирования (copy); drop операции. Это новая реализация аналогичной компоненты https://infostart.ru/public/379695/, но теперь не C#, а С++ нативно для x32 / x64. (см. http://youtu.be/-PaWWFfbYo4)

1 стартмани

26.06.2019    5240    16    Bww    21    

Обработка вывода на печать QR-кода и штрихкодов в различных форматах (одномерные и двумерные)

Разработка внешних компонент Ценники v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Обработка предназначена для вывода на печать QR-кода и штрихкодов в различных форматах без установки дополнительных ActiveX компонент. Тестировалась на чистой базе платформы 1С:Предприятие 8.3 (8.3.14.1630), а так же в конфигурациях Бухгалтерия предприятия КОРП, редакция (3.0.69.35) и на Бухгалтерия предприятия (3.0.70.30)

2 стартмани

22.05.2019    8090    31    MGemini    2    

DLL для подключения к Asterisk (32/64 клиенты)

Разработка внешних компонент Телефония, SIP v8 1cv8.cf Абонемент ($m)

Подключение к Астериску и получение событий "Newchannel","BridgeEnter","Hangup" через ОбработкаВнешнегоСобытия.

1 стартмани

19.03.2019    6458    11    xxxAndricxxx    14    

Полезные приемы при работе с Excel из 1С (Версия 3.1) Промо

Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    180363    430    Zerocl    65    

DLL для обмена между 1С (и не только) через UDP порты (32/64 клиенты)

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Библиотеки для создания функционала для прослушивания портов из 1С и отправки сообщений на удаленный udp порт.

1 стартмани

28.02.2019    5652    8    xxxAndricxxx    2    

Эмулятор ККМ по стандарту ФФД 1.1

Разработка внешних компонент Кассовые операции ККМ Кассовые операции v8 Розница УТ11 Россия Абонемент ($m)

Эмулятор драйвера ККМ по стандарту ФФД 1.1 предназначен для использования всех возможностей программы, при отсутствии физической кассы. Подойдет как программистам при разработке интерфейса РМК, например, так и пользователям для тестирования возможностей программы.

1 стартмани

30.12.2018    17956    124    Matveymc    21    

WebSocket Клиент / Сервер. Внешний компонент

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Реализация протокола WebSocket. Клиентская часть для взаимодействия с внешними сервисами. Серверная часть для организации собственного сервера, принимающего клиентские соединения в многопоточном режиме. Возможно взаимодействие RabbitMQ Slack Asterisk и другие

1 стартмани

16.11.2018    12656    64    nomadon    51    

Шаблон внешней компоненты на C# Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Шаблон внешней компоненты для 1С:Предприятие на C#.

5 стартмани

20.06.2012    151646    238    Kuzja_R    99    

Внешняя компонента для выполнения регулярных выражений

Разработка внешних компонент v8 Абонемент ($m)

Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8. Написана на C++. Используется движок boost::regex (v 1.69, v 1.68 - для Android). Версия синтаксиса Perl Compatible Regular Expressions.

1 стартмани

12.11.2018    10727    28    KAV2    62    

Native компонента для 8.3, реализующая метод sleep()

Разработка внешних компонент v8 Россия Абонемент ($m)

Внешняя Native 64-битная компонента для 1C 8.3, которая реализует метод sleep() - паузу выполнения кода. Пауза для большой устойчивости сделана платформозависимой и требует WinAPI. Ид компоненты - AddIn.AddInNativeSleep.NativeSleep.

1 стартмани

16.10.2018    6486    3    ripreal1    9    

001. Криптография и цифровая подпись RSA-sha256 на платформе 1С

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Внешняя компонента, исходники, обработка для 1С.

5 стартмани

04.09.2018    11983    25    Nikola23    60    

Снимок экрана для 1С Промо

Универсальные обработки Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Довольно часто люди сталкиваются с необходимостью сделать снимок экрана. Если вы или ваши сотрудники основную часть времени проводят в 1С и у вас есть необходимость прикреплять графические файлы, то эта компонента для вас.

1 стартмани

08.02.2016    26383    32    linkforget    11    

Программный вызов сенсорной клавиатуры

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Программный вызов сенсорной клавиатуры в ОС Windows, для сенсорных мониторов, которые не определяются системой как hid-совместимый сенсорный экран. Тестировалось на платформе 8.3.9.2033, конфигурация Розница 1.0.16.8.

1 стартмани

04.08.2018    7486    11    dewersia    3    

Класс-обработка “Работа с картами Яндекс”

Разработка внешних компонент WEB v8 Абонемент ($m)

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    21630    184    RSConsulting    15    

Распознавание лиц (off-line). Демонстрационная база.

Разработка внешних компонент v8 Абонемент ($m)

Распознавание лиц входит в нашу жизнь стремительными темпами, бизнес стремится за событиями. В публикации находится описание и пример использования нейросетей для распознавания лиц.

1 стартмани

17.07.2018    14733    71    nomadon    45    

Native API компонента для использования установленного в системе интерпретатора Python Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Компонента позволяет подключать к платформе 1С python-модули, оформленные в стиле внешней компоненты. Кроме этого, она позволяет запускать небольшие фрагменты python-кода прямо из модулей 1С. На данный момент поддерживаются платформы 8.2 — 8.3 x86 Windows.

1 стартмани

14.05.2013    37006    69    Принт    31    

QR-code полная версия (без шрифта и внешней компоненты для 8.2, 8.3 и любого типа клиента)

Разработка внешних компонент Сканер штрих-кода v8 1cv8.cf Абонемент ($m)

Предназначена для создания QR-code с указанием процента восстановления потерянных данных. Строка кодирования может содержать все печатаемые символы, в том числе и кириллические. Для работы не требуется внешняя компонента или шрифт.

2 стартмани

10.07.2018    10339    15    bobank    6    

Внешняя компонента для ping'а

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Внешняя компонента для выполнения ping'а из 1С:Предприятия 8.

1 стартмани

04.07.2018    9641    5    frkbvfnjh    24    

JVM Native API плагин - для запуска в 1С плагинов написанных на Java

Разработка внешних компонент v8 Абонемент ($m)

Запускаем виртуальную машину Java в 1С. Собрана внешняя компонента которая позволяет запускать виртуальную машину java в среде 1С. Позволяет как передавать параметры в java - так и получать уведомление через externalevent. Предпосылкой создания являлся тот факт, что есть много готового функционала которого не хватает в 1С. Язык сpp - довольно сложен для быстрой разработки, и теперь возможно использовать готовые сборки java классов (так называемые jar-файлы) для использования в 1С.

1 стартмани

20.06.2018    10274    29    minimajack    67    

Распознаем штрих-коды QR, EAN-13, Code 128 с помошью 1С и веб камеры Промо

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Внешняя компонента, поможет распознать штрих-код, используя обычную веб камеру. Умеет работать с UPC-A, UPC-E, EAN-8, EAN-13, Code 39, Code 128, QR Code, Interleaved 2 of 5, Codabar, RSS-14, Data Matrix, PDF 417, Aztec, MaxiCode.

1 стартмани

31.10.2012    75100    183    shakmaev    84    

Вызов методов 1С из внешней компоненты, выполненной по технологии COM на C++

Разработка внешних компонент v8 Абонемент ($m)

Пример работы с объектами и методами 1С из внешней компоненты, разработанной по технологии COM на С++.

1 стартмани

04.06.2018    7659    4    le_    0    

Tool1CD: отрежем донорскую почку

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

Ваша база мертва? Что ж, кое-что в ней ещё теплится.

1 стартмани

15.05.2018    17849    23    baton_pk    13    

Внешняя компонента Native для создания штрих кода (GS1 DataBar Expanded, GS1 DataBar Expanded Stacked и другие)

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

В связи с внедрением ГИС Меркурий потребовалось внешняя компонента, которая создает штрихкод и отдает 1С. ВК создана на основе библиотеки zint www.sourceforge.net/projects/zint.

1 стартмани

27.04.2018    16187    201    artmaks1988    93    

Удаленное управление через Skype Промо

Разработка внешних компонент Администрирование данных 1С v8 1cv8.cf Абонемент ($m)

Удаленное управление 1С через Skype. Со стороны клиента для работы нужен только Skype. Со стороны сервера любой компьютер с 1С.

1 стартмани

09.02.2014    41727    13    moolex    29    

Работа с любыми сканерами документов в 1С c помощью внешней компоненты от vintasoft.com

Разработка внешних компонент v8 v8::УФ 1cv8.cf Абонемент ($m)

Универсальная обработка для сканирования изображений на любых сканерах (поточных, планшетных) средствами ActiveX от компании Vintasoft.

1 стартмани

29.03.2018    7698    3    Dach    0    

Печать на сервере 1с. DLL для 1С, способная печатать картинки и pdf файлы в серверном контексте (например, при работе веб-сервиса)

Разработка внешних компонент v8 Россия Абонемент ($m)

Не знаю, пригодится кому или нет, писалось для себя, т.к  возникла необходимость печатать на принтере этикеток sscc напрямую с ТСД  через web - сервис. Как известно, веб сервис в 1С работает только в серверном контексте и, к сожалению, разработчики платформы пока не позаботились о возможности вызывать метод  при таких условиях. 

1 стартмани

13.03.2018    8751    24    evgeny43    8    

Разработка игр на языке 1С с использованием Active-X компоненты (собственная разработка)

Разработка внешних компонент v7.7 v8 Россия Абонемент ($m)

Написанная Active-X компонента встраивается на форму обработки 1С (тестировалось на 1С 8.0, 8.1, 8.2, 8.3 не управляемые формы, 1С 7.7.). Компонента предназначена для моделирования игрового поля (вывод, движение спрайтов - фреймов, обработка коллизий, управление спрайтами-фреймами и т.д.) при разработки логики игры на встроенном языке 1С. Приложен пример обработки в которой реализована игра "Бита".

5 стартмани

04.01.2018    13443    2    protexprotex    34    

Внешняя компонента - Запись и воспроизведение .wav файлов. Обработка-иллюстратор. Промо

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Обработка иллюстрирует использование внешней компоненты MMLibrary для записи и воспроизведения звуковых wav файлов. Компонента разработана по технологии Native.

1 стартмани

01.03.2014    17426    20    vozhd    7    

Active-X компонента для получения видео-данных с Web-камеры, IP-камеры для 1С 8.3, 1С 8.2, 1С 8.1, для рисования на форме

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Active-X компонента встраивается непосредственно на форму 1С (тестировалось на 1С 8.3, 1С 8.2, 1С 8.1 - неуправляемые формы), реализованы методы подключения к Web-камеры (интерфейс VFW), к IP-камере по http-запросам, отображение на форме 1С потокового видео, снятие скрина и сохранение в файл на диск. Приложена обработка реализующая подключение и работы с ocx - компонентой. Тестировалось на win 7

4 стартмани

13.12.2017    12449    25    protexprotex    48    

ЭЦП по гостам Украины в 1С - Внешняя компонента BilboSign.dll

Разработка внешних компонент Защита и шифрование v8 1cv8.cf Украина Абонемент ($m)

Причиной данной разработки послужило отсутствие на данный момент криптопровайдера ЭЦП, который может работать по гостам Украины и использоваться в 1С. Для этого разработана внешняя компонента по технологии NativeAPI.

1 стартмани

11.12.2017    10925    15    Zahary    5    

Внешняя компонента симуляции нажатий клавиатуры и мыши (в т.ч. сворачивание/разворачивание динамических списков)

Разработка внешних компонент v8 Абонемент ($m)

Данная ВК позволяет использовать в ОС Windows начиная с 2000 функцию WinApi - SendInput(). А прилагающаяся обертка на 1С под нее позволяет делать это комфортно и просто. Внешняя компонента была написана, прежде всего, для сворачивания/разворачивания группировок в динамических списках.

1 стартмани

18.10.2017    12353    10    🅵🅾️🆇    26    

ActiveX компонента WebCamX для работы с веб-камерой! Промо

Разработка внешних компонент v8 1cv8.cf Россия Абонемент ($m)

Искал нормальную компоненту без .NET для работы с Web-камерой, нашел одну, но она платная. Тогда я решил сделать свою ActiveX. Моя компонента умеет: 1. - Получать изображение с камеры. 2. - Писать видео с камеры в файл, в формате (*.asf). 3. - Делать снимок с камеры и сохранять в файл, в форматах (*.bmp; *.jpg; *.png). 4.- Умеет проигрывать видео. Для начало работы необходимо зарегистрировать компоненту в системе. Например: regsvr32 "Полный путь к файлу WebCamX.ocx" Так же имеется обработка пример для 1с8.2. В этой обработке показано как можно работать с этой компонентой. Желаю удачи! Не забываем ставить плюсы и коментить :)

1 стартмани

28.04.2011    49293    222    SerG_121    140    

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

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Внешняя компонента и сервер отправки сообщений клиентам с сервера / от других клиентов.

1 стартмани

16.10.2017    10210    9    eugenevk    5    

Обработка изображений

Разработка внешних компонент v8 1cv8.cf Абонемент ($m)

Компонента обработки изображений.

1 стартмани

04.10.2017    10218    22    eugenevk    17