Имя: Пароль:
1C
1С v8
Подключение по ОЛЕ. Не могу получить общий ревизит документа
0 Альбатрос
 
03.04.13
10:09
ДокРасхода = База.CreateObject("Документ.РасходнаяНал");
     ДокРасхода.SelectDocuments(ДатаНачала,ДатаКонца);
     
     Пока ДокРасхода.GetDocument() = 1 цикл
     Сообщить(ДокРасхода.Идентификатор);      
         Если ДокРасхода.Проведен() = 0 ИЛИ ДокРасхода.ПометкаУдаления() = 1 тогда
              Продолжить;
         КонецЕсли;
     Строчка = ТабСверки.Добавить();
     Строчка.ИД = ДокРасхода.Идентификатор;


В отладчике смотрю: ДокРасхода.Идентификатор тип значения строка, значение = "". Как же его получить?
1 Альбатрос
 
03.04.13
10:19
ааап
2 Альбатрос
 
03.04.13
10:19
Идентификатор заполнен
3 Альбатрос
 
03.04.13
10:33
подниму
4 Wobland
 
03.04.13
10:34
расходная налички?
5 Wobland
 
03.04.13
10:34
(4) хотя, ПолучитьДокумент отрабатывает же..
6 Альбатрос
 
03.04.13
10:35
(5) Отрабатывает, и к примеру ДатаДок я могу посмотреть, а общий реквизит не возвращает =(
7 drcrasher
 
03.04.13
10:36
(0) смею предположить, что подключение идёт к 7.7.
ДокРасхода.Идентификатор - это что? не помню уже
8 drcrasher
 
03.04.13
10:39
+7
через метаданные вроде как нужно к ним обращаться
9 Альбатрос
 
03.04.13
10:40
(7) да подключение к 7.7, самописка
ДокРасхода.Идентификатор это ГУИД



Решил только через общий модуль, сделал там функцию, которая возвращает мне строковое представление ДокРасхода.Идентификатор (хотя он и так строка)

(8) Это как? примерчик не покажете?
10 PiterPrg
 
03.04.13
10:53
(9) на (8) не обращай внимание они путают со свойством Идентификатор объект метаданных
11 PiterPrg
 
03.04.13
10:55
А по сути вопроса или танцевать в сторону EvalExpr() ,
но можно (да и быстрее будет) использовать запрос
12 PiterPrg
 
03.04.13
10:56
Если интересно вот кусок кода я запросом сальдо из ЗИК выдергивал

   Запрос77 = База77.CreateObject("Запрос");
   ТекстЗапроса = "Период с '" + НачПериода + "' по '" + КонПериода + "';
   |Сотрудник = ЖурналРасчетов.Зарплата.Объект;
   |Наименование = ЖурналРасчетов.Зарплата.Объект.Наименование;
   |ДатаРождения = ЖурналРасчетов.Зарплата.Объект.ДатаРождения;
   |ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч;
   |Результат = ЖурналРасчетов.Зарплата.Результат;
   |Функция Сальдо = Сумма(Результат);
   |Группировка Сотрудник без групп Упорядочить по Сотрудник.Наименование;
   |Условие(ВРег(Лев(ВидРасч.Код, 15)) = ""НАЧАЛЬНОЕСАЛЬДО"");
   |Условие(Результат <> 0);
   |";
   
   Попытка
       Если Запрос77.Выполнить(ТекстЗапроса) = 0 Тогда
           Сообщить("Не удалось выполнить запрос");
           Возврат;
       КонецЕсли;
   Исключение
       Сообщить("Не удалось выполнить запрос (исключение)" + ОписаниеОшибки());
       Возврат;
   КонецПопытки;
   
   СумыЗИК.Очистить();
   Пока Запрос77.Группировка(1) = 1 Цикл
       Строка = СумыЗИК.Добавить();
       Строка.ФИО = Запрос77.Наименование;
       Строка.ДатаРождения = Запрос77.ДатаРождения;
       Строка.Сумма = Запрос77.Сальдо;
   КонецЦикла;
   База77 = "";
13 PiterPrg
 
03.04.13
11:02
В догонку еще.
Используя ОЛЕ можешь столкнутся с проблемой:
Без спроса округляются до целого дробные значения.
Самый простой способ (хоть и колхозный) умножать на 100 значение в запросе, а полученное по ОЛЕ значение делиить на 100
14 Альбатрос
 
03.04.13
11:06
(11) (12) (13) Спасибо! Буду пробовать!