Размер шрифта
Цвет фона и шрифта
Изображения
Озвучивание текста
Обычная версия сайта
UKVED
Комплексные IT решения
для вашего бизнеса
+7 906 045 2827
+7 906 045 2827
E-mail
sale@ukved.ru
Адрес
г.Москва, ул. Антонова-Овсеенко, д. 15, стр. 2
Режим работы
Пн. – Пт.: с 9:00 до 18:00
Сопровождение 1С
  • Внедрение 1С
  • Обновление 1С
  • Обслуживание 1С
  • Поддержка 1С
  • Разработка 1C
Аренда 1С (1С:ФРЕШ)
Бухгалтерское сопровождение
Аренда сервера
  • Выделенный сервер 1C
  • Аренда сервера для 1C
  • Почтовые серверы
  • Backup серверы
Распознавание документов в 1С
Разработка мобильных приложений
Наши мобильные приложения
AmoCRM
  • Внедрение AmoCRM
  • Интеграция AmoCRM
  • Разработка виджетов AmoCRM
Системное администрирование
  • Обслуживание компьютеров
  • Обслуживание локальной сети
  • Обслуживание телефонии
IP телефония
Каталог товаров
  • 1С отчетность
  • Лицензии 1С
    • Комплексное управление ресурсами предприятия (ERP)
    • Клиентские лицензии
    • Серверные лицензии
    • Бухгалтерский и налоговый учет
    • ЗУП и кадровый учет (HRM)
    • Управление складом, логистикой и продажами
  • ТСД Клеверенс
  • ИТС
  • Тарифы ИТС
  • Наши решения
Наши внедрения
Статьи
Контакты
Комплексные IT решения
для вашего бизнеса
+7 906 045 2827
+7 906 045 2827
E-mail
sale@ukved.ru
Адрес
г.Москва, ул. Антонова-Овсеенко, д. 15, стр. 2
Режим работы
Пн. – Пт.: с 9:00 до 18:00
UKVED
  • Сопровождение 1С
    • Внедрение 1С
    • Обновление 1С
    • Обслуживание 1С
    • Поддержка 1С
    • Разработка 1C
  • Аренда 1С (1С:ФРЕШ)
  • Бухгалтерское сопровождение
  • Аренда сервера
    • Выделенный сервер 1C
    • Аренда сервера для 1C
    • Почтовые серверы
    • Backup серверы
  • Распознавание документов в 1С
  • Разработка мобильных приложений
  • Наши мобильные приложения
  • AmoCRM
    • Внедрение AmoCRM
    • Интеграция AmoCRM
    • Разработка виджетов AmoCRM
  • Системное администрирование
    • Обслуживание компьютеров
    • Обслуживание локальной сети
    • Обслуживание телефонии
  • IP телефония
  • Каталог товаров
    • 1С отчетность
    • Лицензии 1С
      • Комплексное управление ресурсами предприятия (ERP)
      • Клиентские лицензии
      • Серверные лицензии
      • Бухгалтерский и налоговый учет
      • ЗУП и кадровый учет (HRM)
      • Управление складом, логистикой и продажами
    • ТСД Клеверенс
    • ИТС
    • Тарифы ИТС
    • Наши решения
  • Наши внедрения
  • Статьи
  • Контакты
1СFranch.pngmintsifryi_1С.png
г.Москва, ул. Антонова-Овсеенко, д. 15, стр. 2
UKVED
Телефоны
+7 906 045 2827
E-mail
sale@ukved.ru
Адрес
г.Москва, ул. Антонова-Овсеенко, д. 15, стр. 2
Режим работы
Пн. – Пт.: с 9:00 до 18:00
UKVED
  • Сопровождение 1С
    • Сопровождение 1С
    • Внедрение 1С
    • Обновление 1С
    • Обслуживание 1С
    • Поддержка 1С
    • Разработка 1C
  • Аренда 1С (1С:ФРЕШ)
  • Бухгалтерское сопровождение
  • Аренда сервера
    • Аренда сервера
    • Выделенный сервер 1C
    • Аренда сервера для 1C
    • Почтовые серверы
    • Backup серверы
  • Распознавание документов в 1С
  • Разработка мобильных приложений
  • Наши мобильные приложения
  • AmoCRM
    • AmoCRM
    • Внедрение AmoCRM
    • Интеграция AmoCRM
    • Разработка виджетов AmoCRM
  • Системное администрирование
    • Системное администрирование
    • Обслуживание компьютеров
    • Обслуживание локальной сети
    • Обслуживание телефонии
  • IP телефония
  • Каталог товаров
    • Каталог товаров
    • 1С отчетность
    • Лицензии 1С
      • Лицензии 1С
      • Комплексное управление ресурсами предприятия (ERP)
      • Клиентские лицензии
      • Серверные лицензии
      • Бухгалтерский и налоговый учет
      • ЗУП и кадровый учет (HRM)
      • Управление складом, логистикой и продажами
    • ТСД Клеверенс
    • ИТС
    • Тарифы ИТС
    • Наши решения
  • Наши внедрения
  • Статьи
  • Контакты
  • 0 Корзина
  • +7 906 045 2827
    • Телефоны
    • +7 906 045 2827
  • г.Москва, ул. Антонова-Овсеенко, д. 15, стр. 2
  • sale@ukved.ru
  • Пн. – Пт.: с 9:00 до 18:00
1СFranch.pngmintsifryi_1С.png
Главная
—
Статьи
—
Общее

Из Java во Flutter: MVP для 1С и 5 привычек, которые пришлось бросить

Владимир Ершов, руководитель UKVED · опубликовано 20 сентября 2026

Из Java во Flutter: MVP для 1С и 5 привычек, которые пришлось бросить

Из Java во Flutter: MVP для 1С и 5 привычек, которые пришлось бросить

Содержание
Почему возникает ловушка «Dart — это почти Java» 🪤Как исправить: пять привычек Android SDK, которые пришлось бросить 🔧Что делать, если ошибка повторяется: приложение снова тормозит 🔁Как предотвратить проблемы ещё до пилота 🛡️Как выбрать: Flutter, нативная разработка или 1С:Мобильная платформаСколько стоит MVP на Flutter и как мы его делаем 💼❓ Частые вопросы

Java-программист пишет на Flutter уже в первый день: Dart похож на Java. Но из-за этого сходства MVP получается тормозящим и запутанным, потому что привычки Android SDK здесь не работают. Помогают композиция вместо наследования, неизменяемые модели и один подход к состоянию. Для B2B к ним добавляется ранняя связка с 1С.

Почему возникает ловушка «Dart — это почти Java» 🪤

Первый вечер с Flutter. Открываю пустой проект и вижу знакомое: классы, дженерики, async и await. Руки сами набирают привычное: абстрактный BaseScreen с методами initData и dispose, рядом синглтон-сервис, рядом менеджер запросов. К ночи экран списка заказов открывается, данные приходят из тестового API.

Но на смартфоне список дёргается при прокрутке, а фильтр по статусу сбрасывается после возврата из карточки заказа.

Dart читается как Java, поэтому мозг пропускает проверку: синтаксис знаком, значит знакома и модель выполнения. Но Flutter не использует нативные View. Он сам рисует интерфейс и заново собирает дерево виджетов при каждом изменении состояния. Мой базовый экран пересобирал страницу целиком, а фильтр лежал в объекте, который фреймворк пересоздаёт вместе с виджетом.

Теперь ставка. Задача была типовая для малого бизнеса: менеджеры оптовой компании принимают заказы по телефону и в Telegram, потом переносят их в 1С руками. MVP должен был показать, приживётся ли заказ прямо в приложении: каталог, корзина, статус отгрузки. Если выйти на пилот с дёргающимся списком, менеджеры вернутся к звонкам на склад. Пилот закроют как «не прижилось», бюджет спишут, а вопрос, нужно ли бизнесу приложение, останется без ответа. Переписывать придётся всё, что успело вырасти на этом экране: состояние, запросы, модели.

Как исправить: пять привычек Android SDK, которые пришлось бросить 🔧

Симптомы были разными, причина одна: Flutter-код, написанный с привычками из Android. После пяти замен список перестал дёргаться.

От наследования экранов к композиции виджетов

В Android я строила цепочку: BaseActivity, поверх неё BaseListActivity. Во Flutter экран собирается из маленьких виджетов. Общее поведение уходит в отдельный виджет-обёртку. Индикатор загрузки и заглушка для пустого списка становятся самостоятельными виджетами, которые вставляются куда нужно. Наследование глубже одного уровня здесь почти не встречается.

От POJO с сеттерами к неизменяемым моделям

Заказ из 1С приходит в JSON. В Java я сделала бы класс с полями и сеттерами. Во Flutter поля модели объявляют как final, а изменения делают через метод copyWith, который возвращает новую копию. Инструменты состояния сравнивают старое значение с новым и перерисовывают экран, только если оно изменилось. Шаблонный код для таких моделей пишут генераторы, например пакеты freezed и json_serializable.

От пулов потоков к Future и Stream

Java приучает следить, чтобы тяжёлая работа не блокировала основной поток. Dart исполняет код в одном потоке с циклом событий. Сетевой запрос возвращает Future, достаточно поставить await, и интерфейс не замирает. Отдельные потоки, в Dart их называют изолятами, нужны для тяжёлых вычислений, например для разбора огромного каталога. Запускать изолят ради обычного запроса к 1С — джавовская привычка, которая только усложняет код.

От тяжёлого onCreate к лёгкому build

