Имя: Пароль:
1C
1С v8
Получение ссылки на документ через ЗначениеИзСтрокиВнутр()
0 LisaAlisa
 
16.09.15
09:13
Добрый день!
Из 8.3 подключаюсь к 7.7, имея при этом IDDOC документа.
Код следующий:
ОбъектВнутреннегоФормата = Строка(ComОбъект77._StrToId(Лев(СтрокаТЧ.IDDOC_Удаляем,6)));
ОбъектВнутреннегоФормата = СтрЗаменить(ОбъектВнутреннегоФормата,Символ(160),"");
ОбъектВнутреннегоФормата = Прав("             "+ОбъектВнутреннегоФормата+"   ",13);
Стр = "{""O"",""0"",""0"",""130"",""0"",""0"","""+ОбъектВнутреннегоФормата+"""}";
СтрИд = СтрЗаменить(Стр, """", """""");
СсылкаНаОбъект =ComОбъект77.ЗначениеИзСтрокиВнутр(СтрИд,);      ------ здесь ошибка

при этом для конкретного документа СтрИд = "{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}",
в 7ке в табло получаю значение ЗначениеИзСтрокиВнутр("{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}") = Отгрузка товаров, продукции 7870608 (01.08.15) , т.е. возвращается ссылка на объект, а в 8ке не работает, возвращает ошибку
> Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр): > Неизвестная ошибка
1 Апош
 
16.09.15
09:16
второй параметр штоль?
2 ДенисЧ
 
16.09.15
09:21
А с чего бы внутреннее значение из 77 должно расшифровываться в 8ке?
3 LisaAlisa
 
16.09.15
09:24
(2) а как быть в этом случае?
4 LisaAlisa
 
16.09.15
09:25
(1) без второго параметра так же не работает, это я уже всякие варианты пробовала, поискав по форуму
5 ДенисЧ
 
16.09.15
09:37
(3) Искать по полям поиска
6 dk
 
16.09.15
09:40
в 77 нет второго параметра у значениеизстрокивнутр
7 kosts
 
16.09.15
09:41
Попробуй сделать функцию обертку в 77 в глобальном модуле
8 dk
 
16.09.15
09:44
еще не всегда ком77 принимает русское название функций -
попробуй
СсылкаНаОбъект = ComОбъект77.ЗначениеИзСтрокиВнутр(СтрИд);
и
СсылкаНаОбъект = ComОбъект77.ЗначениеИзСтрокиВнутр("{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}");
и
СсылкаНаОбъект = ComОбъект77.ValueFromStringInternal("{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}");
9 kosts
 
16.09.15
10:05
Вот так попробуй

тмп = 0;
СсылкаНаОбъект = ComОбъект77.ЗначениеИзСтрокиВнутр(Идентификатор, тмп);


или так
СсылкаНаОбъект = "";
ComОбъект77.ЗначениеИзСтрокиВнутр(Идентификатор, СсылкаНаОбъект);
10 LisaAlisa
 
16.09.15
10:10
(9) сделала, возвращает СсылкаНаОбъект = ""
(8) объединила с (9)
            СсылкаНаОбъект = "";
            ComОбъект77.ValueFromStringInternal(СтрИд,СсылкаНаОбъект);
11 LisaAlisa
 
16.09.15
10:11
(7) мне нельзя править конфигурацию 77
12 dk
 
16.09.15
10:18
покажи как ComОбъект77 создаешь и работаешь
какого хрена в 77 пытаешься 2-й параметр передать, если его там нет?
13 Ёпрст
 
16.09.15
10:19
сылкаНаОбъект = ComОбъект77.ЗначениеИзСтрокиВнутр(Идентификатор, неопределенно);
Так, че кажет ?
14 LisaAlisa
 
16.09.15
10:22
(13) возвращает Неопределено
15 LisaAlisa
 
16.09.15
10:25
(12) уже не передаю, это был один из вариантов

сейчас так
            ОбъектВнутреннегоФормата    = Строка(ComОбъект77._StrToId(Лев(СтрокаТЧ.IDDOC_Удаляем,6)));
                        ОбъектВнутреннегоФормата = СтрЗаменить(ОбъектВнутреннегоФормата,Символ(160),"");
            ОбъектВнутреннегоФормата = Прав("             "+ОбъектВнутреннегоФормата+"   ",13);
            
            Стр = "{""O"",""0"",""0"",""130"",""0"",""0"","""+ОбъектВнутреннегоФормата+"""}";
            СтрИд = СтрЗаменить(Стр, """", """""");
            СсылкаНаОбъект =ComОбъект77.ЗначениеИзСтрокиВнутр(СтрИд,);  

ComОбъект77 = ПолучитьОбъектДоступаК7(Путь, Имя, Пароль);
Функция ПолучитьОбъектДоступаК7(Путь, Имя, Пароль)
    Перем ОбъектДоступа;    
    Попытка
        ОбъектДоступа = Новый COMОбъект("V77S.Application");
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Если НЕ ОбъектДоступа=Неопределено Тогда
        Если ЗначениеЗаполнено(Имя) И ЗначениеЗаполнено(Пароль)  Тогда            
            СтрокаПодключения="/d"""+Путь+""" /n"+Имя+ " /p"+Пароль;
        Иначе
            Сообщить("Необходимо во вкладке Настройки заполнить Имя и Пароль!");
            Возврат Неопределено;
        КонецЕсли;
        РезультатПодключения = ОбъектДоступа.Initialize(ОбъектДоступа.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW");        
        Если Не РезультатПодключения Тогда            
            ОбъектДоступа=Неопределено;
        КонецЕсли;
    КонецЕсли;
    Возврат ОбъектДоступа;
КонецФункции
16 LisaAlisa
 
16.09.15
10:28
Не понимаю, как здесь отредактировать отправленное сообщение...

В предыдущем была ошибка, исправляюсь:
ComОбъект77 = ПолучитьОбъектДоступаК7(Путь, Имя, Пароль);

            ОбъектВнутреннегоФормата    = Строка(ComОбъект77._StrToId(Лев(СтрокаТЧ.IDDOC_Удаляем,6)));
            
            ОбъектВнутреннегоФормата = СтрЗаменить(ОбъектВнутреннегоФормата,Символ(160),"");
            ОбъектВнутреннегоФормата = Прав("             "+ОбъектВнутреннегоФормата+"   ",13);
            
            Стр = "{""O"",""0"",""0"",""130"",""0"",""0"","""+ОбъектВнутреннегоФормата+"""}";
            СтрИд = СтрЗаменить(Стр, """", """""");
            СсылкаНаОбъект =ComОбъект77.ЗначениеИзСтрокиВнутр(СтрИд);  


Получение ком-объекта
Функция ПолучитьОбъектДоступаК7(Путь, Имя, Пароль)
    Перем ОбъектДоступа;    
    Попытка
        ОбъектДоступа = Новый COMОбъект("V77S.Application");//V77S.Application - для SQL  V77L.Application - для однопользовательской  V77.Application  - для сетевой
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Если НЕ ОбъектДоступа=Неопределено Тогда
        Если ЗначениеЗаполнено(Имя) И ЗначениеЗаполнено(Пароль)  Тогда            
            СтрокаПодключения="/d"""+Путь+""" /n"+Имя+ " /p"+Пароль;
        Иначе
            Сообщить("Необходимо во вкладке Настройки заполнить Имя и Пароль!");
            Возврат Неопределено;
        КонецЕсли;
        РезультатПодключения = ОбъектДоступа.Initialize(ОбъектДоступа.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW");        
        Если Не РезультатПодключения Тогда            
            ОбъектДоступа=Неопределено;
        КонецЕсли;
    КонецЕсли;
    Возврат ОбъектДоступа;
КонецФункции
17 dk
 
16.09.15
10:38
ну и чего возвращают варианты
СсылкаНаОбъект = ComОбъект77.ЗначениеИзСтрокиВнутр(СтрИд);
и
СсылкаНаОбъект = ComОбъект77.ЗначениеИзСтрокиВнутр("{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}");
и
СсылкаНаОбъект = ComОбъект77.ValueFromStringInternal("{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}");
18 LisaAlisa
 
16.09.15
10:42
(17) для конкретного документа СтрИд = "{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}",
в 7ке в табло получаю значение ЗначениеИзСтрокиВнутр("{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}") = Отгрузка товаров, продукции 7870608 (01.08.15) , т.е. возвращается ссылка на объект, а в 8ке не работает, возвращает ошибку
> Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр): > Неизвестная ошибка
19 LisaAlisa
 
16.09.15
10:46
(17) Ошибка при вызове метода контекста (ValueFromStringInternal): Неизвестная ошибка
20 Ёпрст
 
16.09.15
10:54
а так ?

ССылочка =  ComОбъект77.EvalExpr("ValueFromStringInternal(""{""O"",""0"",""0"",""130"",""0"",""0"",""39258689""}"",Неопределено)");
21 LisaAlisa
 
16.09.15
11:02
(20) Ошибка при вызове метода контекста (EvalExpr): Произошла исключительная ситуация (1С:Предприятие): 1    ValueFromStringInternal("{"<<?>>O","0","0","130","0","0","39258689"}",Неопределено)
Ожидается символ ')'
22 НЕА123
 
16.09.15
11:16
ССылочка =  ComОбъект77.EvalExpr("ValueFromStringInternal(""{""""O"""",""""0"""",""""0"""",""""130"""",""""0"""",""""0"""",""""39258689""""}"""",Неопределено)");
23 dk
 
16.09.15
12:29
ComОбъект77.EvalExpr("ЗначениеИзСтрокиВнутр(""{""""O"""",""""0"""",""""0"""",""""130"""",""""0"""",""""0"""",""""39258689""""}"")")
так работает
24 Serginio1
 
16.09.15
12:48
Все намного проще делать через внешние отчеты/
Проще использовать Внешний Отчет с ОткрытьФормуМодально и передачей параметров во втором параметре

Как выполнить процедуру внешней обработки через OLE

Например БазаОЛЕ.ОткрытьФормуМодально("Отчет",параметры,ПутьКОбработке_ert");

А еще проще через 1с++
25 LisaAlisa
 
17.09.15
23:40
Рабочий код:


                  ОбъектВнутреннегоФормата = Строка(ComОбъект77._StrToId(Лев(СтрокаТЧ.IDDOC_Удаляем,6)));                  

                  Стр ="{""O"",""0"",""0"",""130"",""0"",""0"","+ОбъектВнутреннегоФормата+"}";
                  СсылкаНаОбъект = 0;
                  ComОбъект77.ЗначениеИзСтрокиВнутр(Стр,СсылкаНаОбъект);
26 ЧеловекДуши
 
18.09.15
06:36
(0) Извращение, полнейшее :)
27 ЧеловекДуши
 
18.09.15
06:36
+ Начни изучение 1С++, погугли :)
AdBlock убивает бесплатный контент. 1Сергей