1с сдк что это
Думаю все уже слышали, о новых возможностях нового релиза 1С. Но людям далеким от программирования под мобильные платформы, могут быть не понятны некоторые особенности. Для этого мы сделали этот "легкий" гайд.
Обновление 12.08.2012 или 1С отжигает.
Добрый день. 1С обновила мобильную платформу до 8.3.3.30.
Началось веселье, ибо гугл тоже решила обновить СДК.
Что надо сделать что бы все работало.
1. Имя базы не указывается - лезим в конфигуратор и делаем поле открытым для редактирования.
2. Лезем в конфигуратор, и ищем ссылки на aapt.exe, ищем их у вас на коме и меняем в конфигураторе на правильные пути.
3. Лезем в менеджер СДК и качаем СДК 17. Без нее работать не будет.
5. Изменения сделанные в обработке - прикрепил к шапке.
Обновление 06.06.2013
Объеденившись интелектом с serg_gre, установили как можно писать конфу под мобильное приложение, при этом не заморачиваясь с компиляцией.
Идея какая - по сути есть 2 вида апк файлов (это те которые установочные для телефона):
1. это скомпилированный файл, который вы сами компилите, и следуете инструкциям в этой статье. После компиляции - вы получаете конфу, и теперь можете с ней работать, однако, если вы хотите что то переделать -то вам прийдется все перекомпилировать и переустанавливать.
2. Это начальный апк, который лежит в архиве mobile8.3.3.24Android1cem.apk, и его фишка в том, что вы можете сами прописывать туда разные пути к конфигурациям. И оно автоматом будет обновлять базу при подключении к серверу.
И так, это НАМНОГО удобней. Как это сделать?
После того, как вы создали конфигурацию, вы можете ее опубликовать под неким именем для доступа через веб (как это сделать - есть куча статей, в том числе и моих), однако нас интересует отуда все, до момента начала публикации.
Вместо публикации базы в привычном нам режиме, мы в конфигураторе жмем - Конфигурация - Мобильное приложение - Публиковать.
Ясное дело - указываем имя базы (я думаю тут нет смысла говорить о том, что оно должно отличаться от имени публикации веб доступа) и жмем опубликовать. Допустим мы ей дали имя InfoBase.
Далее мы должны проверить, все ли у нах хорошо?
Для этого заходим на 127.0.0.1/InfoBase. Обратите внимание, без всяких там wsdl и так далее. Если мы видем хмл схему - значит все ок.
Далее запускаем на мобильнике 1С и добавляем конфу прописывая адрес к этой базе.
После этого все будет круто. Обратите внимание, что так идет обновление только конфигурации, а не данных.
Остался один вопрос, от того же наблюдательного serg_gres :
В конфигураторе - в меню Отладка - Начало отладки - Мобильное приложение.
Вопрос - что это за зверь? Если кто знает, добро пожаловать в камменты.
Может и все про это знали, но как обычно, то что на виду - многие не видят :)
Обновление 30.05.2013
Вышла новая версия платформы - 8.3.3
Хотелось бы выделить некоторые особенности и изменения в ней.
Лицензирование мобильной платформы и мобильных приложений
Средства разработки мобильных приложений и мобильная платформа «1С:Предприятия 8» для целей разработки включены в коммерческую поставку платформы «1С:Предприятие» и без дополнительной оплаты доступны разработчикам прикладных решений, правомерно владеющим дистрибутивом платформы «1С:Предприятие 8.3».
Мобильные приложения, разработанные пользователями и партнерами на платформе «1С:Предприятие 8.3», в настоящее время разрешается распространять без оплаты фирме «1С», если количество распространяемых копий не превышает 50. Для распространения большего числа копий требуется согласование с фирмой «1С».
Т.е., если вы решитесь опубликовать приложение на гугло плее, то к вам могут быть выдвинуты официальные притензии :)
В форуме, в соответствующей ветке - выложил полный список изменений от 1С. Просьба там отписываться по найденным глюкам.
От себя хочу выделить несколько особенностей, которые мне поравились:
На мобильной платформе стало возможно:
- Получать срезы первых/последних на самый первый и самый последний (текущий) моменты времени с большей скоростью.
Однако остались и всякие мелочи. Например - информация в поле ввода - сдвинута вверх, не сильно, но бросается в глаза.
При открытии справочника - наименование стоит нормально, а картинка реквизита насдвинута сильно вверх, что очень бесит :) Хотя это может так и задуманно. Создал отчет на СКД - он у меня в мобильном приложении не появился.
Установленная версия программы съедает 118 метров памяти телефона.
Первая версия статьи
1С выпустила новую платформу 8.3.2, особенностью которой является возможность разработки конфигурации под мобильные платформы. Суть в том, что после всех манипуляций вы получаете готовые пакеты .apk (для Android) и .zip (для iOS).
Основная идея в том, что это может сделать программист 1С, и полностью контролировать разработку. Этот файл вы можете разместить на Google Play или на AppStore, и его смогут качать люди.
Под андроид файл .apk весит от 38Мб. Тут стоит обратить внимание на то, что он все эти мегабайты грузит в память телефона, таким образом, если у вас на памяти телефона не доступно около 50Мб, то установить вы его не сможете J.
Его разархивируем в какую-нибудь папочку, далее нам надо установить Android SDK и Java SDK.
В разделе Java Platform, Standard Edition жмете JDK Download, ставите галку, что принимаете лицензионное соглашение и скачиваете файл соответственно Вашей операционной системе. С установкой проблем возникнуть не должно. После этого желательно перезагрузиться. Обратите внимание - джава должна быть 1.6! На 1.7 все скомпилиться, но работать не будет:)
Android SDK включает в себя инструменты, необходимые для разработки Android-приложений. Рекомендуется скачивать EXE-шник, но я предлагаю скачать ZIP-версию и самим распаковать в какой-нить удобный для вас каталог (если нет ссылки на ZIP, нажмите ссылку Other Platforms).
Учтите, что это должен быть каталог "на векА". И лучше его не перемещать никуда, иначе придется перенастраивать среду разработки. Предлагаю где-нибудь создать каталог Android. Крайне желательно, чтобы путь к нему был коротким. Идеально - :android. Для себя запомним этот каталог под псевдонимом . И в него распакуем наш архив SDK, получим android-sdk-windows.
Потом заходим туда, и убедимся в том, что у нас скачена платформа Android 2.2 - раскрываем плюсик - SDK Platform, если не установлен, то ставим галочку и инсталим.
Далее самое интересное – заходим в конфигурацию, и добавляем опцию:
Обратите внимание - синоним и комментарий - должны быть пустыми, так как потом не адекватно сработает парсер. Спасибо обществу за бдительность :)
После этого, разархивируем архив, который скачали в папку с адекватным наименованием.
Далее обновляем конфу, и жмем Конфигурация – Мобильное приложение – Записать в файл.
Открываем конфигурацию в режиме управляемых форм и открываем обработку, которая находилась в архиве и заполняем поля.
Тут все немного весело – вначале выбираем файлик, который сохранили, далее выбираем язык, потом нажимаем на лупу, на представлении приложения – пишем представление.
Если язык выбрать нельзя - значит у вас есть комментарий или описание в конфигурации. Читай выше.
Далее указываем версию и номер сборки (они критичный при публикации в магазинах) но пока ставим там любые числа, например 1 и 1.
Идентификатор приложения тоже критичен, если он будет совпадать с уже существующим, на магазине, то маркет не даст его загрузить, но нам пока это без разницы, и обзавем его как-нибудь, только учтите - название должно содержать только латиницу (и желательно не создержать заглавных букв).
Далее жмем Создать.
Тут все не менее весело, в расположении мобильно платформы указываем адрес распакованного архива, т.е. верхнюю папку, в которой лежат еще папки для Андроида и iOS.
Далее выбираем SDK, у меня они лежат там, у вас пути могут отличаться.
Выбираем куда у нас будет записан результат.
А вот с ключем веселье. Надо понимать, что это важный файл, если вы ранее опубликовали приложение на маркете под одним ключем, то в случае утери – будет веселье. Но мы пока оставим это. И так, так как ключа у нас нету, то его нужно создать, для этого мы указываем по сути Логин и Пароль ключа, далее данные о себе и формируем ключ, потом выбираем его и жмем ОК, если все нормально, то появится окно консоли, в котором будут описываться стадии операции. После всего этого – вы получите файлики, которые можно скачать себе на телефон и установить.
Обратите внимание, что для установки надо отключить функцию Установка только с известных источников.
И на последок ньюансы:
При разработке мобильного приложения необходимо учитывать ограничения, которые
накладывает мобильная платформа по сравнению с платформой «1С:Предприятие» для
Наша компания делает сервис для хранения и обработки данных с промышленных устройств (насосы, буры и прочая промышленная техника). Мы храним данные наших клиентов и предоставляем функционал для их анализа: построение отчетов, графиков и еще много чего.
И в ходе работы мы заметили, что интеграция каждого нового клиента сильно затягивается, а количество различных ошибок постоянно возрастает. Тогда стало понятно, что пора с этим разобраться. Как показал анализ ситуации, IT отдел каждого нашего клиента разрабатывал свое решение для локального сбора данных с устройств и отправки к нам в сервис. Все усложняет то, что с учетом специфики отрасли, не всегда есть доступ к интернету и необходимо хранить данные локально и отправлять при первой возможности. И таких нюансов достаточно большое количество, что и приводит к росту количества ошибок.
И тогда мы поняли, что лучшим решением в данной ситуации будет разработать SDK и предоставлять его клиенту. Сразу же начал искать лучшие практики и рассуждения на тему разработки SDK и сильно удивился — в рунете об этом практически ничего нет, а в басурманских интернетах очень мало информации и она разрознена. Ну что ж, задача понятна, обдумана и реализована.
Пора определяться
Начнем с того, что определим, что такое SDK и зачем он может быть нужен.
SDK (от англ. software development kit) — комплект средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ. SDK использует преимущества каждой платформы и сокращает время на интеграцию.
…
Инженер-программист обычно получает SDK от разработчика целевой системы.
Что ж, логично. Простыми словами, SDK — это пакет библиотек, для того, чтобы клиент мог легко и быстро начать работать с вашей системой (в данной статье речь пойдет про наш сервис, но всё изложенное в статье применимо и к другим видам SDK) или выполнять однотипные действия.
Но, как и у любого подхода, у "Пути SDK" есть как преимущества, так и недостатки.
Преимущества
Высокая скорость интеграции нового клиента — вашим клиентам нужно писать меньше кода.
Переиспользование кода — один и тот же код используется сразу в нескольких местах. Можно сказать, что это дублирование предыдущего пункта, но речь идет о том, что логика работы везде одинокава, из чего следует
Предсказуемость поведения — использование одних и тех же библиотек приводит поведение систем к определенному стандарту, что сильно облегчает поиск и устранение ошибок и уязвимостей.
Качество кода — много где любят экономить на тестировании (жалко бюджета, горят сроки и прочие причины). Понятно, что в реальном мире покрыть тестами все участки проекта это учень трудоемкая задача. Но качественно протестировать все модули SDK, а затем использовать их — это путь повышения процента покрытия тестами, что приведет вас к снижению количества ошибок.
Документация — тот же сценарий, что и с тестами. Покрыть документацией весь проект достаточно проблематично. Переиспользование модулей SDK повышает процент покрытия документацией, что снижает порог вхождения новых сотрудников в проект и вообще помогает по жизни.
Все преимущества, по сути, это следствия самого главного — мы очень качественно пишем код один раз, а затем его переиспользуем.
Недостатки
Высокие требования к качеству кода SDK — следствие главного преимущества. Ошибка в SDK породит ошибки во всех системах, его использующих.
Установка ограничений — SDK — это набор библиотек для реализации стандартных сценариев. Иногда разработчики SDK полагают, что кроме реализации одного из предусмотренных сценариев клиенту ничего не потребуется, что клиенту проще сделать все с нуля самостоятельно, чем строить пьедестал из костылей для SDK.
Dependency hell и обновления — при расширении функционала (например, кастомизации решения под конкретного клиента), вы выпустите новую версию библиотеки. Но существуют зависимости, различные наборы версий библиотек у разных клиентов, и нужно очень тщательно следить за обратной совместимостью или строгим версионированием.
Когда SDK действительно нужен
У вас есть несколько стандартных сценариев, которые реализуются заново из раза в раз — собственно, наш случай.
Когда SDK скорее всего будет лишним
Сценарии использования не определены или постоянно меняются — оставьте реализацию кастомных решений клиентам и помогите им. Не надо городить вундервафлю, которая будет только мешать. Очень актуально для молодых компаний и стартапов.
Вы не умеете делать качественно — у меня для вас плохая новость: пора учиться. Но отдавать кривое решение клиенту это очень, очень неправильно. Клиентов надо уважать, в конце концов.
Итак, мы определились, что такое SDK, с его преимуществами и недостатками и когда он нам нужен. Если после этого вы поняли, что SDK действительно нужен — приглашаю вас встать на "путь SDK" и разобраться, а каким он должен быть и как его, черт подери, делать?
"А вы любите Lego?" — Модульность
Представим все возможные сценарии использования SDK (вы же уже определились, зачем он вам нужен, правда?) и сделаем по библиотеке на сценарий. Чем не выход? Но это плохой подход, и так мы делать не будем. А будем так:
- разобьем все сценарии на шаги
- выявим общие шаги
- построим список модулей, реализующих все возможные шаги (один модуль отвечает за реализацию чего-то конкретного, например, работы с конфигурациями)
Например, с учетом специфики задачи, нам необходимо, чтобы вся логика задавалась из конфигов. Реализуем модуль работы с конфигами (чтения, записи, обновления, валидации и обработки конфигураций) и будем использовать его во всех остальных модулях.
А для реализации стандартных сценариев мы действительно сделаем модули — этакие "управляющие" модули, каждый из которых реализуют один конкретный сценарий, используя другие модули того же SDK. Таким образом для реализации стандартных сценариев клиент должен лишь подключить управляющий модуль сценария (а он сам подтянет все зависимости), а для реализации нестандартных — используем базовые модули, так же переиспользуя код.
Именно этим обусловлено то, что SDK не должен быть одной библиотекой (хотя очень хочется, понимаю. Ведь когда весь SDK в одной библиотеке, можно забыть о зависимостях и всем, что с ними связано), а быть комплектом библиотек. Дополнительным плюсом данного подхода будет уменьшение "веса" программы клиента — он будет тянуть тяжеловесный SDK, а подтянет только необходимые модули.
Но не стоить плодить модули как попало, ведь чем больше модулей, тем больше головной боли от их зависимостей! Т.е. важно правильно разбить логику на модули, соблюдая баланс между решением "все в одном" и "на каждую функцию свой модуль".
"А что, так можно было?!" — Универсальность
Предоставьте клиенту различные интерфейсы для работы с вашей библиотекой. Приведу пример:
Если предоставить только синхронную версию, то при реализации асинхронного приложения клиент вынужден будет делать асинхронные обертки вашего синхронного метода. Если предоставить только асинхронную версию — ситуация похожа. Дайте клиенту и то и другое и он скажет вам спасибо.
Приятным плюсом будут дженерики. Например, у нас есть класс для работы с конфигурациями, реализующий методы упаковки конфига в строку, загрузки конфига из файла и т.д. Конфигурация конкретного модуля будет наследоваться от нашего базового класса, но для работы с новым классом нам необходимо также предоставить методы распаковки.
Таким образом мы предоставили клиенту аж три реализации, которые он может использовать. Дженерики очень удобны, но при работе с динамическими типами их можно вызывать только через рефлексию, что накладно. Общий принцип универсальности, надеюсь, понятен.
"Родитель 1, Родитель 2, Дети[ ]" — Именование
И тем не менее… Правильное именование модулей, классов, свойств и методов сильно помогут тем, кто будут с вашим SDK работать. Пример, не требующих комментариев:
Kinect 2.0 SDK example
Всё ясно из названий классов и методов. А если есть автодополнение кода в вашей IDE, то зачастую можно и в документацию не заглядывать, если и так все понятно.
"Уверен, если бы Смерть знала, что такое бюрократия, люди бы никогда не умирали, вечно стоя в очереди. " — Документация
Но даже если у вас очень красиво и актуально названы все модули, классы, методы и свойства, документацию все равно необходимо написать. Во-первых, это очень сильно сбережет вам нервы (количество вопросов клиентов уменьшается на порядок. Все есть в документации), а во-вторых, всегда понятно, почему вы сделали так, а не иначе.
Документация, в SDK, как правило, проста и лаконична. Она обычно делится на две части: Tutorial — пошаговый курс в стиле “Построим город за 10 минут” и раздел Reference — справочник по всему, что можно сделать с помощью данного SDK.
Мы выбрали самый простой путь — summary + articles. Мы добавляем Xml атрибуты для методов и классов, которые светятся в intellisense как подсказки. Используя Docfx мы строим документацию по этим атрибутам и получаем подробную и удобную документацию, которую дополняет статьями, описывающими сценарии использования и примеры.
"— Чтобы чисто было! — Как я буду вилкой-то чистить?" — Тестирование
Что можно сказать про тестирование в рамках обсуждения SDK… Must have! Лучшим решением будет TDD (несмотря на то, что я негативно отношусь к данному подходу, в данном случае я решил использовать именно его). Да, долго. Да, нудно. Но зато в будущем вы не повеситесь от постоянных падений SDK на стороне и следствий этого падения.
Основной сок ситуации заключается в том, что отдавая SDK клиенту вы теряете контроль: вы не можете быстро пофиксить ошибку, сложно эту самую ошибку найти, да и выглядеть в такой ситуации вы будете достаточно глупо. Поэтому — тестируйте. Тестируйте лучше. И еще раз. И, на всякий случай, протестируйте ваши тесты. И тесты тестов. Так, что-то я увлекся, но важность тестирования SDK, надеюсь, понятна.
"Жертва, которая не могла противостоять своему прошлому, была поглощена им" — Логи
Поскольку вы отдаете SDK сторонней компании, в следствие чего теряете контроль над ситуацией, в случае ошибки (на этапе тестирования вы все-так решили "и так сойдёт", да?) вас ждет достаточно долгий и болезненный процесс поиск этой самой ошибки. Именно тут вам на помощь придут логи.
Логируйте все, абсолютно все, а в случае возникновения ошибки запросите у вашего клиента логи. Таким образом вы сэкономите много времени и сможете не потярять лицо перед клиентом.
"Alarm! Achtung! Attention!" — Ошибки
Долго размышляя на тему ошибок я пришел к интересному выводу — ни один метод в вашем SDK не должен отдавать ошибку, не описанную в документации. Согласитесь, очень неприятно, когда вы подключаете стороннюю библиотеку для работы с HttpRequest, а она вываливает на вас какой-нибудь NullPointerException и StackTrace, который уводит в недра библиотеки. И вам приходиться погружаться в эти самые "недра", пытаясь понять, насколько глубока кроличья нора, и в чем, собственно, проблема.
Поэтому я предлагаю следующее решение — декларируйте закрытый список возможных исключений и документируйте их. Но, т.к. нельзя быть увереннным, что вы предусмотрели все, оберните метод в try-catch, а пойманную ошибку — в задекларируему. Например, ConfigurationException, который будет содержать InnerException — пойманную ошибку. Это позволит стороннему разработчику поймать все возможные ошибки, но в случае чего быстро разобраться в чем дело.
Версии или "как не укусить себя за хвост"
Во избежание проблем в будущем крайне рекомендую использовать строгое версионирование. Выберете подходящую вам систему построения версий и используйте ее. Но если новая версия библиотеки не имеет обратной совместимости — это необходимо указать. Как это разруливать — думать вам. Но подумать об этом точно стоит.
"Паровозик, который смог" — Deploy
Необходимость актуальности документации и версий порождают требование к корректности деплоя. В своем решении мы используем следующее решение (костыли, но работают).
Когда надо выпустить нвый релиз, разработчик дергает bat'ник с указанием номера релиза, а затем батник:
- билдит релиз
- кладет все библиотеки в архив
- билдит свежую версию документации (docfx)
- указывает версию релиза в документации и в названии архива
- кладет всё самое свеженькое в гит-репозиторий
- WebApp на MS Azure подтягивает свежий коммит по гит хуку и публикует изменения
На выходе получаем обновленную версию сайта с документацией, откуда можно скачать архив с последней версией SDK.
В планах на будущее — упаковка всего в Nuget пакеты и публикация в локальный Nuget репозиторий.
Рекоммендую обратить внимание на этот пункт, ведь вы можете существенно снизить количество головной боли, вызванной отсутствием актуальной информации о новой версии библиотеки.
"-А так можешь? — Фигня. Смотри как надо!" — Примеры & toolkit
Важным пунктом документации являются примеры использования. Но помимо этого, зачастую требуется предоставить не библиотеку, а приложение, которое реализует самые стандартные сценарии. Рекомендую делать эти приложения с открытым и хорошо прокомментированным исходным кодом, что позволит убить двух зайцев разом — предоставить работающее приложение и предоставить пример использования SDK.
Заключение
Разработка SDK стало для меня интересной новой задачей, поднявшей много важных архитектурных вопросов. Многое описанное в статье является очевидными вещами (для меня), но считаю важным огласить даже очевидные вещи, чтобы получить четкую общую картину.
Спасибо за прочтение, буду рад вашим комментариям. Надеюсь, эта статья будет для вас полезной.
А почему интересует именно 8.3.11? Извините, что вопросом на вопрос.
> А почему интересует именно 8.3.11?
Меня тоже это интересует. В ней обещали починить баги клиента под Mac, приводящие к падению клиента. Пользователи Mac ждут 8.3.11 как второго пришествия.
У нас 2505 в продакшене стоит, люди работают, под виндой проблем с платформой нет. У 1с есть баг-трекер, если есть какая-то существенная проблема, я бы предложил провести диагностику и зарегистрировать ее там, вдруг, с этим столкнется кто-то еще.
Эти топорные графики не стыдно выставлять на Хабр? Тут ведь не инфостарт, народ знаком с JS и canvas :)
Хотя и на инфостарте есть пару графиков на JS, но они не имеют к СКД никакого отношения…
Поддержу. Система компоновки данных — очень мощный механизм и пара круговых диаграмм вообще не раскрывает тему сисек ни одной из прелестей.
А потом написать как «обрезать пользователю» все лишнее, чтобы он не испортил этот отчет настройками. Очень часть пользователю нужен надежный молоток, а с СКД получается некий мультитул. Одно неловкое движение и у пользователя вместо молотка открывается космическая горелка с голосовым управлением.
Точно, сначала дадут инструмент, а потом обижаются на то что пользователь его не умеет готовить и неправильно настраивает.
Петр, в добавок к показанному на мой взгляд стоило бы:
1. Проиллюстрировать примером использования СКД в кач-ве «движка» динамических списков
2. Рассказать про возможность программной работы с СКД и в частности с получением рез-тов ее исполнения в виде тех же таблиц значений. Это позволяет один раз реализовав какую-нибудь аццки сложную логику (пример — расчет среднесписочной численности сотрудников) иметь ее И в виде отчета И в виде данных на входе чего-нибудь еще.
1. Добавьте наконец в вычисляемые поля редактор!
2. 2 таблицы идущие подряд это кошмар, нельзя задать сквозную ширину колонок
3. если 3 строки в ячейке, то и в итоге 3 строчки
4. разбитие по страницам в СКД НЕТ
и еще 1000 «тут должен быть мат» мелочей
такое впечатление что после определенного шага развития решили оставить как есть.
Вычислитьвыражение это вообще попытка решить вопрос с помощью большого костыля врожденные проблемы.
Кстати, не разу не потребовалось за много лет сделать диаграмму.
Да редактировать к примеру такое в вычисляемых полях
это просто жесть, реально нужен редактор
В Enterprise Development Tools будет редактор для вычисляемых полей. Точнее, уже есть, просто Enterprise Development Tools пока в статусе Beta.
От этого, к сожалению, не легче. Когда выйдет EDT неизвестно, а мучиться продолжать мы будем еще долго. Плохо то что конфигуратор не хотите поддерживать.
Функциональность конфигуратора будет поддерживаться. Другое дело, что какие-то нововведения (не принципиальные — вроде поля редактора в вычисляемых полях) могут быть реализованы в EDT и не быть реализованы в Конфигураторе.
И это правильно. Конечно не от jetBrains, но хоть нормальная IDE будет. И надо всех силой на нее пересаживать. Иначе некоторые работодатели не будут переход поддерживать.
>нормальная IDE будет
Конфигуратор вполне годная IDE
>надо всех силой на нее пересаживать.
Люди при наличии выбора сами выберут более подходящее им. И не надо силой никого и никуда
Да ладно, будь еще возможность без проблем плагины писать под него, более умную контекстную подсказку, и прочие плюшки нормальных IDE — можно было бы поспорить. А так… Есть подозрения что умельцы даже в vim или emacs больше возможностей добавить смогут…
Я попробовал EDT, старый добрый конфигуратор удобнее. Может, и привыкну потом. А по теме — основы рассказали. Описывать всё не нужно, концепции вполне достаточно.
Она более удобна если не брать во внимание привычку, более умная, имеет возможность написания плагинов, и в целом имеет больше возможностей по умолчанию, которых в конфигураторе не будет принципиально насколько я понимаю (та же работа с гитом например и т.п.)
Мне, наоборот, с EDT обратно на Конфигуратор пересаживаться не хотелось. А что не понравилось в EDT? Не считая того, что еще не реализовано в бета-версии.
EDT на уровне интерфейса подтормаживает в сравнении с Конфигуратором. Доли секунды, но заметны. Не знаю, то ли дело в нативности Конфигуратора, по сравнению с джавовским EDT, то ли в меньшей его навороченности.
И чисто эстетически Конфигуратор кажется более… элегантным, что ли
ЗЫЖ я понимаю что за EDT будушее и ряд его фишек стоят того, чтобы на него переходить
Релиз — заменит. В принципе на бете у меня получалось полноценно работать. Но: на EDT можно разрабатывать только управляемые приложения.
Про управляемые понятно. Когда я крайний раз смотрел EDT там не было плана счетов, бухгалтерских и расчетных регистров, уже есть?
В бета-версии — насколько помню, еще не было. Ну у меня область работы специфическая.
В релизе, кончено, все перечисленное будет.
ВСЁ существующее продолжает поддерживаться в Конфигураторе.
Большинство типовых решений от 1С (ERP, УТ, КА, БП, . ) — написаны как управляемые приложения. Для новых разработок и рекомендуется DT.
Кто-то еще использует технологию 15-ти летней давности?
да и к тому же эти технологии исправно и стабильно до сих пор работают, как говорится «работает, не трогай»
В условиях быстроразвивающегося бизнеса и постоянных изменений бизнес-процессов "работает не трогай" звучит как "давайте не будем зарабатывать деньги".
Эта технология устарела, более не развивается. Ее сложно адаптировать под новые задачи. И еще сложнее поддерживать. Конечно, если подразуиевается, что система не висит мертвым грузом.
Сейчас если компания не развивает ай-ти — то ей не на что надеяться.
Частично проблема решается runtime средствами разработки, где есть достаточно удобные редакторы выражений. Тем более обычно сначала схема отлаживается в режиме предприятия и только потом помещается в конфигурацию.
только если нет требываний по оформлению отчета. Просто требования могут сделать формирование отчета в режиме предприятия бессмысленной тратой времени.
СКД очень мощный инструмент. С его помощью можно сделать много вещей, без кодирования. Но … бывает очень сложно сделать то, что нужно.
Это ИМХО за многие годы работы с ней.
Да вот же erwins22 написал.
А у самого, из недавнего …
Нужен отчет с диаграммами «в строку»: первая справа, вторая слева. Строк много. Для некоторых необходимо рядом размещать таблицу данных, но с расширенным и переменным описанием объектом анализа.
Всё это необходимо сохранить в ECXEL с сохранением редактирования.
В итоге 800 строк интерфейсной логики, и 4200 — расчетной/оформительской. Предупреждаю — код не Ctrl+C, Ctrl+V, а хорошо декомпозирован.
Бывает и так …
Необходимо разработать сложный отчет с двумя десятками показателей и пятком объектов анализа. Рассчитать все это в СДК можно, но управлять потом невозможно. Это выльется в десяток наборов данных, с простынями «ВЫБРАТЬ», и бойницами параметров (о них писал shumkiiv). И попробуй ошибись с объединением наборов!
Или вот ещё …
Расшифровка и макеты. Специально ездил за книгой Хрусталёвой чтобы разобраться вот с этим …
Ну, не заходит оно.
Далее …
Программное управление параметрами отчета, его структурой: скрыть добавить группировку, убрать параметры при отсутствии какой-то группировки … и подобное. Всё это требует наличия какой-то библиотеки, и её использование ПриКомпоновкеРезультата.
Управление структурой отчета – всегда боль. И всячески нужно скрывать возможность порчи настроек пользователем. Об этом тоже писали.
Говорю об этом в противовес мнению «СДК – это супер отчеты без программирования».
Опять, же ИМХО, но СДК плохой механизм.
Войдите как ученик, чтобы получить доступ к материалам школы
Система компоновки данных 1С 8.3 для начинающих: первый отчёт на СКД
Автор уроков и преподаватель школы: Владимир Милькин
Если вы не читали введение к этому модулю - пожалуйста, прочтите его: ссылка.
Готовим рабочее место
Для выполнения уроков вам понадобится 1С 8.3 (не ниже 8.3.13.1644) .
Если у вас уже есть установленная 1С версии 8.3 - используйте её. Если нет - скачайте и установите учебную версию, которую фирма 1С выпускает специально для образовательных целей: ссылка на инструкцию по скачиванию и установке 1С.
На вашем рабочем столе должен появиться вот такой ярлык:
Для всех уроков из этого цикла мы будем использовать подготовленную мной базу данных "Гастроном". Она полностью совпадает с базой, которую мы использовали в четвёртом и пятом модулях школы при изучении запросов. Поэтому я рассчитываю, что вы знакомы с её справочниками и документами.
Если вы её удалили - скачайте заново по следующей ссылке, распакуйте и подключите в список баз.
Наконец, рабочее место настроено и сейчас мы вместе создадим наш первый отчёт при помощи системы компоновки данных. Он будет очень простым, чтобы продемонстрировать общие возможности системы компоновки данных (сокращенно СКД).
Ставим цель
Цель этого урока - создать отчёт, который в режиме пользователя выводит список клиентов со следующими полями:
- Имя
- Пол
- Любимый цвет клиента.
Отчёт должен быть внешним. Это значит, что он будет создан и настроен в конфигураторе, а затем сохранен в виде отдельного (внешнего) файла на компьютере.
Чтобы сформировать такой отчет в 1С пользователю нужно будет запустить базу в режиме пользователя, открыть этот файл и нажать кнопку "Сформировать".
Создаём отчёт
Запускаем конфигуратор для базы "Гастроном":
Из главного меню выбираем пункт "Файл"->"Новый. ":
Выбираем "Внешний отчет":
Создаём схему компоновки данных внутри отчёта
Открылось окно создания внешнего отчёта. В качестве имени вводим: "Урок1", а затем жмём кнопку "Открыть схему компоновки данных":
Запустился конструктор создания схемы. Соглашаемся с именем по умолчанию "ОсновнаяСхемаКомпоновкиДанных" и жмём кнопку "Готово":
Открылось основное рабочее окно, с множеством закладок и полей, в котором мы и будем настраивать нашу схему компоновки данных.
Не нужно пугаться - возможностей здесь действительно много, но далеко не все из них нам нужны. Особенно на первом уроке.
Сейчас мы находимся на закладке "Наборы данных". На ней и останемся.
Пишем запрос через конструктор
Система компоновки данных (сокращенно СКД) требует от нас данные, которые она будет выводить пользователю.
Самый простой способ - написать запрос к базе. В предыдущих модулях школы мы научились писать и понимать запросы - поэтому я рассчитываю, что вы обладаете соответствующими навыками.
Нажимаем на зелёный плюсик и в раскрывшемся списке выбираем пункт "Добавить набор данных - запрос":
Добавился набор данных с именем "НаборДанных1", но мы видим, что поле "Запрос" в нижней части окна пока пустое:
Наша задача написать в это поле текст запроса. Вы ещё не забыли как это делается?
В этом запросе мы выбрали три поля ("Наименование", "Пол" и "ЛюбимыйЦвет") из таблицы "Справочник.Клиенты".
Но не торопитесь писать этот текст в поле "Запрос" вручную.
Сейчас мы создадим тот же самый запрос визуально, только при помощи мышки. Этот способ называется "Конструктор запроса".
Чтобы вызвать этот конструктор нажмём кнопку "Конструктор запроса. " в верхней правой части поля "Запрос":
В открывшемся окне перетащим таблицу "Клиенты" из первого столбца во второй, чтобы указать, что именно из этой таблицы мы будем запрашивать данные:
Получилось вот так:
Далее раскроем таблицу "Клиенты" во втором столбце по знаку "Плюс", чтобы увидеть все её поля и перетащим поле "Наименование" из второго столбца в третий, чтобы указать, что из этой таблицы нам нужно запрашивать поле "Наименование":
Получилось вот так:
Поступим точно так же с полями "Пол" и "ЛюбимыйЦвет". Результат будет таким:
Нажмём кнопку "ОК", чтобы выйти из конструктора запроса и увидим, что текст запроса автоматически добавился в поле "Запрос".
Более того на основании текста запроса 1С сама вытащила имена полей (область выше запроса), которые будут использоваться схемой компоновки данных:
Теперь, когда мы составили запрос, СКД знает каким образом получать данные для отчёта.
Настраиваем представление данных
Осталось как-то визуализировать эти данные для пользователя в виде печатной формы. И вот тут СКД может творить чудеса!
Чтобы сотворить такое чудо перейдём на вкладку "Настройки" и нажмём кнопку конструктора настроек (волшебная палочка):
В открывшемся окне укажем тип отчёта "Список" и нажмём "Далее":
В следующем окне выберем (путём перетаскивания) поля, которые нужно будет отобразить в списке (перетащим все из доступных нам: "ЛюбимыйЦвет", "Наименование" и "Пол"):
Получим вот такой результат и нажмём кнопку "ОК":
Конструктор настроек закрылся и появился пункт "Детальные записи":
Отчёт готов, давайте же его проверим. Для этого вначале сохраним отчет в виде внешнего файла.
Сохраняем отчёт в виде файла
Откроем пункт главного меню "Файл"->"Сохранить":
Я сохраню его на рабочий стол под именем "Урок1":
Проверяем отчёт в режиме пользователя
Наконец, закроем конфигуратор и зайдём в нашу базу в режиме пользователя:
Имя пользователя "Администратор", пароля нет:
Через меню выберем пункт "Файл"->"Открыть. ":
И укажем файл отчёта (я сохранял его на рабочий стол под именем "Урок1.erf":
Открылась форма отчёта, нажмём кнопку "Сформировать":
Готово! Вот она наша печатная форма со списком клиентов, их любимым цветом и полом:
Печатную форму можно легко распечатать. Для этого достаточно выбрать в меню пункт "Файл"->"Печать. ":
Вот так просто, без программирования нам удалось создать полноценный отчёт, который пользователи смогут открывать в своих базах, формировать и распечатывать.
То ли ещё будет, наберитесь терпения
Войдите на сайт как ученик
Для учеников
Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.
На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .
SDK и API – это инструменты, которые позволяют интегрировать ИТ-продукты с внешними системами. В этой статье мы расскажем, чем отличаются эти два понятия и как разработчики применяют их для своих задач.
Начнём с определений.
API (application programming interface, программный интерфейс приложения) – это набор протоколов и инструментов, которые обеспечивают обмен данными между разными компонентами информационных систем.
SDK (software development kit, средства для разработки ПО) решает более масштабную задачу: не просто обеспечить обмен данными между приложением и сторонней инфраструктурой, а реализовать полноценный процесс. Он может включать в себя рабочие компоненты для получения пользовательских данных, их безопасной обработки и хранения, изменения состояний.
В SDK могут входить несколько API, куски вспомогательного кода, обширная документация. Это не просто интерфейс для работы с системой, а готовый набор инструментов для реализации некой бизнес-логики.
Компании создают SDK, чтобы сторонние разработчики могли не погружаться в код, а решать свои задачи через абстракцию – вот этот блок обеспечивает работу личного кабинета, этот позволяет открыть камеру смартфона, и т.д. Безопасность данных, отказоустойчивость вызовов отдельных сервисов реализуются именно через SDK.
Попросту говоря, если API – это рецепт блюда, то SDK – это рецепт, нарезанные продукты, чётко отмеренные специи и набор всех кастрюль-сковородок, которые вам понадобятся в готовке.
В любом нашем продукте используются API заказчиков, чтобы получать данные из клиентской инфраструктуры.
В страховых приложениях мы таким образом подключаемся к бэкенду, чтобы загружать списки полисов, отправлять данные о страховых случаях. В системах учёта продаж и приложениях для кассиров API отвечают за сохранение в бэкенде данных по авиабилетам и выгрузку информации для отчётов.
Это прикладные задачи «местного значения», которые не включают в себя сложную бизнес-логику. Поэтому они решаются посредством API.
Пример, когда возникла необходимость в SDK – это проект по созданию единого модуля для оформления ДТП для страховых приложений. Этот сложный сценарий объединяет авторизацию через ЕСИА, регистрацию происшествия с оформлением европротокола, обмен данными с СТ-ГЛОНАСС АИС ОСАГО, ГИБДД и другими компетентными органами.
Используя SDK, мы можем заключить всю сложную логику в готовый к использованию набор, который затем можно встраивать в любые приложения. Такой модуль включает в себя API для работы с ЕСИА и системами Российского союза автостраховщиков, средства защиты и проверки данных, компоненты для работы с камерой.
В результате у всех страховых компаний, которые будут использовать этот SDK, сценарий оформления происшествий в приложениях будет отвечать единым стандартам. При этом тратить собственные ресурсы на разработку такого сценария им не придётся.
Читайте также:
- Прошивка usb flash toshiba
- Как добавить страницы в ворде после титульного листа на телефоне
- Драйвер не был загружен так как произошел сбой при его инициализации faceit
- Переустановить яндекс браузер бесплатно на компьютер автоматически
- Два друга по разному ищут ошибки в программах кирилл написав программу сразу запускает ее