Alexander Speshilov ([info]speshuric) wrote,
@ 2007-08-23 06:58:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Entry tags:

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

Графическая схема

Схема конфигураций, 19,63 КБ

Роли участников процесса

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

Описание конфигураций и информационных баз

См. графическую схему.
  1. Стандартная конфигурация УПП. На поддержке . Изменения запрещены. Развёрнута как минимум одна ИБ с этой конфигурацией у разработчика, ответственного за приём обновлений 1С, причём обычно это типовая демонстрационная ИБ. На этой же ИБ же проверяются сообщения об ошибках в типовой конфигурации перед отправкой в службу поддержки.
  2. Конфигурация, которая находится на поддержке с разрешёнными изменениями. Развёрнута у каждого разарботчика Синар в виде пустой ИБ с загруженной конфигурацией (никогда не запускается в режиме "Предприятие"). Связана с хранилищем, а значит основная конфигурация всегда идентична основной рабочей ИБ (это будет видно из процесса работы). Предназначена для нескольких задач: во-первых, служит буфером обмена между хранилищем и ИБ, в которой ведётся разработка, во-вторых именно в этой ИБ формируются файлы поставки. Подробно о происхождении этой ИБ см. "Цикл обновления". По сравнению с типовой конфигурацией 1С, кроме функциональных различий, надо отметить, что изменен идентификатор на УправлениеПроизводственнымПредприятиемСинар, а также изменена информация о поставщике и некоторые другие идентификационные реквизиты "корня" конфигурации.
  3. Основная ИБ. На поддержке Синар без возможности модификации. С ней работают пользователи (разработка в ней не ведётся). Иногда может служить базой для снятия копии для последующего создания информационной базы для разработки.
  4. Конфигурация для разработки. Находится на поддержке Синар с возможностью изменения. Такая ИБ (как минимум одна) развёрнута у каждого разработчика, может содержать копию данных основной ИБ.

Взаимосвязи хранимых конфигурация

Под "данными" в данном абзаце понимается структура конфигурации и её наполнение, а не данные информационных баз!
  • Из конфигурации 1 в конфигурацию 2 данные попадают через механизм обновления конфигурации поставщика. Т.к. в конфигурации 2 разрешены изменения и она отличается от типовой конфигурации, то обновление происходит со сравнением и объединением и требует достаточно продолжительного времени. (Ответственный - Разработчик, ответственный за приём обновлений 1С)
  • ИБ с конфигурацией 2 связана с хранилищем, поэтому осуществляется постоянная двусторонняя синхронизация с хранилищем. (Ответственный - Разработчики Синар)
  • Для подготовки файла поставки, используется ИБ с конфигурацией 2, связанная с хранилищем. Обязательно перед формированием файлов поставки конфигурация обновляется из хранилища. Обязательно полученный файл поставки проверяется на ИБ разработчика с конфигурацией 4. Возможно автоматизированное выполнение скриптом. (Ответственный за создание файлов поставки - Администратор создания файлов поставок, ответственные за формирование версии хранилища - Администратор хранилища конфигурации)
  • Полученные файлы поставки складываются в общую папку шаблонов обновлений с нумерацией версий по хранилищу конфигурации. Возможно автоматизированное выполнение скриптом. (Ответственный за контроль, архивацию, доступ и т.п. - Администратор создания файлов поставок)
  • Файлы обновления при помощи механизма обновления конфигурации поставщика загружаются в основную ИБ. В отличие от обновления типовой УПП здесь не происходит сравнения/объединения. Возможно автоматизированное выполнение скриптом. (Ответственный - Администратор загрузки файлов поставок)

Цикл доработки

Расписано достаточно подробно, на самом деле сам процесс достаточно быстрый (но проходит все стадии).
  1. Разработчик Синар разрабатывает некий блок или изменение в ИБ с конфигурацией 4. При этом есть определённые правила оформления кода, рекомендации по разработке и реестр доработок, которые позволяют "не потеряться" этой доработке в конфигурации.
  2. Администратор хранилища конфигурации дополнительно контролирует, что внесенные изменения не разрушат структуру хранилища и конфигурации 2
  3. Разработчик Синар (совместно с Пользователем) осуществляет предварительную проверку разработанного блока в ИБ с конфигурацией 4
  4. В зависимости от харакетра доработки разрабатывается план тестирования
  5. Администратор создания файлов поставок создаёт файл поставки в ИБ с конфигурацией 2
  6. Разработчики Синар тестируют файл поставки по планам тестирования в ИБ с конфигурацией 4
  7. Администратор создания файлов поставок принимает решение о допустимости загрузки файла поставки в рабочую ИБ (конфигурация 3)
  8. Администратор загрузки файлов поставок загружает файл поставки в рабочую ИБ (конфигурация 3)
  9. Все разработчики Синар обновляют конфигурацию 4

Цикл обновления

Обновление по типовой 1С очень неприятный и сложный момент в работе. И, кстати, спасибо фирме 1С, что она, как может, этот процесс облегчает нам. Где не указано, там действия выполняет Разработчик, ответственный за приём обновлений 1С.
  1. Получается информация от об изменении.
  2. Принимается решение о целесообразности и сроках обновления. Обычно ждём неделю-две, если нет чего-то срочного в обновлении. Иногда обновлять не имеет смысла из-за незначительности изменений (вносятся "аналогичные" изменения по циклу доработки)
  3. Захват всех объектов конфигурации в хранилище. Все разработчики предупреждаются об этом.
  4. Обновление конфигурации 2 по конфигурации 1 через механизм поставок и сравнение-объединение. Очень сложный и творческий процесс. Требуется сохранить всю текущую функциональность, внеся изменения от типовой 1С. Занимает 2-6 дней без сохранения конфигурации. Большой объём ОЗУ и надёжный ИБП - обязательны!
  5. Сохранение конфигурации 2 в обновлённом варианте. Хранилище пока не обновляется!
  6. Проверка конфигурации путём "загрузить конфигурацию из файла" на ИБ с конфигурацией 4.
  7. Формирование плана внедрения и планов тестирования.
  8. Обновление версии хранилища. Ни в коем случае эта версия не уходит в рабочую ИБ!
  9. Тестирование версии хранилища всеми разработчиками по планам, по "своим" участкам с привлечением опытных пользователей.
  10. Обновление версии хранилища. Потому что на предыдущем шаге почти гарантированно что-то "всплывает".
  11. Окончательное тестирование.
  12. Разработчик, ответственный за приём обновлений 1С формирует обновлённый файл конфигурации 2.
  13. Все разработчики создают новую пустую ИБ с конфигурацией 2 и связанную с хранилищем.
  14. Обновление (по стандартному циклу) загружается в рабочую ИБ



(13 comments) - (Post a new comment)


[info]stas_kulesh
2007-08-23 04:12 am UTC (link)
Хуясе

(Reply to this) (Thread)


[info]speshuric
2007-08-23 04:17 am UTC (link)
не понял твою реплику.

(Reply to this) (Parent)


[info]alvabul
2007-08-23 05:15 am UTC (link)
Не совсем понятны роли конфигурации 2 и 4. Они не дублируют друг друга?
2-это конфигурация, связанная с хранилищем
4-"Конфигурация для разработки".

вопрос: Почему нельзя вести разработку совместную сразу в конфигурации 2?

(Reply to this) (Thread)


[info]speshuric
2007-08-23 05:41 am UTC (link)
О! В этом самая суть.
Конфигурация 2 лежит в пустой базе, подключенной к хранилищу. При этом на поставке у 1С. За счё того, что база пустая все реструктуризации в ней происходят быстро.
Конфигурация 4 это зачастую копия рабочих данных и на поддержке нашей.

Если вести разработку в конфигурации 2, а не 4, то это не удобно:
1. В конфигурации 4 у меня доступны на редактирование все объекты, а в 2 только захваченные.
2. В конфигурации 4 я быстрее получу список того, что я наколбасил (сравнением с конфой поставщика), чем в конфе 2 (сравнение с конфой хранилища обычно тормознее).
3. Так мы страхуемся от заливки непроверенных решений в хранилище и от нарушения структуры хранилища. Как показал опыт - убить хранилище слишком легко.
4. Так у нас всегда есть конфигурация для натягивания обновлений от 1С через механизм поставки.
5. Естественно, то что конфигурация 2 лежит отдельно, ничуть не мешает захватывать объекты при начале разработки, если они точно будут изменены.

Собственно, сохранённая актуальная конфигурация 2 всегда есть в доступе и называется "Эталон.cf".

(Reply to this) (Parent)(Thread)


[info]alvabul
2007-08-23 08:05 am UTC (link)
Интересно. Несколько вопросов:

# Разработчик Синар разрабатывает некий блок или изменение в ИБ с конфигурацией 4. При этом есть определённые правила оформления кода, рекомендации по разработке и реестр доработок, которые позволяют "не потеряться" этой доработке в конфигурации.
--ясно

# Администратор хранилища конфигурации дополнительно контролирует, что внесенные изменения не разрушат структуру хранилища и конфигурации 2
---каким образом? Просматривает код или как-то тестирует?

# Разработчик Синар (совместно с Пользователем) осуществляет предварительную проверку разработанного блока в ИБ с конфигурацией 4
---ясно

# В зависимости от харакетра доработки разрабатывается план тестирования
# Администратор создания файлов поставок создаёт файл поставки в ИБ с конфигурацией 2
---А как происходит перенос изменений из 4 в 2, где собственно и формируется файл поставки?

(Reply to this) (Parent)(Thread)


[info]speshuric
2007-08-23 08:20 am UTC (link)
Просматривает код или как-то тестирует?
Минимум - после заливки разрабом конфы в хранилище - сравнивает эту и предыдущую версию, выясняет что и как будет реструктуризировано, что было изменено. В случае сомнений - прогоняю (да, это чаще всего я ;) ) тестовое разворачивание. Обычно если изменение проблемное для структуры данных, то это хорошо видно. Только если я уверен, что всё хотя бы можно будет откатить беспроблемно к предыдущей версии, только тогда я грузану в конфигурацию 2 новую конфигурацию хранилища.

А как происходит перенос изменений из 4 в 2, где собственно и формируется файл поставки?
Обычно простым сравнением/объединением. Т.к. в конфигурации 4 объектов изменено относительно конфигурации 3 немного (итерации небольшие всё-таки), то это делается очень быстро. Но! после загрузки изменени в "2" они сначала попадут в хранилище, а уже потом, когда конфа в хранилище и основная конфигурация в ИБ с конфигурацией 2 совпадут, только тогда готовится файл поставки.

(Reply to this) (Parent)


[info]speshuric
2007-08-23 08:32 am UTC (link)
Схемка на самом деле достаточно простая. Я просто расписал подробно. Реально большинство разрабов работают круглые сутки с конфой 4 и знать не знают про всё остальное. Как сделали - пытаются впихнуть в конфу 2. Тут иногда всплывает, что в процессе девелопа они увлеклись и захерачили херню. Херню я заворачиваю взад (не заливая в конфу 2 остальным разработчикам). После исправления херни готовится тестовый релиз и план его тестирования. Делается копия ИБ (как бы новая конфа 4) и на ней прогоняется план тестирования. Если всё ок, то через поставку натягиваем на основную.

Возможно, что эта схема где-то недостаточна, где-то избыточна, но сейчас она у нас такова. Для 6 разработчиков и 40 гб рабочей ИБ (около 80 усеров) это не такая уж затратная схема, но вроде обычно грубых ляпов она не пропускает.
Во многом подобная схема у нас использовалась у одного из моих работодателей, но там было 7.7, 7 разработчиков, 30 ГБ, распределёнка на 10+ филиалов, ежедневные релизы. Но там не было хранилища. GCOMP мы там тоже (по "религиозным" причинам не использовали).

(Reply to this) (Parent)(Thread)


[info]alvabul
2007-08-23 11:53 am UTC (link)
Понятно. Просто у нас в системе п.4 нет. Интересно было узнать преимущества такой схемы. Спасибо:)

(Reply to this) (Parent)(Thread)


[info]speshuric
2007-08-24 12:44 pm UTC (link)
Кстати, достаточно важный момент, что в данной схеме не должно быть других направлений передачи метаданных. Т.е. типовая конфигурация 1С (1) ни в коем случае не объединяется с рабочей ("4") и т.д.

(Reply to this) (Parent)


[info]satansclaws
2007-08-23 12:56 pm UTC (link)
Как показал опыт - убить хранилище слишком легко.
Что вы подразумеваете под "убить хранилище"?

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

(Reply to this) (Parent)(Thread)


[info]speshuric
2007-08-24 02:25 am UTC (link)
1. Убить - значит сделать непригодным для использования. Например, как вы подметили, закосячив гуид объекта относительно гуида в типовой. Или привести в состояние, когда при получении любой предыдущей версии 1С падает. Да много чего с ним бывает.
2. Просто у Вас сравнение/объединение происходило по именам и гуидам, а при работе с хранилищем или загрузке конфы из файла - только по гуидам

(Reply to this) (Parent)(Thread)


[info]satansclaws
2007-08-24 04:30 pm UTC (link)
2 - я об этом и сам догадался.

А как 8.1 по сравнению с 8.0? Хранилище стало стабильнее, или стабильность не существеннее?

(Reply to this) (Parent)(Thread)


[info]speshuric
2007-08-28 01:30 pm UTC (link)
Похоже, что стабильнее. Но не намного (файловый движок - ничего не поделать.)

(Reply to this) (Parent)


(13 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…