Метод build вызывается при каждой перестройке, поэтому запросы, сортировки и форматирование в нём недопустимы. Список заказов у меня дёргался именно из-за сортировки внутри build. Я перенесла её в слой состояния, вынесла строку списка в отдельный виджет и подключила ListView.builder, чтобы строились только видимые строки.

От трёх архитектур сразу к одному подходу к состоянию

Из Java я принесла любовь к слоям и внедрению зависимостей и в первый вечер подключила сразу Provider, Bloc и get_it. Для MVP на несколько экранов это лишний код. Сейчас беру один инструмент, Riverpod или Bloc, и держу его на весь проект. Оба нормальные. Смешивать их нельзя: через месяц никто не найдёт, где живёт состояние корзины.

Что делать, если ошибка повторяется: приложение снова тормозит 🔁

Привычки возвращаются. Через месяц после исправлений список заказов снова дёрнулся: в строку добавили подсчёт суммы прямо в build. Ловить такие вещи глазами долго, поэтому я сверяюсь с инструментами.

  1. ✓Запустите приложение в режиме profile на реальном смартфоне. В debug-режиме и на эмуляторе Flutter работает медленнее, и замеры врут.
  2. ✓Откройте Flutter DevTools и включите отслеживание перестроек виджетов. Виджет, который перестраивается без причины, виден сразу.
  3. ✓Проверьте списки: нужен ListView.builder, картинки должны кэшироваться, тяжёлые расчёты должны идти вне build.
  4. ✓Нарисуйте карту состояния: какие данные где живут. У каждого куска данных должен быть один владелец.
  5. ✓Добавьте код-ревью, если разработчик в проекте один. Второй взгляд быстрее находит «джавовские» места, чем линтер.

Если приложение всё равно лагает на слабом смартфоне менеджера, хотя на флагмане разработчика работает гладко, дело уже в объёме данных: приложение тянет весь каталог целиком. Тогда пагинация и локальный кэш нужны раньше, чем новые экраны.

Как предотвратить проблемы ещё до пилота 🛡️

Самое неожиданное в моём MVP: экраны оказались лёгкой частью. Сложнее было достать из 1С остатки, цены и статусы в виде, удобном для приложения. Поэтому теперь я начинаю с интеграции приложения с 1С: сначала HTTP-сервис или OData в конфигурации, потом интерфейс поверх него. С заглушками вместо реальных данных легко нарисовать экран, который потом не ляжет на структуру 1С.

Перед пилотом проверьте ещё несколько вещей.

  • ✓Есть ли сеть там, где работают пользователи. На складе и в выездах связь пропадает, поэтому нужен локальный кэш и очередь неотправленных заказов.
  • ✓Доходят ли push-уведомления. Google-сервисы на части устройств в России недоступны, так что запасной канал, например RuStore Push, лучше заложить сразу.
  • ✓Где лежат персональные данные клиентов. Если приложение их собирает, действует 152-ФЗ: запись данных граждан РФ должна идти в базы на территории России.
  • ✓Как приложение ведёт себя на самом слабом смартфоне из тех, что есть у сотрудников.
  • ✓Записан ли в README выбранный подход к состоянию, чтобы новый разработчик не принёс второй.

Как выбрать: Flutter, нативная разработка или 1С:Мобильная платформа

Flutter подходит не всегда. Я сравнила три подхода на задачах, с которыми к нам приходит малый и средний бизнес.

ПодходКогда подходитЧто учесть
FlutterПриложение для менеджеров или клиентов сразу на iOS и Android, интерфейс со своим дизайномОдна кодовая база на две платформы; связь с 1С строится через HTTP-сервис или обмен данными
Нативная разработка на Java или KotlinРабота с оборудованием через SDK производителя: терминалы сбора данных, специфичные сканерыДля iOS нужна отдельная разработка, бюджет и сроки растут
1С:Мобильная платформаВнутренние формы для сотрудников, данные лежат в 1С, сложный дизайн не нуженОграничения в интерфейсе; удобно, если команда уже работает с 1С

Если сотрудникам нужны формы поверх данных 1С, часто хватает 1С:Мобильной платформы: разработка идёт в привычной среде. Если нужен быстрый интерфейс и запуск сразу на iOS и Android, берём Flutter. Бывает и гибрид: клиентская часть на Flutter, а данные и логика остаются в 1С.

Сколько стоит MVP на Flutter и как мы его делаем 💼

Разработка мобильных приложений у нас начинается от 500 000 ₽. Итоговая цена зависит от числа сценариев и объёма обмена с 1С: приложение с заказами и остатками стоит иначе, чем приложение с одной формой заявки. Точную цифру называем после разбора задачи.

