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

13.12.18

Разработка - Инструментарий разработчика

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

Скачать исходный код

Наименование Файл Версия Размер
Подсистема хранения констант
.cf 15,36Kb
11
.cf 1.0.0 15,36Kb 11 Скачать

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

Постановка задачи:

Нужно обращаться к какому-либо значению базы данных в коде.

  • Ссылки - искать по коду или по наименованию?
  • Примитивные типы - например, строка текста в печатной форме - прописывать в коде?

А если эти значения ещё и периодические? А если у ссылочного значения поменяют наименование или код? А может сделать элемент предопределённым?

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

Для чего это:

  • Чтобы проще обновлять типовые конфигурации - не нужно добавлять предопределённые элементы в типовые объекты
  • Чтобы  при изменении наименования, кода ссылочного типа настройка неожиданно не рухнула
  • Чтобы добавить "периодичность" Константам
  • ........

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

Итак. Реализация.

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

В общем то для минимального исполнения - всё. Можно заходить в предприятие и заполнять регистр. В коде можно получать значения запросом или объектно - ПолучитьПоследнее(..).

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

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

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

И... Обязательно надо установить права на новые объекты!

Настройка создана на платформе 8.3.12.1714. Будет работать начиная с платформы 8.3.5.1068, т.к. испольуется объект "Схема запроса".

константы динамические программирование

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124601    681    389    

732

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    7719    24    6    

42

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    4236    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2880 руб.

14.01.2013    178567    1083    0    

861

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99582    239    97    

298

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

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

3000 руб.

27.08.2019    18354    6    8    

40

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23843    16    15    

33

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28296    3    10    

15
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. triviumfan 93 13.12.18 17:15 Сейчас в теме
Видел подобно https://infostart.ru/public/868392/
И там много "холивара" по этому поводу.
В общем, разница лишь в используемом хранилище. Там автору регистр не понравился.
antonio_i; +1 Ответить
2. antonio_i 80 13.12.18 20:58 Сейчас в теме
(1)
Да, тоже видел.
Для меня удобнее, возможно, просто привычнее - хранить в регистре. Плюс - периодичность.
Судя по наличию таких публикаций механизм хранения доп. констант - полезный инструмент!.
Как хранить - выбирает каждый под свои нужды и для своего удобства.
по сути ведь можно выделить несколько направлений:
- Объект константы
- Справочник
- ПВХ (реквизит значение)
- Регистр
- Макет кто-то предлагал даже
3. triviumfan 93 13.12.18 23:56 Сейчас в теме
(2)
Макет кто-то предлагал даже

Ага, Рарус ещё 10 лет назад со своей Альфой :)
antonio_i; +1 Ответить
4. pm74 199 14.12.18 10:07 Сейчас в теме
(1) было такое
(0) про сабжу , сам использую ПВХ + справочник
выбор такой связки обоснован тем , что помимо просто констант очень часто нужно хранить списки или таблицы произвольного вида
Прикрепленные файлы:
5. antonio_i 80 14.12.18 12:57 Сейчас в теме
(4) Так периодичности нет. Мне она нужна.
Как вариант, думаю, можно добавить такой справочник, чтобы в нём хранить всё, что нельзя в регистре, при этом доработать функцию получения самой константы. Ссылку на справочник хранить в регистре.
Т.е. "скрестить" эти два решения. Тогда будет всё в одном.
6. pm74 199 14.12.18 13:37 Сейчас в теме
(5)
Так периодичности нет.
Добавьте дату в тч , вот вам и периодичность
7. antonio_i 80 14.12.18 13:46 Сейчас в теме
8. PLAstic 295 14.11.19 11:27 Сейчас в теме
5 лет назад писал статью на эту тему. Там же предлагались и периодические РС, и ПВХ. В общем, баян.

Чтобы при изменении наименования, кода ссылочного типа настройка неожиданно не рухнула
Для этого используется РС с изменением типа ПВХ и ресурсом типа значений этого ПВХ. Мы же не хотим, чтобы мы или пользователь булевой константе назначили строковое значение?
Читаю статью дальше:
Ранее я использовал настройку основанную на одном регистре со строковым измерением и ресурсом составного типа.
Ой. Вот за это я бы сразу уволил. :)
Создаём план видов характеристик. В типах прописываем все типы которые понадобятся, потом их можно будет добавить.
Создаём периодический регистр сведений. Измерение будет ссылка на элемент ПВХ, ресурс - Характеристика нашего нового ПВХ (не забыть установить связь по типу и связь параметров выбора, чтобы по фен-шую).
Тут есть момент. Вводим общий модуль с повторным использованием значений (мы же не хотим каждый раз читать из базы и быть уволенными сразу же?) и в нём реализуем функцию получения значений. Конечно, при изменении значений используем процедуру ОбновитьПовторноИспользуемыеЗначения() (пишу по памяти, могу ошибиться).
создаём в нашем (тот, что не типовой) общем модуле функцию ЗначениеКонстанты(Знач Константа, Дата). В которой прописываем код получение этих самых констант из регистра.
Как сказал однажды в институте практикующий препод, "благодаря таким, как вы, у меня есть работа". Удачи, автор!
9. antonio_i 80 14.11.19 12:11 Сейчас в теме
(8)
Ой. Вот за это я бы сразу уволил. :)

Что же в таком решении ужасного?
Раз уж написали, расшифруйте.

(8)
Как сказал однажды в институте практикующий препод, "благодаря таким, как вы, у меня есть работа".

Да, и желательно, раз уж критикуете, так научите, как правильно, чтоб все знали. Ведь я в статье не написал, что мой вариант единственный и идеальный. Расскажите про идеальный.
10. PLAstic 295 14.11.19 18:31 Сейчас в теме
(9) Я написал выше, как было бы "в идеале" для вашего решения. ПВХ и РС.
А увольнять надо за строковые измерения РС и за поиск по произвольной строке.
11. antonio_i 80 14.11.19 21:38 Сейчас в теме
(10) А вы публикацию вообще смотрели.
Хотя бы картинки посмотрите, если читать не хочется...
12. PLAstic 295 15.11.19 08:19 Сейчас в теме
(11) Я привёл цитаты из всех частей вашей статьи и вы задаёте такой вопрос? Удачи в работе с такой логикой.
13. antonio_i 80 15.11.19 11:40 Сейчас в теме
(12)Вы противоречите себе:
(9) Я написал выше, как было бы "в идеале" для вашего решения. ПВХ и РС.


Но моё решение и основано на ПВХ и РС.

Может вам просто хочется кого-то и что-то покритиковать?
Да я и не против, только конструктивно критикуйте. С тем самым указанием, "как надо".
14. PLAstic 295 15.11.19 11:49 Сейчас в теме
(13)
Но моё решение и основано на ПВХ и РС.
Я привёл конкретную цитату, к которой относилось высказывание.
15. antonio_i 80 15.11.19 19:31 Сейчас в теме
(14) А для чего?
Какую пользу вы своим ответом принесли кому-либо?

Рекомендую почитать вам притчу "Три сита Сократа".
16. PLAstic 295 18.11.19 10:20 Сейчас в теме
(15)
А для чего?
Отметил для будущих поколений, что так делать нельзя. Вы и сами могли бы сделать акцент не просто "раньше я делал так", а написать, почему так делать нельзя.
Оставьте свое сообщение