Используется для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 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/
Если статья была полезная или просто хотите поддержать автора, то можете купить мне кофе