Доброе утро. Подскажите пожалуйста как переделать список значений в обьект?
Чет я все в кучу накидал и никак понять не могу как обьект получить...
СписокЗначений = Новый массив;
Для каждого Элемент Из СписокЗначений Цикл
Значение = Элемент.Значение;
СписокЗначений .Добавить(Значение);
КонецЦикла;
получОбъект = ДанныеФормыВЗначение(СписокЗначений ,Объект);
Чет я все в кучу накидал и никак понять не могу как обьект получить...
По теме из базы знаний
- Конвертация данных 2. Выгрузка виртуальных объектов (документ Установка цен номенклатуры)
- Сохранение произвольных значений реквизитов объекта в реквизите формы
- Присоединение внешней печатной формы в виде файла к объекту-основанию
- Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения
- Отчеты с общей формой отчета. Типовые сценарии
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) я делаю по старинке ))
&НаКлиенте
Процедура ПроцедураНаКлиенте(Команда)
лСписокЗначений = Новый массив;
Для каждого Элемент Из лСписокЗначений Цикл
Значение = Элемент.Значение;
лСписокЗначений .Добавить(Значение);
КонецЦикла;
ВыполнитьПроцедуруНаСервере(лСписокЗначений);
КонецПроцедуры
&НаСервере
Функция ВыполнитьПроцедуруНаСервере(пСписокЗначений)
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
ОбъектОбработки.ВыполнитьПроцедру(пСписокЗначений);
КонецФункции
Показать
вы привели просто какой-то набор команд
а сама задача какая? опишите ее словами! возможно она имеет другое решение (и более простое, чем вы себе напридумывали)
что-то надо сохранить в объекте? (да не все типы доступны именно реквизитам объектм)
можно использовать ХранилищеЗначений, или внутреннюю строку...
а сама задача какая? опишите ее словами! возможно она имеет другое решение (и более простое, чем вы себе напридумывали)
что-то надо сохранить в объекте? (да не все типы доступны именно реквизитам объектм)
можно использовать ХранилищеЗначений, или внутреннюю строку...
(2) У меня есть список значений из документов реализаций. Есть процедура, которая преобразует документ в XML файл,
при попытки выгрузить список значений, получаю ошибку "Значение не является значением обьектного типа(Имя)"
Вот я и думаю как преобразовать этот списокзначений в обьекты.
Процедура ВыгрузитьИзДокумента(Документ) Экспорт
ИмяТипаДокумента = ОпределитьИмяТипаДокумента(Документ);
Если Метаданные.Документы[ИмяТипаДокумента].Проведение = Метаданные.свойстваОбъектов.Проведение.Разрешить
И НЕ Документ.Проведен Тогда
Предупреждение("Непроведенный документ не может быть выгружен!");
Возврат;
КонецЕсли;
ИмяФайлаПоУмолчанию = ОпределитьИмяФайлаДляСохраненияПоУмолчанию(Строка(Документ.Контрагент), ИмяТипаДокумента);
ИмяФайла = ВыборФайла(РежимДиалогаВыбораФайла.Сохранение, ИмяФайлаПоУмолчанию);
Если НЕ ЗначениеЗаполнено(ИмяФайла) Тогда
Возврат;
КонецЕсли;
СохранитьДокументВФайл(Документ, ИмяФайла);
Предупреждение("Выгрузка завершена!");
КонецПроцедуры
Показатьпри попытки выгрузить список значений, получаю ошибку "Значение не является значением обьектного типа(Имя)"
Функция ОпределитьИмяТипаДокумента(Документ) Экспорт
МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(Документ));
Возврат МетаданныеОбъекта.Имя;
КонецФункции
ПоказатьВот я и думаю как преобразовать этот списокзначений в обьекты.
(4)Так в начале процедуры надо просто добавить проверку, что это список значений или документ и чуть переделать код
Ну и далее в цикле обходите список документов и выгружаете
Процедура ВыгрузитьИзДокумента(СписокДокументов) Экспорт
Документы = Новый Массив;
Если СписокДокументов = Документ Тогда
Документы.добавить(списокДокументов)
ИначеЕсли СписокДокументов = СписокЗначений Тогда
Для Каждого Эл Из СписокДокументов Цикл
Документы.Добавить(эл.значение)
КонецЦикла;
Иначе
Возврат;
КонецЕсли;
ПоказатьНу и далее в цикле обходите список документов и выгружаете
(9)
Вот если вот так написать, то работает и получается документы сохранить в XML,но, каждый раз приходится нажимать сохранить документ в папку. Будет 100 документов, все 100 раз придется нажимать, а вот как сделать, чтоб один раз нажал и все, не получается чет....
ОбработкаВыгрузки = Обработки.ВыгрузкаДанныхCommerceML.Создать();
массив = 0;
Для каждого стр из ВыборДокументов Цикл
ОбработкаВыгрузки.ВыгрузитьИзДокумента(ВыборДокументов[массив].Значение.Ссылка);
массив = массив + 1;
КонецЦикла;
ПоказатьВот если вот так написать, то работает и получается документы сохранить в XML,но, каждый раз приходится нажимать сохранить документ в папку. Будет 100 документов, все 100 раз придется нажимать, а вот как сделать, чтоб один раз нажал и все, не получается чет....
(15)
В обработку ВыгрузкаДанныхCommerceML надо добавить процедуру ВыгрузитьМассивДокументов
И вызывать ее так:
В обработку ВыгрузкаДанныхCommerceML надо добавить процедуру ВыгрузитьМассивДокументов
Процедура ВыгрузитьМассивДокументов(МассивДокументов, ИмяКаталога) Экспорт
МассивИмен = Новый Массив;
Для Каждого Документ Из МассивДокументов Цикл
ИмяТипаДокумента = ОпределитьИмяТипаДокумента(Документ);
Если Метаданные.Документы[ИмяТипаДокумента].Проведение = Метаданные.свойстваОбъектов.Проведение.Разрешить
И НЕ Документ.Проведен Тогда
Сообщить("Документ "+Строка(Документ)+" не проведен. Не выгружен.");
Продолжить;
КонецЕсли;
ИмяФайлаПоУмолчанию = ОпределитьИмяФайлаДляСохраненияПоУмолчанию(Строка(Документ.Контрагент), ИмяТипаДокумента);
Если МассивИмен.Найти(ИмяФайлаПоУмолчанию) = Неопределено Тогда
МассивИмен.Добавить(ИмяФайлаПоУмолчанию);
Иначе
Инд = 1;
Для Инд = 1 По 1000 Цикл
НовоеИмя = ИмяФайлаПоУмолчанию + "("+Инд+")";
Если МассивИмен.Найти(НовоеИмя) = Неопределено Тогда
ИмяФайлаПоУмолчанию = НовоеИмя;
МассивИмен.Добавить(ИмяФайлаПоУмолчанию);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СохранитьДокументВФайл(Документ, ИмяКаталога + "/"+ИмяФайлаПоУмолчанию);
КонецЦикла;
КонецПроцедуры
ПоказатьИ вызывать ее так:
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
ИмяКаталога = "";
Если Диалог.Выбрать() Тогда
ИмяКаталога = Диалог.ПолноеИмяФайла;
Иначе
Возврат;
КонецЕсли;
ОбработкаВыгрузки = Обработки.ВыгрузкаДанныхCommerceML.Создать();
МассивДокументов = Новый Массив;
МассивДокументов = ВыборДокументов.ВыгрузитьЗначения();
ОбработкаВыгрузки.ВыгрузитьМассивДокументов(МассивДокументов,ИмяКаталога);
Предупреждение("Выгрузка завершена!");
Показать
Ну раз в функцию вместо документа прилетает список значений, то может быть список этот состоит из документов? Тогда следует просто пройтись в цикле по списку и отправить каждый документ. Ошибка возникает на попытке получения имени у объекта метаданных, полученного методом НайтиПоТипу(). Т.к. список значений - это ни разу не документ, то этот метод возвращает неопределено, что и приводит к проблеме получения из неопределено имени )))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот