![]() |
![]() |
![]() |
|
1С и Visual Basic 6.0 | ☑ | ||
---|---|---|---|---|
0
Прохожий
19.10.04
✎
11:49
|
Кто-нибудь может помочь в этом направлении?
Сумел подключиться к базе, могу работать со справочниками. Но возникла проблема с некоторыми методами. Например, не могу присвоить переменной значение конкретного элемента справочника (не его реквизита, а именно самого элемента как объекта). Возможно ли это в VB6? |
|||
1
NastyFrog
19.10.04
✎
12:18
|
На код бы взглянуть
|
|||
2
Прохожий
19.10.04
✎
12:26
|
Dim v7 As Object
Dim Goods As Object Set v7 = CreateObject("V77s.Application") result = v7.Initialize(v7.RMTrade, "/DD:\1C\Bases\PS_Clean\", "") Set Goods = v7.EvalExpr("CreateObject(""Справочник.Номенклатура"")") Goods.ВыбратьЭлементы i = 1 Do While Goods.ПолучитьЭлемент = 1 If Goods.ПринадлежитГруппе(Goods.НайтиПоНаименованию("Перец")) = 1 Then grdGoods.TextMatrix(i, 1) = Goods.Наименование i = i + 1 End If Loop End Sub /// Выражение Goods.ПринадлежитГруппе(Goods.НайтиПоНаименованию("Перец")) он и не понимает, что не так? |
|||
3
NastyFrog
19.10.04
✎
12:51
|
НайтиПоНаименованию(<?>,,);
Синтаксис: НайтиПоНаименованию(<Наименование>,<Режим>,<ФлагПоиска>) Назначение: Найти элемент справочника по наименованию. Возвращает: 1 - если действие выполнено; 0 - если действие не выполнено (элемент не найден). Соответственно принадлежит группе 1 или 0. такие группы есть? |
|||
4
NastyFrog
19.10.04
✎
12:57
|
Попробуй
If Goods.Родитель.Наименование="Перец" Then |
|||
5
Прохожий
19.10.04
✎
13:00
|
Да есть такая группа. VB не понимает такие методы как:
Goods.НайтиПоНаименованию() Goods.НайтиПоКоду() В данном коде я пытаюсь выгрузить в таблицу только те элементы справочника, которые принадлежат определленой группе. Может это можно сделать как-то по другому? Да и вообще как мне позиционироваться на каком либо элементе справочника (либо документе), кроме как с помощью методов Выбрать и Получить? |
|||
6
Прохожий
19.10.04
✎
13:04
|
Такой вариант работает. Большое спасибо за помощь. Но, все таки, как можно еще позиционироваться на нужном элементе (либо документе) и работать уже с ним?
|
|||
7
NastyFrog
19.10.04
✎
13:06
|
VB всё понимает
Попробуй If Goods.найтиПоНаименованию("Перец", 0) = 1 Then MsgBox Goods.Наименование End If НайтиПоНаименованию возвращает 1 или 0 - это не группы, а числа - им не может принадлежать элемент справочника |
|||
8
NastyFrog
19.10.04
✎
13:12
|
Если ты спозиционируешся во время перебора выборки на элементе мимо порядка выборки, ты выборку похренишь.
If Goods.НайтиПоНаименованию("Перец")=1 Then myGroupe=Goods.текущийЭлемент End if Goods.ВыбратьЭлементы i = 1 Do While Goods.ПолучитьЭлемент = 1 If Goods.ПринадлежитГруппе(myGroupe) = 1 Then grdGoods.TextMatrix(i, 1) = Goods.Наименование i = i + 1 End If Loop |
|||
9
Прохожий
19.10.04
✎
13:12
|
И в правду понимает... Вот балбес! Спасибо тебе большое еще раз! Побольше б таких людей было!
|
|||
10
Прохожий
19.10.04
✎
13:20
|
Твой пример кода не работает:
myGroupe=Goods.текущийЭлемент не понимает. Понимает - Dim mygpoupe As Object Set myGroupe=Goods.текущийЭлемент Но тогда If Goods.ПринадлежитГруппе(myGroupe) = 1 Then не понимает |
|||
11
NastyFrog
19.10.04
✎
13:38
|
Sub test()
Dim v7 As Object Dim Goods As Object Dim myGroupe As Object Set v7 = CreateObject("V77s.Application") Result = v7.Initialize(v7.RMTrade, "/DD:\1C\Bases\PS_Clean\", "") Set Goods = v7.EvalExpr("CreateObject(""Справочник.Номенклатура"")") If Goods.НайтиПоНаименованию("Перец", 0) = 1 Then Set myGroupe = Goods.текущийЭлемент MsgBox myGroupe.наименование End If Goods.ВыбратьЭлементы i = 1 Do While Goods.ПолучитьЭлемент = 1 If Goods.ПринадлежитГруппе(myGroupe) = 1 Then 'grdGoods.TextMatrix(i, 1) = Goods.наименование MsgBox Goods.наименование i = i + 1 End If Loop End Sub |
|||
12
Прохожий
19.10.04
✎
13:54
|
Выдает ошибку в строке If Goods.ПринадлежитГруппе(myGroupe) = 1 Then
|
|||
13
NastyFrog
19.10.04
✎
14:02
|
Может
Dim mygpoupe As Object ' объявлешь mygpoupe Set myGroupe=Goods.текущийЭлемент ' используешь myGroupe, не исключено что где-нить ещё опечатка? Option Explicit используй, дабы в переменных не путаться У меня всё работает, проверь ещё раз |
|||
14
Прохожий
20.10.04
✎
00:01
|
Вернусь к обсуждению темы.
У меня заработал следующий вариант: If Goods.ПринадлежитГруппе(myGroupe.ТекущийЭлемент()) = 1 Then Но теперь у меня возникла следующаяпроблема - с бухгалтерским запросом. Создаю объект "БухгалтерскиеИтоги" и пытаюсь выполнить метод ИспользоватьСубконто, но тут VB ругается на ВидыСубконто.Номенклатура. Код примерно следующий: Dim total As Object Set total = v7.EvalExpr("CreateObject(""БухгалтерскиеИтоги"")") total.ИспользоватьСубконто ВидыСубконто.Номенклатура, Good.ТекущийЭлемент(), 2 Взять в скобки выражение (ВидыСубконто.Номенклатура, Good.ТекущийЭлемент(), 2) не могу - VB не позволяет, а так он определяет ВидыСубконто как не объявленная переменная. Что делать? Может поможете с проблемой? |
|||
15
IAm
20.10.04
✎
00:26
|
Проблема в ДНК
неужели трудно догадаться что если не CreateObject(""БухгалтерскиеИтоги"") а v7.EvalExpr("CreateObject(""БухгалтерскиеИтоги"")") то и не ВидыСубконто.Номенклатура а v7.ВидыСубконто.Номенклатура |
|||
16
IAm
20.10.04
✎
00:28
|
И что за недоумок всякую фигню в базу данных добавляет.
|
|||
17
IAm
20.10.04
✎
00:28
|
в базу знаний
|
|||
18
Прохожий
20.10.04
✎
00:44
|
(15)Как я понял ты про мой ДНК упомянул. Ну какой вышел...
Тем не менее благодарю за помощь. А может еще поможешь и с методом ВыполнитьЗапрос. Тут у меня тоже проблема (в ДНК). Заранее благодарю. |
|||
19
IAm
20.10.04
✎
10:39
|
18 Помогу, как только проблемы в ДНК перестанут мешать описать проблему с запросом.
Заранее благодарю. |
|||
20
NastyFrog
20.10.04
✎
10:50
|
Кстати,
If Goods.НайтиПоНаименованию("Перец", 0,1) = 1 Then - третий параметр добавь, дабы точно "перец" искал, а то мож у тебя есть какой-нить "перец ясный" или "перец де куэльяр" - находит элемент, а не группу, и ругается, или по коду ищи - во избежание. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |