Имя: Пароль:
1C
1С v8
не могу получить объект
, ,
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, ПоместитьВоВременноеХранилище(), ПолучD2u0442ьФайл().
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) СПАСИБО тебе мил человек) все получилось.
Ошибка? Это не ошибка, это системная функция.