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

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

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

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

Введение

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

Если сравнить возможности git и хранилища конфигурации 1С, то для git можно выделить ряд полезных особенностей:

  1. git -- распределённая система управления версиями. В отличие от хранилища конфигурации, для работы с git не требуется иметь доступ к серверу, хранящему код. Всё, что нужно для работы, хранится локально, достаточно время от времени (желательно регулярно) проводить синхронизацию локальных изменений и изменений других разработчиков. Обратной стороной этого достоинства является то, что при синхронизации могут возникнуть конфликты, которые нужно разрешать вручную. В случае с 1С здесь имеются сложности, так как значительную часть кода конфигурации представляют формы, макеты и другие типы данных, хранящиеся в виде xml документов. Ручное объединение таких документов представляет достаточно трудоёмкий процесс.
  2. git blame. Очень часто требуется выяснить, кто, когда и зачем добавил или изменил ту или иную строку кода. Можно потратить не один час, решая эту задачу средствами хранилища конфигурации 1С, а средствами git это делается моментально.
  3. Ветки. В репозитории git можно организовать ветки кода, в которых хранить альтернативные версии продукта или вести параллельную разработку с последующим их слиянием. Особую ценность представляет возможность управления разработкой посредством веток, называемая "git flow".
  4. Хранение любой информации. В отличие от хранилища 1С, в git можно хранить любую информацию (желательно текстовую, но это не обязательно). Поэтому при использовании git возникает возможность хранить не только конфигурацию, но и все внешние отчеты, обработки и другую сопутствующую информацию.

Возникает вопрос, а можно ли при текущем варианте разработки, без использования EDT, использовать git? Ответ на этот вопрос: "да".

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

Git & 1С

Для начала зафиксируем стандартный процесс разработки решений для платформы 1С:Предприятие:

  1. Разработка ведётся коллективом разработчиков при помощи конфигуратора;
  2. В качестве системы управления версиями используется хранилище конфигурации;
  3. При доработке кода, в коде, как правило, оставляются комментарии с информацией, кто, когда и почему изменил код. При этом прокомментировать таким образом изменения в формах или макетах вообще не представляется возможным.
  4. Управление внешними обработками осуществляется вручную, а сами обработки хранятся в файловой системе. Получить предыдущие версии обработок, скажем для старых версий продукта, зачастую, если такая возможность заранее не была предусмотрена процессом, невозможно.

Разумеется, таким образом процесс разработки организован не у всех, но это наиболее распространённая схема совместной работы.

С выходом EDT становится возможным работать без использования конфигуратора и хранилища конфигурации, но этот вариант я не буду рассматривать в данной статье: сейчас немногие энтузиасты готовы перевести процесс разработки в EDT, да и классический процесс разработки будет применяться ещё довольно долго. В случае же использования EDT, работа с git не только упрощается, но и отпадает необходимость обоснования использования git, т. к. git становится единственным (пока?) средством управления версиями кода.

Итак, что мы можем получить от использования git в проекте разработки продукта на основе 1С:Предприятие?

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

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

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

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

  1. Разработка должна вестись в конфигураторе, как и раньше.
  2. Если возможно, вести разработку без хранилища конфигурации, ведь ему на замену мы решаем ввести git. Забегая вперёд скажу: это, к сожалению, сделать будет нельзя, по крайней мере, без существенного усложнения процесса разработки, но ведь мы добиваемся обратного -- его упрощения!
  3. Отсутствие необходимости комментировать изменения кода в самом коде. Описание изменений хранить отдельно от кода. По правде сказать, это можно делать и сейчас, заполняя комментарий версии при помещении объектов в хранилище конфигурации, однако в текущем виде комментарии могут дать ответ на вопрос, что было изменено в текущей версии, но нет инструмента, позволившего бы ответить на вопрос, в какой версии был изменён конкретный кусок кода.
  4. Внешние отчеты и обработки должны храниться вместе с кодом разрабатываемого продукта. При этом они также должны версионироваться по общим правилам версионирования кода git.
  5. Документация к продукту (пользовательская и разработческая) также должна располагаться в хранилище продукта. В конечном итоге, история изменения документации также представляет интерес, как и история изменения кода продукта.

Что можно сделать уже сейчас?

"Превращение" конфигурации в исходный код. Это делается при помощи меню конфигуратора "Конфигурация/Выгрузить конфигурацию в файлы" или использования ключа запуска конфигуратора "/DumpConfigToFiles". Однако следует помнить, что при работе без хранилища конфигурации возможны одновременные изменения одних и тех же объектов несколькими разработчиками, поэтому перед выгрузкой своих изменений нужно сначала произвести их слияние с изменениями других разработчиков.

Другими словами, при изменении конфигурации необходимо:

  1. выгрузить свою текущую конфигурацию в файлы;
  2. собрать из текущего состояния кода продукта конфигурацию (делается также через меню конфигуратора "Конфигурация/Загрузить конфигурацию из файлов" или ключа запуска конфигуратора "/LoadConfigFromFiles");
  3. выполнить получение изменений в локальный репозиторий продукта (pull);
  4. произвести сравнение/объединение текущей конфигурации продукта со своими изменениями;
  5. выполнить сохранение конфигурации в файлы, расположенные в локальном репозитории продукта;
  6. произвести commit изменений с указанием комментария изменений;
  7. выполнить push изменений в центральный репозиторий. При этом нужно быть готовым к тому, что с момента начала помещения Ваших изменений в git-репозиторий кто-то мог сделать это быстрее и при помещении изменений могут возникнуть конфликты, требующие ручного их разрешения. Для этого описанный здесь алгоритм нужно будет выполнять повторно.

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

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

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

Правда теперь выгрузку конфигурации придётся производить немного по-другому. Для выгрузки версии хранилища нужно сначала получить базу данных с нужной версией хранилища и затем уже выполнять её выгрузку в файлы. Для загрузки нужной версии конфигурации из хранилища используется ключ запуска конфигуратора "/ConfigurationRepositoryUpdateCfg". Выгрузку можно производить периодически или по факту изменения хранилища. При этом нужно "помнить" номер последней выгруженной версии хранилища и последовательно выгружать только те версии, которые появились после последней выгруженной.

Алгоритм выгрузки конфигурации получается следующим (я рассматриваю вариант с использованием git-сервера):

  1. клонируем репозиторий продукта в пустой каталог. Это необходимо, чтобы исключить влияние локальных изменений и выгружать конфигурацию в репозиторий, содержащий все изменения;
  2. определяем номер последней выгруженной версии хранилища;
  3. создаём пустую базу (команда запуска "CREATEINFOBASE") и подключаем её к хранилищу (ключ запуска конфигуратора "/ConfigurationRepositoryBindCfg")
  4. для каждой версии, большей, чем определённая на втором шаге, последовательно производим:
    1. обновление конфигурации на следующую версию хранилища;
    2. выгрузку конфигурации в каталог исходников в локальном git-репозитории;
    3. выполняем commit изменений с комментарием, указанном в хранилище конфигурации;
  5. устанавливаем номер последней выгруженной версии;
  6. выполняем push произведённых изменений в центральный репозиторий.

Таким образом в git-репозитории продукта у нас окажутся все версии хранилища со всей историей. Однако в процессе выгрузки изменений нужно будет решить вопрос с авторством коммитов, т. к. исходя из целей, в git-репозитории нам важно знать, кто произвёл те или иные изменения. Коммиты необходимо выполнять от имени их авторов с указанием их e-mail'ов.

gitsync

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

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

Здесь я продемонстрирую, как выполнить синхронизацию хранилища с git-репозиторием.

Для начала надо установить сам OneScript. Отсюда берём сам интерпретатор (в удобном для Вас виде и под Вашу платформу) и устанавливаем его в систему. Я буду демонстрировать использование на примере платформы Windows. По умолчанию OneScript устанавливается в каталог "C:\Program Files (x86)\OneScript" и в переменную "PATH" прописывается путь к каталогу исполняемых файлов OneScript "C:\Program Files (x86)\OneScript\bin". Если ы устанавливали OneScript не при помощи установщика, то вам придётся прописать путь к этому каталогу самостоятельно.

Далее нужно установить gitsync (возможно он уже установлен вместе с OneScript, но в будущих версиях OneScript gitsync может быть убран из стандартной поставки). Установка библиотек и приложений OneScript, производится специальной утилитой "opm" (OneScript Package Manager, поставляется вместе с интерпретатором) из специально созданного хаба, куда разработчики помещают эти библиотеки и приложения. Разумеется, это не единственный способ устанавливать библиотеки и приложения. Их можно разработать самому или скачать из сети и сохранить в любой каталог, предварительно "сообщив" интерпретатору, что библиотеки и приложения нужно искать ещё и в нём.

На всякий случай выполним обновление библиотек оскрипта (данный шаг выполнять не обязательно, если у вас уже установлены последние версии библиотек):

REM Обновим только opm
> opm update opm

REM Обновим все установленные библиотеки
> opm update -all

REM Установим gitsync
> opm install gitsync

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

После установки, gitsync доступен для запуска, т. к. скрипт запуска создаётся в каталоге исполняемых файлов OneScript. Ознакомиться с параметрами запуска gitsync можно при помощи команды

> gitsync help

Теперь нужно настроить git-репозиторий для работы с gitsync. Для этого надо создать в репозитории каталог, в котором будут храниться исходники конфигурации (примем, что это будет каталог "cf" в корне репозитория), инициализировать gitsync в данном репозитории, настроить пользователей хранилища и указать версию хранилища, начиная с которой нужно выполнять синхронизацию.

REM Здесь я создам сам git-репозиторий. Это делать не надо, если у вас уже есть git-репозиторий
> git init myProduct
> cd myProduct

REM Создадим каталог исходников
> md cf

REM Инициализируем gitsync. Здесь нужно указать путь к хранилищу конфигурации,
REM пока сетевой, но в будущем появится возможность указывать хранилище, расположенное
REM на сервере хранилища конфигурации и предоставляемое по протоколам tcp или http
REM
REM указание домена e-mail адресов не обязательно, но тогда вам потребуется указать его
REM вручную для каждого пользователя хранилища конфигурации
> gitsync init d:/path/to/storage/product cf -email my.domain.com

В результате выполнения этой команды в каталоге "cf" создались два файла: "AUTHORS" и "VERSION". В файле "AUTHORS" указаны все пользователи хранилища, здесь надо проверить правильность указания e-mail адресов этих пользователей. Все коммиты в git-репозиторий будут производиться от имени пользователей с этими e-mail'ами. Файл "VERSION" имеет формат xml и содержит единственный узел "VERSION", в который нужно записать номер версии хранилища, начиная с которой необходимо выполнять синхронизацию. Делать это вручную не обязательно, для этого у gitsync есть команда "set-version". Выполняем

> gitsync set-version cf 0

где "cf": -- каталог, в котором расположен файл "VERSION", а 0: -- номер версии, начиная с которой нужно выполнять синхронизацию.

К этому моменту к синхронизации всё готово. Выполняем команду

> gitsync export d:/path/to/storage/product cf

и ждём. Если у вас большая конфигурация или в хранилище достаточно много версий, ждать придётся ощутимо долго, будьте к этому готовы. Однако можно разбить синхронизацию хранилища с git-репозиторием на несколько этапов, выгружая за один запуск gitsync по небольшому количеству версий, указав ему параметры "-minversion" и "-maxversion". Также при запуске gitsync следите за версией платформы 1С:Предприятие (по умолчанию будет запускаться последняя версия), указать конкретную версию можно при помощи ключа "-v8version".

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

Для упрощения коллективной работы с репозиторием продукта я настоятельно рекомендую держать этот репозиторий на каком-либо git-сервере, но помните, что не всякий продукт можно выкладывать в общедоступные репозитории, например на github, из-за лицензионных ограничений. При этом есть возможность "поднять" свой собственный git-сервер внутри локальной сети. Есть разные git-серверы с разными возможностями, лицензиями и стоимостью, я использую простой и бесплатный gogs, но, наверное, сейчас остановил бы свой выбор на gitlab.

precommit1c

Теперь вернёмся к вопросу версионирования внешних отчётов и обработок. В последних версиях платформы есть возможность редактирования внешних отчётов и обработок в "иерархическом XML формате". В этом случае никаких особых действий производить не требуется. Правка отчетов и обработок, находящихся в репозитории продукта производится, как обычно, в конфигураторе, после чего осуществляется коммит изменений. При этом может возникнуть конфликт изменений, когда в репозитории на сервере находится более новая версия отчета/обработки, чем та, которая была изменена разработчиком. Здесь от разработчика потребуется произвести слияние изменения или внести свои изменения повторно, после получения свежей версии отчета/обработки. Впрочем, данный подход для git является штатным и к нему нужно привыкнуть, нужно только не забывать перед началом правки чего-либо получить свежие изменения в репозитории, а после изменений осуществлять коммит этих изменений и push на сервер.

Если же ваша платформа не поддерживает редактирование отчетов/обработок в "иерархическом XML формате", то можно воспользоваться специальной "утилитой" "precommit1c", которая является, по сути, набором git-"перехватчиков" (git hooks), выполняемых при какой-либо операции с репозиторием. В данном случае действия выполняются при коммите изменений в репозиторий. Для использования precommit1c необходимо его установить и настроить локальный репозиторий для работы с ним.

Установка самого precommit1c на компьютер производится через opm командой

> opm install precommit1c

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

> precommit1c --install

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

При коммите изменённой обработки в репозитории, precommit1c производит её разбор на файлы и помещает эти файлы в каталог "src" репозитория. Например, если обработка располагалась по пути "./epf/Внешние обработки/Моя обработка.epf", то исходники будут выгружены в каталог "./src/epf/Внешние обработки/Моя обработка". Также следует иметь ввиду, что формат выгрузки precommit1c не совместим с форматом хранения обработок в "иерархическом XML формате".

Собрать обработку обратно в epf файл можно при помощи того же precommit1c, используя команду "--compile", Например команда

> precommit1c --compile "/path/to/repository/src/epf/Внешние обработки/Моя обработка" "D:/epf"

создаст в каталоге "D:/epf" файл "Моя обработка.epf". Рекомендую при указании путей использовать прямые слеши ("/"), а не принятые в windows обратные. Это сэкономит вам массу времени и нервов при дальнейшей автоматизации процессов.

Структура репозитория

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

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

Итоги

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

Ссылки

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

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

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. herfis 372 27.12.17 11:54 Сейчас в теме
Сначала расписываются преимущества распределенных CVS, а потом предлагается работать через хранилище, а гит использовать параллельно исключительно для удобства мониторинга репозитория? Я все правильно понял? :)
zakkvanaxel; +1 Ответить
2. real_MaxA 225 27.12.17 12:01 Сейчас в теме
Да, всё правильно. Работая через хранилища, мы в итоге всё равно получим означенные преимущества.

Отчёты и обработки -- само-собой.
git blame -- тоже и сразу. Никаких
// 27.12.2017 Вася (Задача #123) {
Добавленный код
// }

в коде.

С ветками придётся повозиться, но и тут без хранилища тоже никуда. Тем более в технологии вендора именно такая схема и описывается (см. "Технология разветвленной разработки конфигураций" на ИТС)
Irwin; karimov_m; Evil Beaver; +3 Ответить
5. herfis 372 27.12.17 12:15 Сейчас в теме
(2) Как по мне - крайне неудачное сочетание ежа и ужа. Отчеты и обработки с документацией - они как бы сбоку, с ними все понятно.
Но геморроиться с совместным использованием двух CVS ради получения пары плюшек к первой из них - оверкилл.
Но это так, личное мнение. Раз вас устраивает, может и еще желающие найдутся.
Хотя первый раз такое применение вижу, обычно переползают на git именно из-за децентрализованности и git flow.
А вы намеренно оставляете централизованность, чтобы не мержить.
frkbvfnjh; zakkvanaxel; theshadowco; VladC#; biz-intel; uri1978; EliasShy; AllexSoft; zqzq; gimalaj; +10 Ответить
6. real_MaxA 225 27.12.17 12:19 Сейчас в теме
(5) Оверкилла, как такового нет. Делается один раз при настройке, а дальше работает само. Разработчики могут даже не знать об этом, удивляясь магии :)

А с git flow, как я сказал, придётся не просто, но, опять же, основная нагрузка придётся на внедрение, а сам процесс не сильно усложнится. Правда тут разработчикам уже надо будет знать/понимать что и зачем они делают.
7. real_MaxA 225 27.12.17 12:26 Сейчас в теме
(5)
А вы намеренно оставляете централизованность, чтобы не мержить


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

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

Использование git позволит построить полноценный CI (собственно, цель) с тестами и развёртыванием.
8. herfis 372 27.12.17 12:35 Сейчас в теме
(7)
К сожалению мержить конфигурации 1С без специализированных средств (конфигуратора) очень сложная и чреватая ошибками задача.

Это как раз понятно. При децентрализации придется разруливать конфликты, которые не возникают при централизованной разработке. Но на больших командах и проектах это окупается. А в маленьких командах обычно нет острой необходимости в git blame. Короче, сомневаюсь в широте целевой аудитории :)
3. DenisCh 27.12.17 12:03 Сейчас в теме
гит не нужен. Для 1с. Баловство это.
frkbvfnjh; EliasShy; palsergeich; ZLENKO; Xershi; +5 12 Ответить
4. JohnyDeath 298 27.12.17 12:11 Сейчас в теме
(3) можете как-то развернуть свой вброс?
9. DenisCh 27.12.17 12:51 Сейчас в теме
(4) А что тут разворачивать? В 1с нет нормальных средств для распределённых средств.
Выгрузить конфигурацию и загрузить её обратно - занимает слишком много времени.
frkbvfnjh; EliasShy; pfilyk; +3 Ответить
10. herfis 372 27.12.17 12:56 Сейчас в теме
(9) Вроде в последних релизах что-то там серьезно улучшали в части инкрементальной выгрузки/загрузки конфы в файлики/из файликов, спецом для EDT.
Но "живых" отзывов не имею. Самому интересно.
ЗЫ. Т.е. теоретически загрузка/выгрузка теперь должна происходить пропорционально объему правок по скорости. А как оно на практике...
11. yukon 80 27.12.17 13:56 Сейчас в теме
В 1с нет нормальных средств для распределённых средств.

GIT и т.п. работает с кодом. Текстовыми файлами. Что именно должна сделать 1С чтобы вы могли версионировать и мержить текстовые файлы?

Есть проблема с метаданными, формами, их пересборкой. С самим кодом особых проблем нет.

занимает слишком много времени

Смотря какую конфу пилите - мини-самописка летает. А проекты уровня ERP у вас и на других платформах будут не быстро разворачиваться и компилиться.
14. DenisCh 27.12.17 14:42 Сейчас в теме
(11)
Есть проблема с метаданными, формами, их пересборкой

Тут всё отвечено ))
16. Evil Beaver 6828 27.12.17 15:58 Сейчас в теме
(9) Нужен. Даже если использовать только "в одну сторону" для зеркалирования хранилища 1С на гит-сервер. Вы сразу же получите люшки в виде быстрой истории по коду, понимание того, кто и когда менял строчку кода, плюс привязку кода к задачам JIRA или Gitlab. Отзеркалировав свой код 1С в git (а это делается в фоне, автоматически без участия людей) вы получаете возможность пользоваться десятками инструментов из параллельного мира "не-1С" разработки.
АлександрЯрославичъ; jif; ret-Phoenix; comol; BlizD; olegtymko; Morkhe; Vladimir Litvinenko; artbear; +9 1 Ответить
17. ImHunter 200 27.12.17 16:44 Сейчас в теме
(9) Можно ведь и не так глобально (в масштабах правки конфы) гит применять.
Как было упомянуто в статье, также применимо для хранения внешек. Это, к примеру, хорошо применится в авто-тестах - Jenkins будет выгребать внешки для xddTestRunner из гита и авто-тестировать.
12. mifka186 8 27.12.17 14:20 Сейчас в теме
Спасибо за статью, очень интересно.

Скажите использовали ли вы git для совместной разработки расширений 1С? От самой 1С хранилища расширений пока нет.
13. real_MaxA 225 27.12.17 14:35 Сейчас в теме
(12) Нет, не использовал, и, насколько я знаю, просто так это сделать сейчас нельзя. Всё, что доступно. это выгрузка расширений в файлы и загрузка обратно. Причём какой-либо методики централизованного управления разработкой расширений нет и у самой 1С, насколько я знаю.
Возможно через какое-то время ситуация изменится, но пока не известно, в какую сторону.
mifka186; +1 Ответить
15. artbear 1193 27.12.17 15:15 Сейчас в теме
(12) Мы используем и вполне успешно.
Хотя, конечно, есть платформенные баги при выгрузке расширений :( - например, роли выгружаются неверно.
Приходится следить за их выгрузкой в гит и удалять ненужные/недействительные изменения

но мы завязаны на используемую платформу 8.3.10.2299 у Заказчика.
mifka186; +1 Ответить
18. ImHunter 200 27.12.17 16:56 Сейчас в теме
Кстати, для желающих иметь собственный git-сервер - есть проект Bonobo. Наворачивается на IIS (хабр)
19. herfis 372 27.12.17 17:29 Сейчас в теме
(18) Еще GitLab есть, эдакий карманный GitHub. По слухам там страшная солянка технологий, но вроде есть готовые контейнеры для простого развертывания.
21. kuntashov 408 27.12.17 23:16 Сейчас в теме
(0) Спасибо, что ответы на свои вопросы в гиттере к авторам инструментов ("несмотря на" и "вопреки всему" :)) и собственный опыт оформил в виде такой доходчивой и подробной статьи! Это однозначно лучше штатной документации.
baton_pk; JohnyDeath; Evil Beaver; artbear; pavlov_dv; +5 Ответить
24. real_MaxA 225 28.12.17 08:15 Сейчас в теме
(21) И Вам спасибо на добром слове :)
22. kuzyara 1057 28.12.17 07:15 Сейчас в теме
Покажите ваш GitBlame в действии, покажите ваш SonarCube alert, покажите ваш Jenkins shedule, покажите ваш CodeReview comments, покажите ваш three-way merge, покажите...!
23. real_MaxA 225 28.12.17 08:12 Сейчас в теме
(22) С git blame проще всего. Как я говорил, оно работает "само" и не требует ничего, кроме наличия git.
Сонаром (пока) не пользуюсь, даже в глаза не видел. Планы есть, но не на ближайшую перспективу.
С jenkins'ом проще, это не последняя статья и в одной из следующих я планирую продемонстрировать, как я построил свой CI на практике.
С code review сложнее. Его нет по двум причинам. Во-первых gogs не очень поддерживает code review, а во-вторых в команде из одного разработчика данная функция не очень востребована )
Трёхстороннее сравнение тоже не использую. Как осуществлять мерж, у меня есть только теоретическое понимание, в любом случае я не думаю, что придётся делать что-то, кардинально расходящееся с методикой технологии разветвленной разработки конфигураций от 1С.
Прикрепленные файлы:
25. ImHunter 200 28.12.17 08:23 Сейчас в теме
(23) Хех, Sonar для 1С или у Silverbulleters покупать, или самому как-то пилить.
28. Evil Beaver 6828 28.12.17 12:06 Сейчас в теме
(25) Чо, прям 2000 рублей для фирмы не найти, чтобы vanessa.services подключить?
30. ImHunter 200 28.12.17 12:09 Сейчас в теме
(28) О. 2 тыр всего?? Я чет сходу ценник так и не увидел.
Можно ссылку?
31. Evil Beaver 6828 28.12.17 12:10 Сейчас в теме
32. ImHunter 200 28.12.17 12:12 Сейчас в теме
(31) Аааа... Это месячная подписка.
А отдельно плагин для SQ продается?
33. Evil Beaver 6828 28.12.17 12:16 Сейчас в теме
(32) Да, но сильно дороже. По-моему, 2-3 мес. попробовать и понять - отличный сервис у ребят. Из коробки сразу работающее ВСЁ! И гиты и сонары и дженкинсы и трекинг задач. И никакого красноглазия и ручных настроек.
34. ImHunter 200 28.12.17 12:20 Сейчас в теме
(33) Я понимаю, что сильно дороже. И красноглазие в зеркале видел;)
Но все ж. Сколько может стоить плагин отдельно?
35. Evil Beaver 6828 28.12.17 12:21 Сейчас в теме
(34) Напишите в Пулю, они точно знают.
36. artbear 1193 28.12.17 12:53 Сейчас в теме
(34) https://silverbulleters.org/sonarqube#price
еще 2 варианта к вышеописанному - облачный сервер и собственный сервер
37. ImHunter 200 28.12.17 13:27 Сейчас в теме
(36) Ага, тоже видел... Посмотрим, может уломаю коллектив.
26. headMade 143 28.12.17 08:31 Сейчас в теме
(23) можете подробнее расписать как вывести git blame.
Это только в консоле или можно как-то в source tree тоже вывести?
Спасибо.
27. real_MaxA 225 28.12.17 08:55 Сейчас в теме
(26) Не задумывался над возможностью blame в SourceTree. Нагуглилось такое: https://stackoverflow.com/questions/10581843/where-is-git-blame-in-sourcetree (выделяете интересующий файл и жмёте Alt-Shift-B). По мне, так не очень удобно, намного нагляднее и информативнее в VSC (Visual Studio Code -- https://code.visualstudio.com/) установить расширение Git Lens или Git Blame.
На фотографии в (23) виден результат работы обоих:
* Git Blame выводит результат в статус бар (с информацией "кто и когда")
* Git Lens выводит в текущей строке (с информацией кто, когда и почему).
Да, не очень удобно смотреть эту информацию где-то отдельно (в том же VSC), было бы намного удобнее видеть это сразу в конфигураторе, но увы, причину, почему этого не будет, мы знаем. Будем ждать EDT, там эта возможность есть. С другой стороны, ответы на вопросы "кто? когда? почему?" нас интересуют эпизодически и при наличии каких-то побудительных причин, в процессе правки кода этим можно не интересоваться, хотя признаю, такая аргументация слабовата. Но в любом случае, данная информация у нас теперь есть и достать её не очень сложно, а это уже гигантский шаг.
29. Evil Beaver 6828 28.12.17 12:07 Сейчас в теме
(22) Показывал на инфостарт 2015, поищите.
38. headMade 143 29.12.17 08:33 Сейчас в теме
Подскажите еще какой порядок работы при поиске виновника ошибки.
Т.е например пользователь сообщает что в документе при проведении валит ошибку в модуле объекта такой-то строке.
Как оптимально найти в каталоге проекта этот модуль, чтобы посмотреть какие изменения были
т.е. через TotalCommander надо найти *Module.bsl и открыть его в VSC.
Или можно как-то более оптимально это сделать?
40. real_MaxA 225 29.12.17 10:11 Сейчас в теме
(38) Допустим репозиторий продукта лежит в каталоге "c:/product_repo", Исходники конфигурации лежат в каталоге "cf" ("c:/product_repo/cf"). Если вы зайдёте туда в тотал-командере, то увидете выгруженную конфигурацию, разложенную по каталогам. Там будет каталог "Documents", в котором лежат выгруженные документы, будет каталог "Catalogs" со справочниками, каталог "DataProcessors" с обработками, "CommonModules" с общими модулями, etc. Нужный Вам модуль ищите в этой иерархии. Это всё достаточно очевидно, просто выполните в конфигураторе команду "Конфигурация/Выгрузить конфигурацию в файлы" в "Иерархический" формат и посмотрите, что будет лежать в репозитории.

Кстати, "находить" модуль в тотал-командере не обязательно, откройте сам репозиторий целиком в VSC (правой кнопкой на каталог репозитория и выполните команду "Open with Code"), так будет намного удобнее, не надо на каждый модуль открывать отдельное окно VSC.

Историю изменений конкретного файла можно смотреть в том же VSC. По мне, так там это реализовано не очень удобно, мне намного удобнее смотреть историю изменений непосредственно в web-интерфейсе git-сервера. В случае github-а это выглядит, например, так:
* blame: https://github.com/oscript-library/gitsync/blame/master/src/gitsync.os
* история: https://github.com/oscript-library/gitsync/commits/master/src/gitsync.os
41. kuzyara 1057 29.12.17 11:22 Сейчас в теме
(40)
- Доделана синхронизация и удалены лишние модули
- Скорректированы модули под рекомендации oscript
- gitsync: При уровне логирования debug не удаляем временные файлы fix #65
- немного косметики. + Бонусом 2 простые фичи

Казалось бы, пяток коммитов. Зачем разные комментарии на каждой строке? Зачем комментарии на пустые строки? Почему всё так перемешано? Как то не так я себе представлял blame..
42. real_MaxA 225 29.12.17 11:35 Сейчас в теме
(41) Это комментарии, заданные при коммите этой строки. Рассматривайте это так: "Эта строка появилась/изменилась в этом файле в результате доработки, опубликованной с этим комментарием".

Строки
#Использовать cmdline
#Использовать logos
Добавлены/изменены 2 года назад пользователем artbear с комментарием "gitsync: При уровне логирования debug не удаляем временные файлы fix #65", где "#65" -- ссылка на задачу, которую он решал.

Строка
Перем Лог;
Добавлена/изменена пользователем bia-tech 11 месяцев назад с комментарием "Скорректированы модули под рекомендации oscript-app-template © EvilBeaver"

И так далее.

Пустые строки откомментированы, потому, что эти пустые строки тоже кто-то когда-то добавил.
Здесь видно, что artbear 2 года назад добавил 3 строки:
#Использовать cmdline
#Использовать logos
#Использовать "core"

А пользователь nixel2007 11 месяцев назад, между
#Использовать logos
#Использовать "core"
Добавил пустую строку.

Как-то так.
43. kuzyara 1057 29.12.17 11:39 Сейчас в теме
(41) Существует ли инструмент, который показывает не кто и когда наложил эту строку кода, а к какому функциональному блоку относится текущий абзац кода и почему он был написан именно так, с возможностью интерактивного ретроспективного анализа изменений с изменяемой детализацией?
44. real_MaxA 225 29.12.17 11:46 Сейчас в теме
(43) Вот это он и есть.
На примере моего предыдущего (42) комментария:
Переходим в комментарий "gitsync: При уровне логирования debug не удаляем временные файлы fix #65". Сразу видим изменения, которые были сделаны этим коммитом. Зелёные строки -- добавленные, красные -- удалённые.
В комментарии "#65", это ссылка. Переходим по ней и попадаем в задачу, при решении которой этот код был изменён именно так.

Хотя, возможно, я не понял вопроса.
51. kuzyara 1057 10.01.18 07:04 Сейчас в теме
(44) инструменты для визуализации и навигации по нелинейной истории разработки

Тактика применения паттерна выделения слоев имеет два основных аспекта: масштаб и время.

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

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

Время. Этот аспект касается того, когда нужно применять выделение слоев. Это достаточно хороший паттерн, чтобы с него начать анализ и рефакторинг архитектуры системы, особенно, если эрозия архитектуры не катастрофична. Выделение слоев ведет к тому, что рефакторинг архитектуры приобретает "направленность", задача сводится к меньшим подзадачам; теперь детальный семантический анализ можно применять только к тем слоям, которые имею непосредственное отношение к поставленной задаче. (с) http://citforum.ru/SE/project/refactor/


Я сам не понимаю чего я хочу, но...

Как версионировать требования (поведение, архитектуру), а не тексты сорцов?
52. real_MaxA 225 10.01.18 10:56 Сейчас в теме
(51) Постараюсь ответить, как понимаю это я. Очень упрощённо.

Разработчику требования версионировать не нужно, это задача, скорее, менеджера/аналитика (далее, просто аналитика). В свою очередь, аналитику не важен код.

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

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

Эту задачу можно решать "внешними" инструментами, например подключить (это возможно) какой-нибудь redmine или jira (к сожалению, на данный момент времени, в этих вопросах я не смогу Вам помочь более предметно), в которых и вести учёт продуктов/проектов/требований/задач. В этом случае мы сможем видеть всё, связанное с продуктом.

1С, кстати, предлагает своё решение этой задачи: СППР. В ней также есть реализация технологии разветвлённой разработки, но нет git-а. Нужно подождать какое-то время, появится и git, т. к. EDT волей-неволей потребует этого. Ну или "рядом" с СППР появится ещё какой-нибудь инструмент. Это не важно.

И! Внезапно, поведение версионировать можно.
Посмотрите на этот вопрос с точки зрения тестов, а, конкретно, инструмент vanessa-behavior. В нём (тестируемое) поведение системы описывается в простых текстовых файлах (фичах, features), которые вполне возможно хранить в репозитории продукта. Мало того, в этих фичах возможно описывать не только само поведение, но и кому и зачем оно нужно. Возможно это не совсем то, что нужно, но знать об этом полезно, а применять ещё более полезнее :)
53. kuzyara 1057 16.01.18 09:20 Сейчас в теме
(52) При разработке отдельной фичи считается хорошим тоном коммитить часто, но в хистори мастера лучше иметь фичу целиком в виде одного коммита. Автор пулл реквеста конечно может сквошить сам, но это неудобно, т.к. пулл реквест еще может дорабатываться после создания.
54. kuzyara 1057 17.01.18 07:09 Сейчас в теме
(52) Проблема не в том, что коммит нечитабелен, а в том что мы неспособны поделить код на такие куски, которые можно было воспринимать в совокупности.
55. real_MaxA 225 17.01.18 11:08 Сейчас в теме
(54) Если честно, я не понимаю сути проблемы.
Конфигуратор предоставляет возможность отображения объектов метаданных по подсистемам. Не пишите (я утрирую) один большой мега-модуль на всю конфигурацию, на разделите его на несколько, относящихся к определённым подсистемам.
Попробуйте описать кейс, который вызывает затруднения в понимании.
39. vikad 118 29.12.17 09:40 Сейчас в теме
(38) в каталоге разобранной конфигурации вызовите F1, команду Language 1C (BSL):QuickOpen и наберите там первые буквы метаданного, в модуле которого ошибка
45. firma111 29.12.17 18:32 Сейчас в теме
Поставил последнюю версию oscript, пытаюсь выполнить:
opm update opm

