|
v7: переход с Rainbow на 1c++ | ☑ | ||
---|---|---|---|---|
0
perkos
03.12.12
✎
10:48
|
есть база с внедренной подсистемой обмена на кассы через компаненту рейнбоу.
так же в этой базе загружается старый 1с++ версияя 1.8, который глючит. хочу обновить 1с++, с рейнбоу 1с++ не рекомендуют загружать. сейчас ошибки вида создания объекта СоздатьОбъект("RainbowService"); вопрос насколько реально переделать под 1спп? какой объект из 1спп может подменить РейнбоуСервис? |
|||
1
Mikeware
03.12.12
✎
10:58
|
||||
2
perkos
03.12.12
✎
11:19
|
хмм, нашел только Обработка.Defcls
как я понимаю мне в ней надо добавить пару классов призраков и создать одноименные обработки с кодом из форума? |
|||
3
Ёпрст
03.12.12
✎
11:25
|
(2) да.
Или переписать обработки, которые используют радугу |
|||
4
perkos
04.12.12
✎
13:34
|
отключил рэйнбоу ошибку RainbowService починил, вроде работает...
теперь вот что Обработка.Defcls class СкидкиОбъектов=OxyObjectsPoffs@MD:Справочник.СкидкиКлиентов,Справочник.СкидкиТорговыхТочек { }; Обработка.OxyObjectsPoffs Процедура РаботатьСТоргТочками() Экспорт БК=Сам(Контекст).ПолучитьБазовыйКласс("Справочник."+СпрСкТоргТочек); Сам(Контекст).НазначитьБазовыйКласс("Справочник."+СпрСкТоргТочек); КонецПроцедуры // РаботатьСТоргТочками() ошибка СкидкиОбъектов::РаботатьСТоргТочками() : Поле агрегатного объекта не обнаружено Сам(Контекст).НазначитьБазовыйКласс("Справочник."+СпрСкТоргТочек); {OxyObjectsPoffs@MD(64) } а как тогда рейнбоу работало? хелпните, в какую сторону делать? |
|||
5
Ёпрст
04.12.12
✎
13:36
|
(4) ну воткни в класс функцию
Функция Сам(Конт) Возврат Конт; КонецФункции |
|||
6
perkos
04.12.12
✎
13:39
|
в Обработка.OxyObjectsPoffs есть
Функция Сам(Конт) Возврат Конт; КонецФункции // Конт() в описание класса я так понимаю надо втыкать? а как же радуга то работала без этого? |
|||
7
Ёпрст
04.12.12
✎
13:41
|
не надо в описании ничего пихать
|
|||
8
Ёпрст
04.12.12
✎
13:44
|
И это, радуга тут не при чем
|
|||
9
perkos
04.12.12
✎
13:44
|
тогда не понимаю чего не хватает
|
|||
10
Ёпрст
04.12.12
✎
13:46
|
НазначитьБазовыйКласс просто вырезали в новых версиях 1cpp
|
|||
11
Ёпрст
04.12.12
✎
13:46
|
pfhtvm 'ne cnhjre? lkz yfxfkf
|
|||
12
Ёпрст
04.12.12
✎
13:46
|
заремь эту строку , для начала
|
|||
13
Ёпрст
04.12.12
✎
13:50
|
и.. вроде как он теперь стал
ЗаменитьБазовыйОбъект |
|||
14
perkos
04.12.12
✎
13:54
|
заремил ошибка пропала,
дальше подменил как (13) СкПарс=СоздатьОбъект("ПарсерСкидок"); {Справочник.Склады.Форма.Модуль(226)}: ПарсерСкидок::НайтиСкидкуГоловнойФирмы() : СкидкиОбъектов::РаботатьСТоргТочками() : Недостаточное число параметров передано при вызове функции/процедуры объекта Сам(Контекст).ЗаменитьБазовыйОбъект("Справочник."+СпрСкТоргТочек); {OxyObjectsPoffs@MD(66) } Если Ск.НайтиПоОбъекту(Ф.ТекущийЭлемент())=1 Тогда {discounts_parser@MD(64) } |
|||
15
Ёпрст
04.12.12
✎
13:58
|
да уж.. метод НазначитьБазовыйКласс похерили еще в 2007 году..
страшно подумать, что эту конфу с того года никто не обновлял |
|||
16
Ёпрст
04.12.12
✎
13:58
|
ЗЫ: пробуй (13) использовать
|
|||
17
ADirks
04.12.12
✎
14:00
|
(4) какой-то сумрачный гений...
попробуй так сделать объявление: class СкидкиОбъектов=OxyObjectsPoffs@MD:Справочник { }; создание объекта оСкидки = СоздатьОбъект("СкидкиОбъектов"); оСкидки.ЗаменитьБазовыйОбъект("Справочник", СоздатьОбъект("Справочник."+СпрСкТоргТочек)); |
|||
18
perkos
04.12.12
✎
14:06
|
(15) никто и не обновлял.
заменяя тупо название метода как в (13) не пашет |
|||
19
Fynjy
04.12.12
✎
14:07
|
Может сразу на 8?
|
|||
20
perkos
04.12.12
✎
14:11
|
(17) это везде где используется класс добавить строку
оСкидки.ЗаменитьБазовыйОбъект("Справочник", СоздатьОбъект("Справочник."+СпрСкТоргТочек)); ? |
|||
21
ADirks
04.12.12
✎
14:15
|
(20) везде, где создаётся объект этого класса
ЗаменитьБазовыйОбъект() можно использовать только один раз, и желательно сразу после создания объекта |
|||
22
perkos
05.12.12
✎
06:04
|
поискал создание объектов и вот что меня смущает в не
СпрСкидки=МенеджерВерсий.СоздатьОбъектКласса("СкидкиОбъектов"); как оно сказатся может? где мне брать СпрСкТоргТочек? смотрю класс Обработка.OxyObjectsPoffs Процедура Конструктор() МенеджерВерсий=СоздатьОбъект("МенеджерВерсий"); Настройки=МенеджерВерсий.СоздатьОбъектКласса("НастройкиКомпонентыУРП"); СпрСкКлиентов=Настройки.ПолучитьВидСправочника("СкидкиКлиентов"); СпрСкТоргТочек=Настройки.ПолучитьВидСправочника("СкидкиТоргТочек"); СпрКлиентов=Настройки.ПолучитьВидСправочника("Клиенты"); СпрТоргТочек=Настройки.ПолучитьВидСправочника("ТорговыеТочки"); БК=Сам(Контекст).ПолучитьБазовыйКласс("Справочник."+СпрСкКлиентов); КонецПроцедуры // Конструктор() пробую сделать также при созданииОбъекта Скидки=СоздатьОбъект("СкидкиОбъектов"); МенеджерВерсий=СоздатьОбъект("МенеджерВерсий"); Настройки=МенеджерВерсий.СоздатьОбъектКласса("НастройкиКомпонентыУРП"); СпрСкТоргТочек=Настройки.ПолучитьВидСправочника("СкидкиТоргТочек"); Скидки.ЗаменитьБазовыйОбъект("Справочник", СоздатьОбъект("Справочник."+СпрСкТоргТочек)); правильно это? далее если я определяю класс как в (17) то у меня вылетает ошибка СкПарс=СоздатьОбъект("ПарсерСкидок"); {Справочник.Склады.Форма.Модуль(226)}: ПарсерСкидок::НайтиСкидкуГоловнойФирмы() : СкидкиОбъектов::НайтиПоРеквизиту(Строка Имя=Объект, Справочник Значение= 5 , Число Флаг=1) : Значение не представляет агрегатный объект Возврат БК.НайтиПоРеквизиту(Имя,Значение,Флаг); {OxyObjectsPoffs@MD(96) } Если Ск.НайтиПоОбъекту(Ф.ТекущийЭлемент())=1 Тогда {discounts_parser@MD(64) } |
|||
23
ADirks
05.12.12
✎
06:46
|
(22) Похоже, что просто не получится. Надо детально разбираться, как там чего происходит в этом классе.
Унаследоваться от двух видов справочников это был крутой тактический ход. |
|||
24
Ёпрст
05.12.12
✎
09:49
|
(23)скорее всего лень..
прописывать одни и теже куски кода в обеих классах. |
|||
25
perkos
05.12.12
✎
10:05
|
(24) мне не лень прописать а разобратся лень, надеюсь не понадобится в будущем это.
по инфе что я показал трудно сказать в каких классах и чего делать? |
|||
26
Ёпрст
05.12.12
✎
10:06
|
(25) скорее всего, часть классов вообще можно выкинуть, достаточно посмотреть в коде для чего они и что делают.
|
|||
27
ADirks
05.12.12
✎
10:17
|
(24) ну кагбе для этого наследование существует, но видимо дизайнер решил сделать финт ушами.
А теперь в результате гениального дизайна проблемы у товарища. Попробуй их щас, растащи, скидки эти. |
|||
28
perkos
13.12.12
✎
13:56
|
//БК=Сам(Контекст).ПолучитьБазовыйКласс("Справочник."+СпрСкТоргТочек);
//Сам(Контекст).НазначитьБазовыйКласс("Справочник."+СпрСкТоргТочек); БК=вирт().ПолучитьБазовыйКласс("Справочник."+СпрСкТоргТочек); вирт().ЗаменитьБазовыйОбъект("Справочник."+СпрСкТоргТочек,БК); как вам такой финт? |
|||
29
ADirks
13.12.12
✎
14:15
|
а зачем себя на себя менять?
|
|||
30
perkos
14.12.12
✎
07:57
|
это разраб предложил, я его нашел и попросил посмотреть(=
|
|||
31
perkos
17.12.12
✎
08:21
|
Ёпрст4 зачем ты мне поставил 1спп версии 3.2... я не понял как в ней отладку разрешить... пробую сам на 2.5 сейчас поотлаживать разобратся
|
|||
32
ADirks
17.12.12
✎
08:31
|
Верни всё взад! В 3.2.х.х отладку включать не надо. Ставишь брейкпойнт, и вперёд. Только есть нюанс: если у тебя реализация отлаживаемого класса хранится в МД, то брейкпойнт надо поставить на первом вызове метода, зайти в модуль класса по F8, и вот здесь уже ставить брейкпойнт где нужно. А лучше в процессе отладки реализации в .ert держать.
|
|||
33
Ёпрст
17.12.12
✎
09:09
|
Не , взад не надо, а вот пару классов переписать или выкинуть их совсем, не помешало бы.
|
|||
34
Ёпрст
17.12.12
✎
09:09
|
:)
|
|||
35
perkos
17.12.12
✎
09:19
|
выкинуть не получится... а как переписывать пока не ясно... разраб сам похоже не шарит уже
|
|||
36
perkos
17.12.12
✎
09:22
|
на 2.5 нет этого метода Вирт()... видимо лучше сделать два класса скидок для складов и клиентов... вместо одного универсального
|
|||
37
Ёпрст
17.12.12
✎
09:22
|
зачем тебе 2.5 ?!
|
|||
38
Mikeware
17.12.12
✎
09:24
|
(37) некрофил.
ну, или некроман... |
|||
39
Ёпрст
17.12.12
✎
09:27
|
(38) изначально у него 1.8 стояла + радуга..
|
|||
40
Ёпрст
17.12.12
✎
09:27
|
так что, 2.5 - явный рост
:) |
|||
41
perkos
17.12.12
✎
09:29
|
(37) отладку хочу...
Информация о настройках: EnableHookEventsGroupContext: 0 EnableCheckType: 0 EnableDebugging: 0 EnableOptimization: 1 EnableTableSourceTable: 1 EnableTurboBL: 1 как это включить? EnableDebugging: 0 (32) не получается |
|||
42
Ёпрст
17.12.12
✎
09:49
|
ЗагрузитьВнешнююКомпоненту("1cpp.dll");
Настройки=СоздатьОбъект("УправлениеНастройками"); Настройки.Включить("Отладка"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |