Универсальный механизм печати подписей согласующих лиц в отчетах конфигурации

15.06.10

Разработка - Механизмы платформы 1С

Данный алгоритм можно использовать в любой конфигурации. Небольшие изменения конфигурации ЗУП с целью создания инструмента, с помощью которого пользователь без труда сможет управлять отображением подписей согласующих лиц в печатных формах отчетов конфигурации. Плюсом предложенного алгоритма является то, что для реализации вышеописанного инструмента нет необходимости в изменении всего множества шаблонов отчетов конфигурации, для пользователя управление печатью подписей всех отчетов будет происходить из одной "точки входа" - обработки. При этом, подписи можно добавлять, практически, в любое место отчета.

Скачать файлы

Наименование Файл Версия Размер
Печать подписей
.rar 1,17Mb
159
.rar 1,17Mb 159 Скачать

Для этого воспользуемся стандартным механизмом : "Настройка колонтитулов" (Сервис/Настройка колонтитулов). Придеться  добавить доп. функционал , не испортив старого.

 

Здесь мы добавили возможность выбора конкретного отчета , для которого будут применяться настройки, а так же дополниельные настрйки из созданного нами нового перечисления с макетом: "РазделыОтчётов"

 

Создадим и заполним новый регистр сведений для хранения имеющих право подписи: "ДопРазделыОтчётов"

 

Теперь нам осталось внести изменения только в процедуру "УстановитьКолонтитулыПоУмолчанию" общего модуля "УправлениеОтчетами".

В модули отчетов и в макеты никаких изменений вносить не требуется (для стандартного механизма печати колонтитулов вызов вышеуказанной процедуры уже во всех отчетах присутствует).

Организация берется из параметров текущего пользователя.

тзПечатьСтраниц в параметрах - это таблица для расширения данного алгоритма на печать подписей в документах, а так же, если потребуется, печать подписей на каждой странице  (в данный момент, печать подписей в документах не реализована).

 

 Код , примерно, такой:

// Установка колонтитулов для отчета
//
// Параметры
//  ТабличныйДокумент  – ТабличныйДокумент – Отчет, у которого необходимо установить колонтитулы
//  НазваниеОтчета     – Строка            – Название отчета для вывода в колонтитул
//  Пользователь       – Строка            – Имя пользователя для вывода в колонтитул
//

Процедура УстановитьКолонтитулыПоУмолчанию(ТабличныйДокумент, НазваниеОтчета, Пользователь, Дата = Неопределено,тзПечатьСтраниц=Неопределено) Экспорт
Перем
КолСтрокВсего,КолСтраниц;
 
КолСтрокВсего = 0;
 
КолСтраниц = 0;
 
Настройка = ПолучитьНастройкиКолонтитулов();
 Если НЕ
тзПечатьСтраниц = Неопределено Тогда
  Если
тзПечатьСтраниц.Количество() > 0 Тогда
  
тзПечатьСтраниц.Сортировать("Отчёт Возр,НомерСтраницы Возр");
  
СтруктураПоиска = Новый Структура("Отчёт", НазваниеОтчета);
  
МассивНайденныхСтрок = тзПечатьСтраниц.НайтиСтроки(СтруктураПоиска);
   Если
МассивНайденныхСтрок.Количество()> 0 Тогда
    
КолСтрокВсего = МассивНайденныхСтрок[МассивНайденныхСтрок.ВГраница()].ВсегоРазмер;
    
КолСтраниц МассивНайденныхСтрок[МассивНайденныхСтрок.ВГраница()].НомерСтраницы;
   КонецЕсли;
   Если
ТабличныйДокумент.ВысотаТаблицы <= КолСтрокВсего Тогда
    
//начали с начала
    
тзПечатьСтраниц.Очистить();
   КонецЕсли;
  КонецЕсли;
  Если
тзПечатьСтраниц.Количество() = 0 Тогда
     
НоваяСтрока  = тзПечатьСтраниц.Добавить();
   
НоваяСтрока.НомерСтраницы = 0;
   
НоваяСтрока.Отчёт = НазваниеОтчета;
   
НоваяСтрока.ВсегоРазмер = 0;
            
КолСтрокВсего = 0;
   
КолСтраниц = 0;
  КонецЕсли;
 
НоваяСтрока  = тзПечатьСтраниц.Добавить();
 
НоваяСтрока.НомерСтраницы = КолСтраниц+1;
 
НоваяСтрока.Отчёт = НазваниеОтчета;
 
НоваяСтрока.ВсегоРазмер = 0;
 КонецЕсли;
 
//ищим имя объекта по синониму
 
Синоним = СокрЛП(НазваниеОтчета);
 
Имя = "";
 
номСимв = Найти(Синоним,"[");
 Если
номСимв > 0 Тогда
  
Синоним = СокрЛП(Лев(Синоним,номСимв-1));
 КонецЕсли;
 Если НЕ
ПустаяСтрока(Синоним) Тогда
   Для Каждого
ДокументМет из Метаданные.Документы Цикл
    Если
СокрЛП(ДокументМет.Синоним) = Синоним Тогда
     
Имя = "Документ"+СокрЛП(ДокументМет.Имя);
      Прервать;
//->Для Каждого ДокументМет из Метаданные.Документы Цикл
   
КонецЕсли;
    Если
Найти(СокрЛП(ДокументМет.Синоним),Синоним) > 0 Тогда
     
Имя = "Документ"+СокрЛП(ДокументМет.Имя);
      Прервать;
//->Для Каждого ДокументМет из Метаданные.Документы Цикл
   
КонецЕсли;
   КонецЦикла;
   Если
ПустаяСтрока(Имя) Тогда
    Для Каждого
ОтчетМет из Метаданные.Отчеты Цикл
     Если
СокрЛП(ОтчетМет.Синоним) = Синоним Тогда
      
Имя = "Отчет"+СокрЛП(ОтчетМет.Имя);
       Прервать;
//Для Каждого ОтчетМет из Метаданные.Отчеты Цикл
    
КонецЕсли;
     Если
Найти(СокрЛП(ОтчетМет.Синоним),Синоним) > 0 Тогда
      
Имя = "Отчет"+СокрЛП(ОтчетМет.Имя);
       Прервать;
//Для Каждого ОтчетМет из Метаданные.Отчеты Цикл
    
КонецЕсли;
    КонецЦикла;
   КонецЕсли;
   Если НЕ
ПустаяСтрока(Имя) Тогда
    Если
Настройка.Свойство("ПодписиМакетов") Тогда
    
ПодписиМакетов = Настройка["ПодписиМакетов"];
     Если
ПодписиМакетов.Свойство(Имя) Тогда
      Если (
ПодписиМакетов[Имя].ВерхнийКолонтитул.Выводить) или (ПодписиМакетов[Имя].НижнийКолонтитул.Выводить) Тогда
        
Настройка = ПодписиМакетов[Имя];
      КонецЕсли;
     КонецЕсли;
    КонецЕсли;
   КонецЕсли;
  КонецЕсли;
 
ШиринаСимвола  = 1;
 
ШиринаДокумента = ТабличныйДокумент.ШиринаТаблицы;
 
ВысотаДокумента = ТабличныйДокумент.ВысотаТаблицы;

 
тзСрезПоследних = РегистрыСведений.ДопРазделыОтчётов.СрезПоследних(?((Дата = Неопределено) или (Дата = Дата(1, 1, 1)),РабочаяДата,Дата),);
 
Запрос = Новый Запрос;
 
Запрос.Текст = "ВЫБРАТЬ
                | НастройкиПользователей.Значение как Организация
                |ИЗ
                | РегистрСведений.НастройкиПользователей КАК НастройкиПользователей
                |  ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.НастройкиПользователей КАК НастройкиПользователей1
                |  ПО НастройкиПользователей.Настройка = НастройкиПользователей1.Ссылка
                |ГДЕ
                | НастройкиПользователей.Пользователь = &Пользователь
                | И НастройкиПользователей.Настройка = &Организация"
;

 
Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.ТекущийПользователь);
 
Запрос.УстановитьПараметр("Организация",ПланыВидовХарактеристик.НастройкиПользователей.ОсновнаяОрганизация);
 
тзРезультат = Новый ТаблицаЗначений;
 
тзРезультат = Запрос.Выполнить().Выгрузить();
 
Организация = Справочники.Организации.ПустаяСсылка();
 Если
тзРезультат.Количество()>0 Тогда
  Если НЕ
тзРезультат[0]["Организация"] =  Неопределено  тогда
   Если НЕ
тзРезультат[0]["Организация"].Пустая()  тогда
    
Организация = тзРезультат[0]["Организация"].Ссылка;
   КонецЕсли;
  КонецЕсли;
 КонецЕсли;

 
//***МЕТКА1
 
ОтступСлева    = 0;
 
ОтступСправа   = 0;
 
ОтступСверху   = 0;
 
ВысотаПодписи   = 0;
 
ВысотаПодписиВсего = 0;
 
ВысотаПодписиТек  = 0;
 
ШиринаПодписиВсего  = 40;

 
//вверх - лево
 
ПерваяОрганизация = Справочники.Организации.ПустаяСсылка();
 Если
Настройка.ВерхнийКолонтитул.Свойство("ТекстСлева") //Если Настройка.ВерхнийКолонтитул.Свойство("ТекстСлева") Тогда
 
Для Сч = 0 По Перечисления.РазделыОтчётов.Количество()-1 //Для Сч = 0 По Перечисления.РазделыОтчётов.Количество()-1 Цикл
  
ВыбЭлемент = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Имя;
   Если (
Найти(Настройка.ВерхнийКолонтитул.ТекстСлева,"[&"+СокрЛП(ВыбЭлемент)+"]")>0) и (Настройка.ВерхнийКолонтитул.Выводить) Тогда
   
Синоним    = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Синоним;
   
Отбор = Новый Структура;
   
Отбор.Вставить("РазделОтчёта",Перечисления.РазделыОтчётов.Получить(Сч));
    Если НЕ
Организация.Пустая() Тогда
    
Отбор.Вставить("Организация",Организация);
    КонецЕсли;
   
МассивСтрок  = тзСрезПоследних.НайтиСтроки(Отбор);
   
ОтступСверху  = КолСтрокВсего;
   
ПерваяОрганизация = Справочники.Организации.ПустаяСсылка();
   
ИтоговыйДокумент   = Новый ТекстовыйДокумент;
   
ИтоговыйДокумент.Очистить();
   
Макет       = Перечисления.РазделыОтчётов.ПолучитьМакет("МакетТекст");
   
обМакет         = Макет.ПолучитьОбласть("Заголовок");
   
обМакет.Параметры.Заголовок = СокрЛП(Синоним);
   
ИтоговыйДокумент.Вывести(обМакет);
   
обМакет         = Макет.ПолучитьОбласть("Раздел");
   
ОтступСлева      = 0;
   
//ОтступСправа     = Макс(ШиринаДокумента - РазмерОбласти,0);
   
ОтступСправа     = Макс(ШиринаДокумента - 1,0);
   
//вывожу элементы
   
Для Каждого  строкаТЗ ИЗ МассивСтрок Цикл
     Если
ПерваяОрганизация.Пустая() Тогда
      
ПерваяОрганизация = строкаТЗ.Организация;
     КонецЕсли;
     Если
ПерваяОрганизация <> строкаТЗ.Организация Тогда
       Продолжить;
     КонецЕсли;
    
ФИО = "";
     Если НЕ
строкаТЗ.ФизЛицо.Пустая() Тогда
      
ФИО = СокрЛП(строкаТЗ.ФизЛицо.Наименование);
     КонецЕсли;
    
Инициалы ="";
    
МассивФИО = ОбщегоНазначения.ПолучитьМассивФИО(ФИО);
     Если (НЕ
ПустаяСтрока(МассивФИО[1])) И (НЕ ПустаяСтрока(МассивФИО[2])) Тогда
      
Инициалы =" "+Лев(МассивФИО[1],1) + "." + Лев(МассивФИО[2],1)+".";
     КонецЕсли;
    
ФИО        = СокрЛП(МассивФИО[0] + Инициалы);
    
обМакет.Параметры.Должность  = СокрЛП(строкаТЗ.Должность);
    
обМакет.Параметры.ФИО    = ФИО;
    
ИтоговыйДокумент.Вывести(обМакет);
    КонецЦикла;
   
обТД         = ТабличныйДокумент.Область(ОтступСверху+1,1,ОтступСверху+2,ШиринаДокумента);
   
ТабДок     = Новый ТабличныйДокумент;
   
обТДИсточник  = ТабДок.Область(ОтступСверху+1,1,ОтступСверху+2,ШиринаДокумента);
   
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.ПоВертикали,Ложь);
   
обТД         = ТабличныйДокумент.Область(ОтступСверху+1,1,ОтступСверху+1,1);
   
обТД.Текст    = ИтоговыйДокумент.ПолучитьТекст();
   
обТД.Шрифт    = Новый Шрифт(обТДИсточник.Шрифт,"Courier",8,Ложь,Ложь,Ложь,Ложь);
   
обТД.ВертикальноеПоложение  = ВертикальноеПоложение.Верх;
   
обТД1         = ТабличныйДокумент.Область(,,,);
   
обТД1.ВысотаСтроки  = 0;
   
Настройка.ВерхнийКолонтитул.ТекстСлева = СтрЗаменить(Настройка.ВерхнийКолонтитул.ТекстСлева,"[&"+СокрЛП(ВыбЭлемент)+"]","");
   
ВысотаПодписиВсего  = ВысотаПодписиВсего + 1;
   КонецЕсли;
  КонецЦикла;
//Для Сч = 0 По Перечисления.РазделыОтчётов.Количество()-1 Цикл
 
КонецЕсли;//Если Настройка.ВерхнийКолонтитул.Свойство("ТекстСлева") Тогда
//***МЕТКА2
//вверх - центр
 
ВысотаПодписи = ?(ВысотаПодписиВсего>0,2*ВысотаПодписиВсего-2,0);
 Если
Настройка.ВерхнийКолонтитул.Свойство("ТекстВЦентре") Тогда
  Для
Сч = 0 По Перечисления.РазделыОтчётов.Количество()-1 Цикл
  
ВыбЭлемент = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Имя;
   Если (
Найти(Настройка.ВерхнийКолонтитул.ТекстВЦентре,"[&"+СокрЛП(ВыбЭлемент)+"]")>0) и (Настройка.ВерхнийКолонтитул.Выводить) Тогда
   
Синоним     = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Синоним;
   
Отбор   = Новый Структура;
   
Отбор.Вставить("РазделОтчёта",Перечисления.РазделыОтчётов.Получить(Сч));
    Если НЕ
Организация.Пустая() Тогда
    
Отбор.Вставить("Организация",Организация);
    КонецЕсли;
   
МассивСтрок = тзСрезПоследних.НайтиСтроки(Отбор);
   
ОтступСверху = КолСтрокВсего;
   
ОтступСлева  = 0;
   
ОтступСправа = 0;
   
//найдем ширину документа в средних символах:
   
ШиринаДокументаВСимволах = 0;
    Для
СчЯчейка = 1 По ШиринаДокумента Цикл
    
обТД        = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху+1,СчЯчейка,ВысотаПодписи + ОтступСверху+1,СчЯчейка);
    
ШиринаДокументаВСимволах= ШиринаДокументаВСимволах + окр(обТД.ШиринаКолонки,0,1);
    КонецЦикла;
   
ЛеваяГраница = 1;
   
ПраваяГраница = ШиринаДокумента;
   
ШагВперёд = Истина;
   
ТекШирина = ШиринаДокументаВСимволах;
    Пока (
ПраваяГраница > ЛеваяГраница) и (ТекШирина > ШиринаПодписиВсего*ШиринаСимвола) Цикл
    
//слева шагаем
    
Если ШагВперёд Тогда
     
обШаг    = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,ЛеваяГраница,ВысотаПодписи + ОтступСверху+1,ЛеваяГраница);
     
ШагШирина   = окр(обШаг.ШиринаКолонки,0,1);
     
ЛеваяГраница  = ЛеваяГраница+1;
     
ТекШирина  = ТекШирина - ШагШирина;
     КонецЕсли;
    
//справа шагаем
    
Если НЕ ШагВперёд Тогда
     
обШаг    = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,ПраваяГраница,ВысотаПодписи + ОтступСверху+1,ПраваяГраница);
     
ШагШирина   = окр(обШаг.ШиринаКолонки,0,1);
     
ПраваяГраница  = ПраваяГраница - 1;
     
ТекШирина  = ТекШирина - ШагШирина;
     КонецЕсли;
    
ШагВперёд = НЕ ШагВперёд;
    КонецЦикла;
   
ОтступСлева    = ЛеваяГраница - 1;
   
ОтступСправа   = ШиринаДокумента - ПраваяГраница;
   
ПерваяОрганизация  = Справочники.Организации.ПустаяСсылка();
   
ИтоговыйДокумент   = Новый ТекстовыйДокумент;
   
ИтоговыйДокумент.Очистить();
   
Макет       = Перечисления.РазделыОтчётов.ПолучитьМакет("МакетТекст");
   
обМакет         = Макет.ПолучитьОбласть("Заголовок");
   
обМакет.Параметры.Заголовок = СокрЛП(Синоним);
   
ИтоговыйДокумент.Вывести(обМакет);
   
обМакет         = Макет.ПолучитьОбласть("Раздел");
    Для Каждого 
строкаТЗ ИЗ МассивСтрок Цикл
     Если
ПерваяОрганизация.Пустая() Тогда
      
ПерваяОрганизация = строкаТЗ.Организация;
     КонецЕсли;
     Если
ПерваяОрганизация <> строкаТЗ.Организация Тогда
      Продолжить;
     КонецЕсли;
    
ФИО = "";
     Если НЕ
строкаТЗ.ФизЛицо.Пустая() Тогда
      
ФИО = СокрЛП(строкаТЗ.ФизЛицо.Наименование);
     КонецЕсли;
    
Инициалы ="";
    
МассивФИО = ОбщегоНазначения.ПолучитьМассивФИО(ФИО);
     Если (НЕ
ПустаяСтрока(МассивФИО[1])) И (НЕ ПустаяСтрока(МассивФИО[2])) Тогда
      
Инициалы =" "+Лев(МассивФИО[1],1) + "." + Лев(МассивФИО[2],1)+".";
     КонецЕсли;
    
ФИО        = СокрЛП(МассивФИО[0] + Инициалы);
    
обМакет.Параметры.Должность  = СокрЛП(строкаТЗ.Должность);
    
обМакет.Параметры.ФИО    = ФИО;
    
ИтоговыйДокумент.Вывести(обМакет);
    КонецЦикла;
   
ТабДок     = Новый ТабличныйДокумент;
    Если (
ВысотаПодписиТек  < ВысотаПодписиВсего) и (ВысотаПодписиВсего <> 0) Тогда
    
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,ОтступСлева + 1,ВысотаПодписи + ОтступСверху + 2,ШиринаДокумента);
                   
обТДИсточник  = ТабДок.Область(ОтступСверху+1,ОтступСлева + 1,ОтступСверху+2,ШиринаДокумента);
    
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.БезСмещения,Ложь);
    Иначе
    
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,1,ВысотаПодписи + ОтступСверху + 2,ШиринаДокумента);
                   
обТДИсточник  = ТабДок.Область(ОтступСверху+1,1,ОтступСверху+2,ШиринаДокумента);
    
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.ПоВертикали,Ложь);
    КонецЕсли;
   
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху+1,ОтступСлева + 1,ВысотаПодписи + ОтступСверху+1,ОтступСлева + 1);
   
обТД.Текст    = ИтоговыйДокумент.ПолучитьТекст();
   
обТД.Шрифт    = Новый Шрифт(обТДИсточник.Шрифт,"Courier",8,Ложь,Ложь,Ложь,Ложь);
   
обТД.ВертикальноеПоложение  = ВертикальноеПоложение.Верх;
   
обТД1         = ТабличныйДокумент.Область(,,,);
   
обТД1.ВысотаСтроки  = 0;
   
Настройка.ВерхнийКолонтитул.ТекстВЦентре = СтрЗаменить(Настройка.ВерхнийКолонтитул.ТекстСлева,"[&"+СокрЛП(ВыбЭлемент)+"]","");
   
ВысотаПодписиТек   = ВысотаПодписиТек  1;
    Если
ВысотаПодписиТек >= ВысотаПодписиВсего Тогда
    
ВысотаПодписи = 0;
    Иначе
    
ВысотаПодписи = 2*(ВысотаПодписиВсего-ВысотаПодписиТек)-2;
    КонецЕсли;
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;
   
ВысотаПодписиВсего  = Макс(ВысотаПодписиТек,ВысотаПодписиВсего);
 
ВысотаПодписиТек  = 0;
 
ВысотаПодписи = ?(ВысотаПодписиВсего>0,2*ВысотаПодписиВсего-2,0);
//***МЕТКА3
//вверх - право
 
Если Настройка.ВерхнийКолонтитул.Свойство("ТекстСправа") Тогда
  Для
Сч = 0 По Перечисления.РазделыОтчётов.Количество()-1 Цикл
  
ВыбЭлемент = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Имя;
   Если (
Найти(Настройка.ВерхнийКолонтитул.ТекстСправа,"[&"+СокрЛП(ВыбЭлемент)+"]")>0) и (Настройка.ВерхнийКолонтитул.Выводить)  Тогда
   
Синоним     = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Синоним;
   
Отбор   = Новый Структура;
   
Отбор.Вставить("РазделОтчёта",Перечисления.РазделыОтчётов.Получить(Сч));
    Если НЕ
Организация.Пустая() Тогда
    
Отбор.Вставить("Организация",Организация);
    КонецЕсли;
   
МассивСтрок = тзСрезПоследних.НайтиСтроки(Отбор);
   
ОтступСлева = 0;
   
ОтступСправа = 0;
   
ОтступСверху = КолСтрокВсего;
   
ШиринаВсего = 0;
   
НомЯчейки = ШиринаДокумента + 1;
    Для
СчЯчейки  = - ШиринаДокумента По -1 Цикл
    
НомЯчейки  = - СчЯчейки;
    
обПодпись  = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху+1,НомЯчейки,ВысотаПодписи + ОтступСверху+1,НомЯчейки);
    
ШиринаВсего = ШиринаВсего+окр(обПодпись.ШиринаКолонки,0,1);
     Если
ШиринаВсего >= ШиринаПодписиВсего*ШиринаСимвола  Тогда
       Прервать;
     КонецЕсли;
    КонецЦикла;
   
ПерваяОрганизация = Справочники.Организации.ПустаяСсылка();
   
ОтступСлева = НомЯчейки  - 1;
   
ИтоговыйДокумент   = Новый ТекстовыйДокумент;
   
ИтоговыйДокумент.Очистить();
   
Макет       = Перечисления.РазделыОтчётов.ПолучитьМакет("МакетТекст");
   
обМакет         = Макет.ПолучитьОбласть("Заголовок");
   
обМакет.Параметры.Заголовок = СокрЛП(Синоним);
   
ИтоговыйДокумент.Вывести(обМакет);
   
обМакет         = Макет.ПолучитьОбласть("Раздел");
    Для Каждого 
строкаТЗ ИЗ МассивСтрок Цикл
     Если
ПерваяОрганизация.Пустая() Тогда
      
ПерваяОрганизация = строкаТЗ.Организация;
     КонецЕсли;
     Если
ПерваяОрганизация <> строкаТЗ.Организация Тогда
      Продолжить;
     КонецЕсли;
    
ФИО = "";
     Если НЕ
строкаТЗ.ФизЛицо.Пустая() Тогда
      
ФИО = СокрЛП(строкаТЗ.ФизЛицо.Наименование);
     КонецЕсли;
    
Инициалы ="";
    
МассивФИО = ОбщегоНазначения.ПолучитьМассивФИО(ФИО);
     Если (НЕ
ПустаяСтрока(МассивФИО[1])) И (НЕ ПустаяСтрока(МассивФИО[2])) Тогда
      
Инициалы =" "+Лев(МассивФИО[1],1) + "." + Лев(МассивФИО[2],1)+".";
     КонецЕсли;
    
ФИО        = СокрЛП(МассивФИО[0] + Инициалы);
    
обМакет.Параметры.Должность  = СокрЛП(строкаТЗ.Должность);
    
обМакет.Параметры.ФИО    = ФИО;
    
ИтоговыйДокумент.Вывести(обМакет);
    КонецЦикла;
   
ТабДок      = Новый ТабличныйДокумент;
    Если (
ВысотаПодписиТек  < ВысотаПодписиВсего) и (ВысотаПодписиВсего <> 0) Тогда
    
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,ОтступСлева + 1,ВысотаПодписи + ОтступСверху + 2,ШиринаДокумента);
    
обТДИсточник  = ТабДок.Область(ОтступСверху+1,ОтступСлева + 1,ОтступСверху+2,ШиринаДокумента);
    
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.БезСмещения,Ложь);
    Иначе
    
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,1,ВысотаПодписи + ОтступСверху + 2,ШиринаДокумента);
    
обТДИсточник  = ТабДок.Область(ОтступСверху+1,1,ОтступСверху+2,ШиринаДокумента);
    
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.ПоВертикали,Ложь);
    КонецЕсли;
   
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху+1,ОтступСлева + 1,ВысотаПодписи + ОтступСверху+1,ОтступСлева + 1);
   
обТД.Текст    = ИтоговыйДокумент.ПолучитьТекст();
   
обТД.Шрифт    = Новый Шрифт(обТДИсточник.Шрифт,"Courier",8,Ложь,Ложь,Ложь,Ложь);
   
обТД.ВертикальноеПоложение  = ВертикальноеПоложение.Верх;
   
обТД1         = ТабличныйДокумент.Область(,,,);
   
обТД1.ВысотаСтроки  = 0;
   
ВысотаПодписиТек   = ВысотаПодписиТек  1;
    Если
ВысотаПодписиТек >= ВысотаПодписиВсего Тогда
    
ВысотаПодписи = 0;
    Иначе
    
ВысотаПодписи = 2*(ВысотаПодписиВсего-ВысотаПодписиТек)-2;
    КонецЕсли;
   
Настройка.ВерхнийКолонтитул.ТекстСправа = СтрЗаменить(Настройка.ВерхнийКолонтитул.ТекстСправа,"[&"+СокрЛП(ВыбЭлемент)+"]","");
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;
 
ВысотаПодписиВсего  = 0;
 
ВысотаПодписиТек  = 0;
 
ВысотаПодписи   = 0;
 
ВысотаДокумента  = ТабличныйДокумент.ВысотаТаблицы;
//МЕТКА4
//низ-лево
 
Если Настройка.НижнийКолонтитул.Свойство("ТекстСлева") Тогда
  Для
Сч = 0 По Перечисления.РазделыОтчётов.Количество()-1 Цикл
  
ВыбЭлемент = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Имя;
   Если (
Найти(Настройка.НижнийКолонтитул.ТекстСлева,"[&"+СокрЛП(ВыбЭлемент)+"]")>0) и (Настройка.НижнийКолонтитул.Выводить) Тогда
   
ОтступСлева  = 0;
   
ОтступСправа = Макс(ШиринаДокумента - 1,0);
   
ОтступСверху = ТабличныйДокумент.ВысотаТаблицы;
   
Синоним    = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Синоним;
   
Отбор = Новый Структура;
   
Отбор.Вставить("РазделОтчёта",Перечисления.РазделыОтчётов.Получить(Сч));
    Если НЕ
Организация.Пустая() Тогда
    
Отбор.Вставить("Организация",Организация);
    КонецЕсли;
   
МассивСтрок  = тзСрезПоследних.НайтиСтроки(Отбор);
   
ПерваяОрганизация = Справочники.Организации.ПустаяСсылка();
   
ИтоговыйДокумент   = Новый ТекстовыйДокумент;
   
ИтоговыйДокумент.Очистить();
   
Макет       = Перечисления.РазделыОтчётов.ПолучитьМакет("МакетТекст");
   
обМакет         = Макет.ПолучитьОбласть("Заголовок");
   
обМакет.Параметры.Заголовок = СокрЛП(Синоним);
   
ИтоговыйДокумент.Вывести(обМакет);
   
обМакет         = Макет.ПолучитьОбласть("Раздел");
   
Настройка.НижнийКолонтитул.ТекстСлева = СтрЗаменить(Настройка.НижнийКолонтитул.ТекстСлева,"[&"+СокрЛП(ВыбЭлемент)+"]","");
    Для Каждого 
строкаТЗ ИЗ МассивСтрок Цикл
     Если
ПерваяОрганизация.Пустая() Тогда
      
ПерваяОрганизация = строкаТЗ.Организация;
     КонецЕсли;
     Если
ПерваяОрганизация <> строкаТЗ.Организация Тогда
      Продолжить;
     КонецЕсли;
    
ФИО = "";
     Если НЕ
строкаТЗ.ФизЛицо.Пустая() Тогда
      
ФИО = СокрЛП(строкаТЗ.ФизЛицо.Наименование);
     КонецЕсли;
    
Инициалы ="";
    
МассивФИО = ОбщегоНазначения.ПолучитьМассивФИО(ФИО);
     Если (НЕ
ПустаяСтрока(МассивФИО[1])) И (НЕ ПустаяСтрока(МассивФИО[2])) Тогда
      
Инициалы =" "+Лев(МассивФИО[1],1) + "." + Лев(МассивФИО[2],1)+".";
     КонецЕсли;
    
ФИО        = СокрЛП(МассивФИО[0] + Инициалы);
    
обМакет.Параметры.Должность  = СокрЛП(строкаТЗ.Должность);
    
обМакет.Параметры.ФИО    = ФИО;
    
ИтоговыйДокумент.Вывести(обМакет);
    КонецЦикла;
   
обТД         = ТабличныйДокумент.Область(ОтступСверху+1,1,ОтступСверху+2,ШиринаДокумента);
   
ТабДок     = Новый ТабличныйДокумент;
   
обТДИсточник  = ТабДок.Область(ОтступСверху+1,1,ОтступСверху+2,ШиринаДокумента);
   
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.ПоВертикали,Ложь);
   
обТД         = ТабличныйДокумент.Область(ОтступСверху+2,1,ОтступСверху+2,1);
   
обТД.Текст    = ИтоговыйДокумент.ПолучитьТекст();
   
обТД.Шрифт    = Новый Шрифт(обТДИсточник.Шрифт,"Courier",8,Ложь,Ложь,Ложь,Ложь);
   
обТД.ВертикальноеПоложение  = ВертикальноеПоложение.Верх;
   
обТД1         = ТабличныйДокумент.Область(,,,);
   
обТД1.ВысотаСтроки  = 0;
   
ВысотаПодписиВсего  = ВысотаПодписиВсего + 1;
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;

//МЕТКА5
//низ - центр
 
ВысотаПодписиВсего  = Макс(ВысотаПодписиТек,ВысотаПодписиВсего);
 
ВысотаПодписиТек  = 0;
 
ВысотаПодписи = 0;
 Если
Настройка.НижнийКолонтитул.Свойство("ТекстВЦентре") Тогда
  Для
Сч = 0 По Перечисления.РазделыОтчётов.Количество()-1 Цикл
  
ВыбЭлемент = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Имя;
   Если (
Найти(Настройка.НижнийКолонтитул.ТекстВЦентре,"[&"+СокрЛП(ВыбЭлемент)+"]")>0) и (Настройка.НижнийКолонтитул.Выводить) Тогда
   
ОтступСлева  = 0;
   
ОтступСправа = 0;
   
ОтступСверху = ВысотаДокумента;
   
Синоним      = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Синоним;
   
Отбор    = Новый Структура;
   
Отбор.Вставить("РазделОтчёта",Перечисления.РазделыОтчётов.Получить(Сч));
    Если НЕ
Организация.Пустая() Тогда
    
Отбор.Вставить("Организация",Организация);
    КонецЕсли;
   
МассивСтрок = тзСрезПоследних.НайтиСтроки(Отбор);
   
ШиринаДокументаВСимволах = 0;
    Для
СчЯчейка = 1 По ШиринаДокумента Цикл
    
обТД    = ТабличныйДокумент.Область(ОтступСверху+1,СчЯчейка,ОтступСверху+1,СчЯчейка);
    
ШиринаДокументаВСимволах=ШиринаДокументаВСимволах + окр(обТД.ШиринаКолонки,0,1);
    КонецЦикла;
   
ЛеваяГраница = 1;
   
ПраваяГраница = ШиринаДокумента;
   
ШагВперёд = Истина;
   
ТекШирина = ШиринаДокументаВСимволах;
    Пока (
ПраваяГраница > ЛеваяГраница) и (ТекШирина > ШиринаПодписиВсего*ШиринаСимвола) Цикл
    
//слева шагаем
    
Если ШагВперёд Тогда
     
обШаг    = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,ЛеваяГраница,ВысотаПодписи + ОтступСверху+1,ЛеваяГраница);
     
ШагШирина   = окр(обШаг.ШиринаКолонки,0,1);
     
ЛеваяГраница  = ЛеваяГраница+1;
     
ТекШирина  = ТекШирина - ШагШирина;
     КонецЕсли;
    
//справа шагаем
    
Если НЕ ШагВперёд Тогда
     
обШаг    = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,ПраваяГраница,ВысотаПодписи + ОтступСверху+1,ПраваяГраница);
     
ШагШирина   = окр(обШаг.ШиринаКолонки,0,1);
     
ПраваяГраница  = ПраваяГраница - 1;
     
ТекШирина  = ТекШирина - ШагШирина;
     КонецЕсли;
    
ШагВперёд = НЕ ШагВперёд;
    КонецЦикла;
   
ОтступСлева    = ЛеваяГраница - 1;
   
ОтступСправа   = ШиринаДокумента - ПраваяГраница;
   
ПерваяОрганизация  = Справочники.Организации.ПустаяСсылка();
   
ИтоговыйДокумент   = Новый ТекстовыйДокумент;
   
ИтоговыйДокумент.Очистить();
   
Макет          = Перечисления.РазделыОтчётов.ПолучитьМакет("МакетТекст");
   
обМакет            = Макет.ПолучитьОбласть("Заголовок");
   
обМакет.Параметры.Заголовок    = СокрЛП(Синоним);
   
ИтоговыйДокумент.Вывести(обМакет);
   
обМакет            = Макет.ПолучитьОбласть("Раздел");
   
Настройка.НижнийКолонтитул.ТекстВЦентре = СтрЗаменить(Настройка.НижнийКолонтитул.ТекстВЦентре,"[&"+СокрЛП(ВыбЭлемент)+"]","");
   
//вывожу элементы
   
Для Каждого  строкаТЗ ИЗ МассивСтрок Цикл
     Если
ПерваяОрганизация.Пустая() Тогда
      
ПерваяОрганизация = строкаТЗ.Организация;
     КонецЕсли;
     Если
ПерваяОрганизация <> строкаТЗ.Организация Тогда
      Продолжить;
     КонецЕсли;
    
ФИО = "";
     Если НЕ
строкаТЗ.ФизЛицо.Пустая() Тогда
      
ФИО = СокрЛП(строкаТЗ.ФизЛицо.Наименование);
     КонецЕсли;
    
Инициалы ="";
    
МассивФИО = ОбщегоНазначения.ПолучитьМассивФИО(ФИО);
     Если (НЕ
ПустаяСтрока(МассивФИО[1])) И (НЕ ПустаяСтрока(МассивФИО[2])) Тогда
      
Инициалы =" "+Лев(МассивФИО[1],1) + "." + Лев(МассивФИО[2],1)+".";
     КонецЕсли;
    
ФИО        = СокрЛП(МассивФИО[0] + Инициалы);
    
обМакет.Параметры.Должность  = СокрЛП(строкаТЗ.Должность);
    
обМакет.Параметры.ФИО    = ФИО;
    
ИтоговыйДокумент.Вывести(обМакет);
    КонецЦикла;
   
ТабДок     = Новый ТабличныйДокумент;
    Если (
ВысотаПодписиТек  < ВысотаПодписиВсего) и (ВысотаПодписиВсего <> 0) Тогда
    
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,ОтступСлева + 1,ВысотаПодписи + ОтступСверху + 2,ШиринаДокумента);
    
обТДИсточник  = ТабДок.Область(ОтступСверху+1,ОтступСлева + 1,ОтступСверху+2,ШиринаДокумента);
    
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.БезСмещения,Ложь);
    Иначе
    
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,1,ВысотаПодписи + ОтступСверху + 2,ШиринаДокумента);
    
обТДИсточник  = ТабДок.Область(ОтступСверху+1,1,ОтступСверху+2,ШиринаДокумента);
    
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.ПоВертикали,Ложь);
    КонецЕсли;
   
обТД           = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху+2,ОтступСлева + 1,ВысотаПодписи + ОтступСверху+2,ОтступСлева + 1);
   
обТД.Текст      = ИтоговыйДокумент.ПолучитьТекст();
   
обТД.Шрифт      = Новый Шрифт(обТДИсточник.Шрифт,"Courier",8,Ложь,Ложь,Ложь,Ложь);
   
обТД.ВертикальноеПоложение  = ВертикальноеПоложение.Верх;
   
обТД1           = ТабличныйДокумент.Область(,,,);
   
обТД1.ВысотаСтроки    = 0;
   
ВысотаПодписиТек     = ВысотаПодписиТек  1;
   
ВысотаПодписи   = ВысотаПодписи + 2;
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;
 
ВысотаПодписиВсего  = Макс(ВысотаПодписиТек,ВысотаПодписиВсего);
 
ВысотаПодписиТек  = 0;
 
ВысотаПодписи = 0;
//МЕТКА6
//низ - право
 
Если Настройка.НижнийКолонтитул.Свойство("ТекстСправа") Тогда
   Для
Сч = 0 По Перечисления.РазделыОтчётов.Количество()-1 Цикл
  
ВыбЭлемент = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Имя;
   Если (
Найти(Настройка.НижнийКолонтитул.ТекстСправа,"[&"+СокрЛП(ВыбЭлемент)+"]")>0) и (Настройка.НижнийКолонтитул.Выводить) Тогда
   
ОтступСлева   = 0;
   
ОтступСправа  = 0;
   
ОтступСверху  = ВысотаДокумента;
   
Синоним      = Перечисления.РазделыОтчётов.Получить(Сч).Метаданные().ЗначенияПеречисления[Сч].Синоним;
   
Отбор    = Новый Структура;
   
Отбор.Вставить("РазделОтчёта",Перечисления.РазделыОтчётов.Получить(Сч));
    Если НЕ
Организация.Пустая() Тогда
    
Отбор.Вставить("Организация",Организация);
    КонецЕсли;
   
МассивСтрок = тзСрезПоследних.НайтиСтроки(Отбор);
   
ШиринаВсего = 0;
   
НомЯчейки = ШиринаДокумента + 1;
    Для
СчЯчейки  = - ШиринаДокумента По -1 Цикл
    
НомЯчейки  = - СчЯчейки;
    
обПодпись  = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху+1,НомЯчейки,ВысотаПодписи + ОтступСверху+1,НомЯчейки);
    
ШиринаВсего = ШиринаВсего+окр(обПодпись.ШиринаКолонки,0,1);
     Если
ШиринаВсего >= ШиринаПодписиВсего*ШиринаСимвола  Тогда
       Прервать;
     КонецЕсли;
    КонецЦикла;
   
ПерваяОрганизация = Справочники.Организации.ПустаяСсылка();
   
ОтступСлева = НомЯчейки  - 1;
   
ИтоговыйДокумент   = Новый ТекстовыйДокумент;
   
ИтоговыйДокумент.Очистить();
   
Макет       = Перечисления.РазделыОтчётов.ПолучитьМакет("МакетТекст");
   
обМакет         = Макет.ПолучитьОбласть("Заголовок");
   
обМакет.Параметры.Заголовок = СокрЛП(Синоним);
   
ИтоговыйДокумент.Вывести(обМакет);
   
обМакет         = Макет.ПолучитьОбласть("Раздел");
   
Настройка.НижнийКолонтитул.ТекстСправа = СтрЗаменить(Настройка.НижнийКолонтитул.ТекстСправа,"[&"+СокрЛП(ВыбЭлемент)+"]","");
    Для Каждого 
строкаТЗ ИЗ МассивСтрок Цикл
     Если
ПерваяОрганизация.Пустая() Тогда
      
ПерваяОрганизация = строкаТЗ.Организация;
     КонецЕсли;
     Если
ПерваяОрганизация <> строкаТЗ.Организация Тогда
      Продолжить;
     КонецЕсли;
    
ФИО = "";
     Если НЕ
строкаТЗ.ФизЛицо.Пустая() Тогда
      
ФИО = СокрЛП(строкаТЗ.ФизЛицо.Наименование);
     КонецЕсли;
    
Инициалы ="";
    
МассивФИО = ОбщегоНазначения.ПолучитьМассивФИО(ФИО);
     Если (НЕ
ПустаяСтрока(МассивФИО[1])) И (НЕ ПустаяСтрока(МассивФИО[2])) Тогда
      
Инициалы =" "+Лев(МассивФИО[1],1) + "." + Лев(МассивФИО[2],1)+".";
     КонецЕсли;
    
ФИО        = СокрЛП(МассивФИО[0] + Инициалы);
    
обМакет.Параметры.Должность  = СокрЛП(строкаТЗ.Должность);
    
обМакет.Параметры.ФИО    = ФИО;
    
ИтоговыйДокумент.Вывести(обМакет);
    КонецЦикла;
   
ТабДок      = Новый ТабличныйДокумент;
    Если (
ВысотаПодписиТек  < ВысотаПодписиВсего) и (ВысотаПодписиВсего <> 0) Тогда
    
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,ОтступСлева + 1,ВысотаПодписи + ОтступСверху + 2,ШиринаДокумента);
    
обТДИсточник  = ТабДок.Область(ОтступСверху+1,ОтступСлева + 1,ОтступСверху+2,ШиринаДокумента);
    
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.БезСмещения,Ложь);
    Иначе
    
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху + 1,1,ВысотаПодписи + ОтступСверху + 2,ШиринаДокумента);
    
обТДИсточник  = ТабДок.Область(ОтступСверху+1,1,ОтступСверху+2,ШиринаДокумента);
    
ТабличныйДокумент.ВставитьОбласть(обТДИсточник,обТД,ТипСмещенияТабличногоДокумента.ПоВертикали,Ложь);
    КонецЕсли;
   
обТД         = ТабличныйДокумент.Область(ВысотаПодписи + ОтступСверху+2,ОтступСлева + 1,ВысотаПодписи + ОтступСверху+2,ОтступСлева + 1);
   
обТД.Текст    = ИтоговыйДокумент.ПолучитьТекст();
   
обТД.Шрифт    = Новый Шрифт(обТДИсточник.Шрифт,"Courier",8,Ложь,Ложь,Ложь,Ложь);
   
обТД.ВертикальноеПоложение  = ВертикальноеПоложение.Верх;
   
обТД1         = ТабличныйДокумент.Область(,,,);
   
обТД1.ВысотаСтроки  = 0;
   
ВысотаПодписиТек   = ВысотаПодписиТек  1;
   
ВысотаПодписи   = ВысотаПодписи + 2;
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;


 Если НЕ
тзПечатьСтраниц = Неопределено Тогда
 
НоваяСтрока.ВсегоРазмер = ТабличныйДокумент.ВысотаТаблицы;
 КонецЕсли;
 
//}
 
Если Настройка.ВерхнийКолонтитул.Свойство("Выводить") Тогда
 
ТабличныйДокумент.ВерхнийКолонтитул.Выводить          = Настройка.ВерхнийКолонтитул.Выводить;
 
ТабличныйДокумент.ВерхнийКолонтитул.НачальнаяСтраница = Настройка.ВерхнийКолонтитул.НачальнаяСтраница;
 
ТабличныйДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
 
ТабличныйДокумент.ВерхнийКолонтитул.ТекстСлева   = ЗаполнитьТекстКолонтитула(Настройка.ВерхнийКолонтитул.ТекстСлева, НазваниеОтчета, Пользователь);
 
ТабличныйДокумент.ВерхнийКолонтитул.ТекстВЦентре = ЗаполнитьТекстКолонтитула(Настройка.ВерхнийКолонтитул.ТекстВЦентре, НазваниеОтчета, Пользователь);
 
ТабличныйДокумент.ВерхнийКолонтитул.ТекстСправа  = ЗаполнитьТекстКолонтитула(Настройка.ВерхнийКолонтитул.ТекстСправа, НазваниеОтчета, Пользователь);
 КонецЕсли;
 Если
Настройка.НижнийКолонтитул.Свойство("Выводить") Тогда
 
ТабличныйДокумент.НижнийКолонтитул.Выводить          = Настройка.НижнийКолонтитул.Выводить;
 
ТабличныйДокумент.НижнийКолонтитул.НачальнаяСтраница = Настройка.НижнийКолонтитул.НачальнаяСтраница;
 
ТабличныйДокумент.НижнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Верх;
 
ТабличныйДокумент.НижнийКолонтитул.ТекстСлева   = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстСлева, НазваниеОтчета, Пользователь);
 
ТабличныйДокумент.НижнийКолонтитул.ТекстВЦентре = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстВЦентре, НазваниеОтчета, Пользователь);
 
ТабличныйДокумент.НижнийКолонтитул.ТекстСправа  = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстСправа, НазваниеОтчета, Пользователь);
 КонецЕсли;
КонецПроцедуры
// УстановитьКолонтитулы()

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4506    dsdred    53    

71

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5286    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6408    dsdred    36    

111

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18470    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12086    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8813    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6277    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15980    SeiOkami    31    

103
Оставьте свое сообщение