Имя: Пароль:
1C
1C 7.7
v7: Поиск документа по номеру во внешней базе
,
0 Последняя_
Надежда
 
11.06.12
09:25
7.7 Комплексная. обработка переноса документов в Тис и наоборот.
Все нормально работает. Надо теперь осуществить "обновление" ранее перенесенных документов, если присутствует разница в суммах.
Не могу сделать поиск во внешней базе документа (по номеру) чтобы его изменить.
Для примера, функция записи нового документа из Компл. в ТиС
Функция ВыгрузитьСтрокуРасход(тд, КодОбмена, ТекБаза, v7, Опер = "")            
   СпрКонтр = v7.CreateObject("Справочник.Контрагенты");
   СпрФирмы = v7.CreateObject("Справочник.Фирмы");  
   СпрВалюты = v7.CreateObject("Справочник.Валюты");
   СпрВалюты.НайтиПоКоду("643");  
   СпрПольз = v7.CreateObject("Справочник.Пользователи");
   СпрПольз.НайтиПоКоду("change");          
   КодБазы = ТекБаза.ПолучитьАтрибут("Код");
   Если СпрФирмы.НайтиПоКоду(тд.КодФирмы) = 0 Тогда
       Возврат "";
   КонецЕсли;
   Если СпрКонтр.НайтиПоКоду(тд.КодКонтрагента)=0 Тогда
       Возврат "";
   КонецЕсли;                            
   Док = v7.CreateObject("Документ.СтрокаВыпискиРасход");
   Док.Новый();
   Док.Комментарий = СокрЛП(тд.внНомерДокумента) +" "+ СокрЛП(тд.СодержаниеПроводки) ;
   Док.ДатаДок = Дата(тд.ДатаДок) ;
   Док.УстановитьНовыйНомер();
   Док.Автор    = СпрПольз.ТекущийЭлемент();
   Док.Фирма    = СпрФирмы.ТекущийЭлемент();
   Док.ЮрЛицо    = Док.Фирма.ЮрЛицо ;    
   Док.БанковскийСчет = Док.Фирма.ОсновнойСчет;
   Док.КодОперации = v7.Перечисление.КодыОпераций.ОплатаПоставщику ;
   Док.Контрагент  = СпрКонтр.ТекущийЭлемент();
   Док.Договор = Док.Контрагент.ОсновнойДоговор ;
   Док.Валюта = СпрВалюты.ТекущийЭлемент();  
   Док.Курс = 1 ;
   Док.Кратность = 1 ;            
   Док.Сумма = тд.Сумма ;
   Док.СуммаВзаиморасчетов = тд.Сумма ;
   Док.Записать();            
   Док.Провести();
   ЖурДок = v7.CreateObject("Документ");
   ЖурДок.НайтиДокумент(Док);
   Возврат ЖурДок.ТекущийДокумент();
КонецФункции

таблица значений тд содержит все необходимые данные (из запроса выполненного ранее).
Надо осуществить Вход во внешнюю базу, поиск документа по номеру, распровести, внести изменения (сумма), записать, провести.
1 andrewks
 
11.06.12
09:35
что конкретно не получается?
или
сколько?
2 Последняя_
Надежда
 
11.06.12
09:39
(1) не находит документ, похоже что-то не правильно делаю

КодБазы = ТекБаза.ПолучитьАтрибут("Код");
ДокИщем = v7.CreateObject("Документ.СтрокаВыпискиРасход");
ДокИщем.НайтиПоНомеру(СокрЛП(тд.НомерДокумента));
3 andrewks
 
11.06.12
09:41
тип у тд.НомерДокумента делай Строка(РазрядностьНомера), и СокрЛП() выкинь
4 Касандер72
 
11.06.12
09:45
(0) вопрос на засыпку - зачем целая кодла доков ?
если переписать ручками - можно же и одним
5 Касандер72
 
11.06.12
09:47
+(4) упс, сори, если типовая - вопрос снят ... там много творений чудных ...
6 Последняя_
Надежда
 
11.06.12
09:49
(3) не помогло.
(4) пока в таком виде устраивает, да и доделать надо.
7 Касандер72
 
11.06.12
09:56
(6) и не поможет из-за: Док.УстановитьНовыйНомер();
тут не доделать, а переделать надо)
8 Последняя_
Надежда
 
11.06.12
10:00
(7) у меня нету этого! функция в (0) дана для примера - через нее записываются новые документы. А мне же нужна новая функция, которая найдет уже ранее созданный документ.
9 Касандер72
 
11.06.12
10:03
(8) Все нормально работает. Надо теперь осуществить "обновление" ранее перенесенных документов, если присутствует разница в суммах.
Тебе не только здесь модерить нужно - дописать проверку на изменение данных, но и при приеме придется
10 Последняя_
Надежда
 
11.06.12
10:06
(9) там уже есть проверка такая.
11 Ork
 
11.06.12
10:08
(8) Штатная функция НайтиПоНомеру чудеСТНо работает по ОЛЕ. Если внимательно почитать СП - в ней всего два параметра, которые по ОЛЕ также передаются без проблемм.
12 Ork
 
11.06.12
10:09
+(11) Непонятно в чем трудность поиска у ТС.
13 andrewks
 
11.06.12
10:10
кстати, да. может, за прошлый год перенос?
14 Касандер72
 
11.06.12
10:11
(12) да у неё типизация или длина номера  по ходу страдают - есть такой баг: числовой номер дока - вовсе не число)
15 Последняя_
Надежда
 
11.06.12
10:12
(11) Спасибо!
16 Последняя_
Надежда
 
11.06.12
10:13
+ (15) Проставила с датой - заработало!
17 Ork
 
11.06.12
10:14
(7) +100500. После Док.УстановитьНовыйНомер() искать используя ДокИщем.НайтиПоНомеру(СокрЛП(тд.НомерДокумента)) есть не совсем правильно.

В базе, которая формирует документы было бы неплохо просто запомнить новый установленный номер в базе-приемнике. И тогда уже по нему искать.
18 Последняя_
Надежда
 
11.06.12
10:26
(7) и (17) не правильно поняли!
Всем спасибо! Тема закрыта!
19 Касандер72
 
11.06.12
10:33
(18) как объяснила - таки поняли)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.