Зачем нам 1С:Элемент?
Все мы ждали выхода 1С:Элемента. Но, к сожалению или к счастью, доступ к нему сделали платный. Технология «1С:Предприятие.Элемент» расширяет границы применения системы «1С:Предприятие». В частности, она позволяет создавать приложения, ориентированные не только на бизнес-пользователей, но и на конечных клиентов . С её помощью, в том числе, можно создавать витрины, фронт-офисы, B2B и B2C кабинеты, headless-сервисы, говорили они. И поэтому, не ожидая смягчения политики 1С, решил сравнить 1C:Элемент и Flutter, работающий на dart.
Глава 1
Сравним код
1С:Исполнитель
метод СократитьДо(Строка: Строка, Длина: Число): Строка
Если Строка.Длина() > Длина
Возврат Строка.ПодстрокаСНачала(Длина - 3) + "...";
Возврат Строка
;
Dart
metodSokratitDo(String stroka, int dlina) {
if (stroka.length > dlina) {
return stroka.substring(1, dlina - 3) + "...";
}
return stroka;
}
1С:Исполнитель
конст МЕСЯЦЫ = [
"Янв", "Фев", "Мар", "Апр", "Май", "Июн",
"Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"
]
Dart
const month = [
"Янв", "Фев", "Мар", "Апр", "Май", "Июн",
"Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"
]
Продолжим - среда разработки.
1С:Элемент
Flutter в Android Studio
Flutter в Visual studia
После изучения возможностей на сайте "ИТС" стало понятно, что все просто. Но куча ограничений и конечно то что продукт платный - это огромный минус.
Попробуем изучить Dart https://dart.dev/language/functions, а здесь Flutter https://docs.flutter.dev/ui/widgets/material.
Flutter и 1C - это две разные технологии, предназначенные для разных целей.Flutter - это фреймворк для создания мобильных и веб-приложений с помощью языка программирования Dart. Он позволяет создавать красивые и быстрые приложения для различных платформ. Flutter поддерживается компанией Google и имеет активную сообщество разработчиков.
Выбор между Flutter и 1C зависит от конкретных потребностей и задач вашего проекта. Если вам нужно создать мобильное приложение или веб-приложение, то Flutter может быть лучшим выбором. Если вам нужна система управления предприятием с готовыми решениями для бизнес-процессов, то 1C может быть более подходящим. Но в 1С:Элементе все из коробки не работает, так что выбор пал на Flutter. Тем более он бесплатный.
Глава 2
Попробуем создать приложение для it отдела. Просто для понимания, что и как работает, не вникая в стандарты написания Flutter. Начнем, конечно, с 1С и выберем конфигурацию, которую никто не любит, например, старый документооборот.
Создадим 2 новых вида документа.
Далее поднимем три api для тестирования и напишем код.
Заходим в https://m3.material.io/components/search/overview и выбираем нужные элементы для экрана и создаем интерфейс.
Первый экран проверка существования пользователя и сразу получение списка текущих задач. Данные сохраняются в памяти телефона с помощью кросс-платформенной базы Hive. Подробнее здесь https://pub.dev/packages/hive.
Код для авторизации и получения данных по задачам с стороны 1С.
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<Map> ConnectionList(login, pass, metod, adres) async {
Map data = {};
String base64Auth = base64.encode(utf8.encode("$login:$pass"));
final url = Uri.http(adres, metod);
Map<String, String> headers = {
"Content-Type": "application/json",
"Authorization": "Basic $base64Auth"
};
http.Response response = await http.get(url, headers: headers);
data = json.decode(response.body);
return data;
}
Второй экран - просмотр задачи. Обязательный к заполнению комментарий и исполнение.
Третий экран - постановка задачи программисту с описанием задачи и выбором файла любого формата для дальнейшей передачи в ДО.
Пример работы выбора и прикрепления файлов вы можете найти в библиотеках (ссылках), закрепленных выше.
Код для отправки файла в 1С с описанием задачи.
import 'dart:convert';
import 'package:http/http.dart' as http;
Future createNewTask(login, pass, name, description, file,fileName, filePath, adres) async {
String base64Auth = base64.encode(utf8.encode("$login:$pass"));
Map<String, String> headers = {
"Content-Type": "application/json",
"Authorization": "Basic $base64Auth"
};
final url = Uri.http(adres, '/do/hs/ex/task/$name/$description/$fileName');
http.Response response = await http.post(
url,
headers: headers,
body: file.readAsBytesSync(),
);
response.statusCode;
}
Пример работы.
Естественно, получение задач выполняется в фоновом режиме. Что по итогу мы поняли. 1С:Элемент нам не нужен. Можно разрабатывать на любом фрэйм-ворке и интегрировать с 1С.
Всем добра.