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