Есть у кого обратный код на тему:Конвертировать Документ/Справочник в Структуру в 1С 8.3:

1. zoeh 31 28.11.23 17:20 Сейчас в теме
Функция КонвертироватьОбъектВСтруктуру(ВходящийОбъект) Экспорт

   СтрукутраОбъекта = Новый Структура;

   СтандартныеРеквизитыОбъекта = ВходящийОбъект.Метаданные().СтандартныеРеквизиты;
   Для Каждого СтандартныйРеквизит Из СтандартныеРеквизитыОбъекта Цикл
       СтрукутраОбъекта.Вставить(СтандартныйРеквизит.Имя, ВходящийОбъект[СтандартныйРеквизит.Имя]);
   КонецЦикла;

   РеквизитыОбъекта = ВходящийОбъект.Метаданные().Реквизиты;
   Для Каждого Реквизит Из РеквизитыОбъекта Цикл
       СтрукутраОбъекта.Вставить(Реквизит.Имя, ВходящийОбъект[Реквизит.Имя]);
   КонецЦикла;

   ТЧ = ВходящийОбъект.Метаданные().ТабличныеЧасти;
   Для Каждого ТаблЧасть Из ТЧ Цикл
       ТЗ = ВходящийОбъект[ТаблЧасть.Имя].Выгрузить();
       Массив = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТЗ);
       СтрукутраОбъекта.Вставить(ТаблЧасть.Имя, Массив);
   КонецЦикла;

   Возврат СтрукутраОбъекта;

КонецФункции 
Показать


теперь нужно обратно из структуры в объект базы похожие , справочники буду подтягивать по кодам
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. zoeh 31 28.11.23 17:47 Сейчас в теме
У самого так себешный алгоритм пока получается:
Для Каждого Элемент Из МассивПриемник Цикл

		если ТипЗнч(Элемент)=Тип("Структура") тогда
			 
			
			
			Для Каждого Элемент2 Из Элемент Цикл
				Сообщить(Элемент2.Ключ + " ..... " + Элемент2.Значение); 
				
				
				
				если ТипЗнч(Элемент2.Значение)=Тип("Массив") тогда
					Для Каждого Элемент3 Из Элемент2.Значение Цикл
						Сообщить("   МАССИВ:"    + Элемент3);
						
						если ТипЗнч(Элемент3)=Тип("Структура") тогда
							Для Каждого Элемент4 Из Элемент3 Цикл
								Сообщить("      Структура:"    + Элемент4.Ключ + " ..... " + Элемент4.Значение);    
							КонецЦикла
						конецЕсли;

						
					КонецЦикла;
				Иначеесли ТипЗнч(Элемент2.Значение)=Тип("Структура") тогда
						//Для Каждого Элемент3 Из Элемент2.Значение Цикл
						//	Сообщить("   Структура:"    + Элемент3.Ключ + " ..... " + Элемент3.Значение);    
						//КонецЦикла
				конецЕсли; 
				  
			конецЦикла;    
		конецЕсли;    
	КонецЦикла;

Показать
3. ImHunter 315 28.11.23 18:10 Сейчас в теме
(1) Может вам на самом деле нужно изучить КД2?...
4. zoeh 31 01.12.23 05:10 Сейчас в теме
(3) Куда мне "неумному" непосилю, да и ленивоват.
Буду грызть перепаковывание структуры из базы в базу.

Ну может кто и даст алгорим распаковки в рекрсии.

я нашел в инете , но он пропускает встречающиеся массивы.
5. Oldsad 01.12.23 08:15 Сейчас в теме
(4) а что вам мешает взять алгоритм из (1) и по метаданным приемника пройтись по структуре и собрать данные?

П.С. "алгоритм" который пропускает массивы: ЗаполнитьЗначенияСвойств( ОбъектПриемник, СтруктураДанныеИсточника)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот