Получение сведений из метаданных 1С 7.7

16.11.08

Разработка - Универсальные функции

Описание 2х функций для получение списка реквизитов справочника и документа.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
-
.1226807722 2,27Kb
138
138 Скачать (1 SM) Купить за 1 850 руб.
// Возвращает список реквизитов справочника
//	параметры: СпрВид - вид справочника
Функция ПолучитьСписокРеквизитовСправочника(знач СпрВид)

	СпрВид = ?(ТипЗначенияСтр(СпрВид) = "Строка", СпрВид, СпрВид.Вид());
	СпрВид = ?(Найти(СпрВид, ".") = 0, СпрВид, Сред(СпрВид, Найти(СпрВид, ".") + 1));
	сзРеквизиты = СоздатьОбъект("СписокЗначений");
	сзРеквизиты.ДобавитьЗначение("Код");
	сзРеквизиты.ДобавитьЗначение("Наименование");
	МД = Метаданные.Справочник(СпрВид);
	
	Для сч = 1 По МД.Реквизит() Цикл
		рек = МД.Реквизит(сч);
		сзРеквизиты.ДобавитьЗначение(рек.Идентификатор, рек.Представление());
	КонецЦикла;
	
	Возврат сзРеквизиты;

КонецФункции
//---------------------------------------------------------
// Возвращает список реквизитов документа
//	параметры: ДокВид - вид документа или документ
//	флКакиеРеквизиты:	0 - все
//						1 - шапка
//						2 - табличная часть
Функция ПолучитьСписокРеквизитовДокумента(знач ДокВид, знач флКакиеРеквизиты = 0)

	ДокВид = ?(ТипЗначенияСтр(ДокВид) = "Строка", ДокВид, ДокВид.Вид());
	ДокВид = ?(Найти(ДокВид, ".") = 0, ДокВид, Сред(ДокВид, Найти(ДокВид, ".") + 1));
	сзРеквизиты = СоздатьОбъект("СписокЗначений");
	ДокМД = Метаданные.Документ(ДокВид);
	
	Если ТипЗначенияСтр(флКакиеРеквизиты) = "Строка" Тогда
		флКакиеРеквизиты = Врег(Лев(флКакиеРеквизиты, 1));
		
		Если флКакиеРеквизиты = "В" Тогда
			флКакиеРеквизиты = 0;
		ИначеЕсли флКакиеРеквизиты = "Ш" Тогда
			флКакиеРеквизиты = 1;
		Иначе
			флКакиеРеквизиты = 2;
		КонецЕсли;
		
	КонецЕсли;
	
	Если флКакиеРеквизиты < 2 Тогда
	
		Для сч = 1 По Метаданные.ОбщийРеквизитДокумента() Цикл
			рек = Метаданные.ОбщийРеквизитДокумента(сч);
			сзРеквизиты.ДобавитьЗначение(рек.Идентификатор);
		КонецЦикла;
		
		Для сч = 1 По ДокМД.РеквизитШапки() Цикл
			рек = ДокМД.РеквизитШапки(сч);
			сзРеквизиты.ДобавитьЗначение(рек.Идентификатор);
		КонецЦикла;
	
	КонецЕсли;
	
	Если флКакиеРеквизиты = 0 Тогда
		сзРеквизиты.ДобавитьЗначение("");// разделитель реквизитов шапки и табличной части
	КонецЕсли;
	
	Если флКакиеРеквизиты <> 1 Тогда
		
		Для сч = 1 По ДокМД.РеквизитТабличнойЧасти() Цикл
			рек = ДокМД.РеквизитТабличнойЧасти(сч);
			сзРеквизиты.ДобавитьЗначение(рек.Идентификатор);
		КонецЦикла;
		
	КонецЕсли;
	
	Возврат сзРеквизиты;

КонецФункции

См. также

Универсальные функции Программист Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    1424    14    user706545_kseg1971    0    

5

Универсальные функции Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    2369    zhenyat    7    

8

Универсальные функции Программист Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    5189    Zoltan_Black    11    

2

Универсальные функции Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13968    4    alsen    3    

5

Универсальные функции Программист Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10821    malovandrey    7    

19

Универсальные функции Работа с интерфейсом Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18903    2    HAMMER_59    6    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Belomor 111 16.11.08 11:01 Сейчас в теме
Было такое описание метаданных от Моисееко, так что ничего нового.
2. Automatik 962 16.11.08 11:17 Сейчас в теме
Может и было, только вот я не нашел здесь. Поэтому выложил
3. GSoft 2237 16.11.08 13:41 Сейчас в теме
(0) то что выложил хорошо, но вот если напишешь комментарии (многим начинающим они пригодятся) будет хоршо
ставлю плюс авансом и уравниваю
4. Abadonna 3969 16.11.08 16:18 Сейчас в теме
Маловато будет... информации. Возвращать лучше ТЗ, а там не только идентификатор-представление, но и вид, длина, точность.
Не помешает также знать периодический или нет, подчинен справочник или нет и т.д..
5. Automatik 962 16.11.08 17:39 Сейчас в теме
Кому надо - может и доработать. Мне этого хватает в моих разработках. Главное - идея!
8. vitaliy.ermolenko 52 16.11.08 21:08 Сейчас в теме
смотрю функцию ПолучитьСписокРеквизитовСправочника и не совсем понимаю почему всегда добавляется "код" и "наименование" к списку возвращаемых реквизитов. разве "код" и "наименование" всегда присутствуют в справочнике?
хотя если учитывать п. (5), то отношение автора к моему минусу становится ясным. кстати, кому надо тот может и сам написать, а не дорабатывать. если здесь главное "идея", то изложи только идею, например:
"
// Возвращает список реквизитов справочника
// параметры: СпрВид - вид справочника
Функция ПолучитьСписокРеквизитовСправочника(знач СпрВид)
сзРеквизиты = СоздатьОбъект("СписокЗначений");
/////////////тута надо заполнить список значенией (сзРеквизиты) соответствующими
/////////////значениями метаданных относительно переданного параметра
Возврат сзРеквизиты;
КонецФункции
"

ибо самое главное в жизни это идеи, а их реализация - это дело десятое.
6. Abadonna 3969 16.11.08 19:28 Сейчас в теме
7. GSoft 2237 16.11.08 19:41 Сейчас в теме
Abadonna прав - разработок использующих эту идею много
а вот "методических пособий" мало
9. GSoft 2237 16.11.08 23:41 Сейчас в теме
сменил свое мнение - на практический пример с описанием не тянет
10. vde69 925 16.11.08 23:52 Сейчас в теме
в типовых вроде подобное есть, в процедурах работы с контекстом документа,
в любом случае ни о чем...

если-бы это было в блогах, я-бы еще понял, но в "программах" - тянет на минус
11. Automatik 962 17.11.08 14:03 Сейчас в теме
Автор: чёта я не понял: вроде доброе дело сделал, а они минусами закидали. Мне что, теперь не делиться своими наработками?
12. Ёпрст 1065 17.11.08 14:08 Сейчас в теме
(11) Полезно читать документацию, например, als по метаданным от Пита...написанное эдак еще годков 8 назад(или раньше, не помню ужо), перед написанием своих нетленок... Всё ужо придумано до нас.
13. Abadonna 3969 17.11.08 14:22 Сейчас в теме
(11)>Мне что, теперь не делиться своими наработками?
Я тебе минус не ставил, но неужели ты на самом деле считаешь, что это НАРАБОТКА?
14. Altair777 645 17.11.08 14:40 Сейчас в теме
(11) > Автор: чёта я не понял: вроде доброе дело сделал, а они минусами закидали. Мне что, теперь не делиться своими наработками?
Просто за последнее время некто фиксин настолько обозлил общественность на ИнфоСтарте подобными мини-идеями, что народ стал строже относиться к этому.
У меня есть незавершенный проект "Контроль доступа", так там из МетаДанных вытягиваются все реквизиты всех объектов.
Но публиковать куски кода, которые не имеет самостоятельной практической ценности я не собираюсь.
А, тем более, публиковать в разделе "Программы".
п.с. кстати, есть такой "Описатель оъекта Метаданных", автор Бертыш А.В. Брянск lamer19@narod.ru
Я очень много оттуда почерпнул.
15. SleeperVlz 20.11.08 07:43 Сейчас в теме
Уж извиняйте, но просто не сдержался...
Идея? Обалдеть!!! Любой нормальный программер напишет для своих нужд такую "идею" уже через 2-а месяца изучения 1С...
16. Automatik 962 20.11.08 08:14 Сейчас в теме
Давайте писать более конструктивно, например: в строке N возникает ошибка, код в строках N-NN можно было бы написать лучше. А докапываться до слов не надо, так как у каждого из нас разное воспитание и уровень снобизма тоже.
17. Noy 1079 20.11.08 09:54 Сейчас в теме
И чего вы все так жестоко?
Согласен, что это баян, что даже если и размещать, то надо было не в разделе программ, а в блогах.
Но минусы то зачем ставить? за компанию? так уж тут заведено?
Если не видите ценности данной "обработки" - просто проигнорируйте, а минус надо ставить за не рабочий код.
Компенисрую.
18. ignor 237 29.08.15 08:13 Сейчас в теме
Справочник может иметь как код и наименование, как что-либо одно из них (код или наименование), так и ни кода ни наименования. Соответственно как говорится "Тема сисек не раскрыта". За это и минусовали
Оставьте свое сообщение