Имя: Пароль:
1C
1С v8
v8: Получение данных из 7.7 в 8.1
0 Uchenica74
 
15.11.13
07:18
Доброе утро! Подключаюсь к 7.7 из 8.1, хочу получить данные из двух документов, но на строке "Если Д.ВыбратьДокументы(ДатаНач, ДатаКон)=1 Тогда" спотыкаюсь (метод не существует), подскажите пожалуйста, как правильно получить данные из документов.

ДатаНач = НачалоМесяца(Дата);
ДатаКон = КонецМесяца(Дата);
    
ТЗ = Новый ТаблицаЗначений;
Т = Новый ТаблицаЗначений;
            
V7="";
V7=Новый COMОбъект("V77s.Application");
    
Попытка  
strApp = "/D"""+ИмяКаталога+""" /N"""+ПользовательOLE+""" /P"""+Пароль+"""";
Открыта=V7.Initialize(V7.RMTrade,strApp,"NO_SPLASH_SHOW");
Если Открыта Тогда

Д = V7.CreateObject("Документ.aЗакрытиеПЛ_ГАс");
Пл = V7.CreateObject("Документ.aПЛ_ГАс");

Если Д.ВыбратьДокументы(ДатаНач, ДатаКон)=1 Тогда

Пока Д.ПолучитьДокумент()=1 Цикл

Если Д.Проведен()<>1 Тогда
Продолжить;
КонецЕсли;
                    
Если Д.ПЛ.Выбран()=0 Тогда
Сообщить("Для документа "+Д.ТекущийДокумент()+" не указан путевой лист");
Продолжить;
КонецЕсли;
                    
новстр = ТЗ.Добавить();
новстр.ДатаПЛ=Д.ПЛ.ДатаДок;
новстр.НомерПЛ=Д.ПЛ.НомерДок;
новстр.Автомобиль=Д.ПЛ.Авто.Наименование;
КонецЦикла;
КонецЕсли;
            
      
Иначе
Сообщить("Ошибка подключения к базе " + ИмяКаталога  + " под пользователем " + ПользовательOLE);
КонецЕсли;

Исключение
Сообщить("Ошибка подключения к базе " + ИмяКаталога  + " под пользователем " + ПользовательOLE);

КонецПопытки;
    
V7="";
1 Wobland
 
15.11.13
07:22
не делай такую здоровую попытку
2 Wobland
 
15.11.13
07:23
+(1) и не скрывай фото
3 Uchenica74
 
15.11.13
07:32
подкорректировала:
Попытка  
strApp = "/D"""+ИмяКаталога+""" /N"""+ПользовательOLE+""" /P"""+Пароль+"""";
Открыта=V7.Initialize(V7.RMTrade,strApp,"NO_SPLASH_SHOW");
Исключение
Сообщить("Ошибка подключения к базе " + ИмяКаталога  + " под пользователем " + ПользовательOLE);
КонецПопытки;

Если Открыта Тогда
Д = V7.CreateObject("Документ.aЗакрытиеПЛ_ГАс");
Пл = V7.CreateObject("Документ.aПЛ_ГАс");

Если Д.ВыбратьДокументы(ДатаНач, ДатаКон)=1 Тогда
                
        Пока Д.ПолучитьДокумент()=1 Цикла


Все равно ругается Метод объекта не обнаружен
4 ЧессМастер
 
15.11.13
07:56
так подает на чем ? на Пока Д.ПолучитьДокумент()=1 Цикла ?

вообще то Пока Д.ПолучитьДокумент()=1 ЦикЛ
может в этом ошибка ? :)
5 George Wheels
 
15.11.13
08:00
Попробуй v77.Application.

v77s для SQL.
6 Uchenica74
 
15.11.13
08:03
(4) при копировании наверно ЦиклА получилось(( в коде все норм.
7 Uchenica74
 
15.11.13
08:04
(5) такой вариант пробовала, не цепляется к базе((
8 ЧессМастер
 
15.11.13
08:17
(6) попробуй что-то сделать с объектом Д - например создай его и запиши - то есть проверь создался у тебя вообще этот объект или нет
9 Wobland
 
15.11.13
08:17
(3) возврат не хочешь сделать при неудачном подключении?
10 George Wheels
 
15.11.13
08:17
Не надо Открыта=V7.Initialize(V7.RMTrade,strApp,"NO_SPLASH_SHOW");

Попробовал у себя Открыта = Ложь, но подключение к базе есть и всё работает. Убери проверку Открыта.
11 George Wheels
 
15.11.13
08:18
(10) + Поэтому Д = Неопределено.
12 ЧессМастер
 
15.11.13
08:20
(6) и кстати - Открыта или нет ты сможешь отследить по монитору пользователей
13 Uchenica74
 
15.11.13
08:24
(9) да точно Возврат здесь гуманнее использовать
проверку на Открыта тоже убрала - от нее действительно нет смысла, тем более  с Возвратом))) (10)
14 Uchenica74
 
15.11.13
08:26
после подключения я создаю объекты Д = V7.CreateObject("Документ.aЗакрытиеПЛ_ГАс");
Пл = V7.CreateObject("Документ.aПЛ_ГАс");
их значение COMобъект
15 George Wheels
 
15.11.13
08:28
ВыбратьДокументы это Процедура, а не Функция.
16 George Wheels
 
15.11.13
08:32
(15) + Не надо так
Если Д.ВыбратьДокументы(...) = 1 Тогда

Напиши просто

Д.ВыбратьДокументы(...);

это откроет выборку документов.
17 Uchenica74
 
15.11.13
08:42
Вроде получилось ребят. Большое спасибо!!!
18 ЧессМастер
 
15.11.13
08:48
(17) сработало (16) ?
19 Uchenica74
 
15.11.13
09:00
Сработало Д.ВыбратьДокументы(ДатаНач, ДатаКон);
со всеми поправками (3)(10)
20 Uchenica74
 
15.11.13
09:02
Еще как я поняла основная моя проблема заключалась в том что при исполнении кода, если в методах(синтаксис) я допускала ошибки, то 7.7. закрывалась аварийно, поэтому повторно я не помогла подключиться к ней.
21 ЧессМастер
 
15.11.13
09:03
(19) я думаю у тебя вызывало ошибку
Если Д.ВыбратьДокументы(...) = 1 Тогда
по причине того что в контексте 82 Истина это не 1 а -1.
а Ложь это 0.

потому что в контексте 77 код
Если Д.ВыбратьДокументы(...) = 1 Тогда
прекрасно отрабатывает
22 Uchenica74
 
15.11.13
09:06
(21)а в контексте 8.1 Истина это 1, а Ложь это 0? Тогда не эта причина у меня ж 8.1
23 ЧессМастер
 
15.11.13
09:09
(22) думаю в контексте 8.1 тоже Истина это -1, а Ложь это 0.
я делал обмен 77-82 поэтому могу точно про 82 говорить

главное у тебя заработало
24 Uchenica74
 
15.11.13
09:13
Нет, снова сломалось все. Сейчас делаю индексацию.
Понять не могу, что блокирует подключение. я подключаюсь успешно, налетаю на синтаксическую ошибку, после этого делаю индексацию, и вот уже после индексации не могу подключиться к самой базе.
25 ЧессМастер
 
15.11.13
09:22
(24) посмотри в мониторе пользователей - остается ли подключение после вылета. и убери NO_SPLASH_SHOW - подключись так чтобы видеть весь процесс
26 Uchenica74
 
15.11.13
09:31
Да, поняла, при аварийном завершении остается подключение к 7.7 пока не закрою 8.1
27 George Wheels
 
15.11.13
09:34
(0) Если Д.ПЛ.Выбран()=0 Тогда

Здесь ПЛ - это реквизит Д?

(26) В Исключение добавь

V7 = "";
28 Uchenica74
 
15.11.13
09:36
(27) Да, ПЛ - это реквизит Д
29 George Wheels
 
15.11.13
09:37
(27) + И там же в Исключение используй ИнформацияОбОшибке()
30 Uchenica74
 
15.11.13
09:40
(29) Хорошо, спасибо!!!
31 Мыш
 
15.11.13
09:42
(26) Чтоб 77 в памяти не оставалась делай обработку исключений:

Исключение
  V7 = Неопределено;
КонецПопытки;
32 Uchenica74
 
15.11.13
09:50
Всем еще раз огромное спасибо! Хорошие советы! Очень помогли!