Чек-лист помогает не забыть типовые настройки при создании новых объектов конфигурации. Примеры приведены для 1С:Бухгалтерии предприятия. В других конфигурациях набор объектов и настроек может отличаться.
- Шаблоны новых объектов 1С для 1С:Бухгалтерия предприятия
- Константы
- Документы
- Основные свойства
- Нумерация
- Проведение документа (Движения)
- Реквизиты документа
- Подразделение организации
- Контрагент
- Договоры контрагентов
- Ручная корректировка движений
- Функциональные опции
- Показ движений документа
- Структура подчиненности (Связанные документы)
- Роли
- Планы обмена (Работа в распределенной базе - РИБ)
- Печать
- Дополнительные отчеты и обработки
- Журналы документов
- Данные первичных документов
- Дата запрета изменения
- Модуль объекта
- Форма списка и Форма выбора
- Форма документа
- Дополнительные сведения
- Версионирование
- Присоединенные файлы
- Справочники
- Регистры сведений
- Регистры накопления
- Ссылка на Инфостарт
- Благодарность
-
Включить новую константу в план обмена "МиграцияПриложений". Авторегистрацию выключить.
-
Для работы в распределенной информационной базе включить константу в нужные подписки и планы обменов. Названия подписок обычно заканчиваются на "РегистрацияКонстанты", например, АвтономнаяРаботаРегистрацияКонстанты.
Константы:
-
АвтономнаяРаботаРегистрацияКонстанты
-
ПолныйРегистрацияКонстанты
-
ПоОрганизацииРегистрацияКонстанты
Планы обменов:
-
АвтономнаяРабота
-
Полный
-
ПоОрганизации
- Имя. Указывать в единственном числе, например ЗаказПокупателя, ПеремещениеТоваров, Анкета.
Подробнее в стандарте Имена объектов метаданных в конфигурациях
Ссылка на стандарт - Имена объектов метаданных в конфигурациях
Имена документов, напротив, даются в единственном числе. Например: ЗаказПокупателя, ПеремещениеТоваров, Анкета.
При этом следует избегать в именах документов слов, от удаления которых смысл не меняется, например: «Документ…».
При выборе имени документа следует различать два случая:
- В первую очередь, следует стараться отразить в имени документа суть процесса, который отражается в системе этим документом. При этом само имя должно быть максимально лаконичным, рекомендуется избегать слов «Накладная…», «Акт…» и т.п.
Например, в системе автоматизирован процесс «Сверка взаиморасчетов», который завершается подписанием сторонами, участвующими в сверке, печатного документа «Акт сверки товаров». Поскольку в данном случае в системе документом фиксируется именно процесс, то документ называется СверкаВзаиморасчетов.
- Если документ не отражает какой-либо процесс в системе, а предназначен только для получения соответствующей печатной формы, то допустимо образовывать имя документа от имени печатной формы. В этом случае допустимо использовать слова «Накладная», «Акт» и т.п. в имени документа. Как правило, у такого документа нет статусов, по нему не вводятся на основании другие документы, а сам процесс получения печатной формы может быть автоматизирован другими документами.
Например, для получения печатной формы «Товарно транспортная накладная» (ТТН) в системе имеется документ, который содержит реквизиты, специфичные для данного печатного документа. При этом поскольку весь процесс формирования ТТН связан с другими документами («Реализация товаров и услуг», «Перемещение товаров»), то документ целесообразно назвать от имени печатной формы: ТоварноТранспортнаяНакладная.
- Синоним. Заполнить обязательно. Формулировка должна кратко и понятно описывать объект.
Подробнее в стандарте Имя, синоним, комментарий
Ссылка на стандарт - Имя, синоним, комментарий
1.1. Синоним объекта должен быть определен так, чтобы осмысленно, лаконично описывать объект. Заполняется обязательно.
Данное требование продиктовано тем, что синонимы непосредственно участвуют в формировании пользовательского интерфейса (отображаются в формах, отчетах, командном интерфейсе и т.д.) и поэтому должны корректно и одинаково во всех местах пользовательского интерфейса идентифицировать ту сущность, к которой они относятся. Помимо объектов метаданных, требование распространяется также и на реквизиты объектов метаданных, табличные части, реквизиты табличных частей, измерения регистров, ресурсы и другие объекты конфигурации, у которых имеется синоним.
1.2. Не рекомендуется в синонимах объектов использовать сокращения. Исключением являются только общеупотребительные и соответствующие целевой аудитории сокращения (например, Сумма (регл.) ) и аббревиатуры (например, НДС или МСФО).
-
Комментарий. Не заполнять.
-
Представление объекта. Заполнять в единственном числе, например, Заказ покупателя или Реализация услуг. Не задавать, если совпадает с синонимом. Слова типа «Поступление», «Реализация», «Инвентаризация» использовать без изменения и для объекта, и для списка.
-
Представление списка. Заполнять во множественном числе, например, Заказы покупателя. Не задавать, если совпадает с синонимом. Слова типа «Поступление», «Реализация», «Инвентаризация» использовать без изменения и для объекта, и для списка.
Длина текста в командном интерфейсе (представление списка или синоним) должна быть не больше 38 символов. Лучше уложиться в 30 символов.
- Установить свойства документа:
- Тип номера - Строка
- Длина номера - 11
- Допустимая длина номера - Переменная
- Периодичность - В пределах года
- Контроль уникальности - Да
- Автонумерация - Да
- Включить документ в подходящий набор подписок. Для Бухгалтерии предприятия:
-
Если у документа есть реквизиты Организация и ПодразделениеОрганизации, включить в подписки:
- ПередЗаписьюДокументаПроверкаНомераПоДатеОрганизацииПодразделению
- УстановитьПрефиксИнформационнойБазыОрганизацииПодразделенияНомеруДокумента
-
Если у документа есть реквизит Организация, но нет реквизита ПодразделениеОрганизации, включить в подписки:
- ПередЗаписьюДокументаПроверкаНомераПоДатеИОрганизации
- УстановитьПрефиксИнформационнойБазыИОрганизацииНомеруДокумента
-
Если у документа нет реквизита Организация, включить в подписки:
- ПередЗаписьюДокументаПроверкаНомераПоДате
- УстановитьПрефиксИнформационнойБазыНомеруДокумента
- Установить свойства документа:
- Проведение - Разрешить, если документ формирует движения
- Оперативное проведение - Запретить
- Удаление движений - Не удалять автоматически
- Запись движений при проведении - Записывать выбранные
- Заполнение последовательностей - Не заполнять автоматически
- Привилегированный режим при проведении - Да
- Привилегированный режим при отмене проведении - Да
-
Документы, движения которых не удаляются автоматически, включить в подписку ПередЗаписьюДокументаДляУдаленияДвижений.
-
Документы, которые при формировании движений обращаются к данным других документов или регистров, включить в последовательность ДокументыОрганизации и в подписки:
- ЗарегистрироватьВПоследовательностиПередУдалением
- ЗарегистрироватьВПоследовательностиПриЗаписи
- ОтменитьРегистрациюПриОбменеПередЗаписью
-
Разделить подготовку данных и заполнение коллекции Движения. Код подготовки данных размещать в модуле менеджера, код заполнения коллекции Движения - в модуле менеджера или общем модуле. Перед заполнением коллекции Движения вызвать:
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);После заполнения вызвать:
ПроведениеСервер.УстановитьЗаписьОчищаемыхНаборовЗаписей(ЭтотОбъект); -
Для удаления движений добавить обработчик в модуле объекта документа ОбработчикУдаленияПроведения с кодом:
Процедура ОбработкаУдаленияПроведения(Отказ) ПроведениеСервер.ПодготовитьНаборыЗаписейКОтменеПроведения(ЭтотОбъект); Движения.Записать(); РаботаСПоследовательностями.ОтменитьРегистрациюВПоследовательности(ЭтотОбъект, Отказ); КонецПроцедуры -
Документ, который формирует движения, включить в подписку ПроверитьКорректностьДаты.
Подписка запрещает запись документов с датой ранее 2000 или позднее 2030 года.
- Значение заполнения. Указать значение по умолчанию, если оно есть: например, Курс = 1 или ВидОперации = Основной вид операции.
- Заполнять из данных заполнения. Установить Да, если реквизит нужно заполнять при создании документа из формы списка с установленными отборами.
- Проверка заполнения. Установить Выдавать ошибку, если хотя бы в одном сценарии реквизит обязателен.
Подробнее в стандарте Подсказка и проверка заполнения
Ссылка на стандарт - Подсказка и проверка заполнения 2.1. Свойство «Проверка заполнения». Для всех типизированных объектов метаданных, а также для стандартных реквизитов и табличных частей, которые в соответствии с логикой объекта являются обязательными к заполнению, свойство "Проверка заполнения" должно быть установлено в "Выдавать ошибку".
В ряде случаев проведение документа с незаполненными реквизитами и табличными частями не имеет смысла с точки зрения отражения документа в учете. Например, документ Заказ клиента является запросом клиента на поставку определенного количества товара. Из определения понятно, что методически заказ с незаполненным клиентом и незаполненной табличной частью Товары не имеет смысла, поэтому у реквизита Клиент и табличной части Товары свойство "Проверка заполнения" должно быть установлено в "Выдавать ошибку".
2.2. При установке свойства «Проверка заполнения» следует исходить из того, что все ограничения и проверки должны быть (насколько это возможно полно) описаны в метаданных конфигурации. Поэтому если хотя бы один из сценариев работы с объектом требует обязательного заполнения реквизита, то свойство «Проверка заполнения» устанавливается в «Выдавать ошибку». Если в других сценариях работы заполнять реквизит не обязательно, то такие случаи должны быть предусмотрены в обработчике события модуля объекта ОбработкаПроверкиЗаполнения.
При этом не следует придерживаться обратной схемы, когда свойство «Проверка заполнения» установлено в «Не проверять», а в обработчике ОбработкаПроверкиЗаполнения дописаны какие-либо проверки заполнения. Такая схема затрудняет анализ логики работы конфигурации.
2.3. Если проверка заполнения реквизита зависит от тех или иных условий, рекомендуется управлять автопометкой незаполненного значения с помощью условного оформления форм объектов. Убирать ее в случае, если при данном состоянии объекта заполнение реквизита проверять не требуется.
-
Связи параметров выбора. Заполнять, если значение реквизита зависит от других реквизитов документа. Например, для ДоговорКонтрагента задать связи: Отбор.Владелец(Контрагент), Отбор.Организация(Организация).
-
Параметры выбора. Заполнять, если значение ограничено заранее известными условиями отбора. Например, если можно выбрать только договор контрагента вида СПоставщиком, вид договора задается в параметрах выбора. Для счетов учета установить Отбор.ЗапретитьИспользоватьВПроводках(Ложь).
Если в документе есть реквизит ПодразделениеОрганизации, используемый только в версии КОРП, включить документ в подписку УстановитьПустоеПодразделениеПередЗаписьюДокумента.
Если в документе есть реквизит Контрагент:
-
Если из документа можно добавлять новых контрагентов, добавить обработчики событий АвтоПодбор, ОкончаниеВводаТекста, Создание, ОбработкаВыбора.
- Основной сценарий: при создании контрагента не используются Банк и НомерСчета.
&НаКлиенте Процедура КонтрагентАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) РаботаСКонтрагентамиБПКлиент.КонтрагентАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура КонтрагентОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка) РаботаСКонтрагентамиБПКлиент.КонтрагентОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура КонтрагентОбработкаВыбора(Элемент, ВыбранноеЗначение, ДополнительныеДанные, СтандартнаяОбработка) РаботаСКонтрагентамиБПКлиент.КонтрагентОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура КонтрагентСоздание(Элемент, СтандартнаяОбработка) РаботаСКонтрагентамиБПКлиент.КонтрагентСоздание(Элемент, Элемент.ТекстРедактирования, СтандартнаяОбработка); КонецПроцедуры- Если при создании контрагента нужно указать Банк и НомерСчета:
&НаКлиенте Процедура КонтрагентАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) РаботаСКонтрагентамиБПКлиент.КонтрагентАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура КонтрагентОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка) РаботаСКонтрагентамиБПКлиент.КонтрагентОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка); КонецПроцедуры &НаКлиенте Процедура КонтрагентОбработкаВыбора(Элемент, ВыбранноеЗначение, ДополнительныеДанные, СтандартнаяОбработка) РаботаСКонтрагентамиБПКлиент.КонтрагентОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка, ,Истина); КонецПроцедуры &НаКлиенте Процедура КонтрагентСоздание(Элемент, СтандартнаяОбработка) РаботаСКонтрагентамиБПКлиент.КонтрагентСоздание(Элемент, Элемент.ТекстРедактирования, СтандартнаяОбработка, ,Истина); КонецПроцедуры -
Чтобы документ отображался в списке документов по контрагенту (панель навигации формы контрагента, ссылка Документы), включить реквизиты документа с типом Справочник.Контрагенты в критерий отбора ДокументыПоКонтрагенту.
Если в документе есть реквизит ДоговорКонтрагента:
- Добавить этот документ в РаботаСДоговорамиКонтрагентовБП.ВидДоговораПоОбъекту
- Добавить реквизит "Договор контрагента" в состав функциональной опции ВестиУчетПоДоговорам
- Добавить код в модуль объекта в событии ПередЗаписью:
РаботаСДоговорамиКонтрагентовБП.ЗаполнитьДоговорПередЗаписью(ЭтотОбъект); - Чтобы документ отображался в списке документов по договору контрагента (панель навигации формы договора, ссылка Документы), включить реквизиты документа с типом Справочник.ДоговорыКонтрагентов в критерий отбора ДокументыПоДоговоруКонтрагента.
Для ручной корректировки движений:
- Добавить реквизит документа РучнаяКорректировка с типом Булево
- Включить документ в подписку на событие ПриКопированииДокументаСВозможностьюРучногоРедактирования
- В ОбработкаПроведения документа после вызова кода
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
добавить код:
Если РучнаяКорректировка Тогда
Возврат;
КонецЕсли;
Функциональные опции могут скрывать как весь документ, так и отдельные реквизиты.
-
Если документ не относится к основной функциональности, включить его в состав функциональной опции.
Возможно, опцию нужно добавить в Обработка.ФункциональностьПрограммы по аналогии с другими опциями.
-
Если используются реквизиты из списка ниже, включить их в состав функциональных опций:
| Реквизиты | Функциональные опции |
|---|---|
| Организация | ИспользоватьНесколькоОрганизацийБухгалтерскийУчет |
| ПодразделениеОрганизации | ВестиУчетПоПодразделениям |
| Склад | ИспользоватьНесколькоСкладовБухгалтерскийУчет |
| ВалютаДокумента, КурсВзаиморасчетов, КратностьВзаиморасчетов | ИспользоватьВалютныйУчет |
| БанковскийСчетОрганизации | ИспользоватьНесколькоБанковскихСчетовОрганизации |
| Ответственный | ИспользоватьНесколькоОтветственных |
| РучнаяКорректировка | ИспользоватьРучнуюКорректировкуДвижений |
| Патент, ДеятельностьНаПатенте | ПрименяетсяУСНПатент |
| СуммаНУ | ПлательщикНалогаНаПрибыль |
- Параметризуемые функциональные опции, например ПлательщикНалогаНаПрибыль или ПрименяетсяУСН, зависят от реквизитов Организация и Дата. Поэтому добавить вызов ОбщегоНазначенияБПКлиентСервер.УстановитьПараметрыФункциональныхОпцийФормыДокумента:
-
в обработчики инициализации реквизитов формы:
- ПриСозданииНаСервере (при условии Параметры.Ключ.Пустая)
- ПриЧтенииНаСервере
- ПослеЗаписиНаСервере
-
в обработчики изменения реквизитов, от которых зависят функциональные опции, например ПриИзмененииОрганизации
-
в обработчик изменения реквизита Дата При изменении даты обратить внимание на методы, которые выполняются на сервере контекстно.
Для таких вызовов проверять ОбщегоНазначенияБПКлиент.ТребуетсяВызовСервераПриИзмененииДатыДокумента.
Реквизит формы, передаваемый в параметр ПредыдущаяДата метода, назвать ТекущаяДатаДокумента (это дата, которой соответствуют остальные свойства формы).
Важно: метод не меняет значение этого реквизита формы. Это нужно сделать в форме после вызова метода, независимо от возвращенного результата.
ТребуетсяВызовСервера = ОбщегоНазначенияБПКлиент.ТребуетсяВызовСервераПриИзмененииДатыДокумента(Объект.Дата, ТекущаяДатаДокумента);
ТекущаяДатаДокумента = Объект.Дата;
Если Не ТребуетсяВызовСервера Тогда
Возврат;
КонецЕсли;
Для типовой команды показа движений по кнопке "ДтКт":
-
Включить документ в список типов параметра общей команды ПоказатьДвиженияДокумента.
-
В модуле формы объекта добавить в ОбработкаОповещения код:
ОбщегоНазначенияБПКлиент.ОбработкаОповещенияФормыДокумента(ЭтотОбъект, Объект.Ссылка, ИмяСобытия, Параметр, Источник);
- Чтобы показывать структуру подчиненности, включить документ в список типов параметра общей команды СвязанныеДокументы.
- Если документ может выбираться в реквизитах других документов, включить его в тип критерия отбора СвязанныеДокументы.
- Реквизиты документа со ссылками на другие документы включить в состав критерия отбора СвязанныеДокументы. Реквизиты документа типа СубконтоN в критерий отбора не включать.
Подробнее в документации БСП: Структура подчиненности
-
Включить документ в роли:
Роль Права ДобавлениеИзменениеДанныхБухгалтерии Все права, кроме: Удаление, Интерактивное удаление ПолныеПрава Все права, кроме: Интерактивное удаление ЧтениеДанныхБухгалтерии Только права: Чтение, Просмотр, Ввод по строке -
RLS - ограничение на уровне записей. Для документов дополнительно:
- Добавить документ в процедуру общего модуля УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа
- Добавить в определяемый тип ВладелецЗначенийКлючейДоступа ссылку ДокументСсылка.%ТипОбъекта%
- Добавить в определяемый тип ВладелецЗначенийКлючейДоступаДокумент объект ДокументОбъект.%ТипОбъекта%
- Добавить в модуль менеджера переопределяемый метод ПриЗаполненииОграниченияДоступа, в котором описать правила чтения и изменения для расчетной модели прав. Например,
#Область СтандартныеПодсистемы_УправлениеДоступом // См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа // Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт Ограничение.Текст = "РазрешитьЧтениеИзменение |ГДЕ | ЗначениеРазрешено(Организация)"; КонецПроцедуры #КонецОбласти- В форме документа в процедуру ПриЧтенииНаСервере добавить код:
// СтандартныеПодсистемы.УправлениеДоступом Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом-
Добавить в правах шаблоны RLS:
- В ДобавлениеИзменениеДанныхБухгалтерии добавить ограничения для Чтения, Добавление и Изменение
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда #ДляОбъекта("") #Иначе #ПоЗначениям("Документ.%ИмяДокумента%", "", "","Организации", "Организация", "","","","","","","","","","","","","","","","","","","","","","","","","","","","","","") #КонецЕсли - В ЧтениеДанныхБухгалтерии добавить ограничения для Чтения
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда #ДляОбъекта("") #Иначе #ПоЗначениям("Документ.%ИмяДокумента%", "", "","Организации", "Организация", "","","","","","","","","","","","","","","","","","","","","","","","","","","","","","") #КонецЕсли
- В ДобавлениеИзменениеДанныхБухгалтерии добавить ограничения для Чтения, Добавление и Изменение
-
Атомарные роли, адаптация по работе с неполным набором прав
В Бухгалтерии есть профили Менеджер по продажам и Кладовщик. Проверить, нужен ли документ этим профилям. Если нужен, добавить специальные роли Чтение%ИмяДокумента% и ДобавлениеИзменение%ИмяДокумента%.
- Стандарты по ограничению прав доступа:
- Настройка ролей и прав доступа
- Проверка прав доступа
- Безопасность прикладного программного интерфейса сервера
- Использование привилегированного режима
- Использование модулей с повторным использованием возвращаемых значений
- Разработка ролей в библиотеках
- Стандартные роли
- Установка прав для новых объектов и полей объектов
- Ограничения на использование ключевого слова "РАЗРЕШЕННЫЕ" в запросах
- Влияние изменения значений параметров сеанса и функциональных опций на производительность механизма ограничения доступа к данным
Включить документ в состав всех обменов РИБ и в соответствующие подписки на события. Авторегистрацию установить в Запретить.
| План обмена | Подписки |
|---|---|
| АвтономнаяРабота | АвтономнаяРаботаРегистрацияДокумента АвтономнаяРаботаРегистрацияУдаления |
| Полный | ПолныйРегистрацияДокумента ПолныйРегистрацияУдаления |
| ПоОрганизации | ПоОрганизацииРегистрацияДокумента ПоОрганизацииРегистрацияУдаления |
Документы с печатными формами подключить к механизму печати БСП:
- Добавить объект в процедуру УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати.
- В модуле менеджера добавить процедуру ДобавитьКомандыПечати, в ней описать все команды печати.
- Подключить все формы к подсистеме Подключаемые команды.
Подробнее в документации БСП: https://its.1c.ru/db/bsp301doc#content:53:hdoc
Включить документ в состав определяемых типов ОбъектСДополнительнымиКомандами.
Подробнее в документации БСП: Дополнительные отчеты и обработки
Новый документ (кроме служебных документов типа Документ расчетов с контрагентом или Партия) включить в журнал ЖурналОпераций. В остальные журналы включать по разделу учета, к которому относится документ.
Для возможности быстрого получения номера и даты документа в отчетах и печатных формах:
- Включить документ в тип измерения Документ регистра РегистрСведений.ДанныеПервичныхДокументов.
- Включить документ в подписку ЗарегистрироватьДанныеПервичныхДокументов.
Для подключения даты запрета изменения:
- Добавить в подписку ПроверитьДатуЗапретаИзмененияПередЗаписьюДокументаБП
- Добавить в подписку ПроверитьДатуЗапретаИзмененияПередУдалениемБП
- Добавить в процедуру ДатыЗапретаИзмененияБП.ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения
- Вставить в модуль формы объекта в процедуру обработчика события ПриЧтенииНаСервере вызов
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
Подробнее в документации БСП: Даты запрета изменения
-
В ОбработкаЗаполнения добавить вызов
ЗаполнениеДокументов.Заполнить(ЭтотОбъект, ДанныеЗаполнения); -
В ПриКопировании заменить значения отдельных реквизитов на актуальные, например:
Дата = НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя()); Ответственный = Пользователи.ТекущийПользователь();
1. Чтобы в Простом интерфейсе помеченные на удаление не отображались в списке документов, в форму списка и форму выбора добавить:
-
Добавить реквизит формы ОтслеживатьПометкуУдаления (Булево).
-
Добавить следующие обработчики (либо дополнить имеющиеся):
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ПомеченныеНаУдалениеСервер.СкрытьПомеченныеНаУдаление(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура СписокПриИзменении(Элемент) ПомеченныеНаУдалениеКлиент.ПриИзмененииСписка(ЭтотОбъект, Элемент); КонецПроцедуры &НаСервере Процедура СписокПередЗагрузкойПользовательскихНастроекНаСервере(Элемент, Настройки) ПомеченныеНаУдалениеСервер.УдалитьОтборПометкаУдаления(Настройки); КонецПроцедуры
-
В формах списка и выбора документа с ручной корректировкой движений:
- переопределить текст запроса динамического списка: добавить поле СостояниеДокумента
ВЫБОР КОГДА ДанныеСписка.РучнаяКорректировка ТОГДА ВЫБОР КОГДА ДанныеСписка.ПометкаУдаления ТОГДА 10 КОГДА НЕ ДанныеСписка.Проведен ТОГДА 9 ИНАЧЕ 8 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ДанныеСписка.ПометкаУдаления ТОГДА 2 КОГДА ДанныеСписка.Проведен ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК СостояниеДокумента,- указать это поле в свойстве ПутьКДаннымКартинкиСтроки таблицы
- указать общую картинку в свойстве КартинкаСтрок
-
Над списком разместить новую пустую группу ГруппаБыстрыеОтборы (свойство группы «группировка» - Горизонтальная) и указать ее в свойстве табличного поля. Автоматически создаваемую группу с отборами (СписокКомпоновщикНастроекПользовательскиеНастройки) переименовать в ГруппаДополнительныеОтборы.
-
Чтобы корректно работал отбор по основной организации, добавить в настройки динамического списка отбор по организации. В обработчиках формы должны быть вызовы:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбщегоНазначенияБПВызовСервера.УстановитьОтборПоОсновнойОрганизации(ЭтотОбъект); КонецПроцедуры: &НаСервере Процедура ОбработкаОповещения(ИмяСобытия, Параметр) Если ИмяСобытия = "ИзменениеОсновнойОрганизации" Тогда ОбщегоНазначенияБПКлиент.ИзменитьОтборПоОсновнойОрганизации(Список, ,Параметр); КонецЕсли; КонецПроцедуры: &НаСервере Процедура СписокПередЗагрузкойПользовательскихНастроекНаСервере(Элемент, Настройки) ОбщегоНазначенияБП.ВосстановитьОтборСписка(Список, Настройки, "Организация"); КонецПроцедуры -
Колонки в списках:
- Для сумм и количества указать ширину 10.
- Заголовок колонки должен полностью помещаться в шапку.
- Для колонок с бухгалтерскими счетами установить Растягивать по горизонтали - Нет.
- Дату выводить без времени. Формат колонки Дата - ДЛФ=D, ширина колонки - 7.
- Заголовки колонок выравнивать по содержанию, например, суммы - по правому краю.
- Командную панель переделать в группу, чтобы сохранить правильный порядок с группой отборов по организации. См. пример в форме списка Документ.СчетНаОплату.
-
В форме проводимого документа добавить реквизит СостояниеДокумента (Число, 10, 0) и связанное поле картинки после даты.
- Для поля установить ВертикальноеПоложениеВГруппе = Центр. Можно скопировать реквизит и поле из ранее созданной формы.
- Добавить вызов
ОбщегоНазначенияБП.СостояниеДокумента()в обработчики инициализации реквизитов формы. Пример:СостояниеДокумента = СостояниеДокумента(Объект);- ПриСозданииНаСервере (при условии Параметры.Ключ.Пустая)
- ПриЧтенииНаСервере
- ПослеЗаписиНаСервере:
-
Поля Комментарий и Ответственный размещать горизонтально, если возможно.
-
Колонки в табличных частях:
- Для сумм и количества указать ширину 10.
- Для Номер строки указать ширину 3.
- Заголовок колонки должен полностью помещаться в шапку.
- Для колонок с бухгалтерскими счетами установить Растягивать по горизонтали - Нет.
- Дату выводить без времени. Формат колонки Дата - ДЛФ=D, ширина колонки - 7.
- Заголовки колонок выравнивать по содержанию, например, суммы - по правому краю.
- Командную панель переделать в группу, чтобы сохранить правильный порядок с группой отборов по организации. См. пример в форме списка Документ.СчетНаОплату.
-
Включить документ в определяемый тип ВладелецДополнительныхСведений
-
Настроить набор свойств объектов
- В процедуре УправлениеСвойствамиПереопределяемый.ПриПолученииПредопределенныхНаборовСвойств описать предопределенный набор свойств с именем по шаблону Документ_<ИмяОбъекта>, например, Документ_АвансовыйОтчет, а также указать уникальный идентификатор. Здесь можно получить уникальный идентификатор, например:
Набор = Наборы.Строки.Добавить(); Набор.Имя = "Справочник_ВнешниеПользователи"; Набор.Идентификатор = Новый УникальныйИдентификатор("<УникальныйИдентификатор>"); -
Для объектов, входящих в состав функциональных опций, выполнить требования раздела Отключение неиспользуемых наборов свойств
-
Настроить характеристики документа по образцу из документации БСП: Подсистема Свойства, раздел Настройка дополнительных характеристик объектов метаданных
Включить документ:
- В состав определяемых типов ВерсионируемыеДанные
- В подписку ЗаписатьВерсиюДокументаБП
- В код менеджера и форм нужно добавить фрагменты из инструкции по встраиванию подсистемы.
Подробнее в документации БСП: Версионирование объектов
Присоединенные файлы нужны, если документ может поступать от сторонней организации или создаваться на основе рукописных документов (служебных записок и т.п.) либо внешних файлов.
Подключать по инструкции БСП. Для хранения файлов создать отдельный справочник.
-
Создать справочник для хранения присоединенных файлов. Можно скопировать существующий справочник ПоступлениеТоваровУслугПрисоединенныеФайлы по шаблону:
<Префикс>ПрисоединенныеФайлы, где<Префикс>- имя объекта метаданных, для которого настраиваются присоединенные файлы. Задать синоним, например: Присоединенные файлы (Поступление (акт, накладная)). -
У реквизита ВладелецФайла установить тип – «объект с файлами». Например, ДокументСсылка.ПоступлениеТоваровУслуг.
-
Включить в состав определяемых типов ПрисоединенныйФайл (ссылки) и ПрисоединенныйФайлОбъект (объекты) справочник, созданный на шаге 1. Например, ДокументСсылка.ПоступлениеТоваровУслугПрисоединенныеФайлы.
-
Расширить состав определяемых типов ВладелецПрисоединенныхФайлов (ссылки), добавив в него тип «объект с файлами». Например ДокументСсылка.ПоступлениеТоваровУслуг.
-
Расширить состав типов свойства Источник у подписки ПереопределитьПолучаемуюФормуПрисоединенногоФайла, включив в него тип – справочник с файлами, созданный на шаге 1. Например, СправочникМенеджер.ПоступлениеТоваровУслугПрисоединенныеФайлы.
-
Расширить состав типов свойства Источник подписки УстановитьПометкуУдаленияПрисоединенныхФайловДокументов, включив в него тип – «объект с файлами» (только документы). Например, ДокументОбъект.ПоступлениеТоваровУслуг.
-
Если при интерактивном копировании объекта нужно автоматически копировать присоединенные файлы в новый объект, в форме объекта:
- в параметры формы добавить ключевой параметр ЗначениеКопирования такого же типа, как и сам объект;
- в модуле формы в процедуру ПриЗаписиНаСервере вставить код:
ПрисоединенныеФайлы.ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры); -
Подписка на событие получения формы называется у нас "ПереопределитьПолучаемуюФормуПрисоединенногоФайла"
-
Отобразить скрепку в списке
-
Дополнительно к инструкции БСП:
- для нового справочника присоединенных файлов выполнить шаблон нового справочника, включая регистрацию в планах обмена
- включить новый справочник в подсистему ПрисоединенныеФайлыБП
- добавить в команду ПрисоединенныеФайлыБП
- корректно разместить кнопку с этой командой на панели формы
- Имена, синонимы и представления должны соответствовать стандартам:
-
Комментарий - не заполнять.
-
Представление объекта - в единственном числе.
-
Представление списка - во множественном числе. Не задавать, если совпадает с синонимом.
-
Свойства реквизитов справочника:
- Значение заполнения - можно задать известное значение по умолчанию, например: СтавкаНДС = НДС18.
- Заполнять из данных заполнения - Да, если при создании нового элемента справочника из формы списка с установленными отборами реквизит нужно заполнить значением отбора.
- Проверка заполнения - Выдавать ошибку, если хотя бы в одном сценарии реквизит обязателен. См. стандарты:
- Связи параметров выбора - заполнять, если значение реквизита зависит от других реквизитов.
- Параметры выбора - заполнять, если значение ограничено заранее известными условиями отбора.
Если код справочника не имеет прикладного смысла, лучше его не использовать: задать длину кода 0. Если код нужен, принципы кодирования определяются прикладным смыслом. Например, код справочника ГосКонтракты - это уникальный номер контракта, длина кода 25 символов.
Если справочник не относится к основной функциональности, включить его в состав нужных функциональных опций. При необходимости включить в функциональные опции отдельные реквизиты справочника и его табличных частей.
Если в справочнике есть реквизит ПодразделениеОрганизации, используемый только в версии КОРП, включить справочник в подписку УстановитьПустоеПодразделениеПередЗаписьюСправочника.
- Набор ролей у справочника зависит от его назначения. Ни у одной роли не должно быть прав:
- Интерактивное удаление
- Интерактивное удаление предопределенных
- Интерактивная пометка удаления предопределенных
- Интерактивное снятие пометки удаления предопределенных
- Интерактивное удаление помеченных предопределенных.
-
Если справочник доступен для просмотра и редактирования всем пользователям, включить его в роли: | Роль | Права | | ---- | ----- | | ДобавлениеИзменениеДанныхБухгалтерии | Все права, кроме: Удаление, Интерактивное удаление, Интерактивная пометка удаления предопределенных, Интерактивное снятие пометки удаления предопределенных, Интерактивное удаление помеченных предопределенных| | ПолныеПрава | Все права, кроме: Интерактивное удаление, Интерактивное удаление предопределенных, Интерактивная пометка удаления предопределенных, Интерактивное снятие пометки удаления предопределенных, Интерактивное удаление помеченных предопределенных| | ЧтениеДанныхБухгалтерии | Только права: Чтение, Просмотр, Ввод по строке |
-
Если справочник содержит классификаторы или другие поставляемые данные, которые обновляются автоматически и в модели сервиса меняются только централизованно, включить его в роли: | Роль | Права | | ---- | ----- | | АдминистраторСистемы | Все права, кроме: Интерактивное удаление, Интерактивное удаление предопределенных, Интерактивная пометка удаления предопределенных, Интерактивное снятие пометки удаления предопределенных, Интерактивное удаление помеченных предопределенных| | ДобавлениеИзменениеДанныхБухгалтерии | Только права: Чтение, Просмотр, Ввод по строке | | ПолныеПрава | Только права: Чтение, Просмотр, Ввод по строке | | ЧтениеДанныхБухгалтерии | Только права: Чтение, Просмотр, Ввод по строке |
-
RLS устанавливается на справочники, подчиненные организациям, или справочники с реквизитом Организация:
- Добавить справочник в переопределяемый модуль УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа
- Добавить в модуль менеджера переопределяемый метод ПриЗаполненииОграниченияДоступа, в котором описать правила чтения и изменения для расчетной модели прав.
- Добавить в определяемый тип ВладелецЗначенийКлючейДоступа СправочникСсылка.%ТипОбъекта%
- Добавить в определяемый тип ВладелецЗначенийКлючейДоступаОбъект СправочникОбъект.%ТипОбъекта%
- В процедуру ПриЧтенииНаСервере формы элемента (если есть) добавить код:
// СтандартныеПодсистемы.УправлениеДоступом Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом
Справочники с печатными формами подключить к механизму печати БСП (см. Печать).
Для поддержки дополнительных печатных форм добавить справочник в тип параметра команды ДополнительныеПечатныеФормыОбъекта. Подробнее в документации БСП: https://its.1c.ru/db/bsp301doc#content:53:hdoc
Если изменения элементов справочника должны автоматически синхронизироваться между узлами распределенной базы, включить справочник в планы обменов РИБ и соответствующие подписки на события. Свойство Авторегистрация планов обмена установить в Запретить.
| План обмена | Подписки |
|---|---|
| АвтономнаяРабота | АвтономнаяРаботаРегистрация, АвтономнаяРаботаРегистрацияУдаления |
| Полный | ПолныйРегистрация, ПолныйРегистрацияУдаления |
| ПоОрганизации | ПоОрганизацииРегистрация, ПоОрганизацииРегистрацияУдаления |
Включить справочник:
- В состав определяемых типов ВерсионируемыеДанные
- В подписку ЗаписатьВерсиюДокументаБП
- В код менеджера и форм нужно добавить фрагменты из инструкции по встраиванию подсистемы.
Подробнее в документации БСП: Версионирование объектов
Чтобы в Простом интерфейсе помеченные на удаление не отображались в списке, в форму списка и форму выбора добавить:
-
Добавить реквизит формы ОтслеживатьПометкуУдаления (Булево).
-
Добавить следующие обработчики (либо дополнить имеющиеся):
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ПомеченныеНаУдалениеСервер.СкрытьПомеченныеНаУдаление(ЭтотОбъект); КонецПроцедуры &НаКлиенте Процедура СписокПриИзменении(Элемент) ПомеченныеНаУдалениеКлиент.ПриИзмененииСписка(ЭтотОбъект, Элемент); КонецПроцедуры &НаСервере Процедура СписокПередЗагрузкойПользовательскихНастроекНаСервере(Элемент, Настройки) ПомеченныеНаУдалениеСервер.УдалитьОтборПометкаУдаления(Настройки); КонецПроцедуры
- Имена, синонимы и представления должны соответствовать стандартам:
-
Комментарий - не заполнять.
-
Представление записи - в единственном числе.
-
Представление списка - во множественном числе. Не задавать, если совпадает с синонимом.
-
Свойства реквизитов регистра - Под «реквизитами» в этом пункте понимаются измерения, ресурсы и собственно реквизиты регистра:
- Значение заполнения - можно задать известное значение по умолчанию, например: СтавкаНДС = НДС18.
- Заполнять из данных заполнения - Да, если при создании новой записи независимого регистра сведений из формы списка с установленными отборами реквизит нужно заполнить значением отбора.
- Проверка заполнения - Выдавать ошибку, если хотя бы в одном сценарии реквизит обязателен. См. стандарты:
- Связи параметров выбора - заполнять, если значение реквизита зависит от других реквизитов.
- Параметры выбора - заполнять, если значение ограничено заранее известными условиями отбора.
Если в регистре есть измерение ПодразделениеОрганизации, которое используется только в версии КОРП, включить регистр в подписку УстановитьПустоеПодразделениеПередЗаписьюНабораЗаписей.
- В командный интерфейс включаются только независимые регистры сведений
- Регистры, подчиненные регистратору, в интерфейс не выводятся
- Регистр должен входить минимум в одну подсистему с флагом «Включать в командный интерфейс».
- Видимость регистра в командном интерфейсе по умолчанию можно выключить.
Если регистр выводится в командный интерфейс и не относится к основной функциональности, включить его в состав нужных функциональных опций. При необходимости включить в функциональные опции отдельные измерения, ресурсы и реквизиты регистра.
- Набор ролей у регистра зависит от его назначения. Если регистр доступен для просмотра и редактирования всем пользователям, включить его в роли:
- ДобавлениеИзменениеДанныхБухгалтерии
- ПолныеПрава
- ЧтениеДанныхБухгалтерии
| Роль | Права |
|---|---|
| ДобавлениеИзменениеДанныхБухгалтерии | Все права, кроме Управление итогами |
| ПолныеПрава | Все права |
| ЧтениеДанныхБухгалтерии | Только права: Чтение, Просмотр |
Если регистр содержит классификаторы или другие поставляемые данные, которые обновляются автоматически и в модели сервиса меняются только централизованно, включить его в роли:
- АдминистраторСистемы
- ДобавлениеИзменениеДанныхБухгалтерии
- ПолныеПрава
- ЧтениеДанныхБухгалтерии
| Роль | Права |
|---|---|
| АдминистраторСистемы | Все права |
| ДобавлениеИзменениеДанныхБухгалтерии | Права: Чтение, Просмотр |
| ПолныеПрава | Права: Чтение, Просмотр |
| ЧтениеДанныхБухгалтерии | Права: Чтение, Просмотр |
- RLS устанавливается на регистры, у которых есть измерение или реквизит Организация. Для регистров, участвующих в RLS, дополнительно:
-
Создать предопределенный элемент в справочнике ИдентификаторыОбъектовМетаданных с именем РегистрСведений%ИмяРегистра%, где %ИмяРегистра% - имя регистра в конфигураторе
-
Добавить его в переопределяемый модуль УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа
-
Добавить в модуль менеджера переопределяемый метод ПриЗаполненииОграниченияДоступа, в котором описать правила чтения и изменения для расчетной модели прав.
-
Добавить в определяемый тип ВладелецЗначенийКлючейДоступаНаборЗаписей РегистрСведенийНаборЗаписей.%ТипОбъекта%
-
В процедуру ПриЧтенииНаСервере формы элемента (если есть) добавить код:
// СтандартныеПодсистемы.УправлениеДоступом Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом
Включить периодический регистр сведений:
- в подписку ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписей
- в процедуру ДатыЗапретаИзмененияБП.ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения
Подробнее в документации БСП: Даты запрета изменения
- Если изменения записей регистра должны автоматически синхронизироваться между узлами распределенной базы, включить регистр в состав всех обменов РИБ и в соответствующие подписки на события. Свойство Авторегистрация планов обмена установить в Запретить.
- Включить регистр в подписки:
| План обмена | Подписки |
|---|---|
| АвтономнаяРабота | АвтономнаяРаботаРегистрацияНабора |
| Полный | ПолныйРегистрацияНабора |
| ПоОрганизации | ПоОрганизацииРегистрацияНабора |
- Имена, синонимы и представления должны соответствовать стандартам:
- Комментарий - не заполнять.
- Представление списка - во множественном числе. Не задавать, если совпадает с синонимом.
- Добавить новый регистр в комплексные роли:
- ДобавлениеИзменениеДанныхБухгалтерии
- ПолныеПрава
- ЧтениеДанныхБухгалтерии
| Роль | Права |
|---|---|
| ДобавлениеИзменениеДанныхБухгалтерии | Все права, кроме Управление итогами |
| ПолныеПрава | Все права |
| ЧтениеДанныхБухгалтерии | Только права: Чтение, Просмотр |
-
RLS устанавливается на регистры, у которых есть измерение Организация. Для регистров, участвующих в RLS, дополнительно:
-
Создать предопределенный элемент в справочнике ИдентификаторыОбъектовМетаданных с именем РегистрНакопления%ИмяРегистра%, где %ИмяРегистра% - имя регистра в конфигураторе
-
Добавить его в переопределяемый модуль УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа
-
Добавить в модуль менеджера переопределяемый метод ПриЗаполненииОграниченияДоступа, в котором описать правила чтения и изменения для расчетной модели прав.
-
Добавить в определяемый тип ВладелецЗначенийКлючейДоступаНаборЗаписей РегистрНакопленияНаборЗаписей.%ТипОбъекта%
-
В процедуру ПриЧтенииНаСервере формы элемента (если есть) добавить код:
// СтандартныеПодсистемы.УправлениеДоступом Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом
-
Включить регистр:
- в подписку ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписей
- в процедуру ДатыЗапретаИзмененияБП.ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения
Подробнее в документации БСП: Даты запрета изменения
- Если изменения записей регистра должны автоматически синхронизироваться между узлами распределенной базы, включить регистр в состав всех обменов РИБ и в соответствующие подписки на события. Свойство Авторегистрация планов обмена установить в Запретить.
- Включить регистр накопления в подписки:
| План обмена | Подписки |
|---|---|
| АвтономнаяРабота | АвтономнаяРаботаРегистрацияНабора |
| Полный | ПолныйРегистрацияНабора |
| ПоОрганизации | ПоОрганизацииРегистрацияНабора |
Статья также доступна на - https://infostart.ru/1c/articles/2008914/
Если статья была полезна или вы хотите поддержать автора, можно купить мне кофе.



