diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение к подсистеме Учет оригиналов первичных документов.md b/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение к подсистеме Учет оригиналов первичных документов.md new file mode 100644 index 0000000..dfc854e --- /dev/null +++ b/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение к подсистеме Учет оригиналов первичных документов.md @@ -0,0 +1,176 @@ +--- +title: Подключение к подсистеме Учет оригиналов первичных документов +slug: общие-бсп-подключение-к-подсистемам/подключение-к-подсистеме-учет-оригиналов-первичных-документов +--- + +## Настройка определяемых типов +Документы, являющиеся поставщиками оригиналов первичных документов, следует указать в составе определяемого типа `ОбъектСУчетомОригиналовПервичныхДокументов` + +## Настройка формы списка + +Формы списков, в которые должны выводиться команды учета оригиналов первичных документов, следует перечислить в процедуре `ПриОпределенииОбъектовСКомандамиУчетаОригиналов` общего модуля `УчетОригиналовПервичныхДокументовПереопределяемый`, пример: + +```bsl +Процедура ПриОпределенииОбъектовСКомандамиУчетаОригиналов(СписокОбъектов) Экспорт + СписокОбъектов.Добавить("Документ._ДемоРеализацияТоваров.Форма.ФормаСписка"); + СписокОбъектов.Добавить("Документ._ДемоПеремещениеТоваров.Форма.ФормаСписка"); + СписокОбъектов.Добавить("Обработка._ДемоЖурналУчетаОригиналовПервичныхДокументов.Форма.СписокДокументов"); +КонецПроцедуры +``` + +## Определение печатных форм + +Подсистема может отслеживать состояния первичных документов по **определенным печатным формам**. +Необходимо определить состав печатных форм документов, для которых требуется вести учет оригиналов: +> Например, у документа `Отпуск` может быть 4 печатных формы, но только в одной требуется подпись сотрудника и, соответственно, только по ней требуется отслеживать состояние. + +Документы, являющиеся поставщиками оригиналов первичных документов, и печатные формы по которым требуется отслеживание необходимо перечислить в процедуре `ЗаполнитьТаблицуУчетаОригиналовмодуля` `УчетОригиналовПервичныхДокументовПереопределяемый`, пример: + +```bsl +Процедура ЗаполнитьТаблицуУчетаОригиналов(ТаблицаУчетаОригиналов) Экспорт + НоваяСтрока = ТаблицаУчетаОригиналов.Добавить(); + НоваяСтрока.ОбъектМетаданных = Метаданные.Документы._ДемоРеализацияТоваров; + НоваяСтрока.Идентификатор = "РасходнаяНакладная"; +КонецПроцедуры +``` + +Если документ подключен к подсистеме учета оригиналов и в данном переопределяемой процедуре: +- **ничего не указывать** по этому документу, то состояния будут отслеживаться **по всем печатным формам этого документа**; +- **указать печатные формы**, то состояния будут отслеживаться **только по указанным печатным формам документа**. + +
+"Многосотрудниковые" документы +Поддерживается отслеживание состояний по "многосотрудниковым" документам. Пример см. документ `_ДемоОтпускаСотрудников`, в печатной форме `"Приказ о предоставлении отпуска работникам (T-6a)"` требуется подпись нескольких сотрудников (они хранятся в табличной части документа), поэтому состояния для таких документов отслеживается и в разрезе сотрудников. + +Для подключения таких документов к учету оригиналов необходимо в составе определяемого типа `Сотрудник` указать соответствующие справочники. Как правило, это такие справочники, как `Физические лица`, `Сотрудники`. Необходимо определить состав документов, для которых требуется подпись нескольких сотрудников, и перечислить **их** и **наименование табличной части**, в которой хранится список сотрудников, в процедуре `ПриОпределенииМногосотрудниковыхДокументов` общего модуля `УчетОригиналовПервичныхДокументовПереопределяемый`, например: + +```bsl +Процедура ПриОпределенииМногосотрудниковыхДокументов(СписокОбъектов) Экспорт + СписокОбъектов.Вставить(Метаданные.Документы._ДемоОтпускаСотрудников.ПолноеИмя(),"Сотрудники"); +КонецПроцедуры +``` + +При этом, если документ подключен к подсистеме учета оригиналов и в данной переопределяемой процедуре: + +- не указывать такой документ, то состояния будут отслеживаться в разрезе печатных форм, как и раньше; +- указать документ и табличную часть, то состояния будут отслеживаться по печатным формам документа в разрезе сотрудников. + +
+ +## Настройка форм + +Подключить формы к подсистеме `ПодключаемыеКоманды` + +### Форма документа + +Для подключения форм документов, в которых требуется выводить сведения о текущем состоянии оригинала первичного документа необходимо в формах документов, определенных на предыдущем шаге: + +- в процедуре `ПриСозданииНаСервере` (обработчик события формы) вставить вызов по шаблону: +```bsl +// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект, Элемент.<ГруппаФормы>); +// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +``` +Где второй параметр `Расположение` (необязательный) - указание группы формы, в которой будет размещена декорация с данными о текущем состоянии оригинала. В противном случае, без указания параметра, декорация будет размещена в **нижнем правом углу формы**. + +- в процедуре `ОбработчикОповещения` (обработчик события формы) добавить код: +```bsl +// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия, ЭтотОбъект); +// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +``` + +- добавить вспомогательную процедуру: +```bsl +// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +&НаКлиенте +Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие() + УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект); +КонецПроцедуры +//Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +``` + +> Примеры внедрения и настройки подсистемы в формах объектов см. в документах _ДемоПеремещениеТоваров и _ДемоРеализацияТоваров. + +### Форма списка + +- Для основного списка установить `ПроизвольныйЗапрос` и дополнить его выборкой трех строк: `СостояниеОригиналаПервичногоДокумента`, `ОбщееСостояние`, `СостояниеОригиналПолучен` + +```bsl +ВЫБРАТЬ + ... + <ВыбираемыеПоля> + ..., + NULL КАК СостояниеОригиналаПервичногоДокумента, + ИСТИНА КАК ОбщееСостояние, + 0 КАК СостояниеОригиналПолучен +ИЗ + ... +``` +для этих полей установить признак `ИспользоватьВсегда` + +- В обработчике события `ПриСозданииНаСервере` формы вставить вызов по шаблону: +```bsl +// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаСписка(ЭтотОбъект, Элементы.<ТаблицаФормы>, Элементы.<КолонкаДинамическогоСписка>); +// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +``` +Где третий параметр `Расположение` (необязательный) - указание колонки динамического списка, перед которой будет размещены колонки с данными о текущем состоянии оригинала. В противном случае, без указания параметра, новые колонки **будут размещены в списке последними**. + +- В обработчике события `ОбработчикОповещения` формы добавить код: +```bsl +// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаСписка(ИмяСобытия, ЭтотОбъект, Элементы.<ТаблицаФормы>); +// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +``` + +- В обработчике события `Выбор` таблицы формы добавить код: +```bsl +// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +УчетОригиналовПервичныхДокументовКлиент.СписокВыбор(Поле.Имя, ЭтотОбъект, Элементы.<ТаблицаФормы>, СтандартнаяОбработка); +// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +``` + +- В обработчике события `СписокПриПолученииДанныхНаСервере` таблицы формы добавить код: +```bsl +// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +УчетОригиналовПервичныхДокументов.ПриПолученииДанныхНаСервере(Строки); +// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +``` + +- Добавить вспомогательные процедуры: +```bsl +// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +&НаКлиенте +Процедура Подключаемый_ОбновитьКомандыСостоянияОригинала() + + ОбновитьКомандыСостоянияОригинала() + +КонецПроцедуры +&НаСервере +Процедура ОбновитьКомандыСостоянияОригинала() + +// Код из обработчика события ПриСозданииНаСервере этой формы по подключению команд: +//// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +//УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаСписка(ЭтотОбъект, Элементы.<ТаблицаФормы>, Элементы.<КолонкаДинамическогоСписка>); +//// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов + +КонецПроцедуры +//Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов +``` + +## Оптимизация +Опционально. Для целей оптимизации производительности при открытии формы рекомендуется добавить в командную панель +- подменю: + - Имя: ПодменюУстановитьНастроитьСостояниеОригинала; + - Заголовок: Состояние оригинала; + - Вид: Подменю; + - Отображение: Картинка и текст; + - Картинка: УстановитьСостояниеОригиналаПервичногоДокумента. +- группу для вывода команд установки состояния оригинала по шаблону: + - Имя: ГруппаУстановитьОригиналПолучен; + - Вид: Подменю; + - Отображение: Картинка; + - Картинка: СостояниеОригиналаПервичногоДокументаОригиналПолучен. + +>Примеры внедрения и настройки подсистемы в формах списков см. в документах `_ДемоПеремещениеТоваров,` `_ДемоРеализацияТоваров` и обработке `_ДемоЖурналУчетаОригиналовПервичныхДокументов`. \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды заполнения/Добавление команд заполнения.md b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды заполнения/Добавление команд заполнения.md index 24ada59..584539f 100644 --- a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды заполнения/Добавление команд заполнения.md +++ b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды заполнения/Добавление команд заполнения.md @@ -54,9 +54,9 @@ slug: общие-подключаемые-команды-команды-запо КонецПроцедуры ``` -# Пример обработчика в модуле формы +# Пример обработчика в модуле менеджера -> Его также можно разместить и в модуле менеджера, и в общем модуле +> Его также можно разместить и в модуле формы, и в общем модуле ```bsl &НаСервере