В итоге:

КРИТИЧНАЯОШИБКА - {Модуль C:\Program Files (x86)\OneScript\lib\opm\src\Классы\Ус
тановкаПакета.os / Ошибка в строке: 336 / Ошибка установки пакета opm: Пакет не
найден}

Если так:

C:\Windows\system32>opm update -all
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета 1commands: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета asserts: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета cmdline: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета fluent: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета fs: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета json: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета logos: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета opm: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета strings: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета tempfiles: Пакет не найден в хабе
ПРЕДУПРЕЖДЕНИЕ - Ошибка обновления пакета v8runner: Пакет не найден в хабе

Из-за чего такое может быть?
47. nixel 921 30.12.17 01:10 Сейчас в теме
(45) у вас прокси нет, случаем?
48. artbear 1193 30.12.17 12:00 Сейчас в теме
(45) У вас прокси, похоже.

И какая версия OneScript стоит? Выполните oscript -version

также что показывает команда opm list
46. Boris_1c 39 29.12.17 23:47 Сейчас в теме
Поставьте пока 18ю версию. С 19й есть вопросы совместимости
49. headMade 143 04.01.18 08:41 Сейчас в теме
1С:ГитКонвертер
Конфигурация 1С от 1С, односторонняя синхронизация хранилища конфигураций 1С в репозиторий Git.
50. real_MaxA 225 04.01.18 12:54 Сейчас в теме
(49) Да, то же самое, только от 1С.
gitsync это инструмент. Можно взять другой (гитконвертер) и использовать его в этих же целях.
Кстати, есть и ещё один, не от 1С: https://github.com/Stepa86/1C-Gitter
56. Tangram 154 15.05.18 00:29 Сейчас в теме
А вот можно спросить:
В этой ветке обсуждается gitsync, 1C-Gitter. 1С:ГитКонвертер.
Я правильно понимаю, что эти продукты служат для того чтобы выгружать хранилище конфигурации на например Github, и там на Githube применить для анализа кода всякие продвинутые инструменты?
А для групповой разработки без использования хранилища конфигурации эти инструменты не годятся, так?
57. real_MaxA 225 15.05.18 08:14 Сейчас в теме
(56)
А вот можно спросить:
В этой ветке обсуждается gitsync, 1C-Gitter. 1С:ГитКонвертер.
Я правильно понимаю, что эти продукты служат для того чтобы выгружать хранилище конфигурации на например Github, и там на Githube применить для анализа кода всякие продвинутые инструменты?
А для групповой разработки без использования хранилища конфигурации эти инструменты не годятся, так?


Почти всё так.
1. Эти инструменты просто "транслируют" изменения в хранилище в git-репозиторий.
2. Без хранилища эти инструменты не нужны.

При этом
3. Github (git-сервер) сам по себе ничего не умеет, только хранить git-репозитории для совместной работы. Можно не ограничиваться githubом, можно использовать другие git-серверы (gitlab, bitbucket), в том числе своим собственным, установленным у себя в сети (gitlab, gitea, etc).
4. "Продвинутые инструменты для анализа" просто берут репозиторий (код) из любого доступного места, того же githubа и работают уже с этим кодом локально.
Оставьте свое сообщение

См. также

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

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

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

10.11.2018    34565    ids79    40    

1С: Документооборот, Data Science и Python

Документооборот и делопроизводство Математика и алгоритмы ДО Бесплатно (free)

В статье рассказывается о создании и обучении модели Data Science на языке Python и интеграции с системой 1С: Документооборот

04.08.2020    1479    Vaganov_Alexey    4    

Применение математических достижений в решении сложных задач бизнеса

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

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

25.05.2020    3328    Mishnov    17    

Улучшение пооперационного планирования в 1С:ERP 2.4 внешними средствами

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

Задача построения оптимального производственного расписания требует сравнения тысяч и десятков тысяч вариантов. Выполнять такие вычисления средствами платформы 1С Предприятие нецелесообразно. Как реализовать пооперационное планирование с использованием генетических алгоритмов и параллельных вычислений в докладе на конференции Infostart Event 2019 Inception рассказал генеральный директор компании «ИНТЕХ» Сергей Сафаров.

02.03.2020    5102    ildarovich    7    

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

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

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

18.11.2017    55695    pahich    82    

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

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

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

18.02.2020    4763    randomus    18    

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

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

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

05.09.2019    27976    YPermitin    24    

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

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

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

02.09.2019    9795    SeiOkami    35    

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

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

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

24.03.2014    45248    ildarovich    116    

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

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

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

22.08.2019    12309    ildarovich    19    

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

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

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

22.08.2019    14831    ids79    8    

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

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

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

25.07.2019    49300    AlbinaAAA    28    

Метод Кларка-Райта. Оптимальное планирование маршрутов грузоперевозок Промо

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

Одной из наиболее важных задач каждого предприятия, осуществляющего доставку грузов в крупных населенных пунктах, является сокращение издержек. Возможное решение данной проблемы заключается в сокращении пробега автотранспорта и, как следствие, уменьшении расхода ГСМ. Появляются такие вопросы ... - СКОЛЬКО НУЖНО МАШИН ДЛЯ РАЗВОЗКИ КОНКРЕТНОГО ОБЪЕМА ГРУЗА ПО АДРЕСАМ ДОСТАВКИ ? - КАК РАЗБИТЬ ТОЧКИ ДОСТАВКИ НА ОПТИМАЛЬНЫЕ ПО ПРОБЕГУ И ЗАГРУЗКЕ МАШИН МАРШРУТЫ ? ... В этой статье Вы найдете один из многих способов получить ответ на эти вопросы.

10.02.2016    59757    mi1man    20    

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

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

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

24.07.2019    27261    skv_79    35    

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

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

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

22.07.2019    16357    Stepa86    33    

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

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

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

16.07.2019    26106    YPermitin    34    

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

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

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

07.08.2015    66998    tormozit    27    

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

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

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

25.06.2019    51871    ids79    25    

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

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

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

24.06.2019    14082    RonX01    65    

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

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

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

10.06.2019    9363    DataReducer    12    

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

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

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

24.12.2012    293274    Evil Beaver    173    

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

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

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

28.05.2019    7862    Oleg_nsk    96    

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

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

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

20.05.2019    27158    YPermitin    7    

Выдержки из книги Чистый код

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

Недавно я прочитал книгу "Чистый код" Роберта Мартина (Robert Cecil Martin). В ней описываются принципы организации и форматирование исходного кода программы так, чтобы в дальнейшем было легко поддерживать такой код. Эта книга является библией для многих программистов, но вот в среде программистов 1С, к сожалению, не очень распространено чтение подобной фундаментальной литературы. Книга более 400 страниц и так много порой лениво читать, да и времени всегда не хватает. По этому я решил выделить в виде цитирования по разделам самые важные моменты. А также снабдил текст своими примерами кода.

16.05.2019    10407    FreeArcher    105    

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

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

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

07.05.2013    109880    bpc222    327    

Что такое алгоритм?

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

Как ответить на этот вопрос и не попасть пальцем в небо.

25.02.2019    8271    mkalimulin    274    

Криптовалюты, а также иные взгляды на природу денег в терминах 1С

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

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

28.01.2019    6214    mkalimulin    89    

Как писать код? Технологии древних цивилизаций, или все новое - это хорошо забытое старое

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

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

23.01.2019    11629    starik-2005    43    

Предметно-ориентированное проектирование (3D) в 1С. Виртуальная машина. Промо

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

Проектирование программного обеспечения - это постоянная битва за простоту.

03.06.2014    40202    Evgen.Ponomarenko    88    

Роберт Мартин: "Будущее программирования" / Robert Martin: "The Future of Programming"

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

Перевод-транскрибация выступления.

14.01.2019    15634    Vladimir Litvinenko    38    

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

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

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

09.01.2019    11841    kalyaka    36    

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

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

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

1 стартмани

30.04.2014    35017    bforce    22    

Размышления о хороших практиках, навеянные одной статьей

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

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

21.12.2018    6792    mkalimulin    61    

Ректальное программирование: основы для практикующих 1С-программистов

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

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

19.12.2018    43012    for_sale    351    

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

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

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

05.12.2018    13182    _ASZ_    33    

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

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

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

1 стартмани

04.12.2013    30709    juntatalor    49    

КопиПастаМер v.2 (универсальный)

Инструментарий разработчика Рефакторинг и качество кода v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка для поиска повторов строк - находит одинаковые строки в разных текстовых файлах. Легко настраивается - Мин.порог одинаковых строк, выбор по типу / маске файла, Поиск по вложенным под-каталогам, выбор кодировки UTF-8 / ANSI ...Удобное отражение кода 1С в привычной "раскраске" и открытие файлов в одно нажатие в любом редакторе, таких как NotePad++, Visual Studio Code...или стандартных Блокноте, или Word-е Текст обработки - открыт для доработок.

1 стартмани

30.11.2018    8759    34    Serg O.    13    

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

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

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

23.08.2018    38331    Rain88    46    

Учебный курс. Повышение качества разработки. Ошибки программы

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Лекции № 3,4,5. Эти лекции посвящены ошибкам программ, их классификации и способам исправления

10.07.2018    19586    Артано    92    

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

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

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

27.06.2013    50008    bpc222    52    

Що там у них в Java

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

Развенчание мифа о тяжёлой жизни не 1С программистов на примере создания веб сервиса редактирования таблички с использованием framework spring в Java.

24.05.2018    11197    van_za    62    

Учебный курс. Повышение качества разработки. Вводная лекция, часть 2

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Лекция №2. Эта лекция посвящена абстракциям, их свойствами и практическому применению в рамках классических парадигм программирования.

24.05.2018    12951    Артано    36    

Учебный курс. Повышение качества разработки. Вводная лекция

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста.

10.05.2018    17881    Артано    51    

Внутреннее качество разработки конфигураций 1С Промо

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

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

21.06.2013    37792    ig1082    50    

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

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

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

12.03.2018    19155    ildarovich    19    

Правила программирования и автоматизации

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

Изложил свой опыт программирования, больше десяти лет.

21.02.2018    18337    Dzenn    127    

Творим Историю вместе

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

Расширяем границы, выходим за рамки, ставим новые цели - все, как вы любите.

17.01.2018    17435    1c-intelligence    108    

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

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

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

28.01.2013    38094    MarSeN    57    

Об уровне абстракции и сложности системы

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

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

21.12.2017    12276    m-rv    15    

Двоичное дерево, двоичное дерево поиска, двоичная куча, B-дерево

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

В большинстве реляционных СУБД в качестве структуры данных для индексов (та или иная их реализация) используются именно деревья. И не просто деревья, а сбалансированные деревья поиска. В этой статье как раз о них.

24.11.2017    15863    Irwin    5    

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

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

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

21.11.2017    23645    real_MaxA    22