Новые статьи

This commit is contained in:
wakadakawaka 2025-04-16 23:54:08 +05:00
parent 97584b4baa
commit b72d677cfb
13 changed files with 1087 additions and 2 deletions

View File

@ -0,0 +1,10 @@
---
title: Подключение к подсистеме "Связанные документы"
---
# Редактирование критериев отбора
В **`тип данных`** критерия отбора **`Связанные документы`** нужно добавить свои объекты
В **`состав`** критерия отбора **`Связанные документы`** добавьте реквизит тот реквизит, по которому будет формироваться связь. Обычно это те реквизиты, в которых указываются **`основания`**
# Подключить формы к подсистеме "Подключаемые команды"
См. соответствующую статью в разделе `\Примеры, сниппеты\БСП и типовые\Интеграция собственных объектов\Подключение к подсистемам\Подключаемые команды`

View File

@ -0,0 +1,61 @@
# Модуль объекта обработки
```bsl
#Область ПрограммныйИнтерфейс
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
Представление = НСтр("ru='Представление обработки'", "ru");
Идентификатор = "ИдентификаторОбработки";
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Назначение = МассивНазначений();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
ПараметрыРегистрации.Информация = ИсторияИзмененийОбработки();
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = Представление;
Команда.Идентификатор = Идентификатор;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Истина;
// При необходимости
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("Excel.Application", "00024500-0000-0000-C000-000000000046");
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("ADODB.Connection", "00000514-0000-0010-8000-00AA006D2EA4");
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Возврат ПараметрыРегистрации;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ИсторияИзмененийОбработки()
СписокИзменений = Новый Массив;
СписокИзменений.Добавить("История изменений:");
СписокИзменений.Добавить("2025-04-16, Создание обработки, версия 1.0");
СписокИзменений.Добавить("Общая информация: Описание обработки");
Возврат СтрСоединить(СписокИзменений, Символы.ПС);
КонецФункции
Функция МассивНазначений()
МассивНазначений = Новый Массив;
//МассивНазначений.Добавить("Документ.ПередачаДавальцу");
Возврат МассивНазначений;
КонецФункции
#КонецОбласти
```

View File

@ -0,0 +1,50 @@
# Модуль объекта обработки
```bsl
#Область ПрограммныйИнтерфейс
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
Представление = НСтр("ru='Представление отчета'", "ru");
Идентификатор = "ИдентификаторОтчета";
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Назначение = МассивНазначений();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
ПараметрыРегистрации.Информация = ИсторияИзмененийОбработки();
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = Представление;
Команда.Идентификатор = Идентификатор;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
#Область СлужебныеПроцедурыИФункции
Функция ИсторияИзмененийОбработки()
СписокИзменений = Новый Массив;
СписокИзменений.Добавить("История изменений:");
СписокИзменений.Добавить("2025-04-16, Создание отчета, версия 1.0");
СписокИзменений.Добавить("Общая информация: Описание отчета");
Возврат СтрСоединить(СписокИзменений, Символы.ПС);
КонецФункции
Функция МассивНазначений()
МассивНазначений = Новый Массив;
//МассивНазначений.Добавить("Документ.ПередачаДавальцу");
Возврат МассивНазначений;
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,66 @@
# Модуль объекта обработки
```bsl
#Область ПрограммныйИнтерфейс
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
Представление = НСтр("ru='Моя регламентная обработка'", "ru");
Идентификатор = "МояРегламентнаяОбработка";
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
ПараметрыРегистрации.Информация = ИсторияИзмененийОбработки();
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = Представление;
Команда.Идентификатор = Идентификатор;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.ПоказыватьОповещение = Истина;
// При необходимости
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("Excel.Application", "00024500-0000-0000-C000-000000000046");
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("ADODB.Connection", "00000514-0000-0010-8000-00AA006D2EA4");
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Возврат ПараметрыРегистрации;
КонецФункции
// Обработчик серверных команд.
//
// Параметры:
// ИдентификаторКоманды - Строка - имя команды, определенное в функции СведенияОВнешнейОбработке().
// ПараметрыВыполнения - Структура - контекст выполнения команды:
// * ДополнительнаяОбработкаСсылка - СправочникСсылка.ДополнительныеОтчетыИОбработки - ссылка обработки.
// Может использоваться для чтения параметров обработки.
// Пример см. в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы().
//
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполнения) Экспорт
...
<Логика, которая будет выполняться>
...
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ИсторияИзмененийОбработки()
СписокИзменений = Новый Массив;
СписокИзменений.Добавить("История изменений:");
СписокИзменений.Добавить("2025-04-16, УЗГА, Создание обработки, версия 1.0");
СписокИзменений.Добавить("Общая информация: <Что, зачем, почему>");
Возврат СтрСоединить(СписокИзменений, Символы.ПС);
КонецФункции
#КонецОбласти
```

View File

@ -0,0 +1,5 @@
---
title: Разбираемся с механизмом Дополнительные отчеты и обработки в БСП
---
[Читаем и просвещаемся](https://infostart.ru/1c/articles/558559/)

View File

@ -0,0 +1,38 @@
# В модуле менеджера
```bsl
// Заполняет список команд отчетов.
//
// Параметры:
// КомандыОтчетов - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
// Параметры - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
// Если есть функция программного интерфейса у отчета
КомандаОтчет = Отчеты.КонтрольПоставкиСырьяИМатериаловДавальцем.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Важность = "СмТакже";
КомандаОтчет.Порядок = 1;
КонецЕсли;
// создание команды отчета "вручную"
Если ПравоДоступа("Просмотр", Метаданные.Отчеты.РасшифровкаСтоимостиПереработки) Тогда
КомандаОтчет = КомандыОтчетов.Добавить();
КомандаОтчет.Менеджер = Метаданные.Отчеты.РасшифровкаСтоимостиПереработки.ПолноеИмя();
КомандаОтчет.Представление = НСтр("ru = 'Расшифровка стоимости переработки';
|en = 'Overtime cost drill-down'");
КомандаОтчет.МножественныйВыбор = Истина;
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.КлючВарианта = "РасшифровкаСтоимости";
КонецЕсли;
КонецПроцедуры
```
# Подключение к подсистеме "Подключаемые команды"
См. `Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"`

View File

@ -0,0 +1,134 @@
# В модуле менеджера объекта
## Добавление команд печати
```bsl
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
// Форма 1
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "МояПечатнаяФорма1"; // Идентификатор
КомандаПечати.Представление = НСтр("ru = 'Моя форма 1'");
КомандаПечати.Порядок = 5;
// Форма 2
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "МояПечатнаяФорма2"; // Идентификатор
КомандаПечати.Представление = НСтр("ru = 'Моя форма 2'");
КомандаПечати.Порядок = 10;
// Комплект документов
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "МояПечатнаяФорма1,МояПечатнаяФорма2"; // идентификаторы команд
КомандаПечати.Представление = НСтр("ru = 'Комплект документов'");
КомандаПечати.Порядок = 75;
КонецПроцедуры
```
## Добавление интерфейсной процедуры "Печать"
```bsl
// Формирует печатные формы.
//
// Параметры:
// МассивОбъектов - Массив из ЛюбаяСсылка - список объектов, для которых была выполняется команда печати
// ПараметрыПечати - Структура - произвольные параметры, переданные при вызове команды печати;
// КоллекцияПечатныхФорм - ТаблицаЗначений - возвращаемый параметр, коллекция сформированных печатных форм:
// * ИмяМакета - Строка - идентификатор печатной формы;
// * СинонимМакета - Строка - название печатной формы;
//
// * ТабличныйДокумент - ТабличныйДокумент - одна или несколько печатных форм, выведенных в один табличный документ
// Для разметки печатных форм внутри табличного документа после вывода каждой печатной формы
// необходимо вызывать процедуру УправлениеПечатью.ЗадатьОбластьПечатиДокумента;
// Параметр не используется, если вывод печатных форм выполняется в формате офисных документов
// (см. параметр "ОфисныеДокументы");
//
// * ОфисныеДокументы - Соответствие из КлючИЗначение - коллекция печатных форм в формате офисных документов:
// ** Ключ - Строка - адрес во временном хранилище двоичных данных печатной формы;
// ** Значение - Строка - имя файла печатной формы.
//
// * ИмяФайлаПечатнойФормы - Строка - имя файла печатной формы при сохранении в файл или отправке в качестве
// почтового вложения. Не используется для печатных форм в формате офисных документов.
// По умолчанию имя файла устанавливается в формате
// "[НазваниеПечатнойФормы] № [Номер] от [Дата]" для документов,
// "[НазваниеПечатнойФормы] - [ПредставлениеОбъекта] - [ТекущаяДата]" для объектов.
// - Соответствие из КлючИЗначение - имена файлов для каждого объекта:
// ** Ключ - ЛюбаяСсылка - ссылка на объект печати из коллекции МассивОбъектов;
// ** Значение - Строка - имя файла;
//
// * Экземпляров - Число - количество копий, которое необходимо вывести на печать;
// * ПолныйПутьКМакету - Строка - используется для быстрого перехода к редактированию макета печатной формы
// в общей форме ПечатьДокументов;
// * ДоступенВыводНаДругихЯзыках - Булево - необходимо установить значение Истина, если печатная форма адаптирована
// для вывода на произвольном языке.
//
// ОбъектыПечати - СписокЗначений - выходной параметр, соответствие между объектами и именами областей в табличных
// документах, заполняется автоматически
// при вызове УправлениеПечатью.ЗадатьОбластьПечатиДокумента:
// * Значение - ЛюбаяСсылка - ссылка из коллекции МассивОбъектов,
// * Представление - Строка - имя области с объектом в табличных документах;
//
// ПараметрыВывода - Структура - настройки вывода печатных форм:
// * ПараметрыОтправки - Структура - для автоматического заполнения полей в форме создания письма при отправке
// сформированных печатных форм по почте:
// ** Получатель - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Получатель
// ** Тема - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Тема
// ** Текст - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Текст
// * КодЯзыка - Строка - язык, на котором требуется сформировать печатную форму.
// Состоит из кода языка по ISO 639-1 и, опционально, кода страны по ISO 3166-1, разделенных
// символом подчеркивания. Примеры: "en", "en_US", "en_GB", "ru", "ru_RU".
//
// * ЗаголовокФормы - Строка - переопределяет заголовок формы печати документов (ПечатьДокументов).
//
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "МояПечатнаяФорма1");
Если НужноПечататьМакет Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"МояПечатнаяФорма1",
НСтр("ru = 'Моя печатная форма 1'"),
ПечатнаяФорма1(МассивОбъектов, ОбъектыПечати),
,
"Документ.ТестоваяПечатьДокументов.ТестовыйМакетПечати");
КонецЕсли;
НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "МояПечатнаяФорма2");
Если НужноПечататьМакет Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"МояПечатнаяФорма2",
НСтр("ru = 'Моя печатная форма 2'"),
ПечатнаяФорма2(МассивОбъектов, ОбъектыПечати),
,
"Документ.ТестоваяПечатьДокументов.ТестовыйМакетПечати");
КонецЕсли;
КонецПроцедуры
Функция ПечатнаяФорма1(МассивОбъектов, ОбъектыПечати)
ТабДок = Новый ТабличныйДокумент;
...
// Получаем макет, заполняем, возвращаем
...
Возврат ТабДок;
КонецФункции
Функция ПечатнаяФорма2(МассивОбъектов, ОбъектыПечати)
ТабДок = Новый ТабличныйДокумент;
...
// Получаем макет, заполняем, возвращаем
...
Возврат ТабДок;
КонецФункции
```
# Подключение к подсистеме "Подключаемые команды"
См. Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"

View File

@ -1,4 +1,4 @@
# В модуле менеджера
## Добавление команд создания на основании ## Добавление команд создания на основании
Если необходимо создавать какие-то объекты на основании собственного, в первую очередь нужно вывести команды создания на основании на форму документа. Если необходимо создавать какие-то объекты на основании собственного, в первую очередь нужно вывести команды создания на основании на форму документа.
Для этого: Для этого:
@ -61,4 +61,6 @@
Возврат Неопределено; Возврат Неопределено;
КонецФункции КонецФункции
``` ```
# Подключение к подсистеме "Подключаемые команды"
См. `Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"`

View File

@ -0,0 +1,145 @@
# Настройка объекта
Создаем новый документ/справочник. В документе должны быть реквизит `Ответственный` (СправочникСсылка.Пользователи) и табличная часть `ПартнерыИКонтактныеЛица`.
Табличная часть со следующими реквизитами:
- `Партнер` (СправочникСсылка.Партнеры)
- `РольПартнера` (СправочникСсылка.РолиПартнеровВСделкахИПроектах)
- `КонтактноеЛицо` (СправочникСсылка.КонтактныеЛицаПартнеров)
- `РольКонтактногоЛица` (СправочникСсылка.РолиКонтактныхЛицВСделакахИПроектах)
- `Комментарий` (Строка)
Добавляем этот документ в определяемый тип `ПредметВзаимодействия`
# Общие модули
В общем модуле `ВзаимодействияКлиентСерверПереопределяемый` в процедуре `ПриОпределенииВозможныхПредметов` добавляем наш документ
```bsl
// Задает типы предметов взаимодействий, например: заказы, вакансии и т.п.
// Используется, если в конфигурации определен хотя бы один предмет взаимодействий.
//
// Параметры:
// ТипыПредметов - Массив - предметы взаимодействий (Строка),
// например, "ДокументСсылка.ЗаказПокупателя" и т.п.
//
Процедура ПриОпределенииВозможныхПредметов(ТипыПредметов) Экспорт
ТипыПредметов.Добавить("ДокументСсылка.ТестовыйДокумент");
КонецПроцедуры
```
# Настройка формы объекта
На форме документа создаем реквизит `ВзаимодействиеОснование` с составным типом `ДокументСсылка.ЭлектронноеПисьмоИсходящее, ДокументСсылка.ЗапланированноеВзаимодействие, ДокументСсылка.ЭлектронноеПисьмоВходящее, ДокументСсылка.ТелефонныйЗвонок, ДокументСсылка.Встреча`; реквизит `НеобходимоОповещение` типа `Булево`
В обработчиках `ПриСозданииНаСервере`, `ПриЗаписиНаСервере` и `ПослеЗаписи` определяем вызовы стандартных процедур
```bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.Взаимодействия
Взаимодействия.ПодготовитьОповещения(ЭтотОбъект,Параметры);
// Конец СтандартныеПодсистемы.Взаимодействия
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.Взаимодействия
Если ЗначениеЗаполнено(ВзаимодействиеОснование) Тогда
Взаимодействия.ПриЗаписиПредметаИзФормы(
ТекущийОбъект.Ссылка, ВзаимодействиеОснование, Отказ);
КонецЕсли;
// Конец СтандартныеПодсистемы.Взаимодействия
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
// СтандартныеПодсистемы.Взаимодействия
ВзаимодействияКлиент.ВзаимодействиеПредметПослеЗаписи(ЭтотОбъект,Объект,ПараметрыЗаписи,"ТестовыйДокумент");
// Конец СтандартныеПодсистемы.Взаимодействия
КонецПроцедуры
```
# Настройка модуля менеджера
В модуле менеджера должна быть реализована экспортная функция `ПолучитьКонтакты`, которая будет возвращать список контактных лиц для заполнения в документе взаимодействия. Например:
```bsl
// Получить партнера и контактных лиц сделки.
//
// Параметры:
// Ссылка - ДокументСсылка._ДемоЗаказПокупателя - документ, контакты которого необходимо получить.
//
// Возвращаемое значение:
// Массив - массив, содержащий контакты документа.
//
Функция ПолучитьКонтакты(Ссылка) Экспорт
Если НЕ ЗначениеЗаполнено(Ссылка) Тогда
Возврат Новый Массив;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаПоКонтактам();
Запрос.УстановитьПараметр("Предмет", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Новый Массив;
КонецЕсли;
Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Контакт");
КонецФункции
```
> Но эта функция может возвращать и пустой массив
# Опционально
В модуле менеджера каждого объекта метаданных, определенного как «`предмет взаимодействий`», необходимо реализовать экспортную функцию `ТекстЗапросаПоКонтактам`, в которой сформировать текст запроса по контактам, содержащимся в предмете взаимодействий. Например, ссылки на контакты взаимодействий могут иметься в реквизитах шапки и табличных частей предметов взаимодействий.
Функция принимает необязательный параметр `ЭтоФрагментЗапроса` типа `Булево`, указывающий на режим формирования запроса. Если данный параметр имеет значение `Истина`, то формируемый в функции запрос является частью другого запроса и должен начинаться с конструкции `ОБЪЕДИНИТЬ`. Возвращаемое значение  `Строка`, содержащая в себе текст запроса по контактам предмета взаимодействий. Например
```bsl
Функция ТекстЗапросаПоКонтактам(ЭтоФрагментЗапроса = Ложь) Экспорт
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| _ДемоЗаказПокупателя.Партнер КАК Контакт
|ИЗ
| Документ._ДемоЗаказПокупателя КАКемоЗаказПокупателя
|ГДЕ
| _ДемоЗаказПокупателя.Ссылка = &Предмет
| И (НЕемоЗаказПокупателя.Партнер = ЗНАЧЕНИЕ(Справочник._ДемоПартнеры.ПустаяСсылка))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Партнер
|ИЗ
| Документ._ДемоЗаказПокупателя.ПартнерыИКонтактныеЛица КАКемоЗаказПокупателяПартнерыИКонтактныеЛица
|ГДЕ
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Ссылка = &Предмет
| И (НЕемоЗаказПокупателяПартнерыИКонтактныеЛица.Партнер = ЗНАЧЕНИЕ(Справочник._ДемоПартнеры.ПустаяСсылка))
| И _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник._ДемоКонтактныеЛицаПартнеров.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо
|ИЗ
| Документ._ДемоЗаказПокупателя.ПартнерыИКонтактныеЛица КАКемоЗаказПокупателяПартнерыИКонтактныеЛица
|ГДЕ
| _ДемоЗаказПокупателяПартнерыИКонтактныеЛица.Ссылка = &Предмет
| И (НЕемоЗаказПокупателяПартнерыИКонтактныеЛица.КонтактноеЛицо = ЗНАЧЕНИЕ(Справочник._ДемоКонтактныеЛицаПартнеров.ПустаяСсылка))";
Если ЭтоФрагментЗапроса Тогда
ТекстЗапроса = "
| ОБЪЕДИНИТЬ ВСЕ
|" + ТекстЗапроса;
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
```

View File

@ -0,0 +1,319 @@
---
title: Подключение к механизмам печати БСП
---
# Общие модули
В общем модуле `УправлениеПечатьюЛокализация` в методе `ПриОпределенииОбъектовСКомандамиПечати` добавляем информацию о собственных документах
```bsl
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
....
СписокОбъектов.Добавить(Документы.ФормированиеЗаписейРазделаекларацииНДС);
////////////////////Свои документы
СписокОбъектов.Добавить(Документы.МойДокумент1);
СписокОбъектов.Добавить(Документы.МойДокумент2);
....
КонецПроцедуры
```
# Подключение к подсистеме "Подключаемые команды"
Подключаемся по инструкции см. `Подключение к подсистеме "Присоединенные Файлы"`
# Модуль менеджера
## Добавление команд печати
```bsl
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
// Форма 1
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "МояПечатнаяФорма1"; // Идентификатор
КомандаПечати.Представление = НСтр("ru = 'Моя форма 1'");
КомандаПечати.Порядок = 5;
// Форма 2
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "МояПечатнаяФорма2"; // Идентификатор
КомандаПечати.Представление = НСтр("ru = 'Моя форма 2'");
КомандаПечати.Порядок = 10;
// Комплект документов
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "МояПечатнаяФорма1,МояПечатнаяФорма2"; // идентификаторы команд
КомандаПечати.Представление = НСтр("ru = 'Комплект документов'");
КомандаПечати.Порядок = 75;
КонецПроцедуры
```
## Добавление интерфейсной процедуры "Печать"
```bsl
// Формирует печатные формы.
//
// Параметры:
// МассивОбъектов - Массив из ЛюбаяСсылка - список объектов, для которых была выполняется команда печати
// ПараметрыПечати - Структура - произвольные параметры, переданные при вызове команды печати;
// КоллекцияПечатныхФорм - ТаблицаЗначений - возвращаемый параметр, коллекция сформированных печатных форм:
// * ИмяМакета - Строка - идентификатор печатной формы;
// * СинонимМакета - Строка - название печатной формы;
//
// * ТабличныйДокумент - ТабличныйДокумент - одна или несколько печатных форм, выведенных в один табличный документ
// Для разметки печатных форм внутри табличного документа после вывода каждой печатной формы
// необходимо вызывать процедуру УправлениеПечатью.ЗадатьОбластьПечатиДокумента;
// Параметр не используется, если вывод печатных форм выполняется в формате офисных документов
// (см. параметр "ОфисныеДокументы");
//
// * ОфисныеДокументы - Соответствие из КлючИЗначение - коллекция печатных форм в формате офисных документов:
// ** Ключ - Строка - адрес во временном хранилище двоичных данных печатной формы;
// ** Значение - Строка - имя файла печатной формы.
//
// * ИмяФайлаПечатнойФормы - Строка - имя файла печатной формы при сохранении в файл или отправке в качестве
// почтового вложения. Не используется для печатных форм в формате офисных документов.
// По умолчанию имя файла устанавливается в формате
// "[НазваниеПечатнойФормы] № [Номер] от [Дата]" для документов,
// "[НазваниеПечатнойФормы] - [ПредставлениеОбъекта] - [ТекущаяДата]" для объектов.
// - Соответствие из КлючИЗначение - имена файлов для каждого объекта:
// ** Ключ - ЛюбаяСсылка - ссылка на объект печати из коллекции МассивОбъектов;
// ** Значение - Строка - имя файла;
//
// * Экземпляров - Число - количество копий, которое необходимо вывести на печать;
// * ПолныйПутьКМакету - Строка - используется для быстрого перехода к редактированию макета печатной формы
// в общей форме ПечатьДокументов;
// * ДоступенВыводНаДругихЯзыках - Булево - необходимо установить значение Истина, если печатная форма адаптирована
// для вывода на произвольном языке.
//
// ОбъектыПечати - СписокЗначений - выходной параметр, соответствие между объектами и именами областей в табличных
// документах, заполняется автоматически
// при вызове УправлениеПечатью.ЗадатьОбластьПечатиДокумента:
// * Значение - ЛюбаяСсылка - ссылка из коллекции МассивОбъектов,
// * Представление - Строка - имя области с объектом в табличных документах;
//
// ПараметрыВывода - Структура - настройки вывода печатных форм:
// * ПараметрыОтправки - Структура - для автоматического заполнения полей в форме создания письма при отправке
// сформированных печатных форм по почте:
// ** Получатель - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Получатель
// ** Тема - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Тема
// ** Текст - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.Текст
// * КодЯзыка - Строка - язык, на котором требуется сформировать печатную форму.
// Состоит из кода языка по ISO 639-1 и, опционально, кода страны по ISO 3166-1, разделенных
// символом подчеркивания. Примеры: "en", "en_US", "en_GB", "ru", "ru_RU".
//
// * ЗаголовокФормы - Строка - переопределяет заголовок формы печати документов (ПечатьДокументов).
//
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "МояПечатнаяФорма1");
Если НужноПечататьМакет Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"МояПечатнаяФорма1",
НСтр("ru = 'Моя печатная форма 1'"),
ПечатнаяФорма1(МассивОбъектов, ОбъектыПечати),
,
"Документ.ТестоваяПечатьДокументов.ТестовыйМакетПечати");
КонецЕсли;
НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "МояПечатнаяФорма2");
Если НужноПечататьМакет Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"МояПечатнаяФорма2",
НСтр("ru = 'Моя печатная форма 2'"),
ПечатнаяФорма2(МассивОбъектов, ОбъектыПечати),
,
"Документ.ТестоваяПечатьДокументов.ТестовыйМакетПечати");
КонецЕсли;
КонецПроцедуры
Функция ПечатнаяФорма1(МассивОбъектов, ОбъектыПечати)
ТабДок = Новый ТабличныйДокумент;
...
// Получаем макет, заполняем, возвращаем
...
Возврат ТабДок;
КонецФункции
Функция ПечатнаяФорма2(МассивОбъектов, ОбъектыПечати)
ТабДок = Новый ТабличныйДокумент;
...
// Получаем макет, заполняем, возвращаем
...
Возврат ТабДок;
КонецФункции
```
## Список возможных параметров команды печати (для справки)
```bsl
// Создает пустую таблицу с описанием команд печати.
// Таблица команд печати передается в процедуры ДобавитьКомандыПечати,
// размещенные в модулях менеджеров объектов конфигурации, которые перечислены в процедуре
// УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати.
//
// Возвращаемое значение:
// ТаблицаЗначений:
//
// * Идентификатор - Строка - идентификатор команды печати, по которому менеджер печати определяет печатную
// форму, которую необходимо сформировать.
// Например, "СчетЗаказ".
//
// Для печати нескольких печатных форм можно указывать одновременно несколько их
// идентификаторов (строкой, через запятую либо массивом строк), например:
// "СчетЗаказ,ГарантийноеПисьмо".
//
// Если необходимо задать количество копий печати для печатной формы, то ее
// идентификатор нужно продублировать столько раз, сколько копий необходимо
// сформировать. При этом следует учитывать, что порядок следования печатных
// форм в комплекте будет соответствовать порядку идентификаторов печатных форм,
// указанных в этом параметре. Например (2 счета на оплату + 1 гарантийное письмо):
// "СчетЗаказ,СчетЗаказ,ГарантийноеПисьмо".
//
// Идентификатор печатной формы может содержать в себе и альтернативный менеджер
// печати, если он отличается от указанного в параметре МенеджерПечати,
// например: "СчетЗаказ,Обработка.ПечатнаяФорма.ГарантийноеПисьмо".
//
// В этом примере ГарантийноеПисьмо формируется в менеджере печати
// Обработка.ПечатнаяФорма, а СчетЗаказ - в менеджере печати, указанном в
// параметре МенеджерПечати.
//
// Для печатных форм, менеджером печати которых является общий модуль
// "УправлениеПечатью", в качестве идентификатора необходимо указать полный путь к макету.
// Например, "Документ.СчетНаОплатуПокупателю.ПФ_MXL_СчетНаОплату".
//
// - Массив - список идентификаторов команд печати.
//
// * Представление - Строка - представление команды в меню Печать.
// Например, "Счет на оплату".
//
// * МенеджерПечати - Строка - (необязательный) имя объекта, в модуле менеджера которого располагается
// процедура Печать, формирующая табличные документы для этой команды.
// Если печатная форма формируется автоматически по данным печати и макету, то
// в параметре необходимо указать общий модуль "УправлениеПечатью".
// Значение по умолчанию - имя модуля менеджера объекта.
// Например, "Документ.СчетНаОплатуПокупателю".
// * ТипыОбъектовПечати - Массив - (необязательный) список типов объектов, для которых предназначена команда
// печати. Параметр предназначен для команд печати в журналах документов, где
// требуется проверка передаваемого типа объекта перед вызовом менеджера печати.
// Если список не заполнен, то при автоматическом создании списка команд печати
// в журнале документов он заполняется типом объекта, из которого была
// импортирована команда печати.
//
// * Обработчик - Строка - (необязательный) клиентский обработчик команды, в который необходимо передать
// управление вместо стандартного обработчика команды Печать. Используется,
// например, когда печатная форма формируется на клиенте.
// Формат "<ИмяОбщегоМодуля>.<ИмяПроцедуры>" используется, когда процедура размещена
// в общем модуле.
// Формат "<ИмяПроцедуры>" используется, когда процедура размещена
// в модуле основной формы отчета или обработки, указанной в МенеджерПечати.
// Например,
// КомандаПечати.Обработчик = "ЗащитаПерсональныхДанныхКлиент.ОткрытьФормуСогласиеНаОбработкуПерсональныхДанных";
// Пример обработчика в модуле формы:
// // Формирует печатную форму <представление печатной формы>.
// //
// // Параметры:
// // ПараметрыПечати - Структура - сведения о печатной форме.
// // * ОбъектыПечати - Массив - массив ссылок выбранных объектов.
// // * Форма - ФормаКлиентскогоПриложения - форма, из которой вызвана
// // команда печати.
// // * ДополнительныеПараметры - Структура - дополнительные параметры печати.
// // Прочие ключи структуры соответствуют колонкам таблицы КомандыПечати,
// // подробнее см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
// //
// &НаКлиенте
// Функция <ИмяФункции>(ПараметрыПечати) Экспорт
// // Обработчик печати.
// КонецФункции
// Следует иметь в виду, что обработчик вызывается при помощи метода Вычислить,
// поэтому в качестве обработчика может выступать только функция.
// При этом возвращаемое значение функции никак в дальнейшем не используется подсистемой.
//
// * Порядок - Число - (необязательный) Значение от 1 до 100, указывающее порядок размещения команды
// по отношению к другим командам. Сортировка команд меню Печать осуществляется
// сначала по полю Порядок, затем по представлению.
// Значение по умолчанию - 50.
//
// * Картинка - Картинка - (необязательный) Картинка, которая отображается возле команды в меню Печать.
// Например, БиблиотекаКартинок.ФорматPDF.
//
// * СписокФорм - Строка - (необязательный) Имена форм через запятую, в которых должна отображаться
// команда. Если параметр не указан, то команда печати будет отображаться во
// всех формах объекта, где встроена подсистема Печать.
// Например, "ФормаДокумента".
//
// * МестоРазмещения - Строка - (необязательный) Имя группы формы, в которую необходимо разместить
// команду печати. Параметр необходимо использовать только в случае, когда на
// форме размещается более одного подменю "Печать". В остальных случаях место
// размещения необходимо задавать в модуле формы при вызове
// метода ПодключаемыеКоманды.ПриСозданииНаСервере.
//
// * ЗаголовокФормы - Строка - (необязательный) Произвольная строка, переопределяющая стандартных заголовок
// формы "Печать документов". Например, "Настраиваемый комплект".
//
// * ФункциональныеОпции - Строка - (необязательный) Имена функциональных опций через запятую, от которых зависит
// доступность команды печати.
//
// * УсловияВидимости - Массив - (необязательный) Коллекция условий видимости команды в зависимости от
// контекста. Условия видимости команды задаются при помощи процедуры
// ДобавитьУсловиеВидимостиКоманды.
// Если параметр не задан, команда видна вне зависимости от контекста.
//
// * ПроверкаПроведенияПередПечатью - Булево - (необязательный) Признак необходимости проверки проведенности
// документов перед печатью. Если выбран хотя бы один непроведенный документ, то
// перед выполнением команды печати возникает диалог проведения.
// Для непроведенных документов команда печати не выполняется.
// Если параметр не указан, то проверка проведенности не выполняется.
//
// * СразуНаПринтер - Булево - (необязательный) Признак необходимости печати документов без предварительного
// просмотра, сразу на принтер. Если параметр не указан, то при выборе команды
// печати открывается форма предварительного просмотра "Печать документов".
//
// * ФорматСохранения - ТипФайлаТабличногоДокумента - (необязательный) Применяется для быстрого сохранения печатной
// формы (без дополнительных действий) в различные форматы, отличные от mxl.
// Если параметр не указан, то формируется обычный mxl.
// Например, ТипФайлаТабличногоДокумента.PDF.
//
// При выборе команды печати сразу открывается сформированный в формате PDF
// документ.
//
// * ПереопределитьПользовательскиеНастройкиКоличества - Булево - (необязательный) Признак необходимости отключения в
// форме ПечатьДокументов механизма сохранения/восстановления выбранного
// пользователем количества экземпляров на печать. Если параметр не указан, то
// механизм сохранения/восстановления настроек будет работать при открытии формы.
// ПечатьДокументов.
//
// * ДополнитьКомплектВнешнимиПечатнымиФормами - Булево - (необязательный) Признак необходимости дополнить комплект
// документов всеми подключенными к объекту внешними печатными формами
// (подсистема ДополнительныеОтчетыИОбработки). Если параметр не указан, внешние
// печатные формы не добавляются в комплект.
//
// * ФиксированныйКомплект - Булево - (необязательный) Признак необходимости блокировки от изменения пользователем
// состава комплекта документов. Если параметр не указан, то пользователь сможет
// исключать отдельные печатные формы из комплекта в форме ПечатьДокументов, а
// также изменять их количество.
//
// * ДополнительныеПараметры - Структура - (необязательный) произвольные параметры для передачи в менеджер печати.
//
// * НеВыполнятьЗаписьВФорме - Булево - (необязательный) Признак необходимости отключения механизма записи объекта
// перед выполнением команды печати. Используется в исключительных случаях. Если
// параметр не указан, производится запись объекта в случае, если в форме
// объекта установлен признак модифицированности.
//
// * ТребуетсяРасширениеРаботыСФайлами - Булево - (необязательный) Признак необходимости подключения расширения для работы
// с 1С:Предприятием перед выполнением команды. Если параметр не указан, расширение
// подключаться не будет.
//
// * ОсновнаяПечатнаяФорма - Булево - (необязательный) Признак определяющий возможность запоминания
// наименований сформированных печатных форм.
//
// * НаименованиеПечатнойФормы - Строка - (необязательный) Наименование, которое будет сохранено при установленном
// признаке "ОсновнаяПечатнаяФорма". Если не заполнено, будет запоминаться значение
// из поля "Представление".
//
Функция СоздатьКоллекциюКомандПечати() Экспорт
```
# Подключение к подсистеме "Подключаемые команды"
См. `Подключение к подсистемам - Подключение к подсистеме "Подключаемые команды"`

View File

@ -0,0 +1,16 @@
---
title: Штрихкод документа в печатную форму
---
```
// Вывести штрихкод в табличный документ
//
// Параметры:
// ТабличныйДокумент - ТабличныйДокумент - Табличный документ
// Макет - ТабличныйДокумент
// ОбластьМакета - ОбластьЯчеекТабличногоДокумента - Область
// Ссылка - ЛюбаяСсылка - Ссылка на документ из которого будет вычислен штрихкод.
//
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, Ссылка)
```