Несмотря на то, что платформа 1С 7.7 официально считается устаревшей, она продолжает активно использоваться во множестве организаций благодаря своей легкости и высокой скорости работы интерфейса. Однако современный мир диктует новые условия: интеграция с государственными информационными системами (ГИС), работа через веб-сервисы и использование сложных форматов обмена данными. В этой статье мы подробно проанализируем основные потребности разработчиков и разберем способы наделения библиотек для 7.7 необходимым функционалом.
Одной из самых острых проблем «семерки» является отсутствие встроенных средств для полноценной работы с протоколами HTTP и HTTPS. Разберем, какие именно механизмы необходимо реализовать в подключаемых библиотеках (ВК), чтобы сделать работу программиста комфортной:
HTTPСоединение, HTTPЗапрос и HTTPОтвет. Это позволит отойти от использования громоздкого WinHTTP.WinHTTPRequest.5.1 через СоздатьОбъект("OLE.MSXML2.ServerXMLHTTP").OpenSSL или libcurl.
// Пример желаемого синтаксиса через внешнюю библиотеку
Библиотека = СоздатьОбъект("AddIn.AlexScript");
ДанныеJSON = Библиотека.РаспарситьJSON(ТекстОтвета);
Сообщить(ДанныеJSON.Получить("status"));
WSDL и XSD файлов. В идеале библиотека должна автоматически генерировать структуру запроса на основе формального описания сервиса, как это реализовано в 8.3 через WSСсылки.Работа с государственными порталами требует не только обмена данными, но и криптографической подписи (ЭЦП). Рассмотрим основные сложности, которые необходимо решить:
Для работы с Маркировкой («Честный знак») требуется формирование подписи в формате CAdES-BES. В штатной «семерке» это часто реализуется через вызовы CAPICOM, который официально не поддерживается Microsoft уже много лет. Проанализируем, какие методы должна иметь современная библиотека:
ПодписатьДанные(Данные, Сертификат), возвращающий отсоединенную подпись.ПроверитьПодпись(Данные, Подпись).Ограничение 1С 7.7 — одна табличная часть на документ или справочник. Выясним причину, почему это так мешает: современные бизнес-процессы (например, в ERP-системах) требуют разделения данных (товары, услуги, возвратная тара, налоги) по разным вкладкам. Проанализируем способы обхода этого ограничения:
Рассмотрим вариант реализации через внешнюю библиотеку и SQLite. Мы можем использовать библиотеку для создания «виртуальных» табличных частей, данные которых хранятся во внешнем локальном файле БД и связываются с объектом 1С по его ID. Разберем логику:
// При записи документа в 1С вызываем метод библиотеки
Процедура ПриЗаписи()
Библа.СохранитьДопТабличнуюЧасть(ТекущийДокумент(), ТЗ_Услуги);
КонецПроцедуры
Такой подход позволяет не раздувать основную базу .dbf или SQL лишними служебными справочниками, которые обычно используются для эмуляции вторых ТЧ.
Программистам 7.7 не хватает подписок на события. Рассмотрим возможность реализации глобального перехватчика событий Записать(), Удалить() или Новый(). Выясним, как это реализовать:
Библиотека может использовать механизмы инъекции кода или работы с объектами через 1С++. Это позволит выполнять код «менеджера объекта» автоматически, не прописывая вызовы функций в каждом модуле формы. Например, при программном создании справочника из внешней обработки, мы могли бы автоматически запускать проверку заполнения реквизитов.
Многие разработчики мечтают о синтаксисе 8-й версии в 7.7. Рассмотрим концепцию использования «препроцессора» или внешнего интерпретатора. Проанализируем ситуацию: автор темы предлагает использовать свой скриптовый движок. Это дает ряд преимуществ:
Массив, Структура, Соответствие, которых очень не хватает в штатных «клюшках».Рассмотрим возможности библиотеки по управлению формами. Выясним, чего именно не хватает:
API Windows.TCP-порт и мгновенно генерировать ВнешнееСобытие в 1С. Это решит проблему с «файлами-семафорами», о которой упоминают пользователи.Подводя итог нашему анализу, можно сказать, что идеальная библиотека для 1С 7.7 — это мощный COM-сервер, который берет на себя всю «грязную» работу с сетью, шифрованием и сложными структурами данных, возвращая в 1С простые типы (строки, числа) или объекты типа ТаблицаЗначений.
Основные советы для реализации:
C# или C++ для разработки ядра библиотеки, чтобы обеспечить максимальную производительность.Реализация вышеописанных идей позволит превратить 1С 7.7 из «архаичной системы» в современный инструмент, способный эффективно интегрироваться в любую ИТ-экосистему предприятия.