|
Как обратиться к реквизиту из одной базы в другую через COMОбъект("V81.Applicat | ☑ | ||
---|---|---|---|---|
0
egorover
31.08.11
✎
13:49
|
Есть стандартный обмен из УТ 10.3 в БП 1.6, но при переносе в БП проводки с ручными корректировками слетают, хочу из УТ подсоединится к базе БП и узнать в каких документах проводки вручную откорректированы и удалить из узла обмена, НО КАК ОБРАТИТЬСЯ К РЕКВИЗИТУ В БП?
Процедура ВыбКоррктировка(Элемент) БазаПолучатель = Новый COMОбъект("V81.Application"); Srvr="MC-1C";Ref="bp81"; Попытка СтрокаСоединения = "Srvr=""MC-1C"";Ref=""ut81_st"";Usr=""Администратор"";Pwd=""1111111"""; Открытие = БазаПолучатель.Connect(СтрокаСоединения); Исключение Сообщить("Ошибка подключения"); Возврат; КонецПопытки; Сообщить("Подключились..."); Если ЭлементыФормы.ТипДокумента.Значение = Неопределено Тогда Для к = 0 по Метаданные.Документы.Количество() - 1 Цикл Состояние(Метаданные.Документы.Получить(к).Имя); //перебираем документы в базе получатель ТипДок = Метаданные.Документы.Получить(к).Имя; Если ТипДок = "АктСверкиВзаиморасчетов" ИЛИ ТипДок = "АктСверкиВзаиморасчетов" ИЛИ ТипДок = "АктСверкиВзаиморасчетов" Тогда Продолжить; КонецЕсли; РеестрДок = Документы[ТипДок]; Реестры = БазаПолучатель.Документы[ТипДок].Выбрать(НачалоДня(НачПериода), КонецДня(КонПериода)); Пока Реестры.Следующий() Цикл Сообщить(реестры.Номер); Попытка Если Реестры.РучнаяКорректировка = 1 Тогда НайденыйДок = РеестрДок.НайтиПоНомеру(Реестры.Номер, Реестры.Дата); //ПланыОбмена.УдалитьРегистрациюИзменений(Узел, НайденыйДок.Ссылка); Сообщить("ручная "+НайденыйДок.Ссылка); КонецЕсли; Исключение Сообщить("Не удалось по документу " + ТипДок + " № " + реестры.Номер + " " + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); КонецПопытки; КонецЦикла; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
1
egorover
31.08.11
✎
13:50
|
Если Реестры.РучнаяКорректировка = 1 Тогда
вот тут идет обращение |
|||
2
izekia
31.08.11
✎
13:54
|
условие отличное))
|
|||
3
Рэйв
31.08.11
✎
13:57
|
(0)Может
Если Реестры.РучнаяКорректировка = истина Тогда ? |
|||
4
egorover
31.08.11
✎
14:18
|
(3) нет, я пробовал, ругается на поле РучнаяКорректировка, там в принципе можно вытащить только строку и дату
|
|||
5
egorover
31.08.11
✎
14:18
|
через COM? или есть способы?
|
|||
6
Ненавижу 1С
гуру
31.08.11
✎
14:20
|
(4) брешишь, более того можно вообще написать
Если Реестры.РучнаяКорректировка Тогда |
|||
7
palpetrovich
31.08.11
✎
14:23
|
брешишь - не такого слова :)
|
|||
8
Ненавижу 1С
гуру
31.08.11
✎
14:23
|
(7) если брешут, то и слово есть
|
|||
9
Ненавижу 1С
гуру
31.08.11
✎
14:24
|
(7) ну ладно, "брешешь"
|
|||
10
egorover
31.08.11
✎
14:26
|
мальчики не ругайтесь
|
|||
11
egorover
31.08.11
✎
14:27
|
(6) у меня так и было написано раньше, просто я в бытность свою к 7.7 обращался там вроде булево - 1 и 0 было вот и ступил
|
|||
12
egorover
31.08.11
✎
14:30
|
при варианте
Если Реестры.РучнаяКорректировка Тогда Поле объекта не обнаружено (РучнаяКорректировка) |
|||
13
egorover
31.08.11
✎
14:32
|
да и в отладчике только список реквизитов той базы из которой соединяюсь (т.е. УТ)
|
|||
14
Ткачев
31.08.11
✎
14:38
|
В разве не ?
Реестры = ОТКРЫТИЕ.Документы[ТипДок].Выбрать(НачалоДня(НачПериода), КонецДня(КонПериода)); |
|||
15
palpetrovich
31.08.11
✎
14:39
|
почитал код, а что, разве так можно?
... (14) опередил :) |
|||
16
egorover
31.08.11
✎
14:40
|
(14) стыдно, но сейчас попробую
|
|||
17
egorover
31.08.11
✎
14:45
|
(14) не понял?
{Форма.Форма(80)}: Значение не является значением объектного типа (Документы) Реестры = ОТКРЫТИЕ.Документы[ТипДок].Выбрать(НачалоДня(НачПериода), КонецД |
|||
18
Ненавижу 1С
гуру
31.08.11
✎
14:46
|
(14) нет, у него апликайшен, а не коннектор
|
|||
19
egorover
31.08.11
✎
14:47
|
(18) так через коннектор соединиться?
|
|||
20
palpetrovich
31.08.11
✎
14:49
|
(18) аа, СеменСеменыч, не заметил ...дык может коннектор попользовать?
у мну так: БазаУТ = Новый COMObject("V81.ComConnector"); Попытка Соединение = БазаУТ.Connect("File="+СокрЛПКаталогБазыУТ+"; Usr="+ПользовательУТ+"; Pwd="+ПарольУТ); Исключение КонецПопытки; //============================= Выборка = Соединение.Документы.Доверенность.Выбрать(ДатаНач, КонецДня(ДатаКон)); Пока Выборка.Следующий() Цикл |
|||
21
Ненавижу 1С
гуру
31.08.11
✎
14:49
|
(19)(20) ну не я ж хозяин кода
|
|||
22
egorover
31.08.11
✎
14:50
|
(20) попробую
|
|||
23
Ткачев
31.08.11
✎
14:52
|
(18) А в чем причина тогда может быть что через апликайшен не может законнектиться ?
|
|||
24
zbv
31.08.11
✎
14:55
|
не у всех документов есть реквизит "РучнаяКорректировка"
|
|||
25
Ткачев
31.08.11
✎
14:58
|
(24)Условие ведь есть :)
Если ТипДок = "АктСверкиВзаиморасчетов" ИЛИ ТипДок = "АктСверкиВзаиморасчетов" ИЛИ ТипДок = "АктСверкиВзаиморасчетов" Тогда Продолжить; КонецЕсли; |
|||
26
zbv
31.08.11
✎
15:04
|
(25) ну да, такое условие трудно не заметить... )
но телепат подсказывает, что это не единственный документ. и тут ИЛИ ТипДок = "АктСверкиВзаиморасчетов" ИЛИ ТипДок = "АктСверкиВзаиморасчетов" должны быть другие виды. |
|||
27
Ткачев
31.08.11
✎
15:11
|
(26)Может тут и попадает на другие виды где нету РучнаяКорректировка
|
|||
28
egorover
31.08.11
✎
15:12
|
да с этим все нормально
Если ТипДок = "АктСверкиВзаиморасчетов" ИЛИ ТипДок = "ВозвратТоваровОтПокупателя" ИЛИ ТипДок = "ГТДИмпорт" ИЛИ ТипДок = "а_Факт_РеестрПереданныхДокументов" ИЛИ ТипДок = "УстановкаЦенДоставки" Тогда Продолжить; КонецЕсли; суть не в этом все равно Поле объекта не обнаружено (РучнаяКорректировка) |
|||
29
egorover
31.08.11
✎
15:14
|
Процедура ВыбКоррктировка(Элемент)
БазаПолучатель = Новый COMObject("V81.ComConnector"); Srvr="MC-1C";Ref="bp81"; Попытка СтрокаСоединения = "Srvr=""MC-1C"";Ref=""ut81_st"";Usr=""Администратор"";Pwd=""02670873"""; Открытие = БазаПолучатель.Connect(СтрокаСоединения); Исключение Сообщить("Ошибка подключения"); Возврат; КонецПопытки; Сообщить("Подключились..."); Если ЭлементыФормы.ТипДокумента.Значение = Неопределено Тогда Для к = 0 по Метаданные.Документы.Количество() - 1 Цикл Состояние(Метаданные.Документы.Получить(к).Имя); //перебираем документы в базе получатель ТипДок = Метаданные.Документы.Получить(к).Имя; Если ТипДок = "АктСверкиВзаиморасчетов" ИЛИ ТипДок = "ГТДИмпорт" Тогда Продолжить; КонецЕсли; РеестрДок = Документы[ТипДок]; Реестры = Открытие.Документы[ТипДок].Выбрать(НачалоДня(НачПериода), КонецДня(КонПериода)); Пока Реестры.Следующий() Цикл Сообщить(реестры.Номер); Попытка Если Реестры.РучнаяКорректировка Тогда НайденыйДок = РеестрДок.НайтиПоНомеру(Реестры.Номер, Реестры.Дата); //ПланыОбмена.УдалитьРегистрациюИзменений(Узел, НайденыйДок.Ссылка); Сообщить("ручная "+НайденыйДок.Ссылка); КонецЕсли; Исключение Сообщить("Не удалось по документу " + ТипДок + " № " + реестры.Номер + " " + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); КонецПопытки; КонецЦикла; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
30
zbv
31.08.11
✎
15:15
|
(29) в сообщение что пишет ? какой типдок ?
|
|||
31
egorover
31.08.11
✎
15:16
|
(30) Не удалось по документу ПоступлениеТоваровУслуг № 00000012033 Поле объекта не обнаружено (РучнаяКорректировка)
|
|||
32
zbv
31.08.11
✎
15:19
|
(31) а нафига ты к УТ коннектишься ?!
|
|||
33
Ткачев
31.08.11
✎
15:20
|
А тут правильно ? Ref=""ut81_st""
|
|||
34
egorover
31.08.11
✎
15:22
|
(33) тьфу ты .... вот я осел
|
|||
35
egorover
31.08.11
✎
15:23
|
а я ещё сижу удивляюсь что в отладчике у меня реквизиты как в УТ
|
|||
36
zbv
31.08.11
✎
15:24
|
(34) а вообще не правильно, ты получешь метаданные текущей базы, а документы уже внешней базы - могут быть траблы..
|
|||
37
egorover
31.08.11
✎
15:30
|
(36) в каком месте? я тут получаю только типы документов
ТипДок = Метаданные.Документы.Получить(к).Имя; |
|||
38
zbv
31.08.11
✎
15:32
|
(37) ну... типы документов базы УТ.
а тут Реестры = Открытие.Документы[ТипДок].Выбрать(НачалоДня(НачПериода), КонецДня(КонПериода)); базы БП. а ведь имя документа может не совпадать или вообще нет такого. |
|||
39
egorover
31.08.11
✎
15:35
|
(38) твоя правда, чуть повыше исключу
|
|||
40
Ткачев
31.08.11
✎
15:47
|
(39)Зачем исключать, сделать так, потом отредактировать все что неправильно.
Попытка Реестры = Открытие.Документы[ТипДок].Выбрать(НачалоДня(НачПериода), КонецДня(КонПериода)); Исключение Сообщить(ТипДок); Продолжить; КонецПопытки; |
|||
41
egorover
31.08.11
✎
15:50
|
(40) ещё лучше, ну попёрло...
|
|||
42
egorover
31.08.11
✎
16:19
|
черт, в БП даты ещё могут отличаться
|
|||
43
egorover
31.08.11
✎
16:37
|
конечный релиз
Процедура ВыбКоррктировка(Элемент) БазаПолучатель = Новый COMObject("V81.ComConnector"); Попытка СтрокаСоединения = "Srvr=""MC-1C"";Ref=""bp81"";Usr=""админ"";Pwd=""11111"""; Открытие = БазаПолучатель.Connect(СтрокаСоединения); Исключение Сообщить("Ошибка подключения"); Возврат; КонецПопытки; Сообщить("Подключились..."); Если ЭлементыФормы.ТипДокумента.Значение = Неопределено Тогда Для к = 0 по Метаданные.Документы.Количество() - 1 Цикл Состояние(Метаданные.Документы.Получить(к).Имя); ТипДок = Метаданные.Документы.Получить(к).Имя; Если ТипДок = "АктСверкиВзаиморасчетов" ИЛИ ТипДок = "КорректировкаЗаписейРегистров" ИЛИ ТипДок = "Доверенность" ИЛИ ТипДок = "РаспределениеНДСКосвенныхРасходов" Тогда Продолжить; КонецЕсли; РеестрДок = Документы[ТипДок]; //перебираем документы в базе получатель Попытка Реестры = Открытие.Документы[ТипДок].Выбрать(НачалоДня(НачПериода), КонецДня(КонПериода)); Исключение Сообщить("пропускаем документ "+ТипДок+", его нет в Бухгалтерии" ); Продолжить; КонецПопытки; Пока Реестры.Следующий() Цикл //Сообщить(реестры.Номер); Попытка Если Реестры.РучнаяКорректировка Тогда НайденыйДок = РеестрДок.НайтиПоНомеру(Реестры.Номер, Реестры.Дата); Сообщить("ручная корректировка у документа "+НайденыйДок.Ссылка+", удаляем его из узла обмена" ); ПланыОбмена.УдалитьРегистрациюИзменений(Узел, НайденыйДок.Ссылка); КонецЕсли; Исключение Сообщить("Не удалось по документу " + ТипДок + " № " + реестры.Номер + " " + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); КонецПопытки; КонецЦикла; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
44
egorover
31.08.11
✎
16:40
|
(33) Спасибо большое Ткачеву,редкой души человечище я бы сказал, благодарности всем - большое спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |