Документы
Основные свойства
- Имя. Имя дается в единственном числе, например ЗаказПокупателя, ПеремещениеТоваров, Анкета.
- Синоним. Синоним объекта должен быть определен так, чтобы осмысленно, лаконично описывать объект. Заполняется обязательно
- Комментарий. При добавлении нового объекта в обязательном порядке требуется указать в комментарии причину добавления. Подробнее в Префикс и комментарии.
- Представление объекта. Заполняется в единственном числе, например, Заказ покупателя или Реализация услуг. Представления объекта не задается, если совпадает с синонимом. Слова типа «Поступление», «Реализация», «Инвентаризация» используются без изменения и для объекта, и для списка
- Представление списка. Заполняется во множественном числе, например, Заказы покупателя. Представления списка не задается, если совпадает с синонимом. Слова типа «Поступление», «Реализация», «Инвентаризация» используются без изменения и для объекта, и для списка Длина свойства, которое отображается в командном интерфейсе (Представление списка или синоним) должна быть не более 38 символов. Идеально, если они уместятся в 30 символов. Подробнее в стандарте по Имя, синоним, комментарий.
Проведение документа
Если в конфигурации проведение реализовано через учетные механизмы тогда нужно придерживаться данного подхода. Описание:
В других случаях использовать проведение из БПР, описано в разделе “Проведение документов“.
Если новый документ не предполагает движений все равно доба вляем каркас проведения согласно БПРили механизмам проведения описанных выше.
Необходимо установить свойства документа:
- Оперативное проведение - Запретить
Удаление движений
Приоритет отдается режиму "Не удалять автоматически". В этом случае требуется реализация собственного кода удаления движений через обработчики событий. В типовых конфигурациях 1С это делается через вызов метода "ПроведениеДокументов.ПриЗаписиДокумента" в событие ПриЗаписи. Такой подход оптимален по производительности и гибкости логики. Актуально для конфигураций в которых реализация проведения идет через учетные механизмы.
-
Проведение документов нужно выстраивать на типовых учетных механизмах. Это модуль ПроведениеДокументов. Для единообразия сразу использовать отмену проведения данного модуля.
-
Исключить ситуацию, когда может появиться отмена проведения при записи (например, связанная с записями в регистры сведений) и при этом стоит режим автоматического удаления, получится двойная очистка, лишние затраты ресурсов , увеличение транзакции.
Режим "Удалять автоматически при отмене проведения" хорош для баланса скорости работы и объёма данных. Дополнительные блокировки только при отмене проведений.
Режим "Удалять автоматически" может приводить к проблемам из-за увеличения длительности транзакций т.к блокировка данных будет дольше по времени. Его имеет смысл использовать только при крайней необходимости.
Материалы:
Префиксация
Новый документ должен иметь префиксацию также как и типовые документы.
Пример решение: cоздать подписку на события рздПриУстановкеНовогоНомераДокументаПоОрганизации метод ПрефиксацияОбъектовСобытия.УстановитьПрефиксИнформационнойБазыИОрганизации (метод может отличаться в типовых конфигурациях).
Также создать подписку рздПроверитьНомерДокументаПоДатеИОрганизации событие ПередЗаписью на метод ПрефиксацияОбъектовСобытия.ПроверитьНомерДокументаПоДатеИОрганизации
БСП
Новый документ должен быть подключен к следующему функционалу:
-
Подключаемые команды (форма документа и списка)
Методы должны располагаться в области СлужебныеПроцедурыИФункции внутри области ПодключаемыеКоманды
-
Отчет о движениях документа (проверить после п.1 что он появился)
-
-
(Старый вариант) Создать подписку на событие рздЗаписатьВерсиюДокумента на метод ВерсионированиеОбъектовСобытия.ЗаписатьВерсиюДокумента (уточнить по документации)
-
(Новый вариант, если не использовался старый)Расширить определяемый ти ВерсионируемыеДанныеОбъект для работы подписок.
-
Расширить определяемый тип ВерсионируемыеДанные
-
-
-
Создать подписку на событие для документов рздПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента на метод ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента
-
Создать подписку на событие для документов рздПроверитьДатуЗапретаИзмененияПередУдалениемна метод ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередУдален ием
-
В методе рздМодификацияКонфигурацииСервер.ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения реализовать заполнение для нового документа. Методы уточнить в документации
-
Также подключаем типовую блокировку форм, см. регламентБлокировка форма. Указываем тип нашего документа в рздБлокировкаИзмененияОбъектовПовтИсп.ДоступныТиповыеБлокировки.
-
-
- Если сам документ может быть выбран в реквизитах других документов – документ необходимо включить в тип критерия отбора СвязанныеДокументы.
- Реквизиты документа, содержащие ссылки на другие документы, необходимо включить в состав критерия отбора СвязанныеДокументы При этом реквизиты документа типа СубконтоN в состав критерия отбора не включаются.
- Если в конфигурации (ЗУП, БП) нет отчета связанные документы тогда для возможности показа структуры подчиненности документ необходимо включить в список типов параметра общей команды Связанны еДокументы.
Формы
Формы документов должны придерживаться регламенту по разработке управляемых форм.
- Разделять реквизиты шапки и табличных частей на отдельные вкладки: Основное (реквизиты шапки), Товары (табличная часть товары)
- У страницы с табличной частью должно быть заполнено свойство ПутьКДаннымЗаголовка (Объект.Товары.КоличествоСтрок)
- Функционал подбора включается в разработку по умолчанию, вне зависимости от наличия указания в техническом задании, если иное не оговорено отдельно.
Реквизиты
Стандартному реквизиту Номер длину устанавливать 11.
Документ должен содержать следующие реквизиты:
-
Организация (как минимум для префиксации и РЛС)
-
Комментарий
-
Ответственный
Значение заполнения. Заполняется значением по умолчанию, например, Курс = 1 или ВидОперации = Основной вид операции.
Заполнять из данных заполнения. Да, если требуется заполнить реквизит при создании нового документа из формы списка с установленными отборами.
Проверка заполнения. Выдавать ошибку, если хотя бы в одном сценарии требуется обязательное заполнение реквизита.
Связи параметров выбора. Заполняется, если значение реквизита зависит от значений других реквизитов документа, например: для ДоговорКонтрагента задаются связи: Отбор.Владелец(Контрагент), Отбор.Организация(Организация).
Параметры выбора. Заполняется, если значение ограничено заранее известными условиями отбора, например, если ДоговорКонтрагента можно выбрать только вида СПоставщиком – вид договора задается в параметрах выбора. Для счетов учета устанавливается Отбор.ЗапретитьИспользоватьВПроводках(Ложь).
Обработка заполнения
Реквизиты по умолчанию должны заполняться в обработке заполнения (например, ответственный).
Роли
На документ должны быть созданы роли согласно регламенту “Роли“.
RLS
В зависимости от проекта и требований по RLS выполнить необходимые действия: Для документов нужно дополнительно выполнить следующее:
- Добавить в процедуру общего модуля УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа
- Добавить в определяемый тип ВладелецЗначенийКлючейДоступа ссылку - ДокументСсылка.%ТипОбъекта%
- Добавить в определяемый тип ВладелецЗначенийКлючейДоступаДокумент объект - ДокументОбъект.%ТипОбъекта%
- Добавить в модуль менеджера переопределяемый метод ПриЗаполненииОграниченияДоступа, в котором описать правила чтения и изменения для расчетной модели прав. Например,
#Область СтандартныеПодсистемы_УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)";
КонецПроцедуры
#КонецОбласти
- В форме документа в процедуру ПриЧтенииНаСервере добавить код
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
- Добавить в правах шаблоны RLS:
- В ДобавлениеИзменениеДанныхБухгалтерии следует добавить ограничения для Чтения, Добавление и Изменение
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям("Документ.%ИмяДокумента%",
"", "","Организации", "Организация",
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","")
#КонецЕсли
- В ЧтениеДанныхБухгалтерии следует добавить огаринчения для Чтения
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям("Документ.%ИмяДокумента%",
"", "","Организации", "Организация",
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","")
#КонецЕсли
Подсистемы
Новый объект должен быть размещен в подсистемы согласно регламенту “Подсистемы“. Если в техническом решении не прописано пользовательское размещение тогда объект добавляется только в служебную подсистему.
Специфика по конфигурациям
ЗУП
-
Оперативное проведение = Запретить
-
Формат стандартного реквизита Дата: ДЛФ=D. Ширина элемента на форме = 9