|
v7: Запись в ТиС цены через OLE | ☑ | ||
---|---|---|---|---|
0
Маркусс
28.03.14
✎
15:30
|
Добрый день.
Через оле цепляюсь к другой базе ТиС. Нахожу цену. Запихиваю её как элемент справочника оле в ТЗ. После выполнения манипуляций с размером цены Пытаюсь записать цену обратно. Ничего не просходит. Ошибок нет. Цена не меняется. Чего делаю не так? ТЗНомЦены.ВыбратьСтроки(); Пока ТЗНомЦены.ПолучитьСтроку()=1 Цикл ИзменяемаяЦена = ТЗНомЦены.ЦенаС_ОЛЕ_базы;//Элемент справочника цены, полученный через ОЛЕ ИзменяемаяЦена.ИспользоватьДату(ТекущаяДата()); ИзменяемаяЦена.Цена = ТЗНомЦены.НоваяЦена; ИзменяемаяЦена.Записать(); КонецЦикла; Спасибо. |
|||
1
Маркусс
28.03.14
✎
15:31
|
В целевой базе в ПриЗаписи() убрал все проверки, которые могли бы помешать.
|
|||
2
Маркусс
28.03.14
✎
15:32
|
Права у подключения полные
|
|||
3
КонецЦикла
28.03.14
✎
15:32
|
Используй объект "Периодический"
|
|||
4
Маркусс
28.03.14
✎
15:38
|
(3) а можно поподробнее?
|
|||
5
КонецЦикла
28.03.14
✎
15:52
|
Периодический.ИспользоватьОбъект(Объект);
Периодический.Значение = Значение; Периодический.ДатаЗнач = ТекДата; Периодический.Записать(); |
|||
6
Маркусс
28.03.14
✎
15:52
|
ИзменяемаяЦена.ТекущийОбъект() ошибку даёт
|
|||
7
КонецЦикла
28.03.14
✎
15:56
|
ТЗНомЦены.ЦенаС_ОЛЕ_базы
|
|||
8
КонецЦикла
28.03.14
✎
15:56
|
Не знаю что там, но судя по каменту в коде может подойти
|
|||
9
Мимохожий Однако
28.03.14
✎
15:59
|
Через ОЛЕ можно передать только простые типы. Посмотри в базе знаний форума примеры
|
|||
10
ksupalo
28.03.14
✎
16:01
|
Такие вещи лучше вызывать на OLE сервере.
Пишешь в глобальном модуле процедуру с этим кодом ИзменяемаяЦена = ПередаваемаяЦенаВФункцию;//Элемент справочника цены, полученный через ОЛЕ ИзменяемаяЦена.ИспользоватьДату(ТекущаяДата()); ИзменяемаяЦена.Цена = ТЗНомЦены.НоваяЦена; ИзменяемаяЦена.Записать(); и вызываешь через OLE эту новую функцию. Таких приколов много, разбираться можно, конечно, но смысл есть только тогда, когда нет возможности изменять конфу OLE базы. Если можно - просто добавляешь и не заморачиваешься. Сталкивался при получение уникальных идентификаторов... |
|||
11
Маркусс
28.03.14
✎
16:03
|
(8) Периодический.ИспользоватьОбъект("Цена",ИзменяемаяЦена);
Периодический.Значение = ТЗНомЦены.НоваяЦена; Периодический.ДатаЗнач = ТекущаяДата(); Периодический.Записать(); Пишет ошибку :Периодический.ИспользоватьОбъект("Цена",ИзменяемаяЦена); {Z:\ВЫГРУЗЦЕНКП_КЦ.ERT(17)}: Цена не является константой или периодическим параметром! |
|||
12
Маркусс
28.03.14
✎
16:04
|
(9) в тз хранится объект оле, вполне могу обращаться к его реквизитам
|
|||
13
Маркусс
28.03.14
✎
16:04
|
+ к 11 цена точно периодическая.
|
|||
14
ksupalo
28.03.14
✎
16:13
|
Проверь код на базе.
А потом уже по OLE. Это займет 3 минуты, будешь знать причину сразу. |
|||
15
Мимохожий Однако
28.03.14
✎
16:26
|
(12)Включи отладчик и увидишь, что передаёшь
|
|||
16
Маркусс
01.04.14
✎
11:12
|
Если кому интересно.
Идея запихивать ОЛЕ в ТЗ была неудачной. оле хранит только последний полученный объект. Процедура записи имеет вид: ТекНом_КЦ = ПолучитьНомКЦ(ТЗНомЦены.КодКредоЦентр); ТекЦена_КЦ = ПолучитьЦенуКЦ(ТекНом_КЦ); ТекЦена_КЦ.ИспользоватьДату(ТекущаяДата()); ТекЦена_КЦ.Единица = ПолучитьЕИ_КЦ(ТекНом_КЦ,ТЗНомЦены.НаимЕИКредоЦентр); ТекЦена_КЦ.Цена = ТЗНомЦены.Цена; ТекЦена_КЦ.Записать(); |
|||
17
Маркусс
01.04.14
✎
11:13
|
ПолучитьЕИ_КЦ и ПолучитьЦенуКЦ - каждый раз достаём из оле базы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |