Вывод справочника в Web

На самом деле, бОльшая работа уже проделана. Реализация сервлета, который собственно выводит данные справочника Контрагенты в браузер достаточно проста.
Наш сервлет получает атрибут контекста, который был установлен нашим стартером:

		ServletContext context = getServletContext();
		V7 v7 = (V7)context.getAttribute("ru.j1c.V7");

Затем мы выводим саму таблицу. Делаем это сознательно не самым опимальным образом, что бы показать возможности J1C - а именно работаем через ссылку на справочник. При работе со ссылкой на справочник мы получаем атрибуты справочника через методы ссылки

                   ref.getAttribute("ОсновнойДоговор")

При этом, конечно, происходит "лишнее" обращение к базе.

import j1c.ru.V7;
import j1c.ru.Metadatas.Catalog;
import j1c.ru.V7.CatalogReference;
import j1c.ru.V7.RecordSet;
import j1c.ru.V7.ResultSet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;


@SuppressWarnings("serial")
public class Covenantors extends HttpServlet{
	
	private void forwardError(Exception e, HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException{

		req.setAttribute("error", e);
		RequestDispatcher dispatcher = req.getRequestDispatcher("/error");
		dispatcher.forward(req, resp);
	}

	private void printJournal(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
		PrintWriter out = resp.getWriter();
		
		
		ServletContext context = getServletContext();
		V7 v7 = (V7)context.getAttribute("ru.j1c.V7");

		out.println("<table>");
		
		out.println("<caption style=\"font-size:160%\">Справочник \"Контрагенты\"</caption>");			  
		out.println("<tr align=\"center\" style=\"font-size: 120%\"><td>Код</td><td>Наименование</td><td>Договор</td></tr>");
		if(v7!=null){//значит приложение запущено
			//HttpSession session = req.getSession();
			
			String parentEncode = req.getParameter("parent");
			RecordSet rs = v7.getRecordSet();
			String query;
			if(parentEncode!=null){
				query = "select * from $Справочник.Контрагенты (nolock) where parentid=:parent order by isfolder, descr, row_id";
				rs.setParameter("parent", new String(Base64.decode(parentEncode)));
			}
			else{
				query = "select * from $Справочник.Контрагенты (nolock) where parentid=$ПустойИд order by isfolder, descr, row_id";
			}
			
			try {
				ResultSet result = rs.executeQuery(query);
				Catalog meta = (Catalog) v7.getMetaData().selectTypes("Справочник.Контрагенты").get(0);
				
				
				while(result.next()){
					CatalogReference ref = result.getRef("id", meta);
					
					if(result.getInt("isfolder")==1){
						String url = req.getContextPath()+"/covenantors?parent="+Base64.encode(result.getString("id").getBytes());
						out.println("<tr><td><a href=\""+url+"\">"+ref.getCode()+"</a></td>" +
								"<td>"+ref.getName()+"</td></tr>"+
								"<td>"+ref.getAttribute("ОсновнойДоговор")+"</td></tr>");
					}
					else{
						out.println("<tr><td>"+ref.getCode()+"</td>" +
								"<td>"+ref.getName()+"</td>" +
								"<td>"+ref.getAttribute("ОсновнойДоговор")+"</td></tr>");
						
					}
				}
				
			} catch (Exception e) {
				forwardError(e, req, resp);
			}
			
		}

		out.println("</table>");
		

	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		resp.setContentType("text/html; charset=\"UTF-8\"");
		PrintWriter out = resp.getWriter();
		
		
		out.println("<html><head>");
		out.println("<title>Контрагенты</title>");
		out.println("</head>");
		out.println("<body>");
		printJournal(req, resp);
		out.println("</body></html>");
	}
	
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		doGet(req, resp);
	}
}

Наш пример готов и его можно запускать на web-сервере имеющий контейнер для запуска сервлетов.
Нами приложение тестировалось на Web-серверере Apache Tomcat 6.0.