Ниже приведено несколько полезных шаблонов кода по работе с табличным документом:
Код 1C v 8.х
ПолеТабДок = ЭлементыФормы. тдПолеТабличногоДокумента;
ПолеТабДок. Область( "R1C2" ) . Текст = спрНоменклатура. Наименование;
ПолеТабДок. Область( "R2C2" ) . Текст = "Это Строка" ;
Код 1C v 8.х
Для а = 11 по ТабличныйДокумент. ВысотаТаблицы Цикл
текстЯчейка = ТабличныйДокумент. Область( "R" + а+ "C2" ) . Текст;
Если Строка( ТабличныйДокумент. Область( "R" + а+ "C2" ) . ЦветФона) = "стиль: Фон кнопки" Тогда
ТабличныйДокумент. Область( "R" + а+ "C7" ) . Текст= "" ;
ТабличныйДокумент. Область( "R" + а+ "C11" ) . Текст= "" ;
ТабличныйДокумент. Область( "R" + а+ "C8" ) . Текст= "" ;
ТабличныйДокумент. Область( "R" + а+ "C9" ) . Текст= "" ;
ТабличныйДокумент. Область( "R" + а+ "C10" ) . Текст= "" ;
КонецЕсли ;
КонецЦикла ;
Код 1C v 8.х
ТабДок = ЭлементыФормы. ПолеТабличногоДокумента;
ТабДок. Очистить( ) ;
Макет = ПолучитьМакет( "Макет" ) ;
ОбластьСтрокаТаб = Макет. ПолучитьОбласть( "СтрокаТаб" ) ;
ОбластьСтрокаТаб. Параметры. НашПараметр = 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" ) . Значение = ТекущаяДата( ) ;
ПолеТабДок. Область( "R4C3" ) . Формат = "ДФ=[ггММдд-ЧЧмм]-" ;
Элемент управления в табличном документе
Для ячейки, у которой установлен признак "СодержитЗначение", можно также задать элемент управления, который будет использоваться для редактирования этого значения.
Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода "УстановитьЭлементУправления()". Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство "ЭлементУправления", которое возвращает элемент управления, назначенный для ячейки.
Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом и в ней отображается флажок:
Ниже показан пример установки элемента управления типа "Флажок" из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Код 1C v 8.х МассивБулево = Новый Массив;
МассивБулево. Добавить( Тип( "Булево" ) ) ;
ОписаниеТиповБулево = Новый ОписаниеТипов( МассивБулево) ;
. . .
ПолеТабДок = ЭлементыФормы. тдПолеТабличногоДокумента;
ПолеТабДок. Область( "R5C3" ) . СодержитЗначение = Истина ;
ПолеТабДок. Область( "R5C3" ) . ТипЗначения = ОписаниеТиповБулево;
ПолеТабДок. Область( "R5C3" ) . Значение = СпрНоменклатура. Услуга;
ПолеТабДок. Область( "R5C3" ) . УстановитьЭлементУправления( Тип( "Флажок" ) ) ;
Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:
Разберем самые важные свойства и методы:
Свойство "ВстроенВЯчейку" имеет тип "булево" и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
Свойство "Видимость" позволяет показать или скрыть элемент управления.
Свойство "Значение" предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
Метод "Расположить" позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.
Код 1C v 8.х ПолеТабДок = ЭлементыФормы. тдПолеТабличногоДокумента;
ПолеТабДок. Область( "R4C3" ) . Защита = Истина ;
Код 1C v 7.x Перем ИмяПути, ИмяФайла;
Перем xmlParser;
Функция УстановитьКомпоненту()
Если ЗагрузитьВнешнююКомпоненту( КаталогИБ( ) + "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 ) . ПолучитьПодчиненныйПоНомеру( 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 ) . ВыбратьУзлы( "ДохВыч" ) ;
Для Сч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 , , , 5 , 5 , 5 , 5 , , , 1 ) ;
Т. Показать( "Прочитали из XML" ) ;
КонецПроцедуры
Процедура Выбрать()
ФС. ВыбратьФайл( 0 , ИмяФайла, ИмяПути, "Выберите файл" , "xml файлы (*.xml) |*.xml|Все файлы (*.*) |*.*" , "xml" , ) ;
Если ПустоеЗначение( ИмяФайла) = 0 Тогда
PathSbitn= ИмяПути+ ИмяФайла;
КонецЕсли ;
КонецПроцедуры
Процедура ПриОткрытии()
ИмяФайла = "" ;
ИмяПути = "P:" ;
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.х
ТабДок = Новый ТабличныйДокумент;
Макет = ОбработкаОбъект. ПолучитьМакет( "Макет" ) ;
ОбластьКартинки = Макет. ПолучитьОбласть( "ОбластьСКартинкой" ) ;
Картинка = Новый Картинка( ПутьККартинке) ;
ОбластьКартинки. Рисунки. Логотип. Картинка = Картинка;
ТабДок. Вывести( ОбластьКартинки) ;
ТабДок. Показать( ) ;
Область = Макет. ПолучитьОбласть( "Шапка" ) ;
Рисунок = Область. Рисунки. Добавить( ТипРисункаТабличногоДокумента. Картинка) ;
Рисунок. Верх = 5 ;
Рисунок. Высота = 10 ;
Рисунок. Ширина = 10 ;
Рисунок. Лево = 5 ;
Рисунок. Картинка = Новый Картинка( ПутьККартинке) ;
Рисунок. РазмерКартинки = РазмерКартинки. РеальныйРазмер;
ТабДок. Вывести( Область) ;
ОбластьПечатьОрганизации = Макет. ПолучитьОбласть( "ПечатьОрганизации" ) ;
Картинка= Новый Картинка( "C:\files\img\печатьОрганизации.gif" ) ;
ОбластьПечатьОрганизации. Рисунки. Картинка1 . Картинка = картинка;
ТабДок. Вывести( ОбластьПечатьОрганизации) ;
ОбластьПечатьОрганизации = Макет. ПолучитьОбласть( "ПечатьОрганизации" ) ;
КартинкаПечатьОрганизации = ОбластьПечатьОрганизации. Рисунки. Добавить( ТипРисункаТабличногоДокумента. Картинка) ;
КартинкаПечатьОрганизации. Картинка = БиблиотекаКартинок. ОбщаяКартинка1 ;
КартинкаПечатьОрганизации. Верх = 0 ;
КартинкаПечатьОрганизации. Высота = 80 ;
КартинкаПечатьОрганизации. Ширина = 80 ;
КартинкаПечатьОрганизации. Лево = 50 ;
КартинкаПечатьОрганизации. ГраницаСверху = Ложь ;
КартинкаПечатьОрганизации. ГраницаСлева = Ложь ;
КартинкаПечатьОрганизации. ГраницаСправа = Ложь ;
КартинкаПечатьОрганизации. ГраницаСнизу = Ложь ;
КартинкаПечатьОрганизации. РазмерКартинки = РазмерКартинки. АвтоРазмер;
ТабДок. Вывести( ОбластьПечатьОрганизации) ;
Попытка
Путь = КаталогВременныхФайлов( ) + "\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 ) ;
Таб. Показать( "Таблица значений: " + Заголовок) ;
КонецПроцедуры