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
23
.zip 800,31Kb 23 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Evil Beaver 6646 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 286 10.05.18 12:53 Сейчас в теме
Предполагается, что вы уже умеете разрабатывать внешние компоненты по типу Native, разбираетесь в C++, умеете готовить CMake, а слова «собрать Boost» вызывают у вас приступ иронии и боли

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

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

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

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

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

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

с помощью компоненты, что в статье - нет. это просто пример использования библиотеки. Библиотека, да, имеет функционал экспорта/импорта таблиц, их удаления - эти возможности надо ещё проверить и обкатать, потому сейчас я их не показываю. Опишите словами алгоритм и я, возможно, попробую его воспроизвести в одной из следующих статей.
19. vadim1011985 77 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 399 16.05.18 12:52 Сейчас в теме
(19) да, спасибо. Попробую воспроизвести этот сценарий.
21. vadim1011985 77 16.05.18 12:56 Сейчас в теме
(20) И Вам спасибо , надеюсь получится
4. artbear 1176 10.05.18 16:37 Сейчас в теме
Очень круто!

Вышли из тени наконец-то :) ?
5. fishca 1170 10.05.18 16:49 Сейчас в теме
Плюсиков маловато пока...
6. baton_pk 399 10.05.18 17:24 Сейчас в теме
(5) ты погоди, скоро начнут рассказывать, что это не нужно и что мы фигнёй занимаемся :)
7. bulpi 169 10.05.18 19:30 Сейчас в теме
(6)
Это очень нужно. Памятник при жизни из чистого золота в полный рост :)
8. baton_pk 399 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 399 25.06.18 07:52 Сейчас в теме
(22) Спасибо! Рад, что понравилось.
25. nomadon 387 16.08.18 13:08 Сейчас в теме
```
if (MSVC)
set (AddInNative_SRC ${AddInNative_SRC} AddInNative.def)
endif()
```
В шаблоне не указано подключение дефа? а как тогда dll работает? или шаблон предназначен не для CMake, он просто рядом что ли?
26. baton_pk 399 16.08.18 13:49 Сейчас в теме
(25)
дключение дефа? а как тогда

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

См. также

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

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

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

1 стартмани

25.03.2020    1153    5    berezdetsky    8       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

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

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

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

4 стартмани

02.02.2020    2501    17    Johny_v    5       

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

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

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

3 стартмани

03.01.2020    2114    13    Diana.dedov.91    0       

DevOps для 1С. Онлайн-курс проходит с 16 апреля по 11 июня 2020 года. Промо

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

12000 рублей

Вставка картинки из буфера обмена (JavaScript + внешняя компонента)

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

Вставка картинки из буфера обмена с помощью JavaScript в поле HTML в web-клиенте и с помощью внешней компоненты в тонком/толстом клиенте. Механизм протестирован на платформах 8.2 и 8.3 Для запуска опубликованной конфигурации требуется платформа релиза не ниже 8.3.14.

1 стартмани

05.12.2019    1704    Andreyyy    1       

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

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

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

10 стартмани

02.12.2019    1911    1    starovton    5       

Базовый курс для начинающих 1С-программистов. Онлайн-интенсив со 2 июня по 2 июля 2020 г. Промо

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

4500-9500 рублей

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

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

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

1 стартмани

28.10.2019    5536    5    Grigoriy251    3       

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

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

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

1 стартмани

21.10.2019    5913    1    ripreal1    16       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

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

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

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

1 стартмани

06.10.2019    5526    12    vdv2701    25       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

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

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

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

1 стартмани

29.07.2019    2218    4    axae    0       

Онлайн-курс «Автоматизация процессов управления МТО: методика сбора и формализации требований» с 1 апреля по 13 мая 2020 года. Промо

Цель курса - повысить полноту и качество сбора и формализации требований к автоматизации процессов управления материально-техническим обеспечением. Курс основан на процессном подходе, позволяет в полном объеме выявить и учесть все факторы, влияющие на специфику процессов управления МТО. Участники курса получают теоретические знания в области организации процессов управления МТО и готовый инструментарий для сбора и формализации требований по автоматизации этих процессов (шаблоны, опросники, модели).

40000 рублей

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

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

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

1 стартмани

26.06.2019    3527    13    Bww    21       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) 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    5883    25    MGemini    2       

Онлайн-интенсив "1C:Предприятие для программистов: Бухгалтерские задачи" с 22 июня по 8 июля 2020 г. Промо

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

4900 рублей

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

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

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

1 стартмани

19.03.2019    4956    10    xxxAndricxxx    13       

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

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

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

1 стартмани

28.02.2019    4395    6    xxxAndricxxx    1       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Внешняя компонента для ping (под win)

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

Цель: выполнение ping из 1С без использования команд системы. Может быть полезна разработчикам для проверки доступности компьютеров.

1 стартмани

05.01.2019    3914    2    milut    0       

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

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

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

1 стартмани

30.12.2018    14927    113    Matveymc    21       

Готовые переносы данных из различных конфигураций 1C Промо

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

Внешняя компонента для считывателя карт ACS 122/1281 (БПО)

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

Внешняя компонента для считывателя бесконтактных карт ACS 122/12 для подсистемы подключаемого оборудования.

1 стартмани

11.12.2018    4430    24    eugenevk    26       

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

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

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

1 стартмани

16.11.2018    9474    58    nomadon    40       

Онлайн-курс «Практические аспекты внедрения регламентированного учета и расчета себестоимости в 1С:ERP на крупных промышленных предприятиях» с 20 апреля по 15 мая 2020 года. Промо

Курс рассчитан для подготовки экспертов по регламентированному учету и учету затрат для внедрения на крупных промышленных предприятиях с «исторически сложившимся» учетом

9000 рублей

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

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

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

1 стартмани

12.11.2018    8958    25    KAV2    59       

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

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

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

1 стартмани

16.10.2018    5295    3    ripreal1    9       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

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

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

1 стартмани

19.09.2018    11677    15    TSSV    14       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

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

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Разработка внешних компонент WEB

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

1 стартмани

01.08.2018    17576    166    RSConsulting    14       

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

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

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

1 стартмани

17.07.2018    13123    75    nomadon    45