Отличие нашего подхода в том, что мы внедряем 1С и пишем мобильные клиенты сами. HTTP-сервис в конфигурации и приложение на Flutter делает одна команда, поэтому вопрос «кто виноват, что остатки не совпадают» не возникает между двумя подрядчиками. Начинаем с одного сценария, например с оформления заказа, выпускаем его на пилот и добавляем экраны по результатам. Бизнес видит работающий продукт до того, как потратит основной бюджет. Если приложением будут пользоваться клиенты компании, у нас есть отдельный формат: B2B-приложение с 1С.

❓ Частые вопросы

Можно ли Java-разработчику сразу писать коммерческое MVP на Flutter?

Можно, если сначала пройти замены привычек: композиция вместо наследования, неизменяемые модели, Future вместо потоков и один подход к состоянию. Синтаксис Dart знаком, а вот модель выполнения другая. Первый экран стоит проверить на реальном смартфоне в режиме profile, а не на эмуляторе, и только потом наращивать функции.

Как подключить Flutter-приложение к 1С?

Чаще всего в конфигурации 1С публикуют HTTP-сервис или стандартный интерфейс OData, а приложение обращается к нему по HTTP и получает JSON. Заранее продумайте, какие данные нужны экрану: остатки, цены, статусы. Данные нужно отдавать порциями: весь справочник за один запрос телефон не переварит.

Сколько стоит мобильное MVP для бизнеса, который работает на 1С?

Разработка мобильных приложений у нас начинается от 500 000 ₽. Итог зависит от числа сценариев и объёма обмена с 1С: заказы и остатки стоят иначе, чем одна форма заявки. Точную цену называем после разбора задачи, когда понятно, какие данные приложению нужны из 1С.

Что выбрать для приложения менеджеров: Flutter или 1С:Мобильную платформу?

Если нужны внутренние формы поверх данных 1С без сложного дизайна, хватит 1С:Мобильной платформы. Если важны скорость интерфейса, свой дизайн и запуск сразу на iOS и Android, берут Flutter. Часто оптимален гибрид: интерфейс на Flutter, а данные и логика остаются в 1С.

Нужно ли хранить данные клиентов приложения в России?

Да, если приложение собирает персональные данные граждан РФ. По 152-ФЗ запись и хранение таких данных должны идти в базах на территории России. Поэтому сервер приложения и базу лучше сразу разместить в российском дата-центре, чтобы не переносить их после запуска пилота.

Нужно мобильное приложение для бизнеса?
Подберём стек и свяжем с 1С — смета за 1 день.
Получить смету →
Читайте также
Услуги 1САренда 1САренда сервера 1СМобильная разработка

Не помогло? Опишите вашу ошибку — разберём
Ответим сразу, без звонков и заполнения анкет. Что не получилось, какая версия 1С, что уже пробовали — этого достаточно. Сложное передадим инженеру.

Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00

Возврат к списку

Читайте также

  • 3 в 1: одно Flutter-приложение вместо мобильного, веб и десктопного
  • Flutter + SPM: как не сломать сборку при переходе с CocoaPods
  • Flutter 3.47: почему после апгрейда падает сборка 1С-приложения
  • Flutter Web на WASM в 2026: в каких браузерах заказчика он запустится

Остались вопросы? Нужна помощь?

Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.

Бесплатная консультация
 
Компания
О компании
Вакансии
Каталог
1С отчетность
Лицензии 1С
ТСД Клеверенс
ИТС
Тарифы ИТС
Наши решения
Аренда сервера
Сопровождение 1С
Сопровождение бухгалтерии
Системное администрирование
Аудит сайта
IT-аутсорсинг в Москве
Услуги по серверам
Аренда сервера 1С
Аренда 1С в облаке
Распознавание PDF (ПДФ) в 1С
+7 906 045 2827
+7 906 045 2827
E-mail
sale@ukved.ru
Адрес
г.Москва, ул. Антонова-Овсеенко, д. 15, стр. 2
Режим работы
Пн. – Пт.: с 9:00 до 18:00
sale@ukved.ru
г.Москва, ул. Антонова-Овсеенко, д. 15, стр. 2
2017 - © 2026
Политика конфиденциальности Оплата Поставка Возврат Оферта Карта сайта
ООО «ВЕД» · ИНН 7720299436 · ОГРН 1157746343920 · КПП 501801001
Аккредитованная ИТ-компания — проверить в реестре Минцифры по ИНН 7720299436
0

Корзина

Очистить корзину
Ваша корзина пуста
Исправить это просто: выберите в каталоге интересующий товар и нажмите кнопку «В корзину»
В каталог
Главная 0 Корзина Каталог Контакты Услуги Бренды Отзывы Карьера Компания Проекты Лицензии Документы Блог Тарифы Цены
Мы считаем посещения сайта с помощью Яндекс.Метрики. Запись ваших действий на странице (Вебвизор) включается только с вашего согласия. Нажимая «Принять», вы соглашаетесь с Политикой конфиденциальности и Согласием на обработку ПДн.