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
|
```bsl
|
||||||
&НаСервере
|
&НаСервере
|
||||||
|
Loading…
x
Reference in New Issue
Block a user