Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Всем здравствуйте! Мне необходимо из Бух 2.0 подключиться к ТиС 9.2 и перегрузить 4 документа - Реализацию, СчФ, ПКО, Возвраты от покупателя. Решил попробовать OLE. Подключиться к базе не составило труда, теперь не могу понять как делать выборку документов. Подскажите, пожалуйста! Спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 09:09 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Gennadiy83Всем здравствуйте! Мне необходимо из Бух 2.0 подключиться к ТиС 9.2 и перегрузить 4 документа - Реализацию, СчФ, ПКО, Возвраты от покупателя. Решил попробовать OLE. Подключиться к базе не составило труда, теперь не могу понять как делать выборку документов. Подскажите, пожалуйста! Спасибо за помощь. Как писать семерочный код - вопросов нет? Тогда - использовать такой код, обращающийся к объектам ТиС 9.2, в восьмерочной обработке. Объекты эти создавать в контексте базы-источника, например так: Код: vbnet 1. где "имя" - полное имя объектного класса в 7.7 Обращаться через БазаОле можно к любым экспортированным функциям и процедурам глобального модуля, и к методам созданных в её контексте объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 09:30 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
pail, Под 1С 77 не программировал, занимаюсь 1С с 8.1. Я так понимаю, после создания объекта "объект7" вызываем функцию типа ВыбратьДокументы(НачПер, КонПериода) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 11:50 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Да, потом их перебрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 11:58 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Примерно так. Не забываем, что справочники и другие ссылочные типы в базе-получатели - другие,и надо там соответствующий элемент найти по содержанию аналогичного элемента из базы источника. Или создать новый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 12:02 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
pail, Огромное спасибо! Картина ясна. Интересно быстрее будет работать выгрузка 4 типов документов через OLE или через правила обмена? Я начал сначала правила обмена делать, но там практически все соответствия вручную делать, терпения не хватило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2012, 12:33 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
pail Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Примерно так. Не забываем, что справочники и другие ссылочные типы в базе-получатели - другие,и надо там соответствующий элемент найти по содержанию аналогичного элемента из базы источника. Или создать новый. А если реквизит объект7 будет содержать ссылку на элемент справочника? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2012, 23:38 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Ну таки и работать с ним как с элементом справочника, так же, как это было бы в самой 7.7. Ну естественно, с учетом COM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 09:22 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
The Dim!Ну таки и работать с ним как с элементом справочника, так же, как это было бы в самой 7.7. Ну естественно, с учетом COM. Я создаю ТаблицуЗначений, колонки которой - реквизиты ПКО ПКОТаблЗнач = Новый ТаблицаЗначений(); ПКОТаблЗнач.Колонки.Добавить("ИД"); //порядковый номер в таблице !!!возможно не понадобиться ПКОТаблЗнач.Колонки.Добавить("Номер"); ПКОТаблЗнач.Колонки.Добавить("Дата"); ПКОТаблЗнач.Колонки.Добавить("Сумма"); ПКОТаблЗнач.Колонки.Добавить("СтавкаНДС"); .... и т.д. //Заполним таблицу значений ПКО Пока ПКО_77.ПолучитьДокумент() = 1 Цикл строкаТаблЗнач = ПКОТаблЗнач.Добавить(); строкаТаблЗнач.Номер = ПКО_77.НомерДок; строкаТаблЗнач.Дата = ПКО_77.ДатаДок; строкаТаблЗнач.Сумма = ПКО_77.Сумма; строкаТаблЗнач.СтавкаНДС = ПКО_77.СтавкаНДС; строкаТаблЗнач.Валюта = ПКО_77.Валюта; строкаТаблЗнач.Контрагент = ПКО_77.Контрагент; строкаТаблЗнач.Договор = ПКО_77.Договор; строкаТаблЗнач.ПринятоОт = ПКО_77.ПринятоОт; КонецЦикла; ПКО_77.Договор, ПКО_77.Контрагент - представляют собой элементы справочника Цикл формирования документов: Для Каждого строкаТаблЗнач Из ПКОТаблЗнач Цикл докПКО = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); докПКО.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду(строкаТаблЗнач.ХХХХХ); - КАК ОБРАТИТЬСЯ К ЭЛЕМЕНТУ? В ОТЛАДЧИКЕ ОПРЕДЕЛЯЕТ КАК COMОБЪЕКТ //докПКО.ВидОперации = ; //докПКО.Контрагент = ; //докПКО.ДоговорКонтрагента = ; КонецЦикла; Покажите фрагмент кода, дальше разберусь. Под 77 вообще не приходилось кодить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 22:50 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Т.е. как мне вытянуть код, например, валюты, чтобы найти ее в справочнике Бух 2.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 22:54 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Gennadiy83Т.е. как мне вытянуть код, например, валюты, чтобы найти ее в справочнике Бух 2.0 Обращаться к реквизиту объекта, полученного из базы-источника. Отладчик действительно такие значения извлекать не умеет. А если в коде написать - сработает. Да, и заменять объекты источника своими, найденными или созданными в получателе, лучше максимально рано, не нагружая OLE-соединение кучей ссылок. Примерно так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. с простой реализацией найти/создать: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. или со сложной (сопоставление контрагентов в первую очередь по ИНН/КПП, и только во вторую - по имени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2012, 06:53 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Прошу прощение, за то что туплю, но давайте рассмотрим еще раз. В моем примере ПКО_77 содержит выборку приходников за период. Приходник имеет реквизит "Контрагент". В ПКО_77.Контрагенты содержится COMОбъект. Я так понимаю, что надо создать объект справочника 1С 77, например так: спрКонтрагенты77 = База.EvalExpr("СоздатьОбъект(""" + Справочник.Контрагенты + """)"); и далее ПКО_77.Контрагенты как-то привести к типу спрКонтрагенты77, т.е. показать что это за объект, верно? А затем уже обращаться к реквизитам элемента справочника 77. Покажите фрагмент кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 01:45 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Нет нет нет и ещё раз нет. Когда вы обходите выборку ПОК, у вас уже всё есть :) То, что 8-рка любую ссылку на объект представляет как COMОбъект, это наследие 7-рки. 1. Если, вы получаете из 7-рки простой тип данных - число или строку - то работать с ними можно без каких-либо преобразований. (вот про булево не помню... то-ли 1 и 0, то-ли понимает Истина/Ложь...) 2. Если, вы получаете из 7-рки ссылочный тип данных - ссылка на справочник, документ... то тут есть тонкость. Если в 7.7 (и в 8.х) обращение подобного рода Код: sql 1. 2. 3. Приведет к тому, что "Спр.ТекущийОбъект()" - по сути ссылка на объект - будет преобразована к представлению объекта, то в случае с COM-интерфейсом, всегда нужно четко указывать свойство объекта. Com-интерфейс "не понимает" представления. 3. Объекты ссылочных типов "не разворачиваются" в 8-рке в отладчике, хотя обращаться к методам и свойствам такого объекта можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 09:21 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
The Dim!2. Если, вы получаете из 7-рки ссылочный тип данных - ссылка на справочник, документ... то тут есть тонкость. Если в 7.7 (и в 8.х) обращение подобного рода Код: sql 1. 2. 3. Приведет к тому, что "Спр.ТекущийОбъект()" - по сути ссылка на объект - будет преобразована к представлению объекта, то в случае с COM-интерфейсом, всегда нужно четко указывать свойство объекта. Com-интерфейс "не понимает" представления. А если мне необходимо передать ссылку на документ. Например, для документа Реализация необходимо найти подчиненные - ПКО, СчетФактураВыданный. Я пытаюсь сделать так: Документ_77 = База.EvalExpr("СоздатьОбъект(""Документ"")"); Документ_77.ВыбратьПодчиненныеДокументы( , , Реализация_77); Пока Документ_77.ПолучитьДокумент() = 1 Цикл Если Документ_77.Вид() = "СчетФактураВыданный" Тогда ........ возникает ошибка, т.к. Реализация_77 - COMОбъект, а требуется ссылка на документ. Как выйти из положения? SOS... 2. и вторая проблема: объект7=БазаОле.EvalExpr("СоздатьОбъект("""+имя+""")"); если "имя" - справочники, документы, то всё ОК, пытаюсь подсунуть Перечисление.СтавкиНДС, то генерируется ошибка метода EvalExpr. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2012, 18:28 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Gennadiy83А если мне необходимо передать ссылку на документ. Куда, откуда и для чего требуется передать какую ссылку? Gennadiy83Например, для документа Реализация необходимо найти подчиненные - ПКО, СчетФактураВыданный. Я пытаюсь сделать так: Документ_77 = База.EvalExpr("СоздатьОбъект(""Документ"")"); Документ_77.ВыбратьПодчиненныеДокументы( , , Реализация_77); Пока Документ_77.ПолучитьДокумент() = 1 Цикл Если Документ_77.Вид() = "СчетФактураВыданный" Тогда ........ возникает ошибка, т.к. Реализация_77 - COMОбъект, а требуется ссылка на документ. Как выйти из положения? SOS... Т.к. кто-то не удосужился прочесть то, что ему писали уже не однократно. Т.к. было бы хорошо видеть определение всех используемых переменных, а не строить предположения. Не так Документ_77.ВыбратьПодчиненныеДокументы( , , Реализация_77); а так Документ_77.ВыбратьПодчиненныеДокументы( , , Реализация_77.ТекущийДокумент()); Разумеется, если Реализация_77 с позиционирована на каком-либо документе. Gennadiy832. и вторая проблема: объект7=БазаОле.EvalExpr("СоздатьОбъект("""+имя+""")"); если "имя" - справочники, документы, то всё ОК, пытаюсь подсунуть Перечисление.СтавкиНДС, то генерируется ошибка метода EvalExpr. Это не вторая проблема, а следствие первой(не желание хоть чуть-чуть прочесть документацию по языку 7.7 и контекстах работы). С какого перепуга вы начали создать объекты для обращения к перечислениям? тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 09:24 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
The Dim!Не так Документ_77.ВыбратьПодчиненныеДокументы( , , Реализация_77); а так Документ_77.ВыбратьПодчиненныеДокументы( , , Реализация_77.ТекущийДокумент()); Разумеется, если Реализация_77 с позиционирована на каком-либо документе. При использовании ТекущийДокумент() генерируется ошибка несовпадение типов. Информация по переменным: База=Новый COMОбъект("V77.Application"); док Реализация создаю т.о.: Реализация_77 = База.EvalExpr("СоздатьОбъект(""Документ.Реализация"")"); делаю выборку: Реализация_77.ВыбратьДокументы(НачПериода, КонПериода); Пока Реализация_77.ПолучитьДокумент() = 1 Цикл ... работа с документом ... КонецЦикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 20:45 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Gennadiy83, как бы не так :) Ошибка не совпадения типов, должны появляться были и без ТекущийДокумент(). Потому что: при работе с COM необходимо указывать ВСЕ параметры которые есть у методов. Это мне нужно тянуть из вас сведения или кому? Не интересно... и лень(мне). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 20:53 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
The Dim!Gennadiy83, как бы не так :) Ошибка не совпадения типов, должны появляться были и без ТекущийДокумент(). Потому что: при работе с COM необходимо указывать ВСЕ параметры которые есть у методов. Это мне нужно тянуть из вас сведения или кому? Не интересно... и лень(мне). Хочу поблагодарить за то что откликнулись на просьбу о помощи) Я сейчас в отпуске, а меня глав бух и тут достала, в результате уже 3 дня на нервах, программлю вместо отдыха. Задача такая - перегрузка документов из ТиС 9.2 в Бух 2.0. Обработку пишу под 8.2. Алгоритм такой - делаю выборку реализации, затем в цикле, когда перебираю документы (фрагмент привел в пред посте) хочу сделать выборку подчиненных документов (Сч-Ф, ПКО). Возникла проблема, при вызове метода Документ_77.ВыбратьПодчиненныеДокументы( , , Реализация_77);, в качестве параметра требуется ссылка на документ, а у меня СОМобъект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2012, 23:01 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
Gennadiy83, Ссылки, которые требуются процедурам-функциям-методам COM-приложения - их надо у него же и получать, любым подходящим способом. Это на стороне вызывающего приложения они "COM-объект". А на своей стороне - обычные данные, свои собственные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 05:58 |
|
||
|
Маленький вопрос по применению COMОбъект("V77.Application")
|
|||
|---|---|---|---|
|
#18+
The Dim!Gennadiy83, как бы не так :) Ошибка не совпадения типов, должны появляться были и без ТекущийДокумент(). Потому что: при работе с COM необходимо указывать ВСЕ параметры которые есть у методов. Это мне нужно тянуть из вас сведения или кому? Не интересно... и лень(мне). Разобрался, если в методе ВыбратьПодчиненныеДокументы() указать дата1, дата2, то всё отрабатывает как надо! Огромное спасибо за помощь! Спасибо, что научили работать с ОЛЕ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 19:34 |
|
||
|
|

start [/forum/topic.php?fid=28&gotonew=1&tid=1520253]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
11ms |
get first new msg: |
9ms |
get forum data: |
8ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 274ms |
| total: | 456ms |

| 0 / 0 |
