![]() |
|
v7: ОЛЕша :) | ☑ | ||
---|---|---|---|---|
0
Денисок
11.10.11
✎
13:10
|
Делаю Импорт документов (одного вида "Приходная накладная"), всё хорошо, вот этот блок делает запись в документ, но не все так хорошо >Продолжение после кода.
Процедура ЗаполнитьТаблицу() сТест=БазаТест.CreateObject("Справочник.Товары"); сРеа=СоздатьОбъект("Справочник.Товары"); ДоКРеа.Новый(); ДокРеа.НомерДок = ДокТест.НомерДок; ДокРеа.ДатаДок = ДокТест.ДатаДок; ДокРеа.Договор = ДокТест.Договор; ДокРеа.Контрагент = ДокТест.КонтрАгент; ДокТест.ВыбратьСтроки(); Пока ДокТест.ПолучитьСтроку() = 1 цикл ДокРеа.НоваяСтрока(); ДокРеа.НомерСтроки = ДокТест.НомерСтроки; ДокРеа.Товар = ДокТест.Товар; ДокРеа.Количество = ДокТест.Количество; ДокРеа.Цена = ДокТест.Цена; ДокРеа.Сумма = ДокТест.Сумма; ДокРеа.Записать(); ДокРеа.Провести(); КонецЦикла; КонецПроцедуры вот эта строчка: ДокРеа.Товар = ДокТест.Товар; не хочет записывать, сволочуга. База Тест товар выбирается из справочника и я думал может в этом причина...а может и нет, опыта не хватает, сообразить не могу :) Помоги кто чем может, люди добрые! :) P.S. забыл добавить диалоги контрагент и договора тоже пустые и в ОЛЕ базе выбираются тоже из справочников. Как быть то с этим, что делать? |
|||
1
Попытка1С
11.10.11
✎
13:12
|
Запись и проведение в цикле... круто!
|
|||
2
DrHiHi
11.10.11
✎
13:12
|
А как ты идентифицируешь объекты между базами??
|
|||
3
povar
11.10.11
✎
13:13
|
не понял, при чем тут ОЛЕ ?
|
|||
4
Godofsin
11.10.11
✎
13:13
|
Код серьезен
|
|||
5
vde69
11.10.11
✎
13:14
|
ДокРеа.Договор = ДокТест.Договор;
ты в одной базе хочешь иметь ссылку на договор из другой базы? так не бывает |
|||
6
DrHiHi
11.10.11
✎
13:14
|
(3) я так понял через оле подключается к другой базе и хочет скопировать документы
|
|||
7
DrHiHi
11.10.11
✎
13:14
|
ЭТО ЖЕ ГЕНИАЛЬНО, СУСЛИК %)))
|
|||
8
povar
11.10.11
✎
13:14
|
(6) где это видно ?
|
|||
9
Денисок
11.10.11
✎
13:14
|
Это кусок который заполняет шапку и табличные данные документа, небольшой кусок. Проблема в том что все поля заполняются, кроме тех что в базе Оле выбирались из справочников.
|
|||
10
DrHiHi
11.10.11
✎
13:15
|
(8) БазаТест.CreateObject( я по этим строкам понял
|
|||
11
Godofsin
11.10.11
✎
13:15
|
(1)Запись и проведение после заполнения КАЖДОЙ строки - вот это круто!
|
|||
12
marty0701
11.10.11
✎
13:16
|
Я так понимаю, в документ то надо бы ссылку на товар в справочнике запиндюрить, с какого лешего он тебе товар вставит в документ?
|
|||
13
Попытка1С
11.10.11
✎
13:16
|
(11) Я это и имел ввиду.
|
|||
14
povar
11.10.11
✎
13:16
|
(10) и что, дальше то это не используется никак
|
|||
15
Денисок
11.10.11
✎
13:17
|
(11) да, это глупанул по началу, потом переделал...
|
|||
16
DrHiHi
11.10.11
✎
13:18
|
(14) это часть кода, а значить, что было подключение к другой базе %)), а значить OLE... так бы у него выдавало ошибку на строке БазаТест.CreateObject(
|
|||
17
Денисок
11.10.11
✎
13:19
|
(12) не подскажешь как прописать?
|
|||
18
povar
11.10.11
✎
13:20
|
(16) только она лишняя в приведенной процедуре )
|
|||
19
Попытка1С
11.10.11
✎
13:21
|
(17) Ну для начала надо его найти по коду хотя бы.
|
|||
20
DrHiHi
11.10.11
✎
13:21
|
(17) не тупи ищи элементы в создаваемой базе (по коду, по наименованию, по полному коду), если это копии базы, то можешь просто преобразовать в строку и преобразовать назад
|
|||
21
Денисок
11.10.11
✎
13:22
|
ДокРеа.Договор = ДокТест.Договор;
ДокРеа.Контрагент = ДокТест.КонтрАгент; ДокРеа.Товар = ДокТест.Товар; вот эти строки не работают. |
|||
22
Денисок
11.10.11
✎
13:22
|
(20) во ща попробую
|
|||
23
Денисок
11.10.11
✎
13:22
|
(20) я не туплю, я не умею...вот и спрашиваю
|
|||
24
DrHiHi
11.10.11
✎
13:22
|
(18) повар, а котелок не варит %)))
|
|||
25
povar
11.10.11
✎
13:23
|
(24) покажи где используются переменные
сТест=БазаТест.CreateObject("Справочник.Товары"); сРеа=СоздатьОбъект("Справочник.Товары"); |
|||
26
Денисок
11.10.11
✎
13:28
|
извиняюсь ( все переперченные такого типа у меня в модуле, а не в процедурах записаны и я скинул не те :(
|
|||
27
Денисок
11.10.11
✎
13:28
|
переменные*
|
|||
28
Денисок
11.10.11
✎
13:28
|
ДокТест = БазаТест.CreateObject("Документ.Поступление_Товара");
ДоКРеа = СоздатьОбъект("Документ.Поступление_Товара"); |
|||
29
DrHiHi
11.10.11
✎
13:29
|
(25) ты спросил а причем тут ОЛЕ... а теперь еще скажи, что оно тут вообще не используется
|
|||
30
povar
11.10.11
✎
13:31
|
(29) в процедуре из (0), без уточнений из (28), не используется
|
|||
31
Godofsin
11.10.11
✎
13:34
|
(28) Так позиция товара точно существует в базе приемнике?
Попробуй сначала спозиционироваться на него в базе приемнике и подставь его. |
|||
32
DrHiHi
11.10.11
✎
13:34
|
(30) признайся что затупил))) тут вроде бы всем (кроме одаренных) было ясно, что тут используется ОЛЕ
|
|||
33
povar
11.10.11
✎
13:38
|
(32) согласен, ты тупишь. То, что автор написал в заголовке слово ОЛЕ, не означает что он его использует, на этом форуме полно таких примеров
|
|||
34
Денисок
11.10.11
✎
13:39
|
ДокРеа.Товар = Строка(ДокТест.Товар);
Вот так сделать? |
|||
35
Godofsin
11.10.11
✎
13:40
|
(34) Ни в коем случае!!!
|
|||
36
Денисок
11.10.11
✎
13:40
|
он везде ole пишит
|
|||
37
0xFFFFFF
11.10.11
✎
13:41
|
(34) НайтиПоКоду(ДокТест.Товар.Код)
Но сначала нужно в базе источнике его создать.. ентот элемент. |
|||
38
DrHiHi
11.10.11
✎
13:42
|
(34) ЗначениеИзСтрокиВнутр(БазаОЛЕ.ЗначениеВСтрокуВнутр(ДокТест.Товар)) что-то вроде этого
или найти по полному коду ... только это в том случае если базы скопированы |
|||
39
0xFFFFFF
11.10.11
✎
13:42
|
(36) Через ОЛЕ можно передавать только базовые типы (строка, число, дата). А то что ты пишеш ДокТест.Товар - имеет тип ОЛЕобъекта.
А ДокРеа.Товар - имеет тип Справочник.Товары (или как у тя там). Совершенно разные типы понимаш ли...? |
|||
40
Godofsin
11.10.11
✎
13:42
|
НужТов = СоздатьОбъект("Справочник.Товары");
Если НужТов.НайтиПоКоду(ДокТест.Товар.Код) = 1 тогда ДокРеа.Товар = НужТОв.ТекущийЭлемент(); иначе ... ... ///создаешь его. КонецЕсли; |
|||
41
Денисок
11.10.11
✎
13:56
|
ооо, мужики, большое спасибо! Вот это работает (40), я еще не особо шарю, разобраться сложно, Спасибо :)
|
|||
42
Смотрящий от 1С
11.10.11
✎
14:01
|
http://triteh.ru/ole77/index.php
чудная вещь, генерит почти весь код для переноса по ОЛЕ |
|||
43
Godofsin
11.10.11
✎
14:06
|
(41) Только "СоздатьОбъект" в цикл не вноси =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |