Ниже приведено несколько полезных шаблонов кода по работе с табличным документом:
Код 1C v 8.х //Пример получения текста ячейки
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R1C2").Текст = спрНоменклатура.Наименование;
ПолеТабДок.Область("R2C2").Текст = "Это Строка"; //указываем явно литерал строки
Код 1C v 8.х // Изменение текста в области или ячейке
Для а = 11 по ТабличныйДокумент.ВысотаТаблицы Цикл
//Ячейка = ТабличныйДокумент.Область(а,1,а,1).Текст;
текстЯчейка = ТабличныйДокумент.Область("R"+а+"C2").Текст;
Если Строка(ТабличныйДокумент.Область("R"+а+"C2").ЦветФона)="стиль: Фон кнопки" Тогда
ТабличныйДокумент.Область("R"+а+"C7").Текст="";
ТабличныйДокумент.Область("R"+а+"C11").Текст="";
ТабличныйДокумент.Область("R"+а+"C8").Текст="";
ТабличныйДокумент.Область("R"+а+"C9").Текст="";
ТабличныйДокумент.Область("R"+а+"C10").Текст="";
КонецЕсли;
КонецЦикла;
Код 1C v 8.х // Как раскрасить ячейку или область табличного документа в зависимости от условия
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента; // Получаем табличный документ из формы
ТабДок.Очистить(); // Очищаем табличный документ
Макет = ПолучитьМакет("Макет"); // Получаем макет с именем "Макет" из текущего объекта
ОбластьСтрокаТаб = Макет.ПолучитьОбласть("СтрокаТаб"); // Получаем область из макета
ОбластьСтрокаТаб.Параметры.НашПараметр = 1; // Устанавливаем значение 1 параметру "НашПараметр"
ОбластьОформления = ТабДок.Вывести(ОбластьСтрокаТаб);
// Вот собственно и само оформление ячейки
ТабДок.Область(ОбластьОформления.Верх, ОбластьОформления.Лево, ОбластьОформления.Низ, ОбластьОформления.Лево).ЦветФона = WebЦвета.Красный;
Код 1C v 8.х //Пример изменения цвета текста при выводе данных в табличный документ
Таб.ВывестиСекцию("Контрагент");
// Изменим Текст ячейки, имя которой заранее задали как "ТекстОСостоянии"
Таб.Область("ТекстОСостоянии").Текст = "Хорошо ";
// В зависимости от условия изменим Цвет Текста
Если Раз<0 Тогда
Таб.Область(Таб.ВысотаТаблицы(),9,Таб.ВысотаТаблицы(),9).ЦветТекста(255,0,0);
ИначеЕсли Раз>0 Тогда
Таб.Область(Таб.ВысотаТаблицы(),9,Таб.ВысотаТаблицы(),9).ЦветТекста(0,0,255);
КонецЕсли;
Для того, чтобы появилась возможность использовать свойство "Значение", необходимо явно присвоить свойству ячейки "СодержитЗначение" значение Истина или установить флажок "Содержит значение" в палитре свойств.
Для ячейки, у которой установлен признак "СодержитЗначение", можно задать тип значения, размещаемого в ячейке.
Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Код 1C v 8.х МассивБулево = Новый Массив;
МассивБулево.Добавить(Тип("Булево"));
ОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
//...
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R3C3").СодержитЗначение = Истина; //указываем, что в ячейке будет значение
ПолеТабДок.Область("R3C3").ТипЗначения = ОписаниеТиповБулево; //указываем тип значения
ПолеТабДок.Область("R3C3").Значение = СпрНоменклатура.Услуга; //значение, типа "Булево" из справочника
Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство "Формат", которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат()
Код 1C v 8.х ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R4C3").ТипЗначения = ОписаниеТиповДата; //указываем тип, ранее заданный для Даты
ПолеТабДок.Область("R4C3").Значение = ТекущаяДата();
//указываем форматную строку
//будет выглядеть как "[031120-2315]-", если текущая дата '20-11-2003 23:15:00')
ПолеТабДок.Область("R4C3").Формат = "ДФ=[ггММдд-ЧЧмм]-";
Элемент управления в табличном документе
Для ячейки, у которой установлен признак "СодержитЗначение", можно также задать элемент управления, который будет использоваться для редактирования этого значения.
Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода "УстановитьЭлементУправления()". Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство "ЭлементУправления", которое возвращает элемент управления, назначенный для ячейки.
Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом и в ней отображается флажок:
Ниже показан пример установки элемента управления типа "Флажок" из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Код 1C v 8.х МассивБулево = Новый Массив;
МассивБулево.Добавить(Тип("Булево"));
ОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
...
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R5C3").СодержитЗначение = Истина; //указываем, что в ячейке будет значение
ПолеТабДок.Область("R5C3").ТипЗначения = ОписаниеТиповБулево; //указываем ранее заданный тип
ПолеТабДок.Область("R5C3").Значение = СпрНоменклатура.Услуга; //значение, типа "Булево" из справочника
//а теперь указываем, что в ячейке будет отображаться флажок
ПолеТабДок.Область("R5C3").УстановитьЭлементУправления(Тип("Флажок"));
Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:
Разберем самые важные свойства и методы:
Свойство "ВстроенВЯчейку" имеет тип "булево" и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
Свойство "Видимость" позволяет показать или скрыть элемент управления.
Свойство "Значение" предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
Метод "Расположить" позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.
Код 1C v 8.х ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R4C3").Защита = Истина;
Код 1C v 7.x Перем ИмяПути,ИмяФайла;
Перем 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);
КонецПроцедуры //ПриОткрытии
Пример файла XML :
Код
<?xml version="1.0" encoding="windows-1251"?>
<НДФЛ2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ВерсФорм="4.00001" ВерсПрог="НП 10.31" ИдФайл="ДОХОД_2НДФЛ">
<Справка>
<ОбщСвИЧ>
<ГодДох>2006</ГодДох>
<НомСпр>1</НомСпр>
<ДатаСпр>26.03.2007</ДатаСпр>
<ИФНСНА>7777</ИФНСНА>
</ОбщСвИЧ>
<ИстДох>
<СвНАЮЛ>
<ИННЮЛ>1234567890</ИННЮЛ>
<КПП>12345678</КПП>
<НаимОрг>ООО Рога и Копыта</НаимОрг>
<ОКАТО>12345678901</ОКАТО>
</СвНАЮЛ>
</ИстДох>
<ПолучДох>
<ФИО>
<Фамилия>Иванов</Фамилия>
<Имя>Иван</Имя>
<Отчество>Иванович</Отчество>
</ФИО>
<Статус>1</Статус>
<ДатаРожд>24.01.1973</ДатаРожд>
<Гражданство>643</Гражданство>
<УдЛичн>
<КодУдЛичн>21</КодУдЛичн>
<СерНомДок>12 01 012345</СерНомДок>
</УдЛичн>
<АдрМЖРФ>
<Индекс>123456</Индекс>
<КодРегион>77</КодРегион>
<Город>Энн г</Город>
<Улица>Ленина ул</Улица>
<Дом>99</Дом>
<Корпус>5</Корпус>
<Кварт>12</Кварт>
</АдрМЖРФ>
</ПолучДох>
<СвДохСтав>
<Ставка>35</Ставка>
<ДохВыч>
<НомМес>02</НомМес>
<КодДоход>2610</КодДоход>
<СумДоход>252.15</СумДоход>
</ДохВыч>
<ДохВыч>
<НомМес>07</НомМес>
<КодДоход>2760</КодДоход>
<СумДоход>100.00</СумДоход>
<КодВычет>503</КодВычет>
<СумВычет>100.00</СумВычет>
</ДохВыч>
<ДохВыч>
<НомМес>10</НомМес>
<КодДоход>2760</КодДоход>
<СумДоход>100.00</СумДоход>
<КодВычет>503</КодВычет>
<СумВычет>100.00</СумВычет>
</ДохВыч>
<СГДНалПер>
<СГДСумм>252.15</СГДСумм>
<ОблСумм>252.15</ОблСумм>
<НИОблСумм>88</НИОблСумм>
<НУОблСумм>88</НУОблСумм>
<ВозврСуммПЛ>0</ВозврСуммПЛ>
<ЗачСуммПЛ>0</ЗачСуммПЛ>
<УдСуммПЛ>0</УдСуммПЛ>
<ДолгНП>0</ДолгНП>
<ДолгНА>0</ДолгНА>
<ВзыскИФНС>0</ВзыскИФНС>
</СГДНалПер>
</СвДохСтав>
</Справка>
</НДФЛ2>
Код 1C v 8.х // 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.Картинка = Новый Картинка;
КонецПопытки;
Для
7.7 пример обработки, которая выводит все картинки (.jpg) из выбранного каталога (и подкаталогов) в печатную форму
Скачивать файлы может только зарегистрированный пользователь!
Вот ее код:
Код 1C v 7.x Перем Картинка, ТЗКаталога, ПутьКаталогаРисунков;
//******************************************************************************
Процедура Сформировать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();
КонецПроцедуры
Пример кода быстрая Печать таблицы значений
Код 1C v 8.х //ТПОтчета - Табличное поле с формы (Таблица значений) с данными
ПострПечать = Новый ПостроительОтчета;
ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТПОтчета);
ПострПечать.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс);
ПострПечать.Выполнить();
Для каждого Колонка Из ПострПечать.ВыбранныеПоля Цикл
Колонка.Представление = ТПОтчета.Колонки[Колонка.Имя].Заголовок;
КонецЦикла;
ПострПечать.Вывести();
Пример функций Печать таблицы значений с использованием Макета
Код 1C v 8.х //Процедура формирует и выводит отчет по переданной таблице значений
// Параметры :
// ТЗ - ТаблицаЗначений
Процедура УниверсальныйОтчетПоТЗ(ТЗ)
Табл=Новый ТабличныйДокумент;
Макет = ЭтотОбъект.ПолучитьМакет("Макет");
ОбластьШапкаОсновной=Макет.ПолучитьОбласть("Шапка|Основной");
ОбластьСтрокаОсновной=Макет.ПолучитьОбласть("Строка|Основной");
ОбластьИтогОсновной=Макет.ПолучитьОбласть("Итог|Основной");
ОбластьШапкаДОП=Макет.ПолучитьОбласть("Шапка|Показатели");
ОбластьСтрокаДОП=Макет.ПолучитьОбласть("Строка|Показатели");
ОбластьИтогДОП=Макет.ПолучитьОбласть("Итог|Показатели");
Табл.Вывести(ОбластьШапкаОсновной);
Для Каждого Колонка из Тз.Колонки ЦИКЛ
ОбластьШапкаДОП.Параметры.ИмяПоказателя=Колонка.Имя;
Табл.Присоединить(ОбластьШапкаДОП);
КонецЦикла;
счетчик=0;
Для каждого стр из Тз Цикл
счетчик=счетчик+1;
ОбластьСтрокаОсновной.Параметры.счетчик=счетчик;
Табл.Вывести(ОбластьСтрокаОсновной);
Для Каждого Колонка из Тз.Колонки ЦИКЛ
ОбластьСтрокаДОП.Параметры.ЗначениеКолонки=стр[Колонка.Имя];
Табл.Присоединить(ОбластьСтрокаДОП);
КонецЦикла;
КонецЦикла;
Табл.Вывести(ОбластьИтогОсновной);
Для Каждого Колонка из Тз.Колонки ЦИКЛ
ОбластьИтогДОП.Параметры.Итог=Тз.Итог(Колонка.Имя);
Табл.Присоединить(ОбластьИтогДОП);
КонецЦикла;
Табл.Показать();
КонецПроцедуры
Код 1C v 7.x
//Вывести таблицу значений
Процедура ПечатьТЗвТаб(ТЗ, Заголовок = "",КолонкиПоНазваниям = 0) Экспорт
Перем ТТЗ;
ТЗ.Выгрузить(ТТЗ);
МаксШирина = 50; // максимальная ширина колонки
СпШирина = СоздатьОбъект("СписокЗначений"); // список ширин колонок по таблице
Для сч = 1 по ТТЗ.КоличествоКолонок() Цикл
Если КолонкиПоНазваниям = 0 Тогда
ИмяРек = ТТЗ.ПолучитьПараметрыКолонки(сч);
Иначе
ИмяРек = "";
ТТЗ.ПолучитьПараметрыКолонки(сч,,,,ИмяРек,);
КонецЕсли;
СпШирина.ДобавитьЗначение(СтрДлина(ИмяРек)*1.2); // с поправкой на размер шрифта
КонецЦикла;
// просто печать таблицы - вывод всех строк и колонок
// числовые значения - по правому краю. Автоподбор ширины - в пределах МаксШирина
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ПечатьТЗ");
Если СокрЛП(Заголовок) <> "" Тогда
Таб.ВывестиСекцию("Шапка");
КонецЕсли;
// заголовки таблицы
Таб.ВывестиСекцию("Строка|Общая");
Для сч=1 по ТТЗ.КоличествоКолонок() Цикл
Если КолонкиПоНазваниям = 0 Тогда
ИмяРек = ТТЗ.ПолучитьПараметрыКолонки(сч);
Иначе
ИмяРек = "";
Ном = "";
ТТЗ.ПолучитьПараметрыКолонки(сч,,,,ИмяРек,);
КонецЕсли;
Таб.ПрисоединитьСекцию("Строка|Столбец");
КонецЦикла;
ВысотаШапки = Таб.ВысотаТаблицы();
// данные таблицы по строкам
ТТЗ.ВыбратьСтроки();
Пока ТТЗ.ПолучитьСтроку()=1 Цикл
Ном = ТТЗ.НомерСтроки;
Таб.ВывестиСекцию("Строка|Общая");
Выс = Таб.ВысотаТаблицы();
Для сч=1 по ТТЗ.КоличествоКолонок() Цикл
ИмяРек=ТТЗ.ПолучитьЗначение(Ном,сч);
Таб.ПрисоединитьСекцию("Строка|Столбец");
Если ТипЗначения(ИмяРек) = 1 Тогда
Обл = Таб.Область("R"+Выс+"C"+(Сч+1)); // ячейка в которую поместили данные
Обл.ГоризонтальноеПоложение(2); // числа - вправо
КонецЕсли;
НачШирина = СпШирина.ПолучитьЗначение(Сч);
Ширина = СтрДлина(ИмяРек);
СпШирина.УстановитьЗначение(Сч,Макс(НачШирина,Ширина));
КонецЦикла;
КонецЦикла;
Для сч = 1 по СпШирина.РазмерСписка() Цикл
Обл = Таб.Область("R"+ВысотаШапки+"C"+(Сч+1));
// форматируем ширину таблицы
Ширина = Мин(МаксШирина,2+СпШирина.ПолучитьЗначение(Сч));
Обл.ШиринаСтолбца(Ширина);
// форматируем заголовок
Обл.Полужирный(1);
КонецЦикла;
Таб.Показать(Заголовок);
Таб.ТолькоПросмотр(1);
КонецПроцедуры
ИЛИ
Код 1C v 7.x Процедура глВывестиТаблицуЗначений(ТаблицаЗначений, Заголовок = "") Экспорт
Перем Таб, ИИ, ЖЖ, НазваниеКолонки, ТипКолонки, Ширина, Значение, Сообщение;
Таб = СоздатьОбъект("Таблица");
Если ТипЗначенияСтр(ТаблицаЗначений) <> "ТаблицаЗначений" Тогда
Сообщение = "В процедуру ""глВывестиТаблицуЗначений()"" передана переменная не типа ""ТаблицаЗначений"", "+
"а типа """+СокрЛП(ТипЗначенияСтр(ТаблицаЗначений))+"""";
Таб.Область(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);
Таб.Показать("Таблица значений: "+Заголовок);
КонецПроцедуры