new
This commit is contained in:
parent
1da759a367
commit
f054cce9fb
@ -0,0 +1,176 @@
|
||||
---
|
||||
title: Подключение к подсистеме Учет оригиналов первичных документов
|
||||
slug: общие-бсп-подключение-к-подсистемам/подключение-к-подсистеме-учет-оригиналов-первичных-документов
|
||||
---
|
||||
|
||||
## Настройка определяемых типов
|
||||
Документы, являющиеся поставщиками оригиналов первичных документов, следует указать в составе определяемого типа `ОбъектСУчетомОригиналовПервичныхДокументов`
|
||||
|
||||
## Настройка формы списка
|
||||
|
||||
Формы списков, в которые должны выводиться команды учета оригиналов первичных документов, следует перечислить в процедуре `ПриОпределенииОбъектовСКомандамиУчетаОригиналов` общего модуля `УчетОригиналовПервичныхДокументовПереопределяемый`, пример:
|
||||
|
||||
```bsl
|
||||
Процедура ПриОпределенииОбъектовСКомандамиУчетаОригиналов(СписокОбъектов) Экспорт
|
||||
СписокОбъектов.Добавить("Документ._ДемоРеализацияТоваров.Форма.ФормаСписка");
|
||||
СписокОбъектов.Добавить("Документ._ДемоПеремещениеТоваров.Форма.ФормаСписка");
|
||||
СписокОбъектов.Добавить("Обработка._ДемоЖурналУчетаОригиналовПервичныхДокументов.Форма.СписокДокументов");
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
## Определение печатных форм
|
||||
|
||||
Подсистема может отслеживать состояния первичных документов по **определенным печатным формам**.
|
||||
Необходимо определить состав печатных форм документов, для которых требуется вести учет оригиналов:
|
||||
> Например, у документа `Отпуск` может быть 4 печатных формы, но только в одной требуется подпись сотрудника и, соответственно, только по ней требуется отслеживать состояние.
|
||||
|
||||
Документы, являющиеся поставщиками оригиналов первичных документов, и печатные формы по которым требуется отслеживание необходимо перечислить в процедуре `ЗаполнитьТаблицуУчетаОригиналовмодуля` `УчетОригиналовПервичныхДокументовПереопределяемый`, пример:
|
||||
|
||||
```bsl
|
||||
Процедура ЗаполнитьТаблицуУчетаОригиналов(ТаблицаУчетаОригиналов) Экспорт
|
||||
НоваяСтрока = ТаблицаУчетаОригиналов.Добавить();
|
||||
НоваяСтрока.ОбъектМетаданных = Метаданные.Документы._ДемоРеализацияТоваров;
|
||||
НоваяСтрока.Идентификатор = "РасходнаяНакладная";
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
Если документ подключен к подсистеме учета оригиналов и в данном переопределяемой процедуре:
|
||||
- **ничего не указывать** по этому документу, то состояния будут отслеживаться **по всем печатным формам этого документа**;
|
||||
- **указать печатные формы**, то состояния будут отслеживаться **только по указанным печатным формам документа**.
|
||||
|
||||
<details style="margin: 1em 0; padding: 0.5em; border: 1px solid #ccc; border-radius: 6px;">
|
||||
<summary style="font-weight: bold; cursor: pointer;">"Многосотрудниковые" документы</summary>
|
||||
Поддерживается отслеживание состояний по "многосотрудниковым" документам. Пример см. документ `_ДемоОтпускаСотрудников`, в печатной форме `"Приказ о предоставлении отпуска работникам (T-6a)"` требуется подпись нескольких сотрудников (они хранятся в табличной части документа), поэтому состояния для таких документов отслеживается и в разрезе сотрудников.
|
||||
|
||||
Для подключения таких документов к учету оригиналов необходимо в составе определяемого типа `Сотрудник` указать соответствующие справочники. Как правило, это такие справочники, как `Физические лица`, `Сотрудники`. Необходимо определить состав документов, для которых требуется подпись нескольких сотрудников, и перечислить **их** и **наименование табличной части**, в которой хранится список сотрудников, в процедуре `ПриОпределенииМногосотрудниковыхДокументов` общего модуля `УчетОригиналовПервичныхДокументовПереопределяемый`, например:
|
||||
|
||||
```bsl
|
||||
Процедура ПриОпределенииМногосотрудниковыхДокументов(СписокОбъектов) Экспорт
|
||||
СписокОбъектов.Вставить(Метаданные.Документы._ДемоОтпускаСотрудников.ПолноеИмя(),"Сотрудники");
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
При этом, если документ подключен к подсистеме учета оригиналов и в данной переопределяемой процедуре:
|
||||
|
||||
- не указывать такой документ, то состояния будут отслеживаться в разрезе печатных форм, как и раньше;
|
||||
- указать документ и табличную часть, то состояния будут отслеживаться по печатным формам документа в разрезе сотрудников.
|
||||
|
||||
</details>
|
||||
|
||||
## Настройка форм
|
||||
|
||||
Подключить формы к подсистеме `ПодключаемыеКоманды`
|
||||
|
||||
### Форма документа
|
||||
|
||||
Для подключения форм документов, в которых требуется выводить сведения о текущем состоянии оригинала первичного документа необходимо в формах документов, определенных на предыдущем шаге:
|
||||
|
||||
- в процедуре `ПриСозданииНаСервере` (обработчик события формы) вставить вызов по шаблону:
|
||||
```bsl
|
||||
// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект, Элемент.<ГруппаФормы>);
|
||||
// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
```
|
||||
Где второй параметр `Расположение` (необязательный) - указание группы формы, в которой будет размещена декорация с данными о текущем состоянии оригинала. В противном случае, без указания параметра, декорация будет размещена в **нижнем правом углу формы**.
|
||||
|
||||
- в процедуре `ОбработчикОповещения` (обработчик события формы) добавить код:
|
||||
```bsl
|
||||
// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия, ЭтотОбъект);
|
||||
// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
```
|
||||
|
||||
- добавить вспомогательную процедуру:
|
||||
```bsl
|
||||
// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
&НаКлиенте
|
||||
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
|
||||
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект);
|
||||
КонецПроцедуры
|
||||
//Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
```
|
||||
|
||||
> Примеры внедрения и настройки подсистемы в формах объектов см. в документах _ДемоПеремещениеТоваров и _ДемоРеализацияТоваров.
|
||||
|
||||
### Форма списка
|
||||
|
||||
- Для основного списка установить `ПроизвольныйЗапрос` и дополнить его выборкой трех строк: `СостояниеОригиналаПервичногоДокумента`, `ОбщееСостояние`, `СостояниеОригиналПолучен`
|
||||
|
||||
```bsl
|
||||
ВЫБРАТЬ
|
||||
...
|
||||
<ВыбираемыеПоля>
|
||||
...,
|
||||
NULL КАК СостояниеОригиналаПервичногоДокумента,
|
||||
ИСТИНА КАК ОбщееСостояние,
|
||||
0 КАК СостояниеОригиналПолучен
|
||||
ИЗ
|
||||
...
|
||||
```
|
||||
для этих полей установить признак `ИспользоватьВсегда`
|
||||
|
||||
- В обработчике события `ПриСозданииНаСервере` формы вставить вызов по шаблону:
|
||||
```bsl
|
||||
// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаСписка(ЭтотОбъект, Элементы.<ТаблицаФормы>, Элементы.<КолонкаДинамическогоСписка>);
|
||||
// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
```
|
||||
Где третий параметр `Расположение` (необязательный) - указание колонки динамического списка, перед которой будет размещены колонки с данными о текущем состоянии оригинала. В противном случае, без указания параметра, новые колонки **будут размещены в списке последними**.
|
||||
|
||||
- В обработчике события `ОбработчикОповещения` формы добавить код:
|
||||
```bsl
|
||||
// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаСписка(ИмяСобытия, ЭтотОбъект, Элементы.<ТаблицаФормы>);
|
||||
// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
```
|
||||
|
||||
- В обработчике события `Выбор` таблицы формы добавить код:
|
||||
```bsl
|
||||
// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
УчетОригиналовПервичныхДокументовКлиент.СписокВыбор(Поле.Имя, ЭтотОбъект, Элементы.<ТаблицаФормы>, СтандартнаяОбработка);
|
||||
// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
```
|
||||
|
||||
- В обработчике события `СписокПриПолученииДанныхНаСервере` таблицы формы добавить код:
|
||||
```bsl
|
||||
// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
УчетОригиналовПервичныхДокументов.ПриПолученииДанныхНаСервере(Строки);
|
||||
// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
```
|
||||
|
||||
- Добавить вспомогательные процедуры:
|
||||
```bsl
|
||||
// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
&НаКлиенте
|
||||
Процедура Подключаемый_ОбновитьКомандыСостоянияОригинала()
|
||||
|
||||
ОбновитьКомандыСостоянияОригинала()
|
||||
|
||||
КонецПроцедуры
|
||||
&НаСервере
|
||||
Процедура ОбновитьКомандыСостоянияОригинала()
|
||||
|
||||
// Код из обработчика события ПриСозданииНаСервере этой формы по подключению команд:
|
||||
//// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
//УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаСписка(ЭтотОбъект, Элементы.<ТаблицаФормы>, Элементы.<КолонкаДинамическогоСписка>);
|
||||
//// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
|
||||
КонецПроцедуры
|
||||
//Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
|
||||
```
|
||||
|
||||
## Оптимизация
|
||||
Опционально. Для целей оптимизации производительности при открытии формы рекомендуется добавить в командную панель
|
||||
- подменю:
|
||||
- Имя: ПодменюУстановитьНастроитьСостояниеОригинала;
|
||||
- Заголовок: Состояние оригинала;
|
||||
- Вид: Подменю;
|
||||
- Отображение: Картинка и текст;
|
||||
- Картинка: УстановитьСостояниеОригиналаПервичногоДокумента.
|
||||
- группу для вывода команд установки состояния оригинала по шаблону:
|
||||
- Имя: ГруппаУстановитьОригиналПолучен;
|
||||
- Вид: Подменю;
|
||||
- Отображение: Картинка;
|
||||
- Картинка: СостояниеОригиналаПервичногоДокументаОригиналПолучен.
|
||||
|
||||
>Примеры внедрения и настройки подсистемы в формах списков см. в документах `_ДемоПеремещениеТоваров,` `_ДемоРеализацияТоваров` и обработке `_ДемоЖурналУчетаОригиналовПервичныхДокументов`.
|
@ -54,9 +54,9 @@ slug: общие-подключаемые-команды-команды-запо
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
# Пример обработчика в модуле формы
|
||||
# Пример обработчика в модуле менеджера
|
||||
|
||||
> Его также можно разместить и в модуле менеджера, и в общем модуле
|
||||
> Его также можно разместить и в модуле формы, и в общем модуле
|
||||
|
||||
```bsl
|
||||
&НаСервере
|
||||
|
Loading…
x
Reference in New Issue
Block a user