Использлвание макета 1С как внутренего справочника

Невозможно перестать удивляться до чего же затейники, эти программисты из фирмы 1С 🙂
Так например, реализация внутренних справочников (тех которые НЕ доступны для редактирования пользователям) идет через общие МАКЕТЫ. Например в УПП именно в макете хранится информация по «счетам учета» для конкретного документа.

И вот как эти данные вытаскиваются

Функция ПолучитьРеквизитыСчетовУчета(ИмяДокумента, ИмяТабличнойЧасти)
	
	Макет = ПолучитьОбщийМакет("СчетаУчетаВДокументах");
	ПостроительЗапроса = Новый ПостроительЗапроса;
	ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Макет.Область("ОписаниеСчетовУчета"));
	
	// Установим отборы
	УстановитьОтборПоПолю(ПостроительЗапроса, "Документ",       ИмяДокумента);
	УстановитьОтборПоПолю(ПостроительЗапроса, "ТабличнаяЧасть", ИмяТабличнойЧасти);
	
	// Возвращаем таблицу значений с отобранными из макета данными 
	ПостроительЗапроса.Выполнить();
	Возврат ПостроительЗапроса.Результат.Выгрузить();
	
КонецФункции

Костыли? Отнюдь.
Во-первых макет предоставляет информацию в табличной части (удобно для редактирования), а во-вторых он недоступен пользователям (может менять только программист через конфигуратор).
Так что если и костысль то очень удобный.

Еще пример хранения данных в макете. Чтение в список значений (Должности). Данные находятся в первой колонке.

Должности.Очистить();
МакетДолжности = ПолучитьМакет("Должности");
Стр = 1;
Пока истина Цикл
	Адрес="R"+Формат(Стр,"ЧГ=")+"C1";
	Значение=МакетДолжности.Область(Адрес).Текст;
	Если ПустаяСтрока(Значение) Тогда
        Прервать;
	КонецЕсли;		
	Должности.Добавить(Значение);
	Стр = Стр + 1;
КонецЦикла;		

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *