Имя: Пароль:
1C
1С v8
не выходит выбрать договор
,
0 binarick
 
18.10.12
17:45
Делаю обработку загрузки документов. Не выходит выбрать договор
Помогите кто может плиз )
...
ВходящийДокумент=Документы.ПоступлениеНаРасчетныйСчет.СоздатьДокумент();
...
ВходящийДокумент.ДоговорКонтрагента = ПолучитьДоговор(ТекущаяСтрока); ???? почему так не выходит ???

Получаю договор допустим тупым перебором:
Функция ПолучитьДоговор(Знач ТекущаяСтрока)
   НайденыйДоговор = 0;
   Договоры = Справочники.ДоговорыКонтрагентов;
   Выборка = Договоры.Выбрать();
   Пока Выборка.Следующий() Цикл
       Если СокрЛП(Выборка.Номер) = СокрЛП(ТекущаяСтрока[2]) Тогда
           Сообщить ("УРА Я НАШЁЛ !!! " + СокрЛП(Выборка.Номер));
           НайденыйДоговор = Выборка;
           Прервать;
       КонецЕсли;
   КонецЦикла;
   
   Если НайденыйДоговор = 0 Тогда
       Сообщить ("Не могу найти договор с номером: " + ТекущаяСтрока[2] + " внесите нового контрагента: " + ТекущаяСтрока[4]);
       НайденыйДоговор = "";
   КонецЕсли;

   Возврат НайденыйДоговор;
КонецФункции

Причём функция работает, на возврате действительно вижу значение  Выражения = Основной договор

заранее спасибо.
1 Amra
 
18.10.12
17:46
Потому что договор не соответсвует контрагенту
2 binarick
 
18.10.12
17:55
(1) Тоже так думал. пробую так
...
Договор= ПолучитьДоговор(ТекущаяСтрока);
ВходящийДокумент.Контрагент = ПолучитьФИО(ТекущаяСтрока,Договор);
ВходящийДокумент.ДоговорКонтрагента = Договор;
...

Функция ПолучитьФИО(Знач ТекущаяСтрока, Знач Договор);
   Если ПустаяСтрока(Договор) = Истина Тогда
       НайденыйКонтрагент = "";
       Сообщить ("Не могу найти владельца довора №" + Договор.Номер);
   Иначе
       НайденыйКонтрагент = Договор.Владелец;
   КонецЕсли;
   
   Возврат НайденыйКонтрагент;
КонецФункции

в результате имею обратную ситуацию когда вначале по договору нахожу владельца и ставлю его в контрагента, а затем ставлю этот же договор в договор.... и опять пусто (
3 Wobland
 
18.10.12
17:57
а выбрать по владельцу нельзя? если уж так крепко религия запрещает запросы
4 binarick
 
18.10.12
17:59
(3) потому что религия гласит, что в файле загрузки я имею только номер договора по нему я нахожу контрагента
Функция ПолучитьФИО()
а затем пытаюсь
ВходящийДокумент.ДоговорКонтрагента = Договор;
5 YF
 
18.10.12
18:00
(4) Другая религия гласит, что у договора с наименованием "Основной договор" обычно номер пустой
6 Wobland
 
18.10.12
18:01
(4) находи запросом и не морочь людям голову
7 binarick
 
18.10.12
18:01
(5) но есть таксировщик который вашу гипотезу опровергает
8 binarick
 
18.10.12
18:03
(6) зачем мне ещё запрос если я уже имею найденный договор в переменной ? просто не понимаю почему не встаёт
9 Wobland
 
18.10.12
18:04
(8) затем, что так православней. и этот вопрос отпадёт, и дальше ерундой заниматься не будешь
10 Amra
 
18.10.12
18:06
(8) А попробуй вместо Сообщить ("УРА Я НАШЁЛ !!! " + СокрЛП(Выборка.Номер)); поставить Сообщить ("УРА Я НАШЁЛ !!! " + СокрЛП(Выборка.Номер)+" "+ВЫборка.Владелец.Наименование);
и посмотри
11 YF
 
18.10.12
18:06
Вот тут ошибка

НайденыйДоговор = Выборка
12 Amra
 
18.10.12
18:07
(11) Кстати да) Тип то другой)
13 Wobland
 
18.10.12
18:07
+(11) выборка - это тебе не ссылка
14 binarick
 
18.10.12
18:09
ну вот спасибо YF. а то запрос, запрос. совсем я уже устал видать сегодня
15 Amra
 
18.10.12
18:10
(14) Запрос это не отменяет. Быдлокод вообщем, тем более без отбора по контрагенту даже
16 Wobland
 
18.10.12
18:11
(15) контрагента ему как раз найти нужно, как я понял. но г-код, да
17 binarick
 
18.10.12
18:12
(15) любите вы обругать тут )
я же упростил всё до нельзя чтобы показать
и вообще это пока только скелет программы
18 Wobland
 
18.10.12
18:13
(17) тебя ласково поучают делать быстро, оптимально и надёжно, а ты обзываешься
19 Amra
 
18.10.12
18:14
(17) То есть типа если выборка договоров была бы по конкретному контрагенту ты мы бы конечно не поняли, да
20 binarick
 
18.10.12
18:14
(18) ни кого не обозвал а лишь благодарю за участие
21 binarick
 
18.10.12
18:16
(19) ок, сорри, что до конца не упростил всё
22 binarick
 
18.10.12
19:22
сходил поужинал, мой сытый мозг написал:

ВходящийДокумент.ДоговорКонтрагента = ПолучитьДоговор(ТекущаяСтрока).Ссылка;

и всё равно нет договора...

наверное запрос буду ща писать ((
23 Wobland
 
18.10.12
19:29
(22) и не нужно их так бояться. попробуешь, понравится - за уши потом не оттащишь ;)
24 hhhh
 
18.10.12
20:09
пошел за попкорном.

перед нами 9999-я жертва документа ПоступлениеНаРасчетныйСчет.