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

Публикация № 542836 19.08.16

Разработка - Практика программирования

В предлагаемой статье речь пойдет про такие инструменты виртуализации, как Vagrant и Docker.

Проблемы разработки 1С, связанные с особенностями интеграции

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

Первая проблема связана с тестированием функционала. Мы привыкли, что у нас есть cf-ник, и этого достаточно, чтобы протестировать свой продукт и запустить его в работу. Но когда появляется различная интеграция (веб-сервисы или новые http-сервисы odata), протестировать их взаимодействие с новой версией 1С бывает очень тяжело и затратно по времени. Чаще это откладывают: «лучше я потом как-нибудь новую версию платформы 1С посмотрю».

Вторая проблема, с которой мы часто встречаемся, – это, конечно же, наш «сферический конь в вакууме»: когда мы «задеплоили» наши данные на рабочий сервер, и после этого узнаем, что теперь какой-то функционал не работает. В ответ мы часто запираемся в своей «сфере» и кричим: «у нас все работает».

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

И третья проблема – это периодичность выпуска новых версий платформы.

Уже прошли те времена, когда мы по полгода обсуждали новую версию, потом еще два-три месяца ее настраивали, и потом, наконец-то, обновлялись на всех наших серверах. Сейчас новые версии платформы выпускаются практически беспрерывно, и многие заказчики сразу ставят нам условие, что они работают только на такой-то версии и обновляться пока что не готовы. Поэтому нам в наших решениях приходится поддерживать весь зоопарк версий платформы. Например, мы знаем, что для Бухгалтерии 3.0 должна быть установлена самая последняя версия платформы, а УТ10.3, наоборот, стабильно работаетна 8.3.4, и обновлять ее нам пока рискованно.

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

Виртуализация с «батарейками»

Виртуализация бывает разная.

  • Можно вручную создать виртуальную машину, скачать необходимый образ, запустить его, добавить там пользователя и настроить сеть.
  • Но для того, чтобы на этой виртуальной машине заработал наш продукт, нам недостаточно одной виртуализации. Нужно установить еще какие-то программы – необходимый минимум, чтобы протестировать работу. Поэтому мы поговорим про виртуализацию с так называемыми «батарейками», когда у вас есть готовый скрипт.
    • Вы формируете какой-то определенный скрипт, который автоматически настраивает вашу виртуальную машину.
    • Это позволит вам запускать ее не вручную: скрипт сам создаст виртуальную машину, сеть, настройки пользователя и установит необходимые программы.
    • И, самое главное, такой скрипт вы сможете использовать повторно, а также передавать его другим разработчикам.

DevOps со стороны программиста

Сейчас немного отвлечемся. Поговорим про DevOps со стороны самого программиста.

  • Стандартная ситуация – у нас есть сисадмин Вася, который знает всю нашу инфраструктуру, знает, как ее настраивать, и, если возникает какая-либо проблема, он ее решает. Это работает до первого отпуска, первой болезни.
  • После этого мы просим Васю описать нашу инфраструктуру. Но, хотя системный администратор, который приходит его замещать, вроде и знает, что этот сервер у нас отвечает за Web, ему все равно приходится заново «гуглить» и искать, как его настроить.
  • Следующий этап – мы просим Васю где-то записать значения настроек для нашей инфраструктуры, и теперь, когда это необходимо, мы их просто «копипастим».
  • И на следующем этапе, когда у нас есть вся документация по нашей инфраструктуре, мы сможем взять и инвертировать ее в готовый рабочий скрипт, который можно просто запустить на рабочей машине и получить нужный результат.
  • А пляж – это та несбыточная мечта, которая у нас есть.

Если смотреть на это со стороны программиста 1С, то у нас эта проблема также может возникнуть. Например, когда к нам в разработку приходит новый человек, мы должны ему рассказать, какое программное обеспечение необходимо поставить и как его настроить, объяснить, как это все у нас работает. Напоминаю, что речь идет про веб-сервисы, http-сервисы, про обмены с различными программами, когда все не так прозрачно (не в одной 1C-конфигурации делается).

Vagrant

Для решения этой проблемы используется продукт, который называется Vagrant. Если вы начнете использовать Vagrant, то вам, в основном, будут нужны всего три команды:

  • vagrant init – инициализация, 
  • vagrant up – запуск
  • И vagrant ssh/rdp – подключение (в зависимости от сервера виртуализации вы будете использовать либо ssh, либо rdp-подключение).

Что такое Vagrant file? Это описание той виртуальной машины, которую вы хотите получить. Независимо от того, какого провайдера вы используете (VMWare, Hyper-V или VirtualBox), это описание будет практически везде одинаковое. В Vagrant file вы описываете, на основании какого образа операционной системы вам нужно создать виртуальную машину, какая память под нее будет выделена, какая сеть настроена, что должно быть скопировано на эту виртуальную машину для дальнейшей установки и какие скрипты нужно запустить, чтобы установить нужное вам программное окружение.

Vagrant file

Вот так выглядит сам Vagrant file. Это – DSL-инструкция, написанная на языке Ruby. По Vagrant file есть документация в сети.

  • В самом начале описывается название образа, на основании которого будет создана наша виртуальная машина. Вам не нужно будет копировать этот образ ISO вручную, он сам найдет его либо у вас на компьютере, либо на сервере vagrantbox.es, скачает, если необходимо, и развернет из него виртуальную машину.
  • Чуть ниже прописано пробрасывание портов.
  • Далее производится синхронизация папки. В этой папке у вас должны лежать настройки сервера 1С:Предприятие, настройки технологического журнала и сама платформа 1С, легально скачанная.
  • Потом указываются параметры виртуальной машины. В зависимости от VirtualBox или Hyper-V вы можете указывать какие-то индивидуальные настройки.
  • И, наконец, запускаются скрипты первоначальной инициализации.

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

Вы можете передавать этот Vagrant file другим разработчикам, даже территориально разделенным. Нет необходимости передавать им весь шаблон виртуальной машины, который, бывает, занимает 3-4 ГБ. При запуске vagrantupу них автоматически скачается весь необходимый набор программ, все само установится и запустится.

В некотором смысле этот Vagrant file является вашим DevOps. И здесь он, в частности, представлен для 1С.

Если вы, например, напишете в google «vagrant logstash», то сможете найти там готовый Vagrant file для Logstash, скачать его, точно так же написать в командной строке «vagrant up», и у вас появится виртуальная машина с полностью настроенным окружением для экспериментов с Logstash.

А для программиста 1С мы с помощью настроек Vagrant file можем получить полностью рабочий контур для различных версий 1С:Предприятия, чтобы в нем поэкспериментировать. Этот рабочий контур может включать: Postgres, сервер 1С:Предприятие, Apache версии 2.2 (которая до сих пор 2.2) и т.д. И для запуска всего этого нам нужна только одна команда – vagrant up. По ней все само поднимется, установится, запустится. Надо будет только чуть-чуть подождать.

Скрипт инициализации для Vagrant

На скриншоте показан простейший bash-скрипт для Linux (в частности, для Ubuntu), который устанавливает все пакеты, необходимые для 1С-разработки.

Запуская этот скрипт, мы устанавливаем на нашу виртуальную машину все необходимые зависимости, копируем настройки технологического журнала (мы ведь говорим про разработчиков, поэтому нам нужно копировать эти настройки) и устанавливаем debug-режим сервера 1С:Предприятия. Каталог vagrant/distr/, который здесь указан – это просто папка с дистрибутивом платформы.

Есть еще один скрипт, который устанавливает Apache в случае публикации веб-сервисов и дополнительно ставит нам отладку на определенный IP-адрес, чтобы мы могли спокойно отлаживать веб-сервисы.

Это простые скрипты, в них перечислено выполнение простейших шагов.

Vagrant vs. Docker

Однако у Vagrant есть проблема: он работает только с полной виртуализацией, независимо от того, что мы используем (Virtual Box или Hyper-V). Vagrant – это в любом случае полная виртуализация, включающая виртуализацию железа. Поэтому он тяжелый для запуска и большой по размерам. Кроме того, считается, что его тяжело использовать для интеграции при запуске в Production.

Поэтому я расскажу об еще одном инструменте виртуализации на базе Linux, который называется Docker. Этот продукт использует паравиртуализацию, основанную на ядре Linux. По факту, Dockerвыполняет те же самые задачи и роли, что и Vagrant, только сразу в Linux, поэтому у него есть преимущество в скорости и размере. Правда, преимущество в размере при работе с 1С небольшое: другие Docker-контейнеры обычно имеют размер порядка 30-40 Мб в одном контейнере, а минимальный размер контейнера для 1С – это 1-2 Гб. Дело в том, что каталог с платформой 1С занимает довольно большой размер, и если нужно создавать несколько контейнеров для разных версий 1С (8.3.4, 8.3.6, 8.3.7), то дисковое пространство сразу же отъедается на 5-6 Гб.

Но, с другой стороны, если говорить про Vagrant, то там только на один контейнер расходуется около 5-7 Гб.

Поэтому Docker более удобен в размерах, но запускается только на Linux.

Особенности Docker

У Docker один контейнер является одним сервисом. Если вы в виртуальной машине поднимаете сразу же несколько сервисов (сервер 1С:Предприятие, толстый клиент, Apache, Postgres), то в Docker считается, что на каждый этот сервис вы должны поднять отдельный контейнер Docker.

К тому же у Docker немного другое представление конфигурационного файла (Dockerfile) для запуска контейнера. Например, как показано на скриншоте:

  • Первой строчкой мы создаем Docker-контейнер на базе CentOS 6-й версии;
  • Потом устанавливаем для него необходимые пакеты;
  • С помощью инструкции EXPOSE делаем проброс портов;
  • И последней командой указываем, какая программа у нас должна будет стартовать при старте этого Docker-контейнера. В частности, здесь это – сервер 1С:Предприятие (для Apache это будет «apache start», а для Postgres – «postgres»).

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

Выглядит это так, как показано на скриншоте: простой текстовый файл docker-compose.yml, в котором описывается запуск определенных сервисов в Docker и их зависимости между собой.

В Docker Compose есть очень удобная вещь. Допустим, когда стартует тот же Apache, мы можем указать для него, что ему надо масштабироваться на три штуки: указываем «scale 3», запускается три Apache. Естественно, для Postgres это не подходит, но для сервера 1С:Предприятия это возможно, правда, приходится бороться с некоторыми моментами (например, с настройкой кластера серверов 1С:Предприятия).

Чем еще интересен Docker?

Сейчас максимальная версия Apache, с которой работает 1С для веб-сервисов, – это Apache 2.2. Но, если смотреть на последние версии Ubuntu или CentOS, там уже по умолчанию используется версия Apache 2.4, и установить поверх нее более старую версию Apache для нас проблемно, неудобно. В качестве решения мы можем указать в Docker file, что нам нужен Docker-контейнер именно на базе Cent OS 6, где по умолчанию установлен Apache версии 2.2, и в результате формируется Docker-контейнер с необходимой нам версией Apache.

Преимущества виртуализации

Если подвести краткий итог, то

  • С помощью файлов Vagrant file и небольших образов виртуальных машин мы можем организовать единое окружение разработчика.
  • Файл Vagrant file мы можем передать другому разработчику, сказать: «делаешь vagrant up, у тебя получается вся наша инфраструктура».
  • Разработчик нам уже не говорит: «я вроде как доделал веб-сервис, но вы добавьте константу «Тестовая функциональность», разверните на Production, мы его включим и посмотрим, заработает он или не заработает». С помощью виртуализации он может без разворачивания в Production полностью проверить работоспособность всего контура с учетом новых требований.
  • Мы можем легко менять версии платформы 1С, проверять, работает это на новой платформе 1С или нет.

Мы сейчас с вами говорили в основном про Linux, но Vagrant также может работать и на Windows. А поскольку работа в среде Windows нам тоже интересна, поговорим о том, что там можно еще использовать.

Дополнительные инструменты автоматического развертывания для Windows

Packer-windows

С Windows у нас есть проблема – это, конечно же, лицензионные отчисления. Мы просто так в интернете не можем выложить образ Windows, чтобы на основании этого бокса сформировалась нужная нам виртуальная машина.

Для этого существует специальная утилита, которая называется packer-windows. Основная задача этой утилиты – это создать подготовленный образ на базе Windows для Vagrant. В packer-windows есть определенные ссылки на сервера Microsoft, где он может сам автоматически выкачать ISO-образ Windows Server той версии, которая вам наиболее подходит (Windows Server 2008 или Windows Server 2012) – для них есть подготовленный файл ответа.

Если не выключить автоматическое обновление пакета, то запуск подготовки всего образа занимает пару часов (пока Windows скачает этот ISO, создаст образ, сеть, пользователей, пока все сформируется). И в результате – запустили на ночь и получили готовый образ Windows с минимально необходимыми настройками для подключения к Vagrant.

Chocolatey

Все-таки Windows у нас основан на GUI-интерфейсах, и мы там привыкли все устанавливать вручную, а это для скриптования не очень удобно. С этим сталкиваемся не только мы, весь мир тоже «болеет» этим. И родился инструмент, который называется Chocolatey – он немного похож на пакетный менеджер для Linux. Если знаете, в Linux мы в командной строке набираем:

apt-get install[program-name]

А в Chocolateyвсе то же самое, но только из командной строки Windows мы вызываем:

Choco install[program-name]

И здесь мы в качестве [program-name] можем указать либо git, либо sql server express – пакетный менеджер Chocolatey скопирует все, что нужно для установки, и установит необходимую нам программу в тихом режиме.

Пакетов для 1С на chocolatey.org нет, потому что мы их туда выкладывать не можем, но мы для своей инфраструктуры можем сами создать нужные пакеты.

Есть шаблон пакета: просто берем setup.exe, кладем в папку, и запаковываем в этот шаблон. На скриншоте показано, как выглядит установщик такого пакета – это просто код, написанный на Powershell. После этого мы можем выполнить команду

chocoinstall – yonecserver

И у вас установится сервер 1С:Предприятия или тонкий клиент – в зависимости от того, что вы пропишете в этом скрипте. Самое интересное, что все будет происходить в «тихом» режиме.

Допустим, вы с помощью утилиты packer-windows подготовили образ на базе Windows и сформировали пакет Chocolatey для 1С определенной версии (тут также поддерживается версионирование). В результате вы получаете готовый образ виртуальной машины, в котором установлен и IIS, и 1С – вам только останется либо вручную сделать публикацию 1С-овского веб-сервиса, либо написать для этого скрипт на Powershell.

Заключение

На скриншоте – картинка «для затравки», показывающая пример использования Docker для соединения с конкретной версией хранилища конфигурации. Дело в том, что когда в Docker развернуто несколько версий хранилища 1С, для разработчика единой точкой входа является доменное имя (оно состоит из номера версии, сервера и названия репозитория).

В заключение хочу сказать, что с 1С можно работать, используя такие технологии, как Consul, Docker. Вы можете использовать Apache2.2, поднимать различные версии сервера 1С, причем без разницы, на какой ОС вы этот сервер поднимаете – эта виртуализация может быть как в Windows, так и в Linux (но в любом случае это – виртуализация). И в результате вы получаете легкий способ тестировать различные рабочие окружения.

****************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2015 CONNECTION 15-17 октября 2015 года.

Приглашаем вас на новую конференцию INFOSTART EVENT 2019 INCEPTION.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Hateful72 5 22.08.16 07:44 Сейчас в теме
скрины подшакалены
mental86; kote; TreeDogNight; +3 Ответить
2. artbear 1373 22.08.16 11:11 Сейчас в теме
+1 За новые технологии
NoRazum; zarucheisky; Hissin; +3 Ответить
9. the1 912 22.11.16 17:13 Сейчас в теме
3. Infactum 302 22.08.16 14:19 Сейчас в теме
Давно уже видел эту информацию. Полезный материал.
Печально, что статьи пишут ради рекламы перед IE2016. А ведь могли и год назад написать.
4. Hissin 171 24.08.16 10:18 Сейчас в теме
(3) Infactum, В остальное время практикуются и нарабатывают опыт, чтобы новая статья была более полной и информативной. :)
5. Dragonim 129 24.08.16 11:13 Сейчас в теме
(4) Hissin,
Не вижу в данной статье полноты и информативности. Всю статью можно описать одним предложением "Платформа 1С поддерживает виртуализацию и контейнеризацию, подробности в специализированных статьях по виртуализации и контейнеризации".
6. vikad 120 24.08.16 14:09 Сейчас в теме
(5) Dragonim, вы невнимательно прочитали. Во-первых, это - конспект доклада, который длится 25 минут. На мой взгляд, в этот промежуток времени докладчик вложил просто максимум полезной информации, которую действительно нужно гуглить и которая действительно "открывает новый мир". Во-вторых, речь идет не столько об 1С, сколько об интеграции 1С с другими системами, протестировать которую на своем рабочем месте без ущерба реальным системам можно только используя виртуализацию. Причем с акцентом на том, что развертывание этой виртуальной среды можно (и нужно) автоматизировать. Да, задача несколько специфичная, но опыт ее успешной реализации у докладчика явно есть - и эта статья, по-моему, просто приглашение к конструктивному диалогу на эту тему.
Rustig; Vladimir Litvinenko; kuntashov; mickey.1cx; artbear; +5 Ответить
8. amon_ra 23 06.10.16 00:32 Сейчас в теме
(5) Dragonim, разве платформа поддерживает виртуализацию? а я всегда думал, что поддержка виртуализации, это когда внутри системы можно развернуть систему, разве не так?
7. VasilVtoroy 01.10.16 00:32 Сейчас в теме
Спасибо за статью, но, наверное стоит написать что успело устареть с момента прочтения доклада.
А это как минимум:
1) Docker теперь поддерживает Windows
2) 1C 8.3.8 поддерживает Apache 2.4
MaximKor; +1 Ответить
10. Трактор 1214 19.07.17 10:08 Сейчас в теме
>> Уже прошли те времена, когда мы по полгода обсуждали новую версию, потом еще два-три месяца ее настраивали
Когда были такие времена? Я что-то не помню.
Оставьте свое сообщение

См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

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

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020    3565    Eugen-S    20    

Алгоритмы распределения сумм (наивная методика, Алгоритм Кэхэна)

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

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

08.07.2021    2235    con-men    29    

Лямбда-функции на встроенном языке 1С

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

Анонимная функция средствами 1С. Пророчества грядущих функций первого класса и ООП. Другие смелые заявления.

28.06.2021    4565    AntonProgma    294    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    84699    Serginio    113    

Микросервисы на Golang. Часть 6. Докеризация, Начальная оркестрация, CD\CI

Системная интеграция CI/CD docker 1cv8.cf Бесплатно (free)

Создадим микросервис, поместим его в докер, проведем его масштабирование на нескольких виртуальных машинах с помощью оркестрации Docker Swarm, выполним также CD\CD микросервиса с помощью GitHub Action (Микросервис взят с прода, обрезан лишний функционал) будет показан пример его взаимодействия с 1С клиентом.

21.06.2021    1129    dmitry-irk38    0    

Снежинка для запроса

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

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

21.06.2021    1604    kalyaka    5    

Ненавязчивая локальная разработка с traefik2, docker и letsencrypt

Групповая разработка docker Бесплатно (free)

Перевод статьи по проксированию HTTP траффика до сервисов развернутых в docker контейнерах. Оригинал от 24.09.2020.

16.05.2021    1385    malikov_pro    0    

Звуковое управление в 1С 8.3 Промо

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    6681    velemir    31    

Полезные примеры СКД, ч.2

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

Еще несколько примеров решения задач в СКД.

06.04.2021    9684    Neti    8    

Полезные примеры СКД, ч.1

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

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021    12277    Neti    19    

Тестируем в Docker

docker Бесплатно (free)

Чтобы продукт гарантированно отвечал функциональным требованиям, нужно писать для него тесты и часто их запускать. О том, через какие этапы проходит компания, которая хочет автоматизировать тестирование – от одного клиента на локальной машине до запуска тестов по запросу в Kubernetes, на INFOSTART MEETUP Ekaterinburg.Online рассказал Андрей Крапивин.

29.03.2021    3482    Scorpion4eg    8    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    8362    comol    31    

Обзор полезных методов БСП 3.1.4

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

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

25.03.2021    35180    rayastar    51    

Повышение качества разработки. Статья 4. Почему код становится плохим, и как с этим бороться

Практика программирования Методология управления разработкой Бесплатно (free)

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Статья 4. Эта статья посвящена причинам возникновения проблем с качеством кода и методикам их преодоления.

22.03.2021    1445    Артано    5    

Telegram бот на PHP

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

Сделаем простого Telegram бота на PHP.

01.03.2021    11165    John_d    12    

Использование программных перечислений, ч.1: строковые константы Промо

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

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    40712    unichkin    74    

1С on demand – скажи "нет" постоянным билд-агентам

Jenkins docker Бесплатно (free)

Каждый, кто пытался запускать на своем компьютере тесты для 1С, сталкивался с тем, что процесс тестирования не позволяет что-то делать параллельно. О том, как изолировать тестовые окружения и организовать «Агент по запросу» с помощью Docker на примере Jenkins CI, рассказал ведущий разработчик компании «Первый БИТ» Никита Грызлов.

25.01.2021    3808    nixel    12    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    18957    quazare    34    

«Варп-двигатель» для «среза последних»

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

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

10.08.2020    3858    hobi    49    

Вспомогательные инструкции в коде 1С Промо

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

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    35571    tormozit    106    

Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика

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

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

29.06.2020    12544    WildHare    33    

Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория

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

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

22.06.2020    12909    WildHare    23    

Не спеша, эффективно и правильно – путь разработки. Часть 1. Парадигма

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

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

15.06.2020    19542    WildHare    35    

Оформление и рефакторинг сложных логических выражений Промо

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

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    82413    tormozit    131    

Форма выбора (подбор) в управляемых формах

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

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    69901    user5300    19    

JSON в запросах DaJet QL

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

Практические примеры работы с JSON непосредственно в языке запросов. Перенос курсов валют между УТ и БП. Требуется SQL Server 2016 и выше.

24.04.2020    4409    zhichkin    6    

Визионное программирование

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

Новый способ программирования и его практическая демонстрация.

22.04.2020    5194    mkalimulin    111    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

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

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    53767    tormozit    51    

Использование машинного обучения для решения инцидентов. Практическое применение

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

Продолжаю (и заканчиваю) тему с автоматическим решением инцидентов. Перейдем от теории к практике.

25.02.2020    4857    Repich    9    

Использование машинного обучения для решения инцидентов

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

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

18.02.2020    7896    Repich    17    

Программная работа с настройками СКД

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

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

27.01.2020    61457    ids79    26    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

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

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    50516    tormozit    74    

[СКД] Программное создание схемы компоновки данных

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

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    41577    John_d    22    

Часовой на страже логов

Практика программирования Инструментарий разработчика Бесплатно (free)

При поддержке решений, которые установлены у большого количества пользователей на различных системах, очень важно вовремя получать подробную информацию о возникших проблемах. О том, как собирать логи и анализировать полученные данные в трекере ошибок Sentry на конференции Infostart Event 2019 Inception рассказал Андрей Крапивин.

13.01.2020    9355    Scorpion4eg    8    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

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

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    33228    kuzyara    38    

Развитие 1С программиста Промо

Практика программирования Личная эффективность Бесплатно (free)

Делюсь своим опытом и видением развития 1С программиста.

17.10.2018    26748    pashamak    64    

Полезные процедуры и функции для программиста

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

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

07.10.2019    38755    HostHost    41    

Таблица значений. Нюансы

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

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    51174    Yashazz    56    

СКД. Отчеты с картинками

Практика программирования Работа с интерфейсом v8::СКД 1cv8.cf Бесплатно (free)

Решение популярных кейсов с картинками в отчетах на СКД.

25.09.2019    31662    YPermitin    57    

Выгрузка документа по условию Промо

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

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    17776    m-rv    3    

СКД не только для отчетов

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

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

18.09.2019    21630    YPermitin    36    

Оповещения боту из 1С за 31 минуту

Практика программирования Интеграция v8::УФ 1cv8.cf Бесплатно (free)

Поделюсь опытом, как быстро сделать бота с оповещениями в Телеграмм из 1С без лишних затрат.

18.09.2019    19867    feva    43    

[Шпаргалка] Программное создание элементов формы

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

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

06.09.2019    95708    rpgshnik    75    

Как прикрутить ГУИД к регистру сведений Промо

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

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

16.04.2019    23003    m-rv    18    

Агрегатные функции СКД, о которых мало кто знает

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

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    74351    ids79    55    

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

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

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

05.09.2019    44469    YPermitin    25    

Три костыля. Сказ про фокусы в коде

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

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    29818    YPermitin    81    

Как сделать запрос на изменение данных Промо

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

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    36221    m-rv    23    

Приватный блокчейн и 1С популярно

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

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

02.09.2019    6893    mkalimulin    140