gifts2017

Внутренности объектов (справочников, документов)

Опубликовал Андрей Рубцов (rav_) в раздел Обработки - Обработка документов

При программном создании документов и справочников необходимо знать названия реквизитов создаваемых объектов и правила их заполнения. Однако, очень полезно так же видеть конкретные примеры, что и позволяет делать эта обработка, печатая внутренности существующих объектов базы. Работает с обычными и управляемыми формами.

Обработка позволяет печатать значения реквизитов выбранного объекта (справочника, документа) с указанием их типов или, второй вариант использования, создавать простую заготовку для программного кода. Первый вариант обработки был написан еще для 7.7 много лет назад, но был безвозвратно утерен. Это быстрая попытка частичного восстановления старого функционала. Даже в таком варианте она ускоряет процесс написания алгоритмов автоматического создания документов и справочников, поскольку позволяет наглядно увидеть какие реквизиты какими значениями нужно заполнять, опираясь на уже существующие объекты информационной базы.

Работает в обычных и управляемых формах.

Привожу основную часть кода для тех кому проще или интереснее написать самому:

	Сообщить("__________________________________________________________________________");
	Сообщить("" + ВыбСсылка);
	
	// Основные реквизиты
	Мета = ВыбСсылка.Метаданные();
	
	Попытка
		МетаРеквизиты = Мета.Реквизиты;
		Если МетаРеквизиты.Количество() > 0 Тогда
			Сообщить("// - Реквизиты -------------------------------------------");
			Для каждого МетаРеквизит Из МетаРеквизиты Цикл
				Сообщить("		Рекв." + МетаРеквизит.Имя 
					+ ?(ВидВывода = 0, " (" + МетаРеквизит.Тип + ") = " + ВыбСсылка[МетаРеквизит.Имя], " = ;")
				);
			КонецЦикла;
		КонецЕсли;
	Исключение
	КонецПопытки;
	
	Попытка
		МетаТабличныеЧасти = Мета.ТабличныеЧасти;
		Если МетаТабличныеЧасти.Количество() > 0 Тогда
			Сообщить("// - Таб.части -------------------------------------------");
			Для каждого МетаТабЧасть Из МетаТабличныеЧасти Цикл
				МетаРеквизиты = МетаТабЧасть.Реквизиты;
				
				Если ВидВывода = 0 Тогда
					Сообщить("// - " + МетаТабЧасть.Имя + " -------");
					Для А = 0 По ВыбСсылка[МетаТабЧасть.Имя].Количество() - 1 Цикл
						Строка = ВыбСсылка[МетаТабЧасть.Имя][А];
						Для каждого МетаРеквизит Из МетаРеквизиты Цикл
							Сообщить("		Таб." + МетаТабЧасть.Имя + "[" + А + "]." + МетаРеквизит.Имя + " (" + МетаРеквизит.Тип + ") = " + Строка[МетаРеквизит.Имя]);
						КонецЦикла;
					КонецЦикла;
				Иначе
					Сообщить("		// Таб.часть " + МетаТабЧасть.Имя);
					Сообщить("		НовСтрока = Рекв." + МетаТабЧасть.Имя + ".Добавить();");
					Для каждого МетаРеквизит Из МетаРеквизиты Цикл
						Сообщить("		НовСтрока." + МетаРеквизит.Имя + " = ;");
					КонецЦикла;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	Исключение
	КонецПопытки;

 Обработка проверялась на справочниках и документах (платформы 8.2 и 8.3).

Скачать файлы

Наименование Файл Версия Размер
Внутренности объекта 4
.epf 9,69Kb
25.07.16
4
.epf 9,69Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Павел Чистов (GROOVY) 25.07.16 11:16
Я чего-то не понял, видимо.

Эта штука показывает то, что показывает встроенный в конфигуратор "интелисенс"? Когда точку нажимаешь, после имени объекта? Но делает это не в конфигураторе, а в режиме 1С:Предприятие в окне служебных сообщений?
2. борян петров (TODD22) 25.07.16 12:40
Можно сделать генератор кода. Для создания и заполнения объектов. Например при переносах данных. Такие публикации уже были на ИС.
А так можно просто открыть объект консолью запросов(или редактором объектов каких нибудь) и посмотреть какие реквизиты заполнены.
3. Канат Джумадылов (Fox-trot) 25.07.16 13:44
4. Андрей Рубцов (rav_) 25.07.16 14:14
(1) GROOVY,
ну примерно так, да.
Только основная задача обработки - показать какие реквизиты заполнены и как.
И, плюсом, можно создать блок реквизитов объекта, а не добавлять каждый через точку и "интелисенс".
5. Андрей Рубцов (rav_) 25.07.16 14:19
(2) TODD22, спасибо за подсказку.
Про консоль запросов даже не подумал. Да и не пользовался ей никогда.
6. Андрей Рубцов (rav_) 25.07.16 14:38
(3) Fox-trot, на новизну не претендую, тем более на "прибыль".
Мне обработка очень помогла, когда нужно было
быстро написать конвертацию в незнакомую конфигурацию -
может еще кому пригодится.

При быстром просмотре публикаций на ИС
в глаза ничего подобного не бросилось, вот и опубликовал.
7. Павел Чистов (GROOVY) 25.07.16 15:09
Для переноса данных очень рекомендую отличный механизм "Конвертация данных". День на изучение, и потом любой перенос за час гарантирован.
А писать все вручную - ну не серьезно это.
8. борян петров (TODD22) 25.07.16 16:19
(7) GROOVY,
Для переноса данных очень рекомендую отличный механизм "Конвертация данных". День на изучение, и потом любой перенос за час гарантирован.

Конвертация отличный механизм. Но научиться её применять это далеко не день.

Да и обмены встречаются всякие разные через excel или csv файлы и тд. Вот недавно делал загрузку из банка. Они отдают или в pdf или в excel данные...
9. Павел Чистов (GROOVY) 25.07.16 18:27
Я кажется к вечеру понял что у меня вызвало скепсис:
Тот кто не в состоянии понять как работает обработка не должен заниматься переносом данных.
10. Андрей Рубцов (rav_) 26.07.16 06:04
(9) GROOVY,
Я кажется к вечеру понял что у меня вызвало скепсис:
Тот кто не в состоянии понять как работает обработка не должен заниматься переносом данных.


Вы про мою? Не ожидал, что эта скромная работа
будет претендовать на тест "по готовности заниматься переносом данных"! :)

В любом случае, спасибо, что потратили на неё время.