|
v7: Не переносится полноенаименование по OLE из 7.8 в 8.3 | ☑ | ||
---|---|---|---|---|
0
РусскийВедун
11.02.19
✎
20:58
|
Из 7.7 подключаюсь по ole к 8.3 и создаю там элемент справочника, все хорошо, но реквизит полноенаименование не могу создать. Вылетает ошибка не найден метод. Перепробовал разные варианты.
в Лоб... V8 = СоздатьОбъект("V83.Application"); попытка V8.connect("File=""D:\1c_base"";Usr=""Ole"";pwd=""999"""); Сообщить("Подключились к базе"); Исключение Сообщить("Не подключился!!!!"); Сообщить(Описаниеошибки()); КонецПопытки; Спр = V8.Справочники.Номенклатура; Спр2 = V8.Справочники.Номенклатура; НайденнаяСсылка2 =спр2.найтипореквизиту("КодДругойБазы",кодтмц); НайденнаяСсылка =спр.найтипореквизиту("КодДругойБазы",кодрод); ед=V8.Справочники.ОКЕИ; нужнаяед=ед.найтипоКоду("796"); если сокрлп(НайденнаяСсылка2.наименование)="" тогда Если сокрлп(НайденнаяСсылка.наименование) = "" Тогда Предупреждение("Не найден код родителя в 1с 8! "); Иначе Спр2 = V8.Справочники.Номенклатура; НовыйЭлемент = Спр2.СоздатьЭлемент(); //НовыйЭлемент.код = спр.код; НовыйЭлемент.КодВоВнешнейИБ= кодтмц; НовыйЭлемент.КодДругойБазы= кодтмц; НовыйЭлемент.наименование =наименование; НовыйЭлемент.ПолноеНаименование = сокрлп(наименование); НовыйЭлемент.Родитель = НайденнаяСсылка; новыйэлемент.Артикул=артикул; НовыйЭлемент.видтмц = V8.перечисления.ВидыТМЦ.Материал; НовыйЭлемент.базоваяединица = нужнаяед; //НовыйЭлемент.Записать(); Попытка НовыйЭлемент.Записать(); //Возврат 1; Исключение Предупреждение("Не удалось создать ТМЦ в 1с 8!"); сообщить(описаниеошибки()); КонецПопытки; КонецЕсли; иначе сообщить(найденнаяссылка2.наименование); Предупреждение("ТМЦ с таким кодом уже существует в 1с 8!"); конецесли; потом пробовал СтрокаКода = " |Ссылка1 = Справочники.Номенклатура.НайтиПоРеквизиту(""КодДругойБазы"","+КодТМЦ+"); |Объект1 = Ссылка1.ПолучитьОбъект(); |Объект1.ПолноеНаименование = "+сокрлп(наименование)+"; |Объект.Записать();"; V8.выполнить(СтрокаКода); и СтрокаКода = " |Ссылка1 = Справочники.Номенклатура.НайтиПоРеквизиту(""КодДругойБазы"","+КодТМЦ+"); |Объект1 = Ссылка1.ПолучитьОбъект(); |Объект1.ПолноеНаименование = "+сокрлп(наименование)+"; |Объект.Записать();"; V8.EXECUTEBATCH(СтрокаКода); Ошибки поле агрегатного объекта не обнаружено выполнить и executebatch Может кто-нибудь-знает как такое можно обойти? |
|||
1
Злопчинский
11.02.19
✎
21:16
|
НайденнаяСсылка2 =спр2.найтипореквизиту("КодДругойБазы",кодтмц);
- а вот эта хрень случайно в НайденнаяСсылка2 вернет ли 1 или 0 (истина/ложь) - я сомневаюсь что найтиПоРеквизиту возвращает указатель на объект. я 8-ку не знаю, но попробовал бы как в 77 типа Если спр2.найтипореквизиту("КодДругойБазы",кодтмц)<>0 Тогда НайденнаяСсылка2 = Спр2.ТекущийЭлемент(); КонецЕсли; |
|||
2
hhhh
11.02.19
✎
21:17
|
(0) ПолноеНаименование - это функция вообще-то стандартная у объекта. Реквизит смотрите, по другому должен называться.
|
|||
3
Злопчинский
11.02.19
✎
21:21
|
Хотя, не... налажал я. в СП написано
Возвращаемое значение: СправочникСсылка |
|||
4
Злопчинский
11.02.19
✎
21:24
|
Вот это что за хрень:
|Объект1.ПолноеНаименование = "+сокрлп(наименование)+"; наименование - это что? и откуда в 8-ой базе во время выполнения восьмерочного кода будет доступна переменная из 77-контекста? |
|||
5
Злопчинский
11.02.19
✎
21:28
|
вот здесь
сообщить(описаниеошибки()); - дословно сообщение об ошибке |
|||
6
HawkEye
11.02.19
✎
21:36
|
(0) ты уверен, что в 8-ке у справочника есть реквизит ПолноеНаименование?
зы. даже в 7.7 он не так назывался в типовых... |
|||
7
sidalexsandr
11.02.19
✎
21:38
|
(0) 7.8 что ты имеешь ввиду, платформа вроде была 7.7
|
|||
8
Злопчинский
11.02.19
✎
21:50
|
Справочник.Номенклатура.ПолноеНаименование - в 77 метод такой был, возвращал через слеши полное наименование со всеми родителями.
м.б. 8-как как раз и ругается что она не понимает что такое ПолноеНаименование |
|||
9
Ёпрст
11.02.19
✎
21:58
|
(0)
|
|||
10
РусскийВедун
11.02.19
✎
22:14
|
(6) да в 8 реквизит есть полноенаименование
|
|||
11
РусскийВедун
11.02.19
✎
22:15
|
(8) в этом и проблема, что есть и метод и реквизит с таким наименованием
|
|||
12
Ёпрст
11.02.19
✎
22:15
|
(10) см.(9)
|
|||
13
РусскийВедун
11.02.19
✎
22:17
|
(4) это с 7 данные. Даже неважно что там. Проблема в полному Меновазин в 8
|
|||
14
Кулибин
11.02.19
✎
22:17
|
ПолнНаименование м.б.? :-) реквизит, как сейчас, наверное. С полным будет беда,конечно...
|
|||
15
РусскийВедун
11.02.19
✎
22:19
|
(12) ты уверен , что так сработает?
|
|||
16
Ёпрст
11.02.19
✎
22:20
|
(15) смотря какая конфа, в типовых, в Номенклатуре - НаименованиеПолное
|
|||
17
РусскийВедун
11.02.19
✎
22:21
|
Я же говорю,что в этой конфе полное наименование и менять я ее не могу.
|
|||
18
HawkEye
11.02.19
✎
22:25
|
(17) ну мало ли что ты говоришь ))
давай сюда скрин дерева с реквизитами справочника... |
|||
19
Ёпрст
11.02.19
✎
22:28
|
ну а так ?
V8.выполнить("НовыйЭлемент.ПолноеНаименование = сокрлп(наименование)"); |
|||
20
HawkEye
11.02.19
✎
22:29
|
(19) да ладно тебе, был бы реквизит, отработало бы и как в (0)...
|
|||
21
РусскийВедун
11.02.19
✎
22:29
|
В (0) уже писал, что выполнить не понимает.
|
|||
22
Ёпрст
11.02.19
✎
22:32
|
(20) ну это так, на всякий :))
А так да, думаю, что такого реквизита у автора нема. Автор, кажи скрин с деревом метаданных справочника |
|||
23
hhhh
12.02.19
✎
05:45
|
(22) ну, завести реквизит ПолноеНаименование в конфигураторе получается.
|
|||
24
РусскийВедун
12.02.19
✎
13:17
|
||||
25
Garykom
гуру
12.02.19
✎
13:19
|
(0) СП продать?
|
|||
26
Garykom
гуру
12.02.19
✎
13:23
|
Глобальный контекст (Global context)
ЗаполнитьЗначенияСвойств (FillPropertyValues) Синтаксис: ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, <ИсключаяСвойства>) Параметры: <Приемник> (обязательный) Тип: Произвольный. Значение, чьи свойства будут заполнены значениями соответствующих свойств <Источника>. Внимание! Значение данного параметра не может быть следующих типов: Неопределено, Null, Число, Строка, Дата, Булево. Дата <Источник> (обязательный) Тип: Произвольный. Значения свойств данного объекта будут установлены в соответствующие свойства <Приемника>. Внимание! Значение данного параметра не может быть следующих типов: Неопределено, Null, Число, Строка, Дата, Булево. <СписокСвойств> (необязательный) Тип: Строка. Список имен свойств <Источника> и <Приемника>, разделенный запятыми, которые необходимо заполнить. Если свойства не указаны, то копируются только те, которые представлены и в <Источнике>, и в <Приемнике>. Если свойства указаны, то они обязательно должны присутствовать в обоих объектах. Если в <Источнике> или <Приемнике> заданное свойство отсутствует, то будет вызвано исключение. Параметр игнорируется, если <Источник> задан. <ИсключаяСвойства> (необязательный) Тип: Строка. Список имен свойств <Приемника>, разделенный запятыми, которые необходимо исключить из заполнения. Если свойство с именем, указанным в исключающих свойствах есть в <Приемнике>, то значение этого свойства скопировано не будет. А если свойства, указанного в исключающих свойствах не окажется в <Приемнике>, то будет вызвано исключение. Описание: Копирует значения свойств <Источника> в свойства <Приемника>. Сопоставление производится по именам свойств. Если указаны копируемые свойства, то в заполнении участвуют только они, параметр <ИсключаяСвойства> игнорируется. В противном случае, если указан параметр <ИсключаяСвойства>, свойства перечисленные в нем, исключаются из обработки. Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Примечание: В режиме совместимости конфигурации Версия8_3_8 и ниже свойство Макет табличного документа скопировано не будет. |
|||
27
РусскийВедун
13.02.19
✎
08:48
|
Может кому еще понадобится. Такой код помог...
оСпр = V8.Справочники.Номенклатура.СоздатьЭлемент(); мСтруктура = V8.NewObject("Структура"); мСтруктура.Вставить("КодВоВнешнейИБ", кодтмц); мСтруктура.Вставить("КодДругойБазы", кодтмц); мСтруктура.Вставить("наименование", наименование); мСтруктура.Вставить("ПолноеНаименование", "Мое полное наименование"); мСтруктура.Вставить("родитель", найденнаяссылка); мСтруктура.Вставить("артикул", артикул); мСтруктура.Вставить("видтмц", V8.перечисления.ВидыТМЦ.Материал); мСтруктура.Вставить("базоваяединица", нужнаяед); V8.ЗаполнитьЗначенияСвойств(оСпр, мСтруктура); Попытка оСпр.Записать(); // НовыйЭлемент.Записать(); //Возврат 1; Исключение Предупреждение("Не удалось создать ТМЦ в 1с 8!"); сообщить(описаниеошибки()); КонецПопытки; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |