|
v7: Корректное присвоение родителя при обмене справочниками через OLE между базами | ☑ | ||
---|---|---|---|---|
0
Mister-X07
21.03.12
✎
00:17
|
Загружаю в рус. торговле 921 в справочник Номенклатура, по оле элементы из справочника ТМЦ из укр. бухгалтерии 291 - вот код (ТМЦ - 3-уровненный справочник, Номенклатура - 5-уровненный):
спрНомГр1 = создатьОбъект("Справочник.Номенклатура"); спрНомГр2 = создатьОбъект("Справочник.Номенклатура"); спрНомЭл = создатьОбъект("Справочник.Номенклатура"); v7 = СоздатьОбъект("V77.Application"); init = v7.Initialize(v7.RMTrade, , ""); СпрТам = v7.EvalExpr("СоздатьОбъект(""Справочник.ТМЦ"")"); СпрТам.ВыбратьЭлементы(0); СпрТам.ИспользоватьДату(ТекущаяДата(),1); //НачатьТранзакцию(); Пока (СпрТам.ПолучитьЭлемент() = 1) Цикл если СпрТам.пометкаУдаления()=1 тогда продолжить; конецесли; наим = сокрлп(СпрТам.Наименование); род = сокрлп(спрТам.Родитель.Наименование); если СпрТам.ЭтоГруппа()=1 тогда если спрНомГр1.НайтиПоНаименованию(наим,0,1)=0 тогда спрНомГр1.НоваяГруппа(); спрНомГр1.Наименование=СпрТам.наименование; //спрНомГр1.Записать(); если ПустоеЗначение(род)=0 тогда если спрНомГр2.НайтиПоНаименованию(род,0,1)=0 тогда спрНомГр2.НоваяГруппа(); спрНомГр2.Наименование = СпрТам.наименование; спрНомГр2.Записать(); спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент(); иначе спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент(); конецесли; конецесли; спрНомГр1.Записать(); конецесли; иначе если спрНомЭл.НайтиПоНаименованию(наим,0,1)=0 тогда спрНомЭл.Новый(); спрНомЭл.Наименование = наим; спрНомЭл.ПолнНаименование= сокрлп(спрТам.ПолнНаименование); спрНомЭл.СтавкаНДС = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС"); //Цена0 = СпрТам.Цена_Закуп; //Цена1 = число(ВходExcel.ActiveSheet.Cells(СчетчикЦикла,8).Value); //Цена2 = число(ВходExcel.ActiveSheet.Cells(СчетчикЦикла,9).Value); если ПустоеЗначение(род)=0 тогда если спрНомГр1.НайтиПоНаименованию(род,0,1)=0 тогда //если спрНомГр1.НайтиПоНаименованию(род,0,1)=0 тогда спрНомГр1.НоваяГруппа(); спрНомГр1.Наименование = род; спрНомГр1.Записать(); спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент(); иначе сообщить("елемент = "+спрНомЭл.наименование); сообщить("група = "+спрНомГр1.ТекущийЭлемент()); спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент(); конецесли; конецесли; вот в этой строке возникает ошибка: сообщить("елемент = "+спрНомЭл.наименование); сообщить("група = "+спрНомГр1.ТекущийЭлемент()); спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент(); когда загружается элемент 3-го уровня из базы бух. Как перекидывать справочники н-уровня? |
|||
1
zxcvb
21.03.12
✎
00:25
|
Мало кода, чтобы воспроизвести ошибку.
|
|||
2
Mister-X07
21.03.12
✎
00:38
|
ок, напишу завтра весь код обработки
|
|||
3
zxcvb
21.03.12
✎
00:39
|
Ошибку лучше напиши.
|
|||
4
Mister-X07
21.03.12
✎
00:42
|
не верное значение реквизита
|
|||
5
zxcvb
21.03.12
✎
00:43
|
Наверное спрНомГр1 стоит найти. Не знаю...
|
|||
6
Mister-X07
21.03.12
✎
00:46
|
да не - его то находит, но присвоить не дает как родителя, посмотрю еще спрНомГр1 на признак группы, возможно элемент такой нашло
|
|||
7
zxcvb
21.03.12
✎
00:49
|
А сам-то спрНомЭл создан?
|
|||
8
zxcvb
21.03.12
✎
00:52
|
Только сейчас заметил, что на + оказывается можно нажать!:))))
|
|||
9
zxcvb
21.03.12
✎
00:58
|
спрНомГр1.ВыбратьЭлементы()
|
|||
10
Shrike
21.03.12
✎
01:06
|
(0) А если бы справочник был бы 10 уровневый? А одинаковых наименований тоже быть не может?
|
|||
11
Mister-X07
21.03.12
✎
16:48
|
все ок, поправил и перенес по наименованию (так сказал руководитель, хотя я ему говорил о не надежности)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |