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