Краткая инструкция по внесению изменений в конфигурацию
Оглавление
Краткая инструкция по внесению изменений в конфигурацию
Порядок внесения изменения в разрабатываемую конфигурацию
Именование добавляемых объектов конфигурации
Включение объектов в служебные подсистемы
Создание или доработка Печатных форм, обработок, отчетов
Включение объектов в состав типовых подсистем командного интерфейса
Комментирование изменений в коде
Внесение изменений в общие модули
Внесение изменений в обработчики событий форм
Внесение изменений в обработчики событий объектов и менеджеров
Внесение изменений в состав источников типовых подписок на события
Постоянные значения конфигурации
Работа с хранилищем конфигурации
Рекомендации по базе разработки
Общие положения
При разработке руководствоваться рекомендациями с сайта ИТС 1С
- Методическая поддержка для разработчиков и администраторов
- Система стандартов и методик разработки конфигураций
Общие требования к написанию кода:
- При любом наборе входных данных программа не должна зацикливаться.
- При любом наборе входных данных программа не должна выдавать синтаксические ошибки.
- Доработка должна иметь какой-то «выход» - если она не нашла данные для обработки, то должна выдать соответствующее сообщение.
- В панель сообщений должны выводиться только «значащие» сообщения – то есть следующая информация:
- Сообщение о завершении обработки (в случае, если создается обработка, которая каким-то образом изменяет данные)
- Сообщения, которые требуют реакции пользователя.
- Информационные сообщения о невозможность обработать какие-то данные (например, не заполнен нужный реквизит в справочнике).
- Обработки, которые выполняются более 1 минуты ( обрабатывают большой массив данных ) должны выводить окно состояния выполнения, а процедура обработки должна быть выполнена с помощью фонового задания.
- Во всех доработках при использовании «связанных» справочников должна происходить их корректная обработка. Например, если на форме или в табличной части используются справочники «контрагент» и «договор контрагента», то при выборе другого контрагента (очистке реквизита «контрагент») должен быть очищен и договор контрагента. При выборе договора контрагента должен быть установлен отбор по его владельцу.
- Надо помнить, что если пользователю разрешено какое-то действие в системе, то программа должна уметь корректно это действие отработать. Например, если в документе разрешено вводить отрицательные значения в табличную часть, то эти значение должны быть записаны в регистры.
- Любые изменения конфигурации должны быть максимально реализованы с помощью Расширений конфигураций :
- В расширении нельзя использовать объекты, не поддерживаемые версией платформы, которая установлена в режиме совместимости Конфигурации.
- При расширении общих модулей и модулей объектов приоритетно использовать вариант расширения «После»
- Разные расширения должны иметь разные префиксы, чтобы избежать конфликтов совместимости расширений
Порядок внесения изменения в разрабатываемую конфигурацию
При разработке руководствоваться рекомендациями с сайта:
- Методическая поддержка для разработчиков и администраторов
- Система стандартов и методик разработки конфигураций
Так как наши внедрения рассчитаны на работу большого числа пользователей, то особое внимание обратить на разделы:
- Типичные причины избыточных блокировок и методы оптимизации
- Типичные причины неоптимальной работы запросов и методы оптимизации
- Реализация обработки данных
Именование добавляемых объектов конфигурации
Добавление новых объектов должно быть реализовано с помощью расширений конфигурации. При невозможности использовать расширения все добавляемые объекты конфигурации должны именоваться, начиная с префикса «ВашПрефикс_». К таким объектам относятся:
- Объекты метаданных (общие модули, справочники, документы, подсистемы и т.п.)
- Реквизиты объектов метаданных (включая: реквизиты, табличные части, измерения регистров, команды и т.п.)
Если добавляемый реквизит принадлежит уже добавленному объекту, имеющий префикс «ВашПрефикс_» то у таких реквизитов добавлять префикс не надо. - Предопределенные значения (включая: значения перечислений, предопределенные значения справочников и т.п.)
- Реквизиты форм
Если добавляется реквизит формы с колонками префикс устанавливается для самого реквизита формы, но не для его колонок.
- Элементы форм к типовым объектам необходимо добавлять динамически с помощью расширений. При невозможности добавления или изменения элементов формы с помощью расширений, изменение формы должно быть реализовано через код .
- Процедуры и функции
Если процедура/функция добавляется в модуль объекта/формы (или общий модуль), который уже имеет префикс «ВАШПРЕФИКС_», то в имени такой процедуры/функции префикс указывать не нужно.
Наименование добавляемых объектов должно иметь осмысленный синоним
В поле комментарий (добавляемых в конфигурацию объектов) должна содержаться следующая информация:
[Номер задачи], [Дата изменения]
Пример: Ф-037, 07.01.2020
Включение объектов в служебные подсистемы
В конфигурацию добавить подсистему «ВАШПРЕФИКС_Доработки». По желании с двумя подчинёнными подсистемами «НовыеОбъекты» и «ИзмененныеОбъекты», соответственно все новые объекты системы помещаются в них по правилу:
- все созданные новые объекты метаданных помещаются в «НовыеОбъекты»
- измененные объекты (даже если у типового объекта меняется форма) помещаются в «ИзмененныеОбъекты»
Создание или доработка Печатных форм, обработок, отчетов
Все доработки печатных форм создаются как «внешние», при необходимости переопределения стандартных команд, делаются соответствующие настройки уже в рабочей среде.
При создании или изменении отчетов системы, которые невозможно сделать настройкой варианта отчета. Создается внешний отчет и подключается к системе.
При создании обработок или модификации стандартных необходимо руководствоваться общим принципом – все, что можно надо делать внешними обработками, если это сделать нет возможности, то изменения вносятся с помощью расширений конфигурации
Включение объектов в состав типовых подсистем командного интерфейса
Если необходимо включить объект в состав типовой подсистемы командного интерфейса, то необходимо добавить в состав типовой подсистемы новую (если отсутствует) подсистему с префиксом «ВАШПРЕФИКС_». Дальнейшая настройка размещения объекта в командном интерфейсе должна выполняться в рамках добавленной подсистемы.
Комментирование изменений в коде
Изменения кода модулей должны реализовываться с помощью расширений модулей с вариантов процедуры «После» или «Вместо». Все изменения, вносимые в код модулей конфигурации должны обрамляться комментарием вида:
// + [Компания], [Программист] [Дата изменений]
// Задача: [Номер тех.задания или заявки], [Краткое описание изменений]
// Было:
// [закомментированный старый код]
// Стало:
[новый код]
// - [Компания], [Программист] [Дата изменений]
Например:
// + 1С, Иванов И.И. 07.01.2020
// Задача: Ф-037, Заполнение реквизитов формы по новому алгоритму
// Было:
// ПриЧтенииСозданииНаСервере();
// Стало:
ВАШПРЕФИКС_ПриЧтенииСозданииНаСервере();
// - 1С, Иванов И.И. 07.01.2020
Не нужно комментировать изменение, если код не типовой. Комментарий должны быть только для изменений относительно типового кода. При изменении ранее измененного куска кода необходимо изменить только дату изменения в комментарии.
Изменение ролей
Недопустимо изменение типовых ролей базовой конфигурации, при необходимости добавления/изменения настроек прав доступа, необходимо создать дополнительную роль с префиксом «ВАШПРЕФИКС_» и выполнить необходимые настройки прав для нее.
Если функционал, для которого настраиваются права доступа, имеет аналоги в базовой конфигурации, то рекомендуется создавать новые роли путем копирования существующих и затем настраивать в них права по аналогии с существующим функционалом.
В дальнейшем допускается модификация созданных ролей при необходимости.
Также при создании ролей необходимо придерживаться принципа «атомарности» ролей, т.е. не рекомендуется смешивать в одной роли права на не связанный друг с другом по смыслу функционал.
Назначение прав пользователей должно выполняться с использованием функционала профилей доступа из библиотеки стандартных подсистем.
Внесение изменений в общие модули
Если необходимо внести изменения в общие модули, то по возможности следует вносить изменения только в модули с суффиксом «*Переопределяемый».
Внесение изменений в обработчики событий форм
При необходимости внесения изменений в поведение обработчиков событий типовой формы, такие изменения необходимо вносить в общих модулях:
- МодификацияКонфигурацииВызовСервераПереопределяемый
- МодификацияКонфигурацииКлиентПереопределяемый
- МодификацияКонфигурацииКлиентСерверПереопределяемый
- МодификацияКонфигурацииПереопределяемый
в соответствующих процедурах-обработчиках.
При этом рекомендуется в процедурах обработчиках прописывать только вызовы процедур-обработчиков, добавленных в новые общие модули.
Добавление процедур необходимо реализовать в соответствующих расширениях, в которых уже расширен модуль.
Внесение изменений в обработчики событий объектов и менеджеров
В общем случае не допускается внесение изменений в типовые обработчики событий объектов и менеджеров.
Для таких изменений необходимо создавать соответствующие подписки на события.
Внесение изменений в состав источников типовых подписок на события
В общем случае не допускается внесение изменений в состав источников типовых подписок на события.
Вместо изменения типовой подписки необходимо:
- Создать новую подписку (можно скопировать существующую) с наименованием «ВАШПРЕФИКС_[ИмяТиповойПодписки]»
- Указать в качестве источника те объекты, которые необходимо добавить
- В качестве обработчика указать ту же процедуру, что и в типовой подписке или ссылаться на новую процедуру ( в которой будет ссылка на типовую).
Постоянные значения конфигурации
В коде конфигурации недопустимы прямые ссылки на наименования, коды и т.п. данных ИБ.
В большинстве случаев, когда требуется хранить и определять ссылку на условно-постоянные или постоянные данные, или набор данных в системе будет использоваться справочник «ВАШПРЕФИКС_НастройкиЗначений» (или Регистр сведений). Данный справочник будет состоять из элементов, с реквизитом «Имя для разработчика», по которому будет выполняться поиск элемента в коде (поиск реализовать через функцию модуля менеджера справочника). В режиме предприятия у каждого элемента можно будет задать значение или список значений (за счет наличия у элемента реквизита и ТЧ) в дальнейшем использовать значение элементов в коде программы.
Новые значения в Справочник.рздСпецНастройки описать и запрограммировать создание в форме списка справочника в команде [Заполнить по умолчанию].
Значение получать через Общий модуль повторного использования (На время сеанса) ОбщийМодуль.рздСпецНастройки.ПолучитьЗначение(...) по реквизиту ИмяДляРазработчика. И в самом справочнике ПриЗаписи обновляем кеш, если создается или меняется элемент ОбновитьПовторноИспользуемыеЗначения();.
Например: «Основной склад», «Направление деятельности по умолчанию», «Список приоритетных пользователей», «Дата перехода на новую номенклатуру» и т.п.
Работа с хранилищем конфигурации
Разработка ведется с использованием технологии хранилища конфигурации. С ней необходимо ознакомиться на сайте: http://its.1c.ru/db/metod8dev#content:2287:hdoc
При необходимости захвата коренного объекта хранилища, его необходимо удерживать как можно меньше.
При помещении изменений в хранилище не допускается помещать не работающий код или не компилируемую конфигурацию. Пример: помещение новой подписки на событие с не назначенной процедурой обработки события.
Рекомендуется при помещении измененных объектов в хранилище в соответствующем диалоге конфигуратора указывать в комментарии краткое описание характера изменений с точки зрения пользователя.
Создать общий чат разработчиков для решения вопросов захвата объектов.
Рекомендации по базе разработки
Разработку приоритетно вести в клиент-серверной базе. При разворачивании базы для разработки необходимо установить Блокировки регламентных заданий и/или отключить регламентные задания.
Поддержка пользователей [Alt+S] (подключаемое расширение) | Расширение, подключаемое к базе 1С для решения задач поддержки пользователей. Позволяет быстро (по кнопке или комбинации клавиш Alt+S), не выходя из программы 1С из любой формы, создать обращение к консультантам и программистам со скринами, файлами, в привязке к проблемному объекту (документу, справочнику, отчету, обработке и т.п.). Вести переписку по обращениям, отслеживать их выполнение с трудозатратами и уведомлять участников через механизмы: Telegram, Обсуждения 1С и Электронную почту. Код открыт и расширение может развиваться и быть доработано под индивидуальные потребности. |
Интерактивная справка [Alt+I] (подключаемое расширение) | Дополнительная справка, подключаемая к базе 1С. Содержит дерево разделов и статьи. Позволяет создавать статьи с картинками, прикреплять к ним файлы и видео, а также связывать статьи с объектами 1С (документам, справочникам, отчетам). Вызывается на динамически создаваемую кнопку панели либо быстрой комбинацией клавиш Alt+I. |
Защита объектов от изменения обменом | Расширение позволяет пользователю заблокировать объект 1С (документ, справочник) от изменения последующими загрузками данных или обменами. |
Доп. панель Alt+Z | Панель, вызываемая для объекта комбинацией клавиш Alt+Z (для документа, справочника, плана вида характеристик, плана счетов и т.д.). Возможности: Редактор всех реквизитов, таблиц и движений, Анализ прав к объекту, Поиск ссылок на объект с фильтрами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Подключается как Расширение. |
Создание стартовой базы | Часто требуется создать «Новую базу» почти пустую, но совпадающую с «Исходной базой» по необходимым обязательным настройкам: константам, регистрам сведений, справочникам, видам субконто и планами счетов и т.п., при этом уникальные идентификаторы объектов должны совпадать. |
Групповое добавление и удаление ролей из списка профилей | Подключаемая обработка. Помогает при конструировании профилей доступа пользователей (настройке прав пользователей), экономит время на добавлении/удалении одной и той же роли сразу в нескольких профилях. |
Интерактивная справка по объектам 1С (автономное расширение) | База знаний, подключаемая к объектам основной базы. Ведётся интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями. |
Значения по умолчанию для пользователей (Расширение) | При заполнении документов и справочников пользователи часто сталкиваются с необходимостью ввода одних и тех же реквизитов. Заполнение в документах некоторых из них, таких как: Организация, Склад и т.п. - выполняется реализованным в 1С механизмом подстановки значения из последних 3-5 введенных документов. Если же вы хотите заполнять все реквизиты шапки (и даты, и флажки, и другие поля, включая дополнительные реквизиты), то вам поможет данный механизм. |
Контекст любого объекта конструкцией #Если Фамилия Тогда | Делаем инициализацию переменной в "своей" инструкции препроцессора, для получения контекстной подсказки объекта через точку. В дальнейшем в компилированном коде сама инициализация игнорируется, т.к. "своя" инструкция препроцессора НИКОГДА не выполняется. |
Отключение Монитора ИТС и Проверки наличия обновления (расширение) | Некоторые интернет-сервисы базы 1С у пользователей вызывают замедления работы и клиенту не нужны. Их можно отключить через расширения. |
Памятка работ по проекту 1С | Схема работ по проекту внедрения 1С освежает в голове и визуализирует общую картину мероприятий. Будет полезно как для Заказчика так и для Исполнителя при подготовке проекта и проведении совещаний по ходу проекта. |
Использование Стека вызовов в качестве условия оператора Если [...] Тогда | Делюсь интересным приёмом, позволяющим использовать данные стека исполнения кода 1С в качестве условия, накладываемого на выполнение кода. |
Уведомление пользователей об изменениях в объектах (расширение) | Позволяет без доработок настроить уведомления пользователям об изменениях объектов и их реквизитов. Уведомления отправляются в виде задач по проверке объектов с ссылками на объекты. |
Права доступа к объектам с гибкими отборами (расширение) | Возможность без доработок конкретизировать пользователям права Просмотра и Изменения объектов базы 1С, установив ограничения с помощью отборов системы компоновки данных. |
Памятка работ по задаче 1С | Памятка выполняемых работ по решению длительных задач по 1С |
Применение программистом таблицы рисков для оценки технического задания | Я как программист часто получаю технические задания, по которым от меня хотят услышать оценку. Привожу описание метода оценки задания, заимствованный из проектной технологии, по которому я оцениваю тех. задания |
Добрый великан | Руководители проектов определяют наше настоящее, каким оно будет?! Ответ прост - таким, каким и сам РП. |
Настройка ограничений входа пользователей в базу (расширение) | Настраиваем для пользователей 1С разрешенное количество открытых сеансов к текущей базе данных 1С в привязке к компьютерам. (У пользователя не будет возможности превысить допустимое количество сеансов или зайти с чужого компьютера). |
Переход с партий и производства версии 2.1 на режимы 2.2 в 1С:ERP в середине года | В данной статье рассказано о практическом опыте ВЦ «Раздолье» в переводе работы клиентов в «1С:ERP Управление предприятием» на новые режимы: использование производства 2.2 и партионный учет версии 2.2 (далее режимы 2.2) после начала года, доработки изменения. |
БП 3.0, Закрытие месяца, Отключение проверок операций прошлых периодов | Расширение конфигурации, отключающее ошибки прошлых периодов, которые блокируют закрытие текущего месяца. Например, "Нарушена последовательность регламентных операций" и т.д. |
Проводим по БУ "на лету" | В базе ERP и КА есть форма тестировщика, которая автоматически получает из конфигурации полные тексты запросов формирования бухгалтерских проводок выбранного документа, даёт возможность модифицировать запрос и сразу проверить результат. |
Административная панель #расширение объекта | Панель команд текущего объекта (документа, справочника и т.д.) со следующим возможностями: Редактор реквизитов, таблиц и движений текущего объекта, Анализ прав доступа к текущему объекту, Поиск ссылок на объект с отборами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Реализована всплывающей панелью в форме объекта. Подключается как расширение конфигурации (*.cfe) либо отдельными обработками. |
Универсальный обмен данными XML (с гибкими отборами и сохранением вариантов настроек) |
Обработка предназначена для загрузки и выгрузки данных по правилам обмена в любых конфигурациях, реализованных на платформе 1С:Предприятие 8.3. Преимуществом перед типовой обработкой является добавленный функционал: #1. Установка произвольных фильтров на выгружаемые объекты при помощи механизма системы компоновки данных #2. Сохранение различных вариантов настроек (сохраняются правила обмена, фильтры выгрузки, параметры, настройки обработки) - что позволяет гибко настроить в базе-источнике фильтры для выгрузки объектов по различным правилам обмена для различных баз-приемников, сохранить выполненные настройки и в будущем уже пользоваться этими вариантами настроек. |
Обработка выгрузки и загрузки данных через XML между идентичными конфигурациями с возможностью установки произвольных отборов на выгружаемые объекты. |
|
Подключаемый отчет на системе компоновки данных по типам объектов 1С показывает: 1) Совокупности таблиц SQL для хранения объекта 1С и их предназначение; 2) Число объектов данного типа; 3) Размеры хранения данных и индексов в MB (мегабайтах); 4) Сравнение данных двух баз |
|
Запуск 1С под любым пользователем (без необходимости указания пароля) |
Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен). |
Если пользователю не хватает прав на объект, то на практике в 90 % случаев, недостающую роль можно найти через типовой регистр сведений Права ролей. Также с помощью дополнительного отчета или небольшого расширения можно ускорить описанный процесс. |
|
Онлайн диаграмма доступных лицензий 1С и показателей ресурсов сервера 1С в различных измерениях и отборах. |
|
Обработка ищет все объекты базы, в которых одновременно присутствуют перечисленные элементы. Построена на базе типовой обработки Все функции - Стандартные - Поиск ссылок на объект, но позволяет накладывать отбор не по одному объекту, а по нескольким, что позволяет настраивать поиск по комбинациям условий |
|
Структура подчиненности с хронологией документов и кнопками проведения и удаления |
Часто не хватает визуализации хронологии документов в структуре подчиненности и кнопок проведения. Это расширение конфигурации, с функционалом структуры подчиненности документов, отображающее хронологическую последовательность документов во времени и дающее доступ к проведению, отмене проведения, пометке на удаление документов непосредственно в форме подчиненности. |
Обработка для массовой проверки доработок конфигурации: Открытие форм, Печать, Формирование отчетов, Проведение документов, Запись справочников, ПВХ, ПВР. Выдает список обнаруженных ошибок. Рекомендуется применять для тестирования обновленной конфигурации, перед установкой пользователям. В коде используются универсальные методы поэтому подходит для большинства конфигураций, построенных на базе библиотеки стандартных подсистем. |
|
Групповая обработка ссылок вида Объект не найден (502:37855254002e11eb11e73b8f36150d9e) заполняется максимально просто копированием и вставкой из буфера: 1) Выделяет уникальные идентификаторы (далее УИ); 2) Ищет ссылки на объекты базы по УИ; 3) Создаёт пустые объекты с указанным УИ; 4) Регистрирует найденные ссылки для обмена данными. Работает на любых продуктах 8.3 |
|
Внешняя обработка (работает в обычном и управляемом интерфейсе). Пригодиться для работы с узлами распределенных баз данных: 1) Снимает замки блокировки конфигурации подчиненного узла или возвращает их. 2) Дает возможность подключить архив рабочей базы как подчиненный узел без создания образа. 3) Дает возможно синхронизировать конфигурации узлов вручную, если например есть ошибки обмена или размер конфигурации велик для передачи через сообщения обмена. Ситуации описаны в полном описании. Проверялось на платформе 8.1, 8.2, 8.3, для 1С:УПП, 1С:Розница, 1С:Бухгалтерия 1.6, 2.0, 3.0, 1С:ERP |
|
Обработка на управляемых формах для работы с календарями google, событиями календарей и контактами. |
|
Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет... |
|
Тест серверного оборудования на допустимое количество пользователей: как это использовать? |
Выполнил 3 разных теста для проверки серверного оборудования (тест 1С, тесты gilev) на возможное число 1С онлайн-пользователей одновременно работающих на нем и интерпретировал результаты тестов через легких, средних и тяжелых пользователей с помощью таблицы с профилями реальных пользователей. |
Перед началом проекта требуется определить параметры серверного и клиентского оборудования, необходимые для работы внедряемой программы 1С:Предприятие, и учесть будущую нагрузку, которая ляжет на систему в реальной рабочей обстановке. Мощность оборудования должна быть достаточной для нормальной работы пользователей. Но как подобрать сервер простым способом? |
|
На время сеанса отключаем контроль остатков и проверку документов в ERP, КА, УТ типовыми средствами и простым расширением. Часто при моделировании примеров бизнес-процессов, на запуске в эксплуатацию или закрытии требуется несколько раз прогнать ситуацию с разными настройками, а для этого изменить, удалить ранее введенную цепочку документов. Дается все это с трудом. Ты уверен, что не навредишь своими действиями системе, но документы цепляют друг друга и ругаются контролями остатков, не разрешая тебе менять их в произвольном порядке. Есть несколько удобных опций для облегчения внесения изменений. |
|
Огорчает один момент в типовых решениях, когда проводится документ, ругаясь на нехватку остатков, система не сообщает, по какому именно регистру проблема. Дополнив сообщения контроля названием регистра, можно уменьшить время расследования проблемы (исключив из процесса необходимость запуска программистом отладки в конфигураторе для выявления имени проблемного регистра). |
|
Для уведомления пользователей программных продуктов 1С о разных событиях, в них включена подсистема «Новостной центр». Это довольно удобная штука, т.к. новостные ленты сообщают о выходе обновлений, о новостях и событиях в сфере учёта. Но можно увеличить пользу от новостной подсистемы используя её локально в рамках 1С базы. Например, внутренняя служба техподдержки или внедряющая компания может через новостную ленту оповещать пользователей информационной базы об изменениях в программе, совещаниях, проведении тестирований, заполнения нужных документов или сдача отчетов к определенной дате и т.п. |
|
Пример технического задания для практического понимания основных разделов. |
|
Кратко описаны основополагающие моменты при старте групповой разработки конфигурации несколькими программистами. Полезно для проектной документации как требование к разработчикам или сопровождающей компании |
Ссылка на компетенции по 1С:ERP - команда со знаниями, умениями и успешными проектами.