https://its.1c.ru/db/bsp3110doc#content:4:hdoc:issogl3_разработкакомандпечати
Добавление подменю Печать
в модуле менеджера нового документа необходимо добавить экспортные процедуры:
- Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) // Реализация формирования печатной формы
- ПриОпределенииНастроекПечати(Настройки)
- ДобавитьКомандыПечати(КомандыПечати) // описание команд печати и их обработчиков
Пример демонстрирует добавление стандартной печатной формы М-15 к новому документу. Код обработчика стандартный из БП3.
// Функция формирует табличный документ унифицированной формы М-15
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// Табличный документ по форме М-4 (приходный ордер).
//
Функция ПечатьМ15(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.АвтоМасштаб = Истина;
ТабДокумент.ПолеСверху = 10;
ТабДокумент.ПолеСнизу = 10;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПередачаТоваров_М15";
СисИнфо = Новый СистемнаяИнформация;
Если ПустаяСтрока(СисИнфо.ИнформацияПрограммыПросмотра) Тогда
ТабДокумент.ПолеСлева = 0;
Иначе
ТабДокумент.ПолеСлева = 10;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ДополнительнаяКолонкаПечатныхФормДокументов",
Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить());
Запрос.Текст =
"ВЫБРАТЬ
| док.Ссылка КАК Ссылка,
| док.Номенклатура КАК Номенклатура,
| док.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| док.Количество КАК КоличествоПринято,
| док.СчетУчета.Представление КАК СчетУчета,
| док.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ ВложенныйЗапрос
|ИЗ
| Документ.гдсДавальческиеМТРЗаказчика.Товары КАК док
|ГДЕ
| док.Ссылка В(&МассивОбъектов)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НомерСтроки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| док.Ссылка КАК Ссылка,
| док.Номер КАК НомерДокумента,
| док.Дата КАК ДатаДокумента,
| док.Дата КАК ДатаНач,
| док.Дата КАК ДатаКон,
| док.Дата КАК ДатаСоставления,
| док.Организация КАК Организация,
| док.Склад КАК Склад,
| док.Склад.Наименование КАК СкладНаименование,
| док.ВалютаДокумента КАК ВалютаДокумента,
| док.Контрагент.Код КАК КонтрагентКод,
| док.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| док.Контрагент КАК Контрагент,
| док.ДоговорКонтрагента КАК ДоговорКонтрагента,
| док.ДоговорКонтрагента.Наименование КАК ДоговорКонтрагентаНаименование,
| док.ДоговорКонтрагента.Номер КАК ДоговорКонтрагентаНомер,
| док.ДоговорКонтрагента.Дата КАК ДоговорКонтрагентаДата
|ИЗ
| Документ.гдсДавальческиеМТРЗаказчика КАК док
|ГДЕ
| док.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| док.Дата,
| док.Ссылка
|ИТОГИ
| МИНИМУМ(ДатаНач),
| МАКСИМУМ(ДатаКон)
|ПО
| ОБЩИЕ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Ссылка,
| ВложенныйЗапрос.Ссылка.Номер КАК НомерДокумента,
| ВложенныйЗапрос.Ссылка.Дата КАК ДатаДокумента,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА ВложенныйЗапрос.Номенклатура.Артикул
| ИНАЧЕ ВложенныйЗапрос.Номенклатура.Код
| КОНЕЦ КАК НоменклатурныйНомер,
| ВложенныйЗапрос.Номенклатура.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияНаименование,
| ВложенныйЗапрос.Номенклатура.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
| ВложенныйЗапрос.КоличествоПринято КАК Количество,
| ВложенныйЗапрос.СчетУчета КАК СчетУчета
|ИЗ
| ВложенныйЗапрос КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| ДатаДокумента,
| НомерСтроки";
Результат = Запрос.ВыполнитьПакет();
ШапкаИтоги= Результат[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВсеСтроки = Результат[2].Выгрузить(ОбходРезультатаЗапроса.Прямой);
ВсеСтроки.Индексы.Добавить("Ссылка,НомерСтроки");
Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_М15");
СтруктураПоиска = Новый Структура();
Если ШапкаИтоги.Следующий() Тогда
ДатаНач = ?(ЗначениеЗаполнено(ШапкаИтоги.ДатаНач), ШапкаИтоги.ДатаНач, '00010101');
ДатаКон = ?(ЗначениеЗаполнено(ШапкаИтоги.ДатаКон), ШапкаИтоги.ДатаКон, '00010101');
ТаблицаСуммСписанияПоДокументам = БухгалтерскийУчетПереопределяемый.ПолучитьСуммуСписанияАктивов(МассивОбъектов,
ДатаНач, ДатаКон);
ПервыйДокумент = Истина;
Шапка = ШапкаИтоги.Выбрать();
Пока Шапка.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
// Выводим общие реквизиты шапки
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация,
Шапка.ДатаСоставления);
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьМакетаШапка.Параметры.Заполнить(Шапка);
ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
СведенияОбОрганизации);
ОбластьМакетаШапка.Параметры.ОрганизацияПоОКПО = СведенияОбОрганизации.КодПоОКПО;
ОбластьМакетаШапка.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(
Шапка.НомерДокумента, Истина, Ложь);
СведенияОКонтрагенте = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Контрагент,
Шапка.ДатаСоставления);
ПредставлениеКонтрагента = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте,
"НаименованиеДляПечатныхФорм,");
ОбластьМакетаШапка.Параметры.КонтрагентНаименование = ПредставлениеКонтрагента;
ОбластьМакетаШапка.Параметры.Получатель = ПредставлениеКонтрагента;
ОбластьМакетаШапка.Параметры.Основание = Шапка.ДоговорКонтрагентаНаименование;
ТабДокумент.Вывести(ОбластьМакетаШапка);
Запрос.УстановитьПараметр("ТекущийДокумент", Шапка.Ссылка);
СтрокиТоваров = ВсеСтроки.НайтиСтроки(Новый Структура("Ссылка", Шапка.Ссылка));
// Выводим заголовок таблицы
ОбластьМакетаЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
НомерСтраницы = 1;
КоличествоСтрок = СтрокиТоваров.Количество();
// Инициализация итогов в документе
ИтогоКоличествоПринято = 0;
ИтогоСуммаБезНДС = 0;
ИтогоСуммаНДС = 0;
ИтогоВсегоСНДС = 0;
НомерСтроки = 0;
// Выводим многострочную часть документа
Для Каждого ТекущаяСтрока Из СтрокиТоваров Цикл
НомерСтроки = НомерСтроки + 1;
СтруктураПоиска.Вставить("Регистратор", Шапка.Ссылка);
СтруктураПоиска.Вставить("Номенклатура", ТекущаяСтрока.Номенклатура);
НайденныеСтроки = ТаблицаСуммСписанияПоДокументам.НайтиСтроки(СтруктураПоиска);
Количество = ТекущаяСтрока.Количество;
Если НайденныеСтроки.Количество() = 0 Тогда
ВсегоСНДС = 0;
Цена = 0;
Иначе
СтрокаСуммСписания = НайденныеСтроки[0];
Цена = ?(СтрокаСуммСписания.Количество = 0, 0, СтрокаСуммСписания.Сумма / СтрокаСуммСписания.Количество);
ВсегоСНДС = Окр(Цена * Количество, 2, 1);
КонецЕсли;
ОбластьМакетаСтрока.Параметры.Заполнить(ТекущаяСтрока);
ОбластьМакетаСтрока.Параметры.СуммаСНДС = ВсегоСНДС;
ОбластьМакетаСтрока.Параметры.СуммаБезНДС = ВсегоСНДС;
ОбластьМакетаСтрока.Параметры.СуммаНДС = 0;
ОбластьМакетаСтрока.Параметры.Цена = Цена;
ОбластьМакетаСтрока.Параметры.ТоварНаименование = СокрЛП(ТекущаяСтрока.ТоварНаименование);
ОбластьМакетаСтрока.Параметры.КоррСчет = СокрЛП(ТекущаяСтрока.СчетУчета);
// Проверим вывод
СтрокаСПодвалом = Новый Массив;
Если НомерСтроки = 1 Тогда
СтрокаСПодвалом.Добавить(ОбластьМакетаЗаголовокТаблицы); // если первая строка, то должен
КонецЕсли; // помещаться заголовок
СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
Если НомерСтроки = КоличествоСтрок Тогда // если последняя строка, должен
СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал); // помещаться и подвал документа
КонецЕсли;
Если НЕ ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда
Если КоличествоСтрок > 1 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
// Очистим итоги по странице
ИтогоМестНаСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоСуммаНаСтранице = 0;
ИтогоНДСНаСтранице = 0;
ИтогоСуммаСНДСНаСтранице = 0;
// Выведем заголовок таблицы
НомерСтраницы = НомерСтраницы + 1;
ОбластьМакетаЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
КонецЕсли;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакетаСтрока);
ИтогоКоличествоПринято = ИтогоКоличествоПринято + Количество;
ИтогоСуммаБезНДС = ИтогоСуммаБезНДС + ВсегоСНДС;
ИтогоВсегоСНДС = ИтогоВсегоСНДС + ВсегоСНДС;
КонецЦикла;
// Выводим итоги по документу
ОбластьМакетаПодвал.Параметры.Заполнить(Шапка);
ПодразделениеОтветственныхЛиц = Шапка.ПодразделениеОрганизации;
Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Организация,
Шапка.ДатаДокумента, ПодразделениеОтветственныхЛиц);
Руководитель = Руководители.РуководительПредставление;
Бухгалтер = Руководители.ГлавныйБухгалтерПредставление;
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("ФИОРуководителя", Руководитель);
ДанныеЗаполнения.Вставить("ФИОГлавБухгалтера", Бухгалтер);
ДанныеЗаполнения.Вставить("ДолжностьРуководителя", Руководители.РуководительДолжностьПредставление);
ДанныеЗаполнения.Вставить("ДолжностьГлавБух", Руководители.ГлавныйБухгалтерДолжностьПредставление);
Если Шапка.Склад <> Справочники.Склады.ПустаяСсылка() Тогда
МОЛ = ОтветственныеЛицаБП.ОтветственноеЛицоНаСкладе(Шапка.Склад, Шапка.ДатаДокумента);
ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(Шапка.Организация, МОЛ, Шапка.ДатаДокумента);
ДанныеЗаполнения.Вставить("ДолжностьКладовщика", ДанныеФизЛица.Должность);
ДанныеЗаполнения.Вставить("ФИОКладовщика", ДанныеФизЛица.Представление);
КонецЕсли;
ДанныеЗаполнения.Вставить("КоличествоПорядковыхНомеровЗаписейПрописью", ЧислоПрописью(КоличествоСтрок, ,",,,,,,,,0"));
ДанныеЗаполнения.Вставить("СуммаПрописью",ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(ИтогоВсегоСНДС, Шапка.ВалютаДокумента));
ДанныеЗаполнения.Вставить("ИтогНДС", ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(0, Шапка.ВалютаДокумента));
ОбластьМакетаПодвал.Параметры.Заполнить(ДанныеЗаполнения);
ТабДокумент.Вывести(ОбластьМакетаПодвал);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
УправлениеПечатьюБП.ДоработатьФаксимильнуюПодписьИПечать(ТабДокумент, ОбъектыПечати,
Шапка.Организация, Шапка.Ссылка);
КонецЦикла;
КонецЕсли;
Возврат ТабДокумент;
КонецФункции
// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
// ИменаМакетов - Строка - Имена макетов, перечисленные через запятую
// МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать
// ПараметрыПечати - Структура - Структура дополнительных параметров печати
//
// ИСХОДЯЩИЕ:
// КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
// ПараметрыВывода - Структура - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "М15") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "М15", "М-15 (Накладная)",
ПечатьМ15(МассивОбъектов, ОбъектыПечати, ПараметрыПечати), , "ОбщийМакет.ПФ_MXL_М15");
КонецЕсли;
ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов,
КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
#Область ПрограммныйИнтерфейс
// Переопределяет настройки печати для объекта.
//
// Параметры:
// Настройки - см. УправлениеПечатью.НастройкиПечатиОбъекта.
//
Процедура ПриОпределенииНастроекПечати(Настройки) Экспорт
Настройки.ПриДобавленииКомандПечати = Истина;
КонецПроцедуры
// Заполняет список команд печати.
//
// Параметры:
// КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
// Накладная на отпуск материалов на сторону (М-15)
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "М15";
КомандаПечати.Представление = НСтр("ru = 'Накладная на отпуск материалов на сторону (М-15)'");
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента";
КомандаПечати.Порядок = 20;
КонецПроцедуры
#КонецОбласти
В модуле формы нового документа
В реквизиты формы добавить реквизит ПараметрыПодключаемыхКоманд произвольного типа
процедуры и код и прописать указанные обработчики в свойствах формы этого документа
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
ЭтоНовый = Параметры.Ключ.Пустая();
Если Параметры.Ключ.Пустая() Тогда
ПодготовитьФормуНаСервере();
КонецЕсли;
КонецПроцедуры
#Область СлужебныеПроцедурыИФункцииБСП
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормИСКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
В модуле формы списка нового документа
В реквизиты формы добавить реквизит ПараметрыПодключаемыхКоманд произвольного типа
В элементы формы добавить команды (скопировать из существующего документа)
- ГруппаКоманднаяПанель
- ПодменюСоздать (если нужны отдельные команды для отдельных видов документа)
- ГруппаКнопкиКоманднойПанели
- ГруппаВажныеКоманды
- ФормаОбщаяКомандаПоказатьДвиженияДокумента
- ПодменюПечать
- ГруппаВажныеКоманды
- ГруппаГлобальныеКоманды
- ОбщаяКомандаПрисоединенныеФайлы
- ОбщаяКомандаДополнительныеСведенияКоманднаяПанель
- ОбщаяКомандаИсторияИзменений
- ОбщаяКомандаСтруктураПодчиненности
- ПодменюОтчеты
- КомандыЭДО
- ПодменюЗаполнить
для скопированных команд прописать данные с которыми она работают (при копировании очистятся)
Реквизит хранящий список документов должен быть с именем Список (или придется его прописать в командах модуля формы списка)
В модуле формы списка нового документа
добавить следующие процедуры-обработчики и прописать в свойствах обработчиков формы списка.
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Перем ОтборПоВидуОперации;
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
ПараметрыРазмещения.КоманднаяПанель = Элементы.ГруппаКоманднаяПанель;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
ОбщегоНазначенияБПВызовСервера.УстановитьОтборПоОсновнойОрганизации(ЭтаФорма);
Если Параметры.Свойство("Отбор") Тогда
Параметры.Отбор.Свойство("ВидОперации", ОтборПоВидуОперации)
КонецЕсли;
МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Документы.ПередачаТоваров);
//Элементы.СписокКонтекстноеМенюИзменитьВыделенные.Видимость = МожноРедактировать;
ОбщегоНазначенияБП.УстановитьВидимостьКолонокДополнительнойИнформации(ЭтотОбъект);
УстановитьУсловноеОформление();
АдресХранилищаНастройкиДинСпискаДляРеестра = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
ПомеченныеНаУдалениеСервер.СкрытьПомеченныеНаУдаление(ЭтотОбъект);
ДляВидаОперацииДоступенЭДО = ОбменСКонтрагентамиБП.ДляВидаОперацииПередачиТоваровДоступенЭДО(ОтборПоВидуОперации);
Если ДляВидаОперацииДоступенЭДО Тогда
// Подсистема "ОбменСКонтрагентами".
ПараметрыПриСозданииНаСервере = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаСписка();
ПараметрыПриСозданииНаСервере.Форма = ЭтотОбъект;
ПараметрыПриСозданииНаСервере.МестоРазмещенияКоманд = Элементы.КомандыЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаСписка(ПараметрыПриСозданииНаСервере);
// Конец подсистема "ОбменСКонтрагентами".
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ОтображатьСтатусыДокументов
И ДляВидаОперацииДоступенЭДО Тогда
// Подсистема "ОбменСКонтрагентами"
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
// Конец Подсистема "ОбменСКонтрагентами"
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ИзменениеОсновнойОрганизации" Тогда
ОбщегоНазначенияБПКлиент.ИзменитьОтборПоОсновнойОрганизации(Список, ,Параметр);
КонецЕсли;
ПрисоединенныеФайлыБПКлиент.ОбновитьСписокПослеДобавленияФайла(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если ДляВидаОперацииДоступенЭДО Тогда
// Подсистема "ОбменСКонтрагентами".
ПараметрыОповещенияЭДО = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаСписка();
ПараметрыОповещенияЭДО.Форма = ЭтотОбъект;
ПараметрыОповещенияЭДО.ИмяДинамическогоСписка = "Список";
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаСписка(ИмяСобытия, Параметр, Источник, ПараметрыОповещенияЭДО);
// Конец подсистема "ОбменСКонтрагентами".
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
//УсловноеОформление.Элементы.Очистить();
//// ВидОперации
//ЭлементУО = УсловноеОформление.Элементы.Добавить();
//КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "ВидОперации");
//ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор,
// "НесколькоВидовОпераций", ВидСравненияКомпоновкиДанных.Равно, Ложь);
//ЭлементУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункцииБСП
&НаСервере
Процедура НастройкиДинамическогоСписка()
Отчеты.РеестрДокументов.НастройкиДинамическогоСписка(ЭтотОбъект);
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
Если УправлениеПечатьюБПКлиентСервер.ЭтоИмяКомандыРеестрДокументов(Команда.Имя) Тогда
НастройкиДинамическогоСписка();
КонецЕсли;
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти
Добавление функциональности Присоединенные файлы
Скопировать один из типовых справочников присоединенных файлов
Здесь покажу на примере ПоступлениеТоваровУслугПрисоединенныеФайлы. После копирования справочника присоединенные файлы необходимо
Изменить Имя на Имя ИмяНовогоДокументаПрисоединенныеФайлы
Изменить синоним Присоединенные файлы (Имя нового документа)
Изменить тип реквизита ВладелецФайла на ссылку на новый документ (Важно сделать!)
Расширить определяемые типы для владельцев файлов
Для каждого «объекта с файлами» (например, владельца), использующего справочники для хранения файлов, необходимо:
- Расширить состав типов для:
- ОпределяемыйТип.ВладелецПрисоединенныхФайлов (ссылки)
- ОпределяемыйТип.ВладелецПрисоединенныхФайловОбъект (объекты, кроме документов)
добавив в них новый документ.
Изменить подписки на события:
- Подписка.УстановитьПометкуУдаленияПрисоединенныхФайловДокументов – добавить ссылку на докумнет в Свойство Источник
Автоматическое копирование файлов при копировании объектов
Если при интерактивном копировании объекта с файлами требуется автоматически копировать файлы в новый объект, выполните следующие действия:
В модуле формы, в процедуре ПриСозданииНаСервере:
При вызове процедуры ПриСозданииНаСервере из общего модуля РаботаСФайлами, передайте третий параметр:
НастройкиРаботыСФайламиВФорме = РаботаСФайлами.НастройкиРаботыСФайламиВФорме();
НастройкиРаботыСФайламиВФорме.КопироватьПрисоединенныеФайлы = Истина;
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ДобавляемыеЭлементы, НастройкиРаботыСФайламиВФорме);
В модуле формы, в процедуре ПриЗаписиНаСервере:
Добавьте следующий код:
РаботаСФайлами.ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтотОбъект);
Добавление отображения связанных документов
Добавить новый документ в тип параметра команды ОбщаяКоманда.СвязанныеДокументы
Добавление отображения дополнительных сведений
Добавить новый документ в определяемый тип ВладелецДополнительныхСведений
Данный тип указан как параметр команды ОбщаяКоманда.ДополнительныеСведенияКоманднаяПанель
Добавление отображения истории изменений
Добавить новый документ в определяемый тип ВерсионируемыеДанные
Данный тип указан как параметр команды ОбщаяКоманда.ИсторияИзменений
+ There are no comments
Add yours