|
не могу получить объект | ☑ | ||
---|---|---|---|---|
0
Lensky
31.08.11
✎
20:43
|
&НаСервере
Процедура ПолучитьДоки() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладная.Ссылка |ИЗ | Документ.ПриходнаяНакладная КАК ПриходнаяНакладная |ГДЕ | ПриходнаяНакладная.Дата МЕЖДУ &Дата1 И &Дата2"; Запрос.УстановитьПараметр("Дата1", Дата1); Запрос.УстановитьПараметр("Дата2", Дата2); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл стр = тз.Добавить(); стр.Приходная = ВыборкаДетальныеЗаписи.Ссылка; КонецЦикла; КонецПРоцедуры &НаКлиенте Процедура ЗаполнитьДокументxml(ПутьКФайлу) xmldoc = Новый COMОбъект("Msxml2.DOMDocument"); xmlDoc.loadXML("<root/>"); ТЗ.Очистить(); ПолучитьДоки(); Для Каждого ВыборкаДетальные из тз Цикл Док= ВыборкаДетальные.Приходная; КонецЦикла; .... Туплю наверно, но не понимаю как получить объект ВыборкаДетальные.Приходная |
|||
1
Lensky
31.08.11
✎
20:44
|
Чтобы обратиться к реквизитам документа
|
|||
2
vicof
31.08.11
✎
20:49
|
а что объект базы данных будет на клиенте делать?
Создавай серверную процедуру, которая будет получать объект, если это так необходимо. |
|||
3
Lensky
31.08.11
✎
20:55
|
а как мне правильно xml заполнить тогда данными из документа?
Заполнять данными структуру или массив, отправлять на клиента и заполнять файл xml? |
|||
4
Mort
31.08.11
✎
20:57
|
Пусть тебе сервер сразу xml возвращает.
|
|||
5
Kookish
31.08.11
✎
20:59
|
Книга "Технологии интеграции "1С:Предприятия" 8.2", стр. 70.
ЗаписьXML, ПоместитьВоВременноеХранилище(), ПолучD2 u0442ьФайл(). |
|||
6
zzerro
31.08.11
✎
21:31
|
Предположение, т.к. не знаком с управляемыми формами:
Может надо процедуру сделать с параметром ПолучитьДоки(ТЗ)? Или ее сделать функцией, возвращающей ТЗ? |
|||
7
Lensky
31.08.11
✎
21:32
|
&НаСервере
Функция ПолучитьДоки() xmldoc = Новый COMОбъект("Msxml2.DOMDocument"); xmlDoc.loadXML("<root/>"); ТЗ.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладная.Ссылка |ИЗ | Документ.ПриходнаяНакладная КАК ПриходнаяНакладная |ГДЕ | ПриходнаяНакладная.Дата МЕЖДУ &Дата1 И &Дата2"; Запрос.УстановитьПараметр("Дата1", Дата1); Запрос.УстановитьПараметр("Дата2", Дата2); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл стр = тз.Добавить(); стр.Приходная = ВыборкаДетальныеЗаписи.Ссылка; Док= ВыборкаДетальныеЗаписи.Ссылка; nodeRoot = xmlDoc.documentElement; ПрихНакл = xmlDoc.createElement("ПриходнаяНакладная"); РеквизитыШапки = xmlDoc.createElement("Шапка"); //ПрихНакл.appendChild(Шапка); // РеквизитыШапки = xmlDoc.createElement("РеквизитыШапки"); РеквизитыШапки.setAttribute("Дата",Формат(Док.Дата, "ДЛФ=Д")); РеквизитыШапки.setAttribute("Номер",Док.Номер); РеквизитыШапки.setAttribute("Склад",Док.СтруктурнаяЕдиница.Наименование); РеквизитыШапки.setAttribute("СкладКод",Док.СтруктурнаяЕдиница.Код); //РеквизитыШапки.setAttribute("СкладGUID",ЗначениеВСтрокуВнутр(Док.СтруктурнаяЕдиница)); РеквизитыШапки.setAttribute("СкладМОЛ",СокрЛП(Док.СтруктурнаяЕдиница.МОЛ)); РеквизитыШапки.setAttribute("ДатаВх",Формат(Док.ДатаВходящегоДокумента, "ДЛФ=Д")); РеквизитыШапки.setAttribute("НомерВх",Док.НомерВходящегоДокумента); РеквизитыШапки.setAttribute("Контрагент",Док.Контрагент.Наименование); РеквизитыШапки.setAttribute("КонтрагентИНН",Док.Контрагент.ИНН); РеквизитыШапки.setAttribute("КонтрагентКПП",Док.Контрагент.КПП); РеквизитыШапки.setAttribute("Проект",Док.эфПроектОбщий.Наименование); //РеквизитыШапки.setAttribute("ПроектGUID",ЗначениеВСтрокуВнутр(Док.эфПроектОбщий)); РеквизитыШапки.setAttribute("Комментарий",СокрЛП(Док.Комментарий)); РеквизитыШапки.setAttribute("СуммаДокумента",Док.СуммаДокумента ); // РеквизитыШапки.setAttribute("ДокументGUID",ЗначениеВСтрокуВнутр(Док)); ПрихНакл.appendChild(РеквизитыШапки); nodeRoot.appendChild(ПрихНакл); ТЧ = xmlDoc.createElement("ТЧ"); ПрихНакл.appendChild(ТЧ); Для Каждого Стр из Док.Запасы Цикл СтрокаТЧ = xmlDoc.createElement("СтрокаТЧ"); СтрокаТЧ.setAttribute("Номенклатура",стр.Номенклатура.Наименование); СтрокаТЧ.setAttribute("НоменклатураКод",стр.Номенклатура.Код); //СтрокаТЧ.setAttribute("НоменклатураGUID",ЗначениеВСтрокуВнутр(стр.Номенклатура)); СтрокаТЧ.setAttribute("Количество",стр.Количество); СтрокаТЧ.setAttribute("Сумма",стр.Сумма); СтрокаТЧ.setAttribute("Проект",стр.эф_Проект.Наименование); //СтрокаТЧ.setAttribute("ПроектGUID",ЗначениеВСтрокуВнутр(стр.эф_Проект)); СтрокаТЧ.setAttribute("Цена",стр.Цена); СтрокаТЧ.setAttribute("СуммаНДС",стр.СуммаНДС); СтрокаТЧ.setAttribute("Всего",стр.Всего); ТЧ.appendChild(СтрокаТЧ); КонецЦикла; КонецЦикла; ПоместитьВоВременноеХранилище(xmlDoc, ЭтаФорма.УникальныйИдентификатор); Возврат ""; КонецФункции &НаКлиенте Процедура ЗаполнитьДокументxml(ПутьКФайлу) х= ПолучитьДоки(); Зн= ПолучитьИзВременногоХранилища(ЭтаФорма.УникальныйИдентификатор); Зн.save(ПутьКФайлу); КонецПроцедуры Ошибка получения значение из временного хранилища Подскажите ребята как правильно, не понимаю... |
|||
8
Kookish
31.08.11
✎
21:40
|
Давай я лучше пример полностью скину:
&НаКлиенте Процедура ВыгрузкаДанныхXML(Команда) АдресДокументаВХранилище = ЗаписьДанныхXML(); ПолучитьФайл(АдресДокументаВХранилище, КаталогВременныхФайлов() + "out.xml", Ложь); КонецПроцедуры &НаСервере Функция ЗаписьДанныхXML() ИмяФайлаXML = КаталогВременныхФайлов() + "temp.xml"; ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайлаXML); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("Корневой"); // Для сокращения размера файла сообщения записываем соответствие пространств имен ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); // Получаем выборку данных из табличной части Для Каждого Элемент Из Объект.ВыгружаемыеДанные Цикл Данные = Элемент.СсылкаНаОбъект.ПолучитьОбъект(); // Записываем данные ЗаписатьДанные(ЗаписьXML, Данные); КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.Закрыть(); Возврат ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайлаXML)); КонецФункции &НаСервере Процедура ЗаписатьДанные(ЗаписьXML, Данные) Если ТипЗнч(Данные) = Тип("СправочникОбъект.Номенклатура") Тогда // Записываем элемент справочника вручную НоменклатураЗаписатьXML(ЗаписьXML, Данные); Иначе // Записываем данные с помощью стандартного метода ЗаписатьXML(ЗаписьXML, Данные); КонецЕсли КонецПроцедуры &НаСервере Процедура НоменклатураЗаписатьXML(ЗаписьXML, Номенклатура) // Записываем начало элемента XML ЗаписьXML.ЗаписатьНачалоЭлемента("CatalogObject.Номенклатура.Вручную"); // Ссылка ЗаписатьXML(ЗаписьXML, Номенклатура.Ссылка, "Ref", НазначениеТипаXML.Явное); // ЭтоГруппа ЗаписатьXML(ЗаписьXML, Номенклатура.ЭтоГруппа, "IsFolder", НазначениеТипаXML.Явное); // Родитель ЗаписатьXML(ЗаписьXML, Номенклатура.Родитель, "Parent", НазначениеТипаXML.Явное); // Код ЗаписатьXML(ЗаписьXML, Номенклатура.Код, "Code", НазначениеТипаXML.Явное); // Наименование ЗаписатьXML(ЗаписьXML, Номенклатура.Наименование, "Description", НазначениеТипаXML.Явное); // Реквизиты, выгружаемые только для элемента справочника, а не для группы Если Не Номенклатура.ЭтоГруппа Тогда // ЗакупочнаяЦена ЗаписатьXML(ЗаписьXML, Номенклатура.ЗакупочнаяЦена, "ЗакупочнаяЦена", НазначениеТипаXML.Явное); // ЕдиницаИзмерения ЗаписатьXML(ЗаписьXML, Номенклатура.ЕдиницаИзмерения, "ЕдиницаИзмерения", НазначениеТипаXML.Явное); // Картинка ЗаписатьXML(ЗаписьXML, Номенклатура.Картинка, "Картинка", НазначениеТипаXML.Явное); // ПолноеНаименование ЗаписатьXML(ЗаписьXML, Номенклатура.ПолноеНаименование, "ПолноеНаименование", НазначениеТипаXML.Явное); КонецЕсли; // Записываем конец элемента ЗаписьXML.ЗаписатьКонецЭлемента(); КонецПроцедуры |
|||
9
Lensky
31.08.11
✎
21:45
|
(8)Попробую, СПАСИБО
|
|||
10
Lensky
31.08.11
✎
21:59
|
(8) СПАСИБО тебе мил человек) все получилось.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |