|
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) как объяснила - таки поняли)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |