Перем ИмяПути,ИмяФайла; Перем xmlParser; //пример чтения xml файла. Функция УстановитьКомпоненту() Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"ExtFormsv7plus.dll")=0 Тогда Если ЗагрузитьВнешнююКомпоненту("v7plus.dll")=0 Тогда Сообщить("Не удалось обнаружить компоненту V7Plus.dll!"); Возврат 0; КонецЕсли; КонецЕсли; Попытка xmlParser = СоздатьОбъект("Addin.XmlParser") ; Исключение Сообщить("Не удалось создать объект Addin.XmlParser!"); Возврат 0; КонецПопытки; Возврат 1; КонецФункции // УстановитьКомпоненту Процедура Выполнить() стрИмяФайла=ИмяПути+ИмяФайла; таб=СоздатьОбъект("ТаблицаЗначений"); таб.НоваяКолонка("Ф","Строка",50,0); таб.НоваяКолонка("И","Строка",50,0); таб.НоваяКолонка("О","Строка",50,0); таб.НоваяКолонка("ДатаР","Дата"); таб.НоваяКолонка("_01","Число",16,2); таб.НоваяКолонка("_02","Число",16,2); таб.НоваяКолонка("_03","Число",16,2); таб.НоваяКолонка("_04","Число",16,2); таб.НоваяКолонка("_05","Число",16,2); таб.НоваяКолонка("_06","Число",16,2); таб.НоваяКолонка("_07","Число",16,2); таб.НоваяКолонка("_08","Число",16,2); таб.НоваяКолонка("_09","Число",16,2); таб.НоваяКолонка("_10","Число",16,2); таб.НоваяКолонка("_11","Число",16,2); таб.НоваяКолонка("_12","Число",16,2); таб.НоваяКолонка("СумГод","Число",18,2); таб.НоваяКолонка("ОблГод","Число",18,2); таб.НоваяКолонка("УдерГод","Число",18,2); таб.НоваяКолонка("Индекс","Строка",6,0); таб.НоваяКолонка("Регион","Строка",2,0); таб.НоваяКолонка("Город","Строка",20,0); таб.НоваяКолонка("Улица","Строка",20,0); таб.НоваяКолонка("Дом","Строка",5,0); таб.НоваяКолонка("Корпус","Строка",5,0); таб.НоваяКолонка("Квартира","Строка",5,0); Документ=xmlParser.СоздатьДокумент(); Документ.Загрузить(стрИмяФайла); Данные=Документ.ПолучитьПодчиненныйПоНомеру(2); Для Сч=1 По Данные.КоличествоПодчиненных() Цикл таб.НоваяСтрока(); Элем=Данные.ПолучитьПодчиненныйПоНомеру(Сч); УзелПолучДох=Элем.ВыбратьУзлы("ПолучДох"); Для Сч3=0 По УзелПолучДох.КоличествоУзлов-1 Цикл // Сообщить(УзелПолучДох.ПолучитьУзел(Сч3).ПредставлениеXML); // Сообщить(УзелПолучДох.ПолучитьУзел(Сч3).КоличествоПодчиненных()); ФИО=УзелПолучДох.ПолучитьУзел(Сч3).ПолучитьПодчиненныйПоНомеру(1); таб.Ф=ФИО.ПолучитьПодчиненныйПоНомеру(1).Текст; таб.И=ФИО.ПолучитьПодчиненныйПоНомеру(2).Текст; таб.О=ФИО.ПолучитьПодчиненныйПоНомеру(3).Текст; таб.ДатаР=УзелПолучДох.ПолучитьУзел(Сч3).ПолучитьПодчиненныйПоНомеру(3).Значение; адр=УзелПолучДох.ПолучитьУзел(Сч3).ПолучитьПодчиненныйПоНомеру(6); Для Сч4=1 По адр.КоличествоПодчиненных() Цикл Если адр.ПолучитьПодчиненныйПоНомеру(Сч4).Наименование="Индекс" Тогда таб.Индекс=адр.ПолучитьПодчиненныйПоНомеру(Сч4).Текст; ИначеЕсли адр.ПолучитьПодчиненныйПоНомеру(Сч4).Наименование="КодРегион" Тогда таб.Регион=адр.ПолучитьПодчиненныйПоНомеру(Сч4).Текст; ИначеЕсли адр.ПолучитьПодчиненныйПоНомеру(Сч4).Наименование="Город" Тогда таб.Город=адр.ПолучитьПодчиненныйПоНомеру(Сч4).Текст; ИначеЕсли адр.ПолучитьПодчиненныйПоНомеру(Сч4).Наименование="Улица" Тогда таб.Улица=адр.ПолучитьПодчиненныйПоНомеру(Сч4).Текст; ИначеЕсли адр.ПолучитьПодчиненныйПоНомеру(Сч4).Наименование="Дом" Тогда таб.Дом=адр.ПолучитьПодчиненныйПоНомеру(Сч4).Текст; ИначеЕсли адр.ПолучитьПодчиненныйПоНомеру(Сч4).Наименование="Корпус" Тогда таб.Корпус=адр.ПолучитьПодчиненныйПоНомеру(Сч4).Текст; ИначеЕсли адр.ПолучитьПодчиненныйПоНомеру(Сч4).Наименование="Кварт" Тогда таб.Квартира=адр.ПолучитьПодчиненныйПоНомеру(Сч4).Текст; Иначе /////// КонецЕсли; КонецЦикла; КонецЦикла; УзелСвДохСтав=Элем.ВыбратьУзлы("СвДохСтав"); Для Сч3=0 По УзелСвДохСтав.КоличествоУзлов-1 Цикл //ел=УзелСвДохСтав.ПолучитьУзел(Сч3); УзелДохВыч=УзелСвДохСтав.ПолучитьУзел(Сч3).ВыбратьУзлы("ДохВыч"); Для Сч4=0 По УзелДохВыч.КоличествоУзлов-1 Цикл МесДоход=УзелДохВыч.ПолучитьУзел(Сч4); ИмяМес=""; СумМес=0; Если МесДоход.ПолучитьПодчиненныйПоНомеру(1).Наименование="НомМес" Тогда ИмяМес=МесДоход.ПолучитьПодчиненныйПоНомеру(1).Текст; КонецЕсли; Если МесДоход.ПолучитьПодчиненныйПоНомеру(3).Наименование="СумДоход" Тогда СумМес=МесДоход.ПолучитьПодчиненныйПоНомеру(3).Значение; КонецЕсли; Если ПустоеЗначение(ИмяМес)=0 Тогда Если ИмяМес="01" Тогда таб._01=СумМес; ИначеЕсли ИмяМес="02" Тогда таб._02=СумМес; ИначеЕсли ИмяМес="03" Тогда таб._03=СумМес; ИначеЕсли ИмяМес="04" Тогда таб._04=СумМес; ИначеЕсли ИмяМес="05" Тогда таб._05=СумМес; ИначеЕсли ИмяМес="06" Тогда таб._06=СумМес; ИначеЕсли ИмяМес="07" Тогда таб._07=СумМес; ИначеЕсли ИмяМес="08" Тогда таб._08=СумМес; ИначеЕсли ИмяМес="09" Тогда таб._09=СумМес; ИначеЕсли ИмяМес="10" Тогда таб._10=СумМес; ИначеЕсли ИмяМес="11" Тогда таб._11=СумМес; ИначеЕсли ИмяМес="12" Тогда таб._12=СумМес; КонецЕсли; КонецЕсли; КонецЦикла; УзелНалПер=УзелСвДохСтав.ПолучитьУзел(Сч3).ВыбратьУзлы("СГДНалПер"); НалПер=УзелНалПер.ПолучитьУзел(0); Если НалПер.Наименование="СГДНалПер" Тогда таб.СумГод=НалПер.ПолучитьПодчиненныйПоНомеру(1).Значение; таб.ОблГод=НалПер.ПолучитьПодчиненныйПоНомеру(2).Значение; таб.УдерГод=НалПер.ПолучитьПодчиненныйПоНомеру(3).Значение; КонецЕсли; //тут еще берем данные КонецЦикла; Состояние(Сч); КонецЦикла; Т=СоздатьОбъект("Таблица"); Т.ИсходнаяТаблица("Таблица"); таб.выбратьСтроки(); Т.ВывестиСекцию("Шапка"); нпп=1; Пока таб.ПолучитьСтроку()=1 Цикл Т.ВывестиСекцию("Текст"); нпп=нпп+1; КонецЦикла; Т.ТолькоПросмотр(1); Т.Опции(0, 0, 1, 0); // Т.ОбластьПечати(2); Т.ПараметрыСтраницы(2,,,5,5,5,5,,, 1); Т.Показать("Прочитали из XML"); КонецПроцедуры Процедура Выбрать() ФС.ВыбратьФайл(0,ИмяФайла,ИмяПути,"Выберите файл","xml файлы (*.xml) |*.xml|Все файлы (*.*) |*.*","xml", ); Если ПустоеЗначение(ИмяФайла)=0 Тогда PathSbitn=ИмяПути+ИмяФайла; КонецЕсли; КонецПроцедуры //Выбрать Процедура ПриОткрытии() ИмяФайла =""; ИмяПути = "P:"; res=УстановитьКомпоненту(); // Сообщить(res); КонецПроцедуры //ПриОткрытии
// 1-й вариант //Как вывести картинку в табличный документ? ТабДок = Новый ТабличныйДокумент; Макет = ОбработкаОбъект.ПолучитьМакет("Макет"); ОбластьКартинки = Макет.ПолучитьОбласть("ОбластьСКартинкой"); Картинка = Новый Картинка(ПутьККартинке); // Элемент управления "Логотип" входит в коллекцию картинок области. ОбластьКартинки.Рисунки.Логотип.Картинка = Картинка; ТабДок.Вывести(ОбластьКартинки); ТабДок.Показать(); // 2-й вариант //Как вывести картинку в табличный документ без изменения макета? Область = Макет.ПолучитьОбласть("Шапка"); Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рисунок.Верх = 5; Рисунок.Высота = 10; Рисунок.Ширина = 10; Рисунок.Лево = 5; Рисунок.Картинка = Новый Картинка(ПутьККартинке); Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер; ТабДок.Вывести(Область); //3-й вариант //ПечатьОрганизации , добавляем в макет картинку с именем Картинка1 в самую нижнюю //область с именем ОбластьПечатьОрганизации ОбластьПечатьОрганизации = Макет.ПолучитьОбласть("ПечатьОрганизации"); Картинка= Новый Картинка("C:\files\img\печатьОрганизации.gif") ; ОбластьПечатьОрганизации.Рисунки.Картинка1.Картинка = картинка; ТабДок.Вывести(ОбластьПечатьОрганизации); // 4-й вариант динамически ОбластьПечатьОрганизации = Макет.ПолучитьОбласть("ПечатьОрганизации"); КартинкаПечатьОрганизации = ОбластьПечатьОрганизации.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); КартинкаПечатьОрганизации.Картинка = БиблиотекаКартинок.ОбщаяКартинка1; КартинкаПечатьОрганизации.Верх = 0; КартинкаПечатьОрганизации.Высота = 80; КартинкаПечатьОрганизации.Ширина = 80; КартинкаПечатьОрганизации.Лево = 50; КартинкаПечатьОрганизации.ГраницаСверху = Ложь; КартинкаПечатьОрганизации.ГраницаСлева = Ложь; КартинкаПечатьОрганизации.ГраницаСправа = Ложь; КартинкаПечатьОрганизации.ГраницаСнизу = Ложь; КартинкаПечатьОрганизации.РазмерКартинки = РазмерКартинки.АвтоРазмер; ТабДок.Вывести(ОбластьПечатьОрганизации); //5-й вариант получение картинки из хранилища значений // Выборка.Изображение - выборка из запроса, Изображение реквизит -хранил. значений Попытка Путь = КаталогВременныхФайлов()+ "\1С_Картинка_"+Формат(ТекущаяДата(),"ДФ=yyyyMMddЧЧммсс")+".bmp"; КартинкаВПамяти = Выборка.Изображение.Получить(); КартинкаВПамяти.Записать(Путь); ОбластьСостав.Рисунки.D1.Картинка = Новый Картинка(Путь); Исключение ОбластьСостав.Рисунки.D1.Картинка = Новый Картинка; КонецПопытки;
Перем Картинка, ТЗКаталога, ПутьКаталогаРисунков; //****************************************************************************** Процедура Сформировать1() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Картинка = СоздатьОбъект("Картинка"); т=1; ТЗКаталога.ВыбратьСтроки(); Пока ТЗКаталога.ПолучитьСтроку() = 1 Цикл Картинка.Загрузить(ТЗКаталога.Путь); Сформировать = т; Таб.ВывестиСекцию("Заголовок"); т = т+1; КонецЦикла; Таб.Опции(0,0,0,0); Таб.Показать("Сформировать",""); ТЗКаталога = ""; КонецПроцедуры //****************************************************************************** Процедура карт(карт) //Вызывается из объекта картинка на печатной форме карт.РежимРисования(3); карт.УстановитьКартинку(Картинка); КонецПроцедуры //карт(карт) Вызывается из объекта картинка на печатной форме //****************************************************************************** Процедура СканироватьКаталог(Каталог) Перем А; ФСО=СоздатьОбъект("ФС"); Ф=ФСО.НайтиПервыйФайл(Каталог+"*"); Пока Ф<>"" Цикл Если (Ф<>".")И(Ф<>"..") Тогда ФС.АтрибутыФайла(Каталог+Ф,,А); Если Сред(А,4,1)="1" Тогда СканироватьКаталог(Каталог+Ф+"\"); Иначе Если (Прав(Ф,4)=".jpg") или (Прав(Ф,4)=".wmf") или (Прав(Ф,4)=".emf") или (Прав(Ф,4)=".ico") или (Прав(Ф,4)=".bmp") или (Прав(Ф,4)=".dib") или (Прав(Ф,4)=".rle") Тогда ТЗКаталога.НоваяСтрока(); ТЗКаталога.Путь = Каталог+Ф; ТЗКаталога.Файл = Ф; //Для поиска файла по имени (исп в другой обработке) КонецЕсли; КонецЕсли; КонецЕсли; //Сообщить(Каталог+Ф); Ф=ФСО.НайтиСледующийФайл(); КонецЦикла; КонецПроцедуры //СканироватьКаталог(Каталог) //****************************************************************************** Процедура Сформировать() Если ФС.ВыбратьКаталог(ПутьКаталогаРисунков,"Выберете папку с рисунками .jpg...",60) <> 1 Тогда Предупреждение("Рисунки не покажу!"); Возврат; Иначе ТЗКаталога = СоздатьОбъект("ТаблицаЗначений"); ТЗКаталога.НоваяКолонка("Путь",,,,,,,); ТЗКаталога.НоваяКолонка("Файл",,,,,,,); СканироватьКаталог(ПутьКаталогаРисунков+"\"); КонецЕсли; Сформировать1(); КонецПроцедуры
//Получение макета и областей вывода Макет = ПолучитьМакет("Отчет"); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьКартинки = Макет.ПолучитьОбласть("ОбластьСКартинкой") ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок = Новый ТабличныйДокумент; //Вывод параметров в область ОбластьЗаголовок.Параметры.ДатаНач = ДатаНач; ОбластьЗаголовок.Параметры.ДатаКон = ДатаКон; //Вывод области в табличный документ ТабДок.Вывести(ОбластьЗаголовок); //Вывод картинки Картинка = Новый Картинка(ПутьККартинке); // Элемент управления "Логотип" входит в коллекцию картинок области. ОбластьКартинки.Рисунки.Логотип.Картинка = Картинка; ТабДок.Вывести(ОбластьКартинки); //Выведем шапку таблицы ТабДок.Вывести(ОбластьШапкаТаблицы); //Выведм строки из Результата запроса ВыборкаДетали = Результат.Выбрать(); Пока ВыборкаДетали.Следующий() Цикл //Заполним параметры значениями свойств переданного объекта. Заполняются только те параметры, имена которых совпадают с именами свойств объекта. ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали); //Запишем в и область Описание примечание из запроса ОбластьДетальныхЗаписей.Область("Описание").Примечание.Текст = ВыборкаДетали.СодержаниеСобытия; ТабДок.Вывести(ОбластьДетальныхЗаписей); КонецЦикла; //Зададим параметры вывода ТабДок.АвтоМасштаб=истина; // уместить на одну страницу ТабДок.ТолькоПросмотр=истина; ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт; ТабДок.ОтображатьСетку=Ложь; ТабДок.ОтображатьЗаголовки=Ложь; //Выведем полученный документ ТабДок.Показать();
Процедура ПросмотрДокумента() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("РасходныйДокумент"); Секция = Таб.ПолучитьСекцию("Шапка"); Таб.ВывестиСекцию(Секция); Секция = Таб.ПолучитьСекцию("ПодписьТаблицы"); Таб.ВывестиСекцию(Секция); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Секция = Таб.ПолучитьСекцию("ТабличнаяЧасть"); Таб.ВывестиСекцию(Секция); КонецЦикла; Секция = Таб.ПолучитьСекцию("Подвал"); Таб.ВывестиСекцию(Секция); Таб.ТолькоПросмотр(0); Таб.Показать(); КонецПроцедуры
//ТПОтчета - Табличное поле с формы (Таблица значений) с данными ПострПечать = Новый ПостроительОтчета; ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТПОтчета); ПострПечать.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс); ПострПечать.Выполнить(); Для каждого Колонка Из ПострПечать.ВыбранныеПоля Цикл Колонка.Представление = ТПОтчета.Колонки[Колонка.Имя].Заголовок; КонецЦикла; ПострПечать.Вывести();
//Процедура формирует и выводит отчет по переданной таблице значений // Параметры : // ТЗ - ТаблицаЗначений Процедура УниверсальныйОтчетПоТЗ(ТЗ) Табл=Новый ТабличныйДокумент; Макет = ЭтотОбъект.ПолучитьМакет("Макет"); ОбластьШапкаОсновной=Макет.ПолучитьОбласть("Шапка|Основной"); ОбластьСтрокаОсновной=Макет.ПолучитьОбласть("Строка|Основной"); ОбластьИтогОсновной=Макет.ПолучитьОбласть("Итог|Основной"); ОбластьШапкаДОП=Макет.ПолучитьОбласть("Шапка|Показатели"); ОбластьСтрокаДОП=Макет.ПолучитьОбласть("Строка|Показатели"); ОбластьИтогДОП=Макет.ПолучитьОбласть("Итог|Показатели"); Табл.Вывести(ОбластьШапкаОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьШапкаДОП.Параметры.ИмяПоказателя=Колонка.Имя; Табл.Присоединить(ОбластьШапкаДОП); КонецЦикла; счетчик=0; Для каждого стр из Тз Цикл счетчик=счетчик+1; ОбластьСтрокаОсновной.Параметры.счетчик=счетчик; Табл.Вывести(ОбластьСтрокаОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьСтрокаДОП.Параметры.ЗначениеКолонки=стр[Колонка.Имя]; Табл.Присоединить(ОбластьСтрокаДОП); КонецЦикла; КонецЦикла; Табл.Вывести(ОбластьИтогОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьИтогДОП.Параметры.Итог=Тз.Итог(Колонка.Имя); Табл.Присоединить(ОбластьИтогДОП); КонецЦикла; Табл.Показать(); КонецПроцедуры
//Вывести таблицу значений Процедура ПечатьТЗвТаб(ТЗ, Заголовок = "",КолонкиПоНазваниям = 0) Экспорт Перем ТТЗ; ТЗ.Выгрузить(ТТЗ); МаксШирина = 50; // максимальная ширина колонки СпШирина = СоздатьОбъект("СписокЗначений"); // список ширин колонок по таблице Для сч = 1 по ТТЗ.КоличествоКолонок() Цикл Если КолонкиПоНазваниям = 0 Тогда ИмяРек = ТТЗ.ПолучитьПараметрыКолонки(сч); Иначе ИмяРек = ""; ТТЗ.ПолучитьПараметрыКолонки(сч,,,,ИмяРек,); КонецЕсли; СпШирина.ДобавитьЗначение(СтрДлина(ИмяРек)*1.2); // с поправкой на размер шрифта КонецЦикла; // просто печать таблицы - вывод всех строк и колонок // числовые значения - по правому краю. Автоподбор ширины - в пределах МаксШирина Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ПечатьТЗ"); Если СокрЛП(Заголовок) <> "" Тогда Таб.ВывестиСекцию("Шапка"); КонецЕсли; // заголовки таблицы Таб.ВывестиСекцию("Строка|Общая"); Для сч=1 по ТТЗ.КоличествоКолонок() Цикл Если КолонкиПоНазваниям = 0 Тогда ИмяРек = ТТЗ.ПолучитьПараметрыКолонки(сч); Иначе ИмяРек = ""; Ном = ""; ТТЗ.ПолучитьПараметрыКолонки(сч,,,,ИмяРек,); КонецЕсли; Таб.ПрисоединитьСекцию("Строка|Столбец"); КонецЦикла; ВысотаШапки = Таб.ВысотаТаблицы(); // данные таблицы по строкам ТТЗ.ВыбратьСтроки(); Пока ТТЗ.ПолучитьСтроку()=1 Цикл Ном = ТТЗ.НомерСтроки; Таб.ВывестиСекцию("Строка|Общая"); Выс = Таб.ВысотаТаблицы(); Для сч=1 по ТТЗ.КоличествоКолонок() Цикл ИмяРек=ТТЗ.ПолучитьЗначение(Ном,сч); Таб.ПрисоединитьСекцию("Строка|Столбец"); Если ТипЗначения(ИмяРек) = 1 Тогда Обл = Таб.Область("R"+Выс+"C"+(Сч+1)); // ячейка в которую поместили данные Обл.ГоризонтальноеПоложение(2); // числа - вправо КонецЕсли; НачШирина = СпШирина.ПолучитьЗначение(Сч); Ширина = СтрДлина(ИмяРек); СпШирина.УстановитьЗначение(Сч,Макс(НачШирина,Ширина)); КонецЦикла; КонецЦикла; Для сч = 1 по СпШирина.РазмерСписка() Цикл Обл = Таб.Область("R"+ВысотаШапки+"C"+(Сч+1)); // форматируем ширину таблицы Ширина = Мин(МаксШирина,2+СпШирина.ПолучитьЗначение(Сч)); Обл.ШиринаСтолбца(Ширина); // форматируем заголовок Обл.Полужирный(1); КонецЦикла; Таб.Показать(Заголовок); Таб.ТолькоПросмотр(1); КонецПроцедуры
Процедура глВывестиТаблицуЗначений(ТаблицаЗначений, Заголовок = "") Экспорт Перем Таб, ИИ, ЖЖ, НазваниеКолонки, ТипКолонки, Ширина, Значение, Сообщение; Таб = СоздатьОбъект("Таблица"); Если ТипЗначенияСтр(ТаблицаЗначений) <> "ТаблицаЗначений" Тогда Сообщение = "В процедуру ""глВывестиТаблицуЗначений()"" передана переменная не типа ""ТаблицаЗначений"", "+ "а типа """+СокрЛП(ТипЗначенияСтр(ТаблицаЗначений))+""""; Таб.Область(1, 1, 1, 1).Текст = Сообщение; Таб.Область(1, 1, 1, 1).ШиринаСтолбца(СтрДлина(Сообщение)); Таб.ТолькоПросмотр(1); Таб.Показать("Не таблица значений: "+Заголовок); Возврат; КонецЕсли; Для ЖЖ = 1 по ТаблицаЗначений.КоличествоКолонок() цикл ТаблицаЗначений.ПолучитьПараметрыКолонки(ЖЖ,,,, НазваниеКолонки); Таб.Область(1, ЖЖ, 1, ЖЖ).Текст = СокрЛП(НазваниеКолонки); Таб.Область(1, ЖЖ, 1, ЖЖ).РамкаОбвести(5, 5, 5, 5); Таб.Область(1, ЖЖ, 1, ЖЖ).ВертикальноеПоложение(3); Таб.Область(1, ЖЖ, 1, ЖЖ).ГоризонтальноеПоложение(3); Таб.Область(1, ЖЖ, 1, ЖЖ).РазмерШрифта(7); Таб.Область(1, ЖЖ, 1, ЖЖ).Полужирный(1); Ширина = Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(); Ширина = Макс(Ширина, СтрДлина(СокрЛП(НазваниеКолонки))); Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(Ширина); КонецЦикла; Для ИИ = 1 по ТаблицаЗначений.КоличествоСтрок() цикл Для ЖЖ = 1 по ТаблицаЗначений.КоличествоКолонок() цикл Значение = ТаблицаЗначений.ПолучитьЗначение(ИИ, ЖЖ); Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Текст = Значение; Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Расшифровка(Значение, 0); Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).РамкаОбвести(3, 0, 3, 0); Ширина = Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(); Ширина = Макс(Ширина, СтрДлина(СокрЛП(Строка(Значение)))); Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(Ширина); ТаблицаЗначений.ПолучитьПараметрыКолонки(ЖЖ, ТипКолонки); ; Если ТипКолонки = "Число" тогда Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).ГоризонтальноеПоложение(2); КонецЕсли; Если ИИ = ТаблицаЗначений.ТекущаяСтрока() тогда Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).ЦветФона(255, 0, 0); КонецЕсли; КонецЦикла; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать("Таблица значений: "+Заголовок); КонецПроцедуры
ОдноименныеКолонки = Новый Массив(); Для Каждого Колонка Из ИсходнаяТаблица.Колонки Цикл СовпадающаяКолонка = ТЗПолучатель.Колонки.Найти(Колонка.Имя); Если СовпадающаяКолонка <> Неопределено Тогда // Получить свойства колонки. Индекс = ТЗПолучатель.Колонки.Индекс(СовпадающаяКолонка); Имя = Колонка.Имя; ТипЗначения = Колонка.ТипЗначения; Заголовок = Колонка.Заголовок; Ширина = Колонка.Ширина; // Заменить колонки в таблице-получаетеле. ТЗПолучатель.Колонки.Удалить(Индекс); ТЗПолучатель.Колонки.Вставить(Индекс, Имя, ТипЗначения, Заголовок, Ширина); // Добавить очередное имя совпадающих колонок в массив. ОдноименныеКолонки.Добавить(Колонка.Имя); КонецЕсли; КонецЦикла; // Цикл перебора строк исходной таблицы. Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл // Добавить новую строку в таблицу-получатель. НоваяСтрока = ТЗПолучатель.Добавить(); // Заполнить значения в совпадающих ячейках. Для Каждого ИмяКолонки Из ОдноименныеКолонки Цикл НоваяСтрока[ИмяКолонки] = СтрокаИсходнойТаблицы[ИмяКолонки]; КонецЦикла; КонецЦикла;
ТЗПолучатель = ТЗИсходная.Скопировать(); // или так Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл НоваяСтрока = ТЗПолучатель.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсходнойТаблицы); КонецЦикла;