Перебор справочников и их реквизитов

Простой пример доступа к метаданным справочников - вывод в консоль метаданных справочников и их реквизитов. Пример показывает работу с чистыми метаданными, без использования ссылочных объектов. Обратите внимание, что метаданные получаются от основного объекта V7 - все метаданные статические объекты, и они доступны только на чтение.
import j1c.ru.Metadatas;
import j1c.ru.V7;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;


public class ReadMetaCatalogs {

	static String cp = System.getProperty("console.encoding","Cp866");
	
	public static void message(Object obj) throws IOException{
	   String msg = obj.toString()+"\n";
	   byte[] b;
	   try { 
		   b = msg.getBytes(cp); 
	   }
	   catch( UnsupportedEncodingException e ){
	      b = msg.getBytes();       // В случае отсутствия нужной кодировки,
	                                // делаем преобразование по умолчанию
	   }
	   
		   System.out.write(b);
	}

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		if(args.length==0){
			message("Usage: ReadMetaCatalogs.jar catalog [connection]\n\n" +
					"where parameters include:\n" +
					"	catalog			catalog base 1C\n" +
					"	connection		connection string as: 'server='server';base='base';user='user';password='password''");
		}
		
		//создаем объект предприятия
		V7 v7 = new V7();
		
		//подсоединеямся
		//либо учетной записью самой 1С
		if(args.length==1){
			v7.connect(args[0]);
		}//либо по заданной строке соединения
		else{
			String[] fields = args[1].split(";");
			Properties props = new Properties();
			try {
				for(int i=0;i<fields.length;i++){
					String key = fields[i].split("=")[0];
					String val = fields[i].split("=")[1];
					props.put(key, val);
				}
	
			} catch (Exception e) {
				throw new RuntimeException("Неверно задана строка сединения '"+args[1]+"'");
			}
			
			v7.connect(args[0], props);
		}
		
		//читаем метаданные справочников
		ReadMetaCatalogs t = new ReadMetaCatalogs();
		t.run(v7);
		
	}

	
	private void run(V7 v7) throws IOException{
		//из объекта предприятия получаем его метаданные
		Metadatas meta = v7.getMetaData();
		
		//выборка всех справочников
		List<Metadatas.Catalog> catalogs = meta.selectTypes("Справочник.*");
		for(Iterator<Metadatas.Catalog>i=catalogs.iterator();i.hasNext();){
			Metadatas.Catalog type = i.next();
			message(type);
			//получаем атрибуты справочника. Хотя есть альтернатива получения через
			//метод - meta.selectTypes("Справочник.<ИмяСправочника>.*" )
			//вообще метод selectTypes() может выбирать разные метаданные сразу, например с 
			//таким аргументом "Справочник.*.*" будут выбраны все реквизиты справочников 
			List<Metadatas.Property> propertys = type.getPropertys();
			Metadatas.Property property;
			for(Iterator<Metadatas.Property>j=propertys.iterator();j.hasNext();){
				property = j.next();
				message(property);
			}
		}
	}

}

Можно скачать уже откомпилированный пример
  1. Положить ReadMetaCatalogs.jar в каталог вместе jar файлами J1C
  2. Запускать из командной строки: java -jar ReadMetaCatalogs.jar <Каталог базы> [server='server';base='base';user='user';pwd='user']