СписокЗначений в Объект

1. user1970073 07.08.23 09:38 Сейчас в теме
Доброе утро. Подскажите пожалуйста как переделать список значений в обьект?
        СписокЗначений = Новый массив;
	Для каждого Элемент Из СписокЗначений Цикл
		Значение = Элемент.Значение;
		СписокЗначений .Добавить(Значение);		
	КонецЦикла;
получОбъект = ДанныеФормыВЗначение(СписокЗначений ,Объект);


Чет я все в кучу накидал и никак понять не могу как обьект получить...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. VictorRGB2 14 07.08.23 10:01 Сейчас в теме
(1) я делаю по старинке ))

&НаКлиенте
Процедура ПроцедураНаКлиенте(Команда)
     лСписокЗначений = Новый массив;
    Для каждого Элемент Из лСписокЗначений Цикл
        Значение = Элемент.Значение;
        лСписокЗначений .Добавить(Значение);        
    КонецЦикла;

  ВыполнитьПроцедуруНаСервере(лСписокЗначений);
КонецПроцедуры

&НаСервере
Функция ВыполнитьПроцедуруНаСервере(пСписокЗначений)
	
	ОбъектОбработки = РеквизитФормыВЗначение("Объект");
	
	ОбъектОбработки.ВыполнитьПроцедру(пСписокЗначений);
	
КонецФункции
Показать
2. soft_wind 07.08.23 09:59 Сейчас в теме
вы привели просто какой-то набор команд
а сама задача какая? опишите ее словами! возможно она имеет другое решение (и более простое, чем вы себе напридумывали)
что-то надо сохранить в объекте? (да не все типы доступны именно реквизитам объектм)
можно использовать ХранилищеЗначений, или внутреннюю строку...
4. user1970073 07.08.23 10:04 Сейчас в теме
(2) У меня есть список значений из документов реализаций. Есть процедура, которая преобразует документ в XML файл,
Процедура ВыгрузитьИзДокумента(Документ) Экспорт

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

КонецПроцедуры
Показать

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

Вот я и думаю как преобразовать этот списокзначений в обьекты.
6. newlogin1 07.08.23 10:09 Сейчас в теме
(4)Так в начале процедуры надо просто добавить проверку, что это список значений или документ и чуть переделать код
Процедура ВыгрузитьИзДокумента(СписокДокументов) Экспорт
Документы = Новый Массив;
Если СписокДокументов = Документ Тогда
Документы.добавить(списокДокументов)
ИначеЕсли СписокДокументов = СписокЗначений Тогда
Для Каждого Эл Из СписокДокументов Цикл
Документы.Добавить(эл.значение)
КонецЦикла;
Иначе
Возврат;
КонецЕсли;
Показать


Ну и далее в цикле обходите список документов и выгружаете
5. user1970073 07.08.23 10:05 Сейчас в теме
Забыл уточнить, это я работаю в древней базе, где обычные формы
7. Sashares 35 07.08.23 10:20 Сейчас в теме
(5)Если это обычные формы, откуда ДанныеФормыВЗначение?
8. user1970073 07.08.23 10:27 Сейчас в теме
(7) методом тыка, что нагуглил, пробую.
9. Sashares 35 07.08.23 10:34 Сейчас в теме
(8)В обычных формах этот метод не используется, но то что гуглите, это уже хорошо)
10. user1970073 07.08.23 10:42 Сейчас в теме
(9)
	ОбработкаВыгрузки = Обработки.ВыгрузкаДанныхCommerceML.Создать();

	массив = 0;
	Для каждого стр из ВыборДокументов Цикл	
		ОбработкаВыгрузки.ВыгрузитьИзДокумента(ВыборДокументов[массив].Значение.Ссылка);	
		массив = массив + 1;
	КонецЦикла;

Показать

Вот если вот так написать, то работает и получается документы сохранить в XML,но, каждый раз приходится нажимать сохранить документ в папку. Будет 100 документов, все 100 раз придется нажимать, а вот как сделать, чтоб один раз нажал и все, не получается чет....
12. Sashares 35 07.08.23 10:51 Сейчас в теме
(10)Смотрите что в процедуре ОбработкаВыгрузки.ВыгрузитьИзДокумента.

 ОбработкаВыгрузки.ВыгрузитьИзДокумента(ВыборДокументов[массив].Значение.Ссылка); 

И тут .Ссылка скорее всего лишнее. Лучше так:

ОбработкаВыгрузки.ВыгрузитьИзДокумента(стр.Значение);
15. user1970073 07.08.23 10:56 Сейчас в теме
(12) угу, Ссылка не нужна, и так все выгружается, но вот как за раз все выгрузить, я все еще думаю и мучаюсь)
19. Sashares 35 07.08.23 11:30 Сейчас в теме
(15)
В обработку ВыгрузкаДанныхCommerceML надо добавить процедуру ВыгрузитьМассивДокументов

Процедура ВыгрузитьМассивДокументов(МассивДокументов, ИмяКаталога) Экспорт
	МассивИмен = Новый Массив;

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


И вызывать ее так:


	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
	ИмяКаталога = "";
	Если Диалог.Выбрать() Тогда
		ИмяКаталога = Диалог.ПолноеИмяФайла;
	Иначе
		Возврат;
	КонецЕсли;
	
	ОбработкаВыгрузки = Обработки.ВыгрузкаДанныхCommerceML.Создать();
	
	МассивДокументов = Новый Массив;
	МассивДокументов = ВыборДокументов.ВыгрузитьЗначения();	
	
    ОбработкаВыгрузки.ВыгрузитьМассивДокументов(МассивДокументов,ИмяКаталога);    
	
	Предупреждение("Выгрузка завершена!");
Показать
13. starik-2005 3050 07.08.23 10:52 Сейчас в теме
(10)
100 раз придется нажимать
Так уберите предупреждение из конца процедуры сохранения.
17. user1970073 07.08.23 10:58 Сейчас в теме
(13) Не все так просто, внешнюю обработку изменять нельзя)
18. starik-2005 3050 07.08.23 11:09 Сейчас в теме
(17)
внешнюю обработку изменять нельзя)
Ну наживайте сто раз тогда - фигли...
11. starik-2005 3050 07.08.23 10:50 Сейчас в теме
Ну раз в функцию вместо документа прилетает список значений, то может быть список этот состоит из документов? Тогда следует просто пройтись в цикле по списку и отправить каждый документ. Ошибка возникает на попытке получения имени у объекта метаданных, полученного методом НайтиПоТипу(). Т.к. список значений - это ни разу не документ, то этот метод возвращает неопределено, что и приводит к проблеме получения из неопределено имени )))
14. user1970073 07.08.23 10:54 Сейчас в теме
(11) т.е. у меня в списке значений - документы, а обходя их циклом вызывается метод НайтиПоТипу(), который ломает эти документы переводя их в неопределено и все ломается? Так чтоли?
16. starik-2005 3050 07.08.23 10:57 Сейчас в теме
Оставьте свое сообщение

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