Минимизация изменений в коде / Использование Хранилища общих настроек

01.07.20

Разработка - Групповая разработка (Git, хранилище)

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

В данной статье рассмотрим 2 очень полезных аспекта:

1. Один из приёмов минимизации изменений в коде

2. Инструмент для минимизации этих самых изменений - ХранилищеОбщихНастроек.

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

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

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

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

Работа с хранилищем включает в себя 3 действия:

1. Сохранение настроек

2. Чтение настроек

3. Удаление настроек

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

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

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

2. Внутри процедур БСП есть проверка на наличие набора прав "СохранениеДанныхПользователя". Здесь нужно продумать, под какими профилями будет выполняться Ваш код. 

3. Не получилось сохранить в качестве настроек Структуру.

4. Ключ лучше использовать текстовый. Но он должен быть уникален от момента сохранения настроек, до момента их удаления. Рекомендую использовать Строка(Ссылка). Главное, чтоб Ссылка была во всех модулях, в которых планируется в процессе проведения использовать хранилище. Ссылку можно вытащить из отбора в любом наборе записей в движениях документа.

5. Из положительного - таблицы можно сохранять как настройки.

ХранилищеОбщихНастроек оптимизация кода минимизация изменений сохранение настроек конфигуратор программирование

См. также

Системы контроля версий для 1С-разработчиков.

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Платформа 1С v8.3 Платные (руб)

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9387    78    4    

112

Обновляемый список последних статей Инфостарт для профиля Github

Групповая разработка (Git, хранилище) Бесплатно (free)

Не знаете, чем бы таким заполнить свой профиль Github? Заполните его своими статьями на Инфостарт! Этот простой workflow сам соберет список ваших последних статей и будет периодически обновлять его для актуализации данных.

08.04.2024    918    bayselonarrend    2    

31

Процесс разработки с использованием GIT и расширений для 1С:ERP. Без EDT

Групповая разработка (Git, хранилище) Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Доработки 1С:ERP на крупных проектах можно организовать, не внося изменения в саму типовую конфигурацию, а используя только расширения и отдельные «микроконфигурации». Расскажем о том, как это сделать без EDT, используя процесс разработки GitHub Flow.

02.04.2024    4572    Begemoth80    24    

45

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1568    bayselonarrend    3    

38

Автоматизация процесса разработки с помощью сервиса GitFlic

Групповая разработка (Git, хранилище) Бесплатно (free)

GitFlic – первая в России полностью самостоятельная реализация сервиса для хранения репозиториев с исходным кодом. За три года разработки сервис GitFlic стал полноценным инструментом, которым можно заменить GitLab, GitHub и BitBucket. Расскажем о том, как выстроить в GitFlic процесс автоматического тестирования, статического анализа кода и сборки приложений.

05.03.2024    2081    user1989937    6    

16

OpenYellow - рейтинг открытых GitHub репозиториев для платформы 1С:Предприятие

Групповая разработка (Git, хранилище) Бесплатно (free)

Обновляемый топ GitHub репозиториев для 1С по всем языкам программирования и еще немного рассуждений про open-source.

05.02.2024    4013    bayselonarrend    15    

63

Насколько глубок 1С-ный GitHub?

Групповая разработка (Git, хранилище) Бесплатно (free)

Open-source проекты - важная часть мира программного обеспечения. 1С привычно держится немного в стороне от глобальных трендов, но бросить холодный статистический взгляд на положение дел мне показалось небезынтересным.

22.01.2024    8056    bayselonarrend    50    

87

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    3007    kamisov    17    

60
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. decline12 22 14.11.19 16:03 Сейчас в теме
ничего не понятно ;-) про что рассказать то хотели?
glek; AlexiyNA; Lapitskiy; user774630; A_Max; BigB; wowik; awk; Hans; mrChOP93; +10 Ответить
2. ixijixi 1796 14.11.19 16:27 Сейчас в теме
(1) Ну как же: вот как-то так через такую ///ёппу оно и работает, больше ничего не скажу, дальше думайте сами
Прикрепленные файлы:
Скользящий; vsesam80; Lapitskiy; Alogy; alevnev; user774630; A_Max; Muzik92; Lancelot-2M; AnatolPopov; +10 Ответить
6. AnatolPopov 167 14.11.19 17:34 Сейчас в теме
(2) За картинку 10 плюсов хотел поставить, но получилось только один ;)
10. biimmap 1862 14.11.19 21:08 Сейчас в теме
(6) не вижу ни одного))) (но я не напрашиваюсь)
17. AnatolPopov 167 15.11.19 09:29 Сейчас в теме
(10) Да у вас и картинок-то нет. Учитесь у (2) иллюстрировать полет мысли ;)
3. biimmap 1862 14.11.19 16:32 Сейчас в теме
ок. на выходных добавлю куски кода, чтоб было понятней.
4. acanta 14.11.19 16:36 Сейчас в теме
5. Hans 2 14.11.19 16:43 Сейчас в теме
Вообще ничего не понял. Автор претендует на то, что вместо проброса своего параметра по стеку процедур можно этот параметр писать в хранилище, а потом в нужном месте его вытаскивать?
8. biimmap 1862 14.11.19 21:05 Сейчас в теме
(5)
тор претендует на то, что вместо проброса своего параметра по стеку процедур можно этот параметр писать в хранилище, а потом в нужном месте его вытаскивать?
Вы все верно поняли. скоро приведу примеры кода станет ещё ясней.
7. w.r. 644 14.11.19 17:41 Сейчас в теме
А чем не устраивает временное хранилище 1С? По логике оно больше подходит
9. biimmap 1862 14.11.19 21:07 Сейчас в теме
(7) не готов согласиться с Вами... Ключ один и тот же, а значений, которые я сохраняю много! около 20 (в моей задаче). Если параметр один - то да временное подходит, и собственно часто использую.
11. w.r. 644 14.11.19 21:19 Сейчас в теме
(9) временное хранилище поддерживает структуру. Можно упаковать все параметры в неё
12. biimmap 1862 14.11.19 22:55 Сейчас в теме
(11) для временного хранилища нужен уникальный идентификатор. Его в общем модуле нет... Его или передать нужно или получить.А вот ссылка на документ есть в нужных мне местах именно она и является ключом для записи и чтения всех данных.
14. mpeg1989 131 15.11.19 08:55 Сейчас в теме
(12) А если попробовать в качестве уида передавать гуид ссылки?
15. biimmap 1862 15.11.19 09:23 Сейчас в теме
19. mpeg1989 131 15.11.19 09:49 Сейчас в теме
(15) определять адрес в хранилище
29. w.r. 644 16.11.19 12:40 Сейчас в теме
(12) мне кажется, временное хранилище для хранения данных + параметры сеанса для хранения адреса в хранилище, были бы более оптимальными, чем ваш вариант с хранилищем настроек. Как написали ниже, это позволит не использовать обращения к базе данных
30. biimmap 1862 16.11.19 17:47 Сейчас в теме
(29)
для хранения данных + параметры сеанса для хранения адреса в хранилище, были бы более оптимальными, чем ваш вариант с хранилищем настроек. Как написали ниже, это позволит не использовать обращения к базе данных
Я же ответил на ваше предложение... нет ключа для использования временного хранилища.
31. w.r. 644 17.11.19 02:41 Сейчас в теме
(30) это не важно. Можно через новый уникальный идентификатор. А адрес записывается в параметрах сеанса и данные получаются потом в другом модуле по адресу
32. biimmap 1862 17.11.19 22:34 Сейчас в теме
(31)
м модуле по адресу
спорить не буду. Написано логично. Но почему-то этим не воспользовался. Была причина!
13. AlX0id 15.11.19 08:49 Сейчас в теме
А давайте на каждый вызов доработанной процедуры еще и пару вызовов ИБ добавим - у нас же мало проблем, правда?
16. biimmap 1862 15.11.19 09:24 Сейчас в теме
Напишите ваше сообщение
(13) непонятный комментарий. Поясните.
18. AlX0id 15.11.19 09:41 Сейчас в теме
(16)
Что, по-вашему происходит, когда вы обращаетесь к общим настройкам? Клиент обращается к серверу 1С, который в свою очередь лезет в базу данных.
Внимание, вопрос: как отразятся ваши доработки с использованием подобного подхода на производительности решения?
20. biimmap 1862 15.11.19 12:02 Сейчас в теме
(18)
Внимание, вопрос: как отразятся ваши доработки
При внимательном изучении моей статьи должно стать понятно, что все вызовы происходят в модуле объекта, в процедуре обработка проведения. Думаю, Вам известно, что выполняется она на сервере. И никакого клиента там нет.
21. AlX0id 15.11.19 12:22 Сейчас в теме
(20)
Хорошо. Вычеркнем из этой схемы клиент.
Клиент обращается к серверу 1С, который в свою очередь лезет в базу данных.

Внимание, вопрос: как отразятся ваши доработки с использованием подобного подхода на производительности решения?
Даже если не обращать внимания на то, что непонятно как сопровождать данный код в дальнейшем - соединение сервера 1С и сервера ИБ - это большие накладные расходы. Для решения вашей "задачи" - неоправданно большие накладные расходы.
22. biimmap 1862 15.11.19 12:41 Сейчас в теме
(21)
Для решения вашей "задачи" - неоправданно большие накладные расходы
Поделитесь полезной информацией, почему Вы решили, что используется БД? Где-то есть в описании? Я не создавал объект метаданных!
23. AlX0id 15.11.19 12:51 Сейчас в теме
(22)
Я не создавал объект метаданных!


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

(22)
Поделитесь полезной информацией, почему Вы решили, что используется БД? Где-то есть в описании?


Например тут:
Структура ИБ 1С
24. AlX0id 15.11.19 13:15 Сейчас в теме
(22)
Откройте описание структуры ИБ 1С - и посмотрите.
25. biimmap 1862 15.11.19 14:32 Сейчас в теме
(24) Посмотрел... Допустим есть обращение к БД. А почему Вы решили, что слишком затратно будет? Алгоритм проведения содержит в себе сотню наверно обращений к БД. будет 101. Какая разница что читать: справочник, регистр или хранилище общих настроек? В чём вопрос-то? Если рассуждать как Вы, то каждая строчка кода тоже требует временных затрат на обработку. Давайте предложим 1С стереть половину кода.

Есть же определенные параметры по которым мы ориентируемся при доработке проведения... Например проведение должно быть не долее 2-х секунд. В той связи что большая часть документов на одного сотрудника... Никаких очень больших объёмов данных не хранится и не считывается. Я с Вами не соглашусь. С точки зрения прикладной задачи, весь код написан по стандартам. Я за этим слежу.

Предлагаю на этом с Вами остановиться. Данный код уже полгода в продуктивных базах с большим количеством сотрудников. Жалоб после доработки не добавлялось. Всегда есть жалобы на сервера и на работу в веб-клиенте... Но новых не было.
26. AlX0id 15.11.19 14:49 Сейчас в теме
(25)

(25)
(24) Посмотрел... Допустим есть обращение к БД. А почему Вы решили, что слишком затратно будет? Алгоритм проведения содержит в себе сотню наверно обращений к БД. будет 101.

Так с вами о производительности говорить бесполезно, собственно.
"И тааак сойдет".
27. biimmap 1862 15.11.19 15:44 Сейчас в теме
Нет, Вы не правы. Просто в Ваших комментариях нет аргументов. Я их соберу в один комментарий:
1. Обращения с клиента на сервер. Вы признали как ошибочный.
2. Использование обращений к БД. Обращения выполняются по ключу, информация хранится в ограниченном размере, после проведения удаляется.
3. Вы сами написали, что результат получается мгновенно.
4. Обращения к хранилищу в цикле у меня нет. Сохраняется около 30 параметров, половина из них - таблицы с небольшим количеством строк. Чтение происходит только нужных мне таблиц в определенный момент времени. Всё подряд по многу раз не получается. Просто данные один раз записываются, а далее порционно читаются.
5. Доработка уже давно используется, проблем с производительностью не испытываем.
6. Документы проводятся в соответствии со стандартами разработки не более 2-х минут

В каком месте у меня пробел в знаниях, чего я не учёл? Поговорить можем, но аргументированно.
28. VmvLer 15.11.19 17:36 Сейчас в теме
после двух абзацев стало понятно, что тс написал мини-манусрипт Войнича для тех кто является доказательством теоремы БЖ.

тролль не 80го уровня конеш, ну так около 30-го вполне.
33. Lapitskiy 1057 21.11.19 08:16 Сейчас в теме
"Знаешь, как создать интригу?"
"Нет"
"Потом расскажу!"

Примерно такие мысли возникли.
Ни примеров, ни картинок, "напишу позже!".
ubnkfl; Lyolik; +2 Ответить
34. Quantum81 6 24.11.19 13:52 Сейчас в теме
Структуру ДополнительныеСвойства у объектов тоже можно использовать. Как в общем-то в типовых и делают.
IronDain; +1 Ответить
Оставьте свое сообщение