Введение в CI для 1С

Публикация № 703384

Разработка - Математика и алгоритмы

CI Continuous Integration Тестирование Автоматизация

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

Предисловие

В последнее время в среде разработчиков всё чаще стали встречаться термины TDD (Test Driven Development), BDD (Behavior Driven Development), CI (Continuous Integration), git и всё это в контексте тестирования 1С-конфигураций. Мало кто из разработчиков 1С представляет, а тем более, понимает, что это такое, зачем это нужно, как это использовать и как с этим жить. Особую актуальность эти технологии приобрели с выходом нового инструмента от 1С: EDT (Enterprise Development Tools), в котором 1С решила отказаться от использования хранилища конфигурации в пользу git.

С момента, когда я узнал о существовании альтернативных способов разработки 1С-конфигураций, тестирования и хранения кода, передо мной начала возникать масса вопросов, наверное, главными из которых были "почему?" и "как?". Например:

  • Почему нужно использовать другую систему хранения кода?
  • Почему выбран именно git в качестве системы хранения кода?
  • Как git и CI помогут тестировать решение?
  • Как организовать процесс разработки так, чтобы можно было применять данные технологии на практике?
  • и т. д.

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

В данной статье я опишу, откуда возникла потребность в CI и как можно осуществлять тестирование конфигураций 1С имеющимися средствами. Здесь я намеренно не буду описывать существующие инструменты проведения тестирования конфигураций, цель данной статьи: дать общее представление о механизмах, используемых в CI.

Благодарности

Хочу выразить благодарность участникам gitter-каналов oscript-library, vanessa-behavior, vanessa-runner, а также Андрееву Михаилу.

Отдельную благодарность выражаю Евгению Сосне за неоценимую помощь в практическом освоении инструментов CI.

Проблема

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

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

Решение

Самое простое, что можно придумать, это разработать ряд специализированных обработок, предназначенных для тестирования тех или иных частей продукта. Обязать каждого разработчика запускать эти обработки при написании кода и выполнять их на конфигурации, подготовленной для обновления, перед самим обновлением.

Это, в принципе, годное решение, но несёт в себе ряд недостатков:

  1. Разработчики со временем забывают, что делают тестирующие обработки, а сами тестирующие обработки со временем устаревают. В итоге тестирование проводится неполно или некорректно.
  2. Запуск обработок требует отдельных усилий разработчика, непосредственно не связанных с созданием ПО, что сами разработчики встречают без особого энтузиазма. В итоге, без надлежащего контроля этот процесс имеет немалые шансы отмереть. Тестирование будет проводиться, в лучшем случае, перед обновлением и выявлять проблемы достаточно поздно, когда разработчик уже успешно забудет контекст задачи "поломавшей" продукт, если такую задачу вообще можно будет выявить.

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

Давайте пока остановимся и попытаемся сформулировать основные требования к процессу тестирования:

  1. Тестирование должно производиться только тогда, когда разработчик произвёл логически законченные изменения кода, а не в произвольный момент, когда разработчику очевидно, что код в его текущем состоянии и так провалит тесты.
  2. Тестирование должно производиться автоматически, без участия разработчика, возможно даже в нерабочее время. Причём разработчику совершенно необязательно следить за результатами тестов, ему достаточно получать уведомления только при наличии не прошедших (упавших) тестов, причём, желательно, вызванных только его изменениями.
  3. Должна быть возможность проводить тестирование под управлением разных ОС и разных версий платформы 1С:Предприятие.

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

Определение момента осуществления тестирования

Так как мы говорим о современной разработке средствами 1С, то предполагаем, что в процессе разработки используется хранилище конфигурации. Моментом начала тестирования может служить факт помещения кода в хранилище, других событий готовности кода к тестированию у платформы нет. Альтернативой может выступать только ручное "указание" разработчика на необходимость начала тестирования, но мы для себя определили, что процесс тестирования должен стартовать без его участия.

Отсюда следует, что для того, чтобы тестирование выявляло ошибки как можно раньше, разработчику необходимо как можно чаще помещать изменения в хранилище. Наверное? лишним будет напоминать, что помещаемый в хранилище код должен быть законченным и рабочим, по крайней мере по мнению самого разработчика, ведь результатом тут же могут воспользоваться его коллеги.

Порядок проведения тестирования

Теперь надо определиться с алгоритмом тестирования. На данный момент мы имеем:

  • Конфигурацию в хранилище;
  • Обработки, тестирующие нашу конфигурацию.

Первое, что нам нужно для тестирования, это сама конфигурация. Т. к. тестирование производится вне контекста разработчика, то, в общем случае, доступа к конфигурации разработчика нет, есть, как было сказано ранее, только хранилище конфигурации. Нужно каким-то образом достать из хранилища конфигурацию. Это можно сделать, например, запуская конфигуратор, используя ключ ConfigurationRepositoryDumpCfg.

Затем нужно получить тестовую базу, которую будем тестировать. Это, опять же, можно сделать при помощи запуска конфигуратора с ключом LoadCfg, которой в качестве параметра указать только что полученный файл конфигурации.

Также можно просто создать базу данных, подключенную к хранилищу и проводить тестирование на ней.

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

Наконец, можно запускать тесты. Запуск тестов можно выполнять также штатным способом, используя запуск 1С:Предприятия с ключом Execute.

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

Запуск тестирования

Далее нужно понять, как автоматически стартовать сам процесс тестирования.

Самый простой и очевидный способ: попробовать создать сценарий (bat/sh) и запускать его по расписанию. Для этого можно использовать cron, планировщик задач windows или какое-либо другое средство запуска задач по расписанию. Этот способ имеет ряд недостатков в виде недостаточной визуализации результатов работы запускаемых скриптов, сложности администрирования и обеспечения работы и взаимодействия скриптов на разных компьютерах сети.

Для преодоления этих недостатков можно разработать набор инструментов, которые позволят легко управлять задачами на разных компьютерах и отображать результат их работы, но, на самом деле, такие инструменты уже есть и достаточно популярны. Вообще, описываемая технология тестирования называется CI (Continuous Integration -- Непрерывная Интеграция) и используется практически везде, при разработке программного обеспечения и то, что эта технология не используется при разработке решений на платформе 1С:Предприятие, скорее недоработка, чем особенность. Идея CI заключается в том, что сборка разрабатываемого продукта (компиляция, тестирование, публикация) осуществляется одновременно с разработкой. После очередного помещения изменений в хранилище кода продукта автоматически запускается сборка. За все операции ответственен сервер CI, осуществляющий мониторинг событий, выполнение скриптов, публикацию результатов сборок, рассылку уведомлений и прочие необходимые действия. Помимо этого, скрипты могут выполняться не на самом сервере CI, а на любом компьютере сети, что позволяет распараллелить процесс сборки продукта.

Также серверы CI позволяют разграничивать доступ к настройкам сборки различных продуктов, имеют собственные языки описания сценариев выполнения задач, богатые средства вывода отчётов о сборках и массу других полезных вещей. Другими словами, развернув сервер CI, вы избавите себя от реализации множества насколько полезных, настолько трудоёмких возможностей.

Существует большое количество серверов CI, например здесь можно посмотреть сравнительную таблицу серверов CI. Но от себя хочу сказать, что, наверное, наиболее распространённым является jenkins в силу богатства возможностей за счет наличия огромного количество плагинов, и, что самое главное, его бесплатности.

Jenkins

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

По сути jenkins представляет собой достаточно продвинутый шедуллер запуска задач на любых доступных компьютерах. Возможность управления задачами на разных компьютерах сети в jenkins реализовано при помощи следующей архитектуры: В сети выделяется компьютер, на который устанавливается управляющий сервер jenkins. Этот компьютер называется главным, или мастер-узлом (master-node), всё управление jenkins'ом осуществляется при помощи web-интерфейса, предоставляемого этим сервером. Далее, на любой компьютер сети может быть установлена отдельная служба jenkins, который сделает этот компьютер дочерним узлом (slave-node). Эта служба необходима для того, чтобы jenkins мог выполнять код на этом компьютере.

В общем случае, задача, созданная на jenkins'е не привязана к какому-либо конкретному узлу и может быть выполнена на любом доступном узле. При помощи меток узлов в задаче можно сократить количество доступных для выполнения задачи узлов. Мало того, возможно выполнение разных частей одной задачи на разных узлах.

Результатом выполнения задачи может быть просто статус её выполнения, а может быть ещё и определённый набор файлов, называемый артефактом сборки. Эти артефакты могут быть использованы в других задачах или выкладываться в общий доступ, в зависимости от назначения. В любом случае, логикой выполнения задачи управляет разработчик и он же определяет, что будет являться результатом выполнения задачи.

Сборка

Итак, располагая имеющейся информацией, уже можно осуществить сборку и тестирование продукта по определённому ранее алгоритму:

  1. На компьютере, где развернута платформа 1С:Предприятие нужно развернуть дочерний узел jenkins, задать ему метку, обозначающую наличие на узле платформы 1С определённой версии.
  2. Создать задачу, в которой указать, что она должна выполняться на узле с необходимой версией платформы. В задаче выполнить запуск конфигуратора с операциями:
    • создания пустой базы данных;
    • сохранения конфигурации из хранилища в файл;
    • запуск обработки, производящей первичное заполнение базы данными;
    • запуск обработки, производящей тестирование конфигурации;
    • анализа результатов тестирования и установки статуса сборки;
    • при желании здесь же можно осуществлять формирование комплектов поставки, развертывание релиза на рабочей базе и другие необходимые действия.

Задание меток у узлов и их указание в задачах необходимо по причине того, что задача может быть выполнена на любом узле jenkins, в том числе и том, где платформа 1С не установлена.

Каталог с хранилищем конфигурации должен быть доступен по сети или хранилище должно предоставляться сервером хранилища конфигурации. Запуск задания можно осуществлять по факту изменения файла базы хранилища конфигурации.

Обработки, выполняющие заполнение базы данными и тестирование можно выложить на общедоступный ресурс сети и брать их оттуда. Анализ результатов можно проводить любым доступным вам способом. Главное помнить, что "правильного" решения не существует, каждый случай уникальный, а архитектура решения для каждого случая разрабатывается своя.

На этом, пожалуй, можно и остановиться, мы, почти в режиме реального времени, видим состояние нашего продукта и можем принимать решение по дальнейшим действиям, например подготовке комплекта поставки для последующего развёртывания. Это, на данный момент, не главное, главное то, что мы получаем чуть больше уверенности, в том, что продукт находится в рабочем состоянии и обновление рабочих баз не повлечёт за собой незапланированных простоев или потери данных.

Итоги

Описанный здесь процесс сборки и тестирования продукта можно использовать на практике и сейчас, однако есть уже готовые средства, которые существенно облегчают техническую реализацию этого процесса. В любом случае, дальнейшее описание процесса CI, будет основываться на описанных здесь базовых принципах. В следующих статьях я опишу используемые инструменты для тестирования продуктов на базе 1С:Предприятие, расскажу про использование git в процессе разработки и остановлюсь чуть подробнее на автоматизации процесса посредством jenkins.

Ссылки

Первая часть: Введение в CI для 1С

Вторая часть: Использование git при разработке на 1С

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TODD22 18 22.11.17 11:02 Сейчас в теме
"Сквозной пример" был бы интересен.

с выходом нового инструмента от 1С: EDT (Enterprise Development Tools)

А что уже можно использовать в ежедневной работе? Сам только бетку какого то старого релиза смотрел. Но где то читал что для повседневной работы пока мало пригодно из за каких то не доработок. Например у меня типовая конфигурация ERP могу уже в EDT с ней работать или ещё проблемы есть?
2. real_MaxA 225 22.11.17 11:12 Сейчас в теме
"Сквозной пример" был бы интересен.


Какой-то пример планируется в следующих частях.

А что уже можно использовать в ежедневной работе? Сам только бетку какого то старого релиза смотрел. Но где то читал что для повседневной работы пока мало пригодно из за каких то не доработок. Например у меня типовая конфигурация ERP могу уже в EDT с ней работать или ещё проблемы есть?


По мне так, EDT использовать нельзя будет ещё года полтора, в лучшем случае, если это вообще будет возможно. Поэтому старая технология с хранилищем ещё долго будет актуальной. Да и не сможет EDT совсем вытеснить конфигуратор, как, например, до сих пор можно встретить живую 7.7, несмотря на выход всей линейки 8-ки.
3. TODD22 18 22.11.17 11:45 Сейчас в теме
(2)Вот про EDT я это и слышал. Что работать на ней пока нельзя.
4. real_MaxA 225 22.11.17 12:17 Сейчас в теме
(3)Так это "пока" рано или поздно, я надеюсь, закончится.
5. Infactum 291 22.11.17 12:29 Сейчас в теме
Что ни статьи про CI на IS - либо вода, либо hello world.
Как насчет серьезного примера?
Пара docker контейнеров (jenkins master + linux slave для тестов под linux) + нода для windows тестов.
jenkins file для демонстрации git pull + build + BDD + TDD + deploy master при успехе?
Отчеты в формате allure показать.
В общем все то, о чем уже неоднократно писали и рассказывали на IS Event.
Если вдруг такой bootstrap уже есть, то поделитесь ссылкой на github.
kote; ABudnikov; +2 Ответить
6. real_MaxA 225 22.11.17 12:36 Сейчас в теме
(5)Пока я не планирую серьёзных примеров.
Я сейчас пытаюсь провести ликбез для людей совсем не знакомых с CI.
7. nicxxx 239 22.11.17 12:42 Сейчас в теме
(5)
Как насчет серьезного примера?

Серьезный пример здесь за 12900 руб. продают
Evil Beaver; +1 Ответить
8. Infactum 291 22.11.17 12:57 Сейчас в теме
(7)
Если вы про это и это, то они несколько дороже. Вот только не надо путать примеры и полноценное обучение.
Просто регулярной вижу, что ИС пытаются продвигать как сообщество профессионалов, но статьи почему-то дальше уровня "Для тех кто ничего не знает про СКД/Запросы/CI/<подставь своё>" в подавляющем большинстве случае не уходят.
Мне эта информация не нужна, просто автору предложил для будущих статей.
Evil Beaver; +1 Ответить
10. real_MaxA 225 22.11.17 13:03 Сейчас в теме
(8) Я бы и сам не отказался от серьёзного примера :)
Как я сказал в статье, я это описываю для тех, кто вообще ничего не знает про CI и смежные технологии. Все вокруг только и делают, что о них говорят и при этом предполагают, что окружающие понимают, о чём идёт речь, а это далеко не так.
Здесь я хочу закрыть этот разрыв. Пусть специалисты говорят то, что говорят, а неспециалисты, теперь, будут их хотя бы понимать.
Evil Beaver; +1 Ответить
11. Evil Beaver 6880 22.11.17 13:30 Сейчас в теме
(10) На самом деле, количество всегда перерастает в качество. Чем меньше в 1С-мире людей для которых слова "git pull + build + BDD + TDD + deploy master при успехе" звучат, как заклинание призыва сотоны, тем скорее появятся статьи для уровня выше.
Kosstikk; pbabincev; brr; Berckk; Vladimir Litvinenko; farraf; +6 Ответить
12. KAV2 31.01.18 07:22 Сейчас в теме
(5) Ну благодаря этой статье я по крайней мере понял чем Jenkins функциональнее встроенного в Windows планировщика задач, а то ведь не понятно, зачем Jenkins когда уже все есть из коробки.
9. nicxxx 239 22.11.17 13:02 Сейчас в теме
Убрали вариант "за 12900 с поддержкой от SilverBulleters", я проходил именно такой.
13. HAMMER_59 212 01.02.18 06:30 Сейчас в теме
Занятная статья про тестирование:
1. Создайте обработку заполнения чистой базы.
2. Создайте обработки для тестирования базы.

Это ведь мелочи создать обработки для тестирования, это каждый может, и каждому понятно, где они эти границы тестирования.

3. Ну а самое сложное - запуск тестирования, и тут вам поможет jenkins.
Вот именно с реализацией 3 пункта, прямо такие сложности, вот именно в нем у всех проблемы.
14. ImHunter 204 01.02.18 07:25 Сейчас в теме
(13) Собственно, а какие проблемы с п.3?
Я тут не голословен. Недавно поднял линию сборки для измененной конфигурации.
Тестирование пока не прикрутил - еще нет тестовых обработок.
16. KAV2 02.02.18 12:29 Сейчас в теме
(14) Очевидно это сарказм автора сообщения, хотели сказать что как раз запуск тестирования это довольно простая задача в сравнении с созданием тестовых обработок. Я как раз поэтому и полагаю что CI лучше делать на самом 1С где можно тестовые обработки прикручивать естесственным и простым образом.
17. ImHunter 204 02.02.18 14:44 Сейчас в теме
(16) Да хз. Красиво подготовить Jenkins под 1С - тоже еще та задача. К примеру, пришлось дописать Деплойку, написать на groovy библиотеки общего и специализированного пользования. Потом как-нить выложу.
По сравнению с этим, мне намного проще было дальше конфой заниматься, но только в идеологии TDD. И рождать при этом тестовые обработки для xddTestRunner. Тут тоже опыт есть какой-никакой.
15. real_MaxA 225 01.02.18 10:23 Сейчас в теме
(13) Статья не про "Как?", а про "Зачем?" и "Что это такое?".
18. headMade 143 09.02.18 17:46 Сейчас в теме
подскажите может есть какая-либо инструкция по установке и настройке jenkinsа и allur .
Где и что скачать.
Как настроить?
19. real_MaxA 225 12.02.18 13:35 Сейчас в теме
(18) Я прошу прощения за резкость, но http://lmgtfy.com/?q=%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0+jen­kins

С инструкциями по аллюру сложнее, т. к. его установка совсем простая. В настройках jenkins (Global Tool Configuration), в самом низу, подключается нужная версия аллюра.

Чтобы аллюр "сработал" при сборке, нужно, чтобы при сборке сформировался файл специального формата с результатами тестов (xUnitFor1C это умеет), а в сценарии сборки добавить генерацию отчёта allure по данным файла с результатами тестов.

Всё это вполне можно найти на просторах Сети.
headMade; artbear; +2 Ответить
20. real_MaxA 225 12.02.18 13:44 Сейчас в теме
(19) Вот по аллюру документация (прямо в их гнезде): https://docs.qameta.io/allure/#_jenkins
21. ImHunter 204 13.02.18 16:15 Сейчас в теме
Небольшой анонс.
Пишу и попутно внедряю библиотеки для Jenkins. К примеру, написана обертка для Деплойки.
Позволяет писать скрипт в подобном стиле:
    stage("Init deployka"){
        
        dep = initDeployka(PATH_TO_DEPLOYKA, PATH_TO_SERVICE_EPF)
            .setDb('server1c:4041', 'buh_db', 'Администратор', 'пароль')
            .setRAS('ras server', 'ras utility')
            .setRepo('repo path', 'repo-us', 'repo-pwd')
    }
    
    stage('Update'){
         dep.killSessions(true, dep.newSessionFilter().addAppClient().addAppDesigner())
         dep.updateConfigFromRepo()
         dep.launchUserInterface()
    }
Показать

Пока выкладываю сырые доки. Потом (через 2-3-4 нед) куда-нить на Гит выложу. Ну и может небольшую статью.
Прикрепленные файлы:
DeploykaHelper.zip
artbear; Evil Beaver; +2 Ответить
22. Silverbulleters 13.02.18 17:19 Сейчас в теме
23. user1123127 04.01.19 12:37 Сейчас в теме
Я уже писала в комментариях к одной из частей этой статьи, но повторюсь здесь тоже. Мне еще понравилась статья Что такое CI & CD и как она работает? Ссылка https://linuxtrainingcenter.com/stati/chto-takoe-ci-cd-i-kak-ona-rabotaet/. Очень доступно описан процесс CI & CD. Может кому-то пригодится :)
Оставьте свое сообщение

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    35710    ids79    40    

Партионный учет по двум количественным показателям

Математика и алгоритмы Учет ТМЦ v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Особенности учета партионной системы при наличии двух количественных показателей.

26.03.2020    3505    lastcontra    5    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    5044    randomus    20    

[После]Новогодние задачи

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    3112    Alxby    23    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    57497    pahich    82    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    30150    YPermitin    24    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

02.09.2019    9987    SeiOkami    35    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    12736    ildarovich    21    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    45493    ildarovich    116    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    15488    ids79    8    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    58457    AlbinaAAA    28    

Как проводятся документы в типовых конфигурациях от 1С

Математика и алгоритмы Практика программирования Разработка v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    28386    skv_79    35    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    67744    tormozit    27    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    5520    vandalsvq    16    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    16912    Stepa86    33    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    28791    YPermitin    34    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    299093    Evil Beaver    173    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    55532    ids79    25    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    14445    RonX01    65    

Почему вообще работает мой запрос? или Ещё раз о планах запросов

Математика и алгоритмы Практика программирования Разработка v8::Запросы Бесплатно (free)

Другие статьи на эту тему объясняют, что такое план выполнения запроса, но не рассказывают о том, как его получить. Эта заметка призвана заполнить этот пробел. Её цель - популяризировать общедоступные инструменты получения плана запроса среди разработчиков, которые ещё не начали их использовать.

10.06.2019    9515    DataReducer    12    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    110783    bpc222    327    

Организация хранения промежуточных данных

Математика и алгоритмы v8 Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    4266    scientes    1    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    8116    Oleg_nsk    96    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    29750    YPermitin    8    

Решение транспортной задачи запросом Промо

Математика и алгоритмы v8 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    35327    bforce    22    

Даем названия переменным: как префиксы экономят наше время

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

06.05.2019    7224    Designer1C    81    

Заметки по SQL: Срез последних - аналог запроса

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    12135    IVC_goal    7    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы v8 Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    30816    juntatalor    49    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    13534    _ASZ_    33    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    39752    Rain88    48    

Теорема номер тринадцать

Математика и алгоритмы v8 Бесплатно (free)

Использование математических методов для языка запросов.

15.03.2018    12171    vasilev2015    24    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    50243    bpc222    52    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    19404    ildarovich    19    

Использование git при разработке на 1С

Математика и алгоритмы Россия Бесплатно (free)

Продолжение цикла статей по основам CI. Данная статья расскажет о реализации возможности хранения кода продукта в системе управления версиями git и познакомит со специализированным инструментарием, предназначенным для решения этой и других смежных задач.

27.12.2017    32912    real_MaxA    57    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

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

12.10.2017    18015    for_sale    58    

v8: Концепция минимального изменения конфигурации для легкого обновления Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    38238    MarSeN    57    

Пишем игру Минер. Обработка событий ActiveX в 1С

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    14851    user621724_Dimav1979    12    

Как я доступ на kb.1c.ru получал

Решение задач на 1С:Специалист Математика и алгоритмы v8 Россия Бесплатно (free)

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    26471    ikekoval    34    

Улучшение стандарта "Структура модуля"

Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

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

26.03.2017    14513    o.nikolaev    23    

Пример выбора несколько обработчиков событий записи объекта для решения одной задачи Промо

Математика и алгоритмы v8 Бесплатно (free)

Данная публикация предназначена для начинающих разработчиков и является продолжением статьи "Обработчики событий при записи объектов. Зачем и что за чем?" (ссылка далее). Содержит пример использования несколько обработчиков событий для решения одной задачи и объясняется почему выбраны именно они.

27.09.2012    195175    AlbinaAAA    65    

"Распределение в запросе" или "избавляемся от перебора"

Математика и алгоритмы Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    34451    alexandersh    48    

Планы обмена. Квитировать или гарантировать?

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Планы обмена предлагают использовать две стратегии удаления обработанных изменений: квитирование и гарантированная доставка сообщений. Как сделать правильный выбор?

12.12.2016    17551    zhichkin    9    

Некоторые принципы оптимизации запросов 1С (+SQL)

Математика и алгоритмы v8 Бесплатно (free)

Разработка нового функционала часто связана с созданием новых таблиц в базе и написанием запросов. Собственно, размышляя о запросах, мы и формируем в голове содержание таблиц, индексы и количество таблиц и индексов. Заранее можно уверенно рассуждать о том, какая нужна архитектура, если задачу удалось понять. На этом этапе важно привлекать свой опыт. Что же делать, если его нет? Как рассуждать о запросах и формате хранения?

17.11.2016    10877    ture    40    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Обмен через XML Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    42380    1cspecialist    13    

Использование git для доработки типовых конфигураций 1С

Математика и алгоритмы v8 Беларусь Украина Россия Бесплатно (free)

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

11.10.2016    209253    pumbaE    31    

Оптимизация запросов 1С:Предприятие – от теории к практике

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Я давно отметил достаточно серьезный интерес сообщества к вопросам оптимизации и повышения производительности высоконагруженных систем. Общаясь с различными специалистами, обслуживающими малые и большие предприятия (торговые и производственные), я пришел к выводу, что вопросы повышения производительности интересны почти всем, вне зависимости от того, какую конфигурацию они обслуживают – большую или маленькую, измененную или без значительных изменений. В связи с этим я пришел к выводу, что стоит посвятить данный материал вопросам оптимизации запросов, поскольку именно запросы являются основным инструментом извлечения данных из системы.

07.10.2016    38826    bpc222    20    

Регистры сведений 1С. Как это устроено.

Математика и алгоритмы v8 Бесплатно (free)

Основная идея публикации - собрать в одном месте информацию о внутреннем устройстве такой абстрактной сущности, как "Регистр сведений 1С" и ответить на ряд вопросов: Что происходит при записи регистра в различных режимах? Что такое на самом деле "СрезПервых" и "СрезПоследних"? Как оптимально выбрать структуру регистра? Это та информация, владея которой, начинаешь лучше понимать как это работает и как правильно использовать регистры сведений.

05.08.2016    193471    Sergey.Noskov    156    

От Hello world - к защите конфигураций за 1 минуту Промо

Защита и шифрование Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    35133    O-Planet    130    

Переводим расширения на 8.3.8. Памятка.

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Типовые конфигурации переходят на новую платформу 8.3.8 без режима совместимости. А значит нужно переделывать расширения под эти условия. В статье небольшая памятка о переводе расширения на 8.3.8

29.07.2016    47773    mrXoxot    12    

Подобие Объектно-ориентированного программирования в 1С (ПООПс)

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Статья для тех кто знаком с ООП и опустил руки.

24.07.2016    12622    adam26    54