Skip to main content

Документы

Основные свойства

  1. Имя. Имя дается в единственном числе, например ЗаказПокупателя, ПеремещениеТоваров, Анкета.
  2. Синоним. Синоним объекта должен быть определен так, чтобы осмысленно, лаконично описывать объект. Заполняется обязательно
  3. Комментарий. При добавлении нового объекта в обязательном порядке требуется указать в комментарии причину добавления. Подробнее в Префикс и комментарии.
  4. Представление объекта. Заполняется в единственном числе, например, Заказ покупателя или Реализация услуг. Представления объекта не задается, если совпадает с синонимом. Слова типа «Поступление», «Реализация», «Инвентаризация» используются без изменения и для объекта, и для списка
  5. Представление списка. Заполняется во множественном числе, например, Заказы покупателя. Представления списка не задается, если совпадает с синонимом. Слова типа «Поступление», «Реализация», «Инвентаризация» используются без изменения и для объекта, и для списка Длина свойства, которое отображается в командном интерфейсе (Представление списка или синоним) должна быть не более 38 символов. Идеально, если они уместятся в 30 символов. Подробнее в стандарте по Имя, синоним, комментарий.

Проведение документа

Если в конфигурации проведение реализовано через учетные механизмы тогда нужно придерживаться данного подхода. Описание:

В других случаях использовать проведение из БПР, описано в разделе “Проведение документов“.

Если новый документ не предполагает движений все равно добавляем каркас проведения согласно БПРили механизмам проведения описанных выше.

Необходимо установить свойства документа:

  • Оперативное проведение - Запретить

Удаление движений

Приоритет отдается режиму "Не удалять автоматически". В этом случае требуется реализация собственного кода удаления движений через обработчики событий. В типовых конфигурациях 1С это делается через вызов метода "ПроведениеДокументов.ПриЗаписиДокумента" в событие ПриЗаписи. Такой подход оптимален по производительности и гибкости логики. Актуально для конфигураций в которых реализация проведения идет через учетные механизмы.

  • Проведение документов нужно выстраивать на типовых учетных механизмах. Это модуль ПроведениеДокументов. Для единообразия сразу использовать отмену проведения данного модуля.

  • Исключить ситуацию, когда может появиться отмена проведения при записи (например, связанная с записями в регистры сведений) и при этом стоит режим автоматического удаления, получится двойная очистка, лишние затраты ресурсов , увеличение транзакции.

Режим "Удалять автоматически при отмене проведения" хорош для баланса скорости работы и объёма данных. Дополнительные блокировки только при отмене проведений.

Режим "Удалять автоматически" может приводить к проблемам из-за увеличения длительности транзакций т.к блокировка данных будет дольше по времени. Его имеет смысл использовать только при крайней необходимости.

Материалы:

Префиксация

Новый документ должен иметь префиксацию также как и типовые документы.

Пример решение: cоздать подписку на события рздПриУстановкеНовогоНомераДокументаПоОрганизации метод ПрефиксацияОбъектовСобытия.УстановитьПрефиксИнформационнойБазыИОрганизации (метод может отличаться в типовых конфигурациях).

Также создать подписку рздПроверитьНомерДокументаПоДатеИОрганизации событие ПередЗаписью на метод ПрефиксацияОбъектовСобытия.ПроверитьНомерДокументаПоДатеИОрганизации

БСП

Новый документ должен быть подключен к следующему функционалу:

  1. Подключаемые команды (форма документа и списка)

    Методы должны располагаться в области СлужебныеПроцедурыИФункции внутри области ПодключаемыеКоманды

  2. Отчет о движениях документа (проверить после п.1 что он появился)

  3. Версионирование

    • (Старый вариант) Создать подписку на событие рздЗаписатьВерсиюДокумента на метод ВерсионированиеОбъектовСобытия.ЗаписатьВерсиюДокумента (уточнить по документации)

    • (Новый вариант, если не использовался старый)Расширить определяемый ти ВерсионируемыеДанныеОбъект для работы подписок.

    • Расширить определяемый тип ВерсионируемыеДанные

  4. Дата запрета

    • Создать подписку на событие для документов рздПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента на метод ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента

    • Создать подписку на событие для документов рздПроверитьДатуЗапретаИзмененияПередУдалениемна метод ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередУдалением

    • В методе рздМодификацияКонфигурацииСервер.ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения реализовать заполнение для нового документа. Методы уточнить в документации

    • Также подключаем типовую блокировку форм, см. регламентБлокировка форма. Указываем тип нашего документа в рздБлокировкаИзмененияОбъектовПовтИсп.ДоступныТиповыеБлокировки.

  5. Структура подчиненности

    • Если сам документ может быть выбран в реквизитах других документов – документ необходимо включить в тип критерия отбора СвязанныеДокументы.
    • Реквизиты документа, содержащие ссылки на другие документы, необходимо включить в состав критерия отбора СвязанныеДокументы При этом реквизиты документа типа СубконтоN в состав критерия отбора не включаются.
    • Если в конфигурации (ЗУП, БП) нет отчета связанные документы тогда для возможности показа структуры подчиненности документ необходимо включить в список типов параметра общей команды СвязанныеДокументы.

Формы

Формы документов должны придерживаться регламенту по разработке управляемых форм.

  1. Разделять реквизиты шапки и табличных частей на отдельные вкладки: Основное (реквизиты шапки), Товары (табличная часть товары)
  2. У страницы с табличной частью должно быть заполнено свойство ПутьКДаннымЗаголовка (Объект.Товары.КоличествоСтрок)
  3. Функционал подбора включается в разработку по умолчанию, вне зависимости от наличия указания в техническом задании, если иное не оговорено отдельно.

Реквизиты

Стандартному реквизиту Номер длину устанавливать 11.

Документ должен содержать следующие реквизиты:

  • Организация (как минимум для префиксации и РЛС)

  • Комментарий

  • Ответственный

Значение заполнения. Заполняется значением по умолчанию, например, Курс = 1 или ВидОперации = Основной вид операции.

Заполнять из данных заполнения. Да, если требуется заполнить реквизит при создании нового документа из формы списка с установленными отборами.

Проверка заполнения. Выдавать ошибку, если хотя бы в одном сценарии требуется обязательное заполнение реквизита.

Связи параметров выбора. Заполняется, если значение реквизита зависит от значений других реквизитов документа, например: для ДоговорКонтрагента задаются связи: Отбор.Владелец(Контрагент), Отбор.Организация(Организация).

Параметры выбора. Заполняется, если значение ограничено заранее известными условиями отбора, например, если ДоговорКонтрагента можно выбрать только вида СПоставщиком – вид договора задается в параметрах выбора. Для счетов учета устанавливается Отбор.ЗапретитьИспользоватьВПроводках(Ложь).

Обработка заполнения

Реквизиты по умолчанию должны заполняться в обработке заполнения (например, ответственный).

Роли

На документ должны быть созданы роли согласно регламенту “Роли“.

RLS

В зависимости от проекта и требований по RLS выполнить необходимые действия: Для документов нужно дополнительно выполнить следующее:

  • Добавить в процедуру общего модуля УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа
  • Добавить в определяемый тип ВладелецЗначенийКлючейДоступа ссылку - ДокументСсылка.%ТипОбъекта%
  • Добавить в определяемый тип ВладелецЗначенийКлючейДоступаДокумент объект - ДокументОбъект.%ТипОбъекта%
  • Добавить в модуль менеджера переопределяемый метод ПриЗаполненииОграниченияДоступа, в котором описать правила чтения и изменения для расчетной модели прав. Например,
#Область СтандартныеПодсистемы_УправлениеДоступом
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)";
КонецПроцедуры
#КонецОбласти
  • В форме документа в процедуру ПриЧтенииНаСервере добавить код
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
  • Добавить в правах шаблоны RLS:
  • В ДобавлениеИзменениеДанныхБухгалтерии следует добавить ограничения для Чтения, Добавление и Изменение
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям("Документ.%ИмяДокумента%",
"", "","Организации", "Организация",
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","")
#КонецЕсли
  • В ЧтениеДанныхБухгалтерии следует добавить огаринчения для Чтения
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям("Документ.%ИмяДокумента%",
"", "","Организации", "Организация",
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","")
#КонецЕсли

Подсистемы

Новый объект должен быть размещен в подсистемы согласно регламенту “Подсистемы“. Если в техническом решении не прописано пользовательское размещение тогда объект добавляется только в служебную подсистему.

Специфика по конфигурациям

ЗУП

  1. Оперативное проведение = Запретить

  2. Формат стандартного реквизита Дата: ДЛФ=D. Ширина элемента на форме = 9

image.png