Имя: Пароль:
1C
1С v8
Загрузка платежек из банк клиента в 1С
0 heavenly
 
26.08.11
00:00
Платформа 8.2.13.219
Комплексная Автоматизация 1.1.11.1
Используется обратка КлиентБанк.
Проблема в том, что в сформированных входящих платежных поручениях не указывается сделка, а именно заказ покупателя.
Взаиморасчеты в договорах заказов покупателей ведутся по договору в целом, но поскольку стоит галка о 100 % предоплате, отгрузить товар не получается, если в платежное поручение не указать в качестве сделки номер заказа. Можно ли сделать так, чтобы данная обработка формировала платежные поручения с уже проставленной сделкой? Это обработку придется править? или может просто где-то галочку поставить?
1 heavenly
 
26.08.11
09:51
Up
2 nicxxx
 
26.08.11
09:54
сначала ответьте себе на вопрос - как обработка узнает о том, какую сделку нужно выбрать в платежке?
3 heavenly
 
26.08.11
09:59
Заказ на основании договора, а у каждого заказа свой договор. Договор в платежке фигурирует, почему же она не может на основании него выбрать и сделку (заказ)?
4 Eugene_life
 
26.08.11
10:01
(3) пактамушта по каждому договору может быть куча сделок
5 nicxxx
 
26.08.11
10:04
штатно, при загрузке из банка, выбирается любой договор из тех, что проходят фильтр "СПокупателем" или "СПоставщиком"
6 heavenly
 
26.08.11
10:17
(4) в случае если договор делать по заказам, то при загрузке платежек ругается на отсутствие сделки и тем самым платежке не формируется.
7 Eugene_life
 
26.08.11
10:18
(6) ну, придется ручками разносить. Или допиливай обработку.
8 heavenly
 
26.08.11
10:24
(7)сейчас ручками и разносим. Просто при большем количестве платежек запаривает проставлять сделки, когда каждому договору соответствует всего одна сделка (заказ).
9 nicxxx
 
26.08.11
10:29
(8) ты в код поиска договора заглядывал? вот фильтр запроса:
ТекстФильтра = "
   |    ДоговорыКонтрагентов.Владелец = &ВладелецДоговора
   |    И ДоговорыКонтрагентов.Организация = &ОрганизацияДоговора
   |    И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ"
   +?(СписокВидовДоговора<>неопределено,"
   |    И ДоговорыКонтрагентов.ВидДоговора В (&СписокВидовДоговора)","");

Если у тебя будет 10 договоров с покупателями у какого-то клиента, как ты сможешь узнать какой договор надо выбрать?
10 heavenly
 
26.08.11
10:57
(9)речь не про автоматический выбор договора, а про автоматическую подстановку сделки (заказа покупателя) на основании выбранного договора в платежном поручении. Договор я выберу - не проблема, но хотелось бы чтобы в платежной поручении автоматически указывалась бы сделка (заказ покупателя) на основании этого договора.
11 heavenly
 
26.08.11
11:40
пилить обработку?
12 heavenly
 
26.08.11
15:47
Других вариантов нет?
13 heavenly
 
27.08.11
00:00
В модуле объекта обработки КлиентБанк нашел следующую строчку

Сделка = Документы["Заказ"+?(ЗаказПокупателя, "Покупателя", "Поставщику")].ПустаяСсылка()

т.е. действительно при формировании платежки выбирается пустая строка. А как теперь выбрать первую строку с отбором по договору контрагента?
14 nicxxx
 
27.08.11
06:56
договор где будешь выбирать? в обработке Банк-клиент? тогда конечно ее допилить надо, именно в том месте, которые ты указал в (13).
ну а запрос выбора сделки вобщем-то будет простейшим:
выбрать
 ссылка
из
 документ.заказпокупателя
где
 договор = &договор
 и
 контрагент = &контрагент
15 heavenly
 
27.08.11
12:38
(14) спасибо, будем пробовать.
16 Lamer1C
 
27.08.11
12:48
(0) флаг "Вести по документам расчетов" в каком состоянии в договорах?
17 heavenly
 
27.08.11
12:57
(16) выключен
18 Lamer1C
 
27.08.11
13:41
(17)а зачем тогда конкретную сделку указывать? если конечно как в (0) "..по договору в целом.."
19 heavenly
 
27.08.11
13:56
(18) затем чтобы контролировать оплату по заказу, поскольку в договоре стоит галка о 100% предоплате
20 heavenly
 
27.08.11
19:56
Сделал так
Процедура УстановитьТипСделки(ДокументОбъект)

   ДоговорКонтрагента = ДокументОбъект.РасшифровкаПлатежа[0].ДоговорКонтрагента;
   Если ЗначениеЗаполнено(ДоговорКонтрагента) И НЕ ЗначениеЗаполнено(ДокументОбъект.РасшифровкаПлатежа[0].Сделка) Тогда
       
       ТипЗаказа=УправлениеДенежнымиСредствами.ОпределитьПараметрыВыбораСделки(ДокументОбъект.ВидОперации).ТипЗаказа;
       ЗаказПокупателя = ТипЗаказа = "ЗаказПокупателя";
       Сделка = Неопределено;
       
       Если ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом
           Или ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам Тогда
           
           //Сделка = Документы["Заказ"+?(ЗаказПокупателя, "Покупателя", "Поставщику")].ПустаяСсылка()
           Запрос = Новый Запрос;
           Запрос.УстановитьПараметр("ДоговорКонтрагента",ДоговорКонтрагента);
           Запрос.Текст =
           "ВЫБРАТЬ
           |    "+ТипЗаказа+".Ссылка
           |ИЗ
           |    Документ."+ТипЗаказа+" КАК "+ТипЗаказа+"
           |ГДЕ
           |    "+ТипЗаказа+".ДоговорКонтрагента = &ДоговорКонтрагента";
           РезультатЗапроса = Запрос.Выполнить();
           Если РезультатЗапроса.Пустой() Тогда
               Сообщить ("Договору контрагента " + ДоговорКонтрагента + " не соответствует ни один заказ");
               Сделка = Документы["Заказ"+?(ЗаказПокупателя, "Покупателя", "Поставщику")].ПустаяСсылка()
           Иначе
               Выборка = РезультатЗапроса.Выбрать();
               Выборка.Следующий();
               Если Выборка.Следующий() = Ложь Тогда
                   Сделка = Выборка.Ссылка;
               Иначе
                   Сообщить ("Договору контрагента " + ДоговорКонтрагента + " соответствует более чем один заказ");
                   Сделка = РезультатЗапроса.Выгрузить().ВыбратьСтроку().Ссылка;
               КонецЕсли;
           КонецЕсли;
                                   
       ИначеЕсли ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоСчетам тогда
           
           НадписьСделка = "Счет "+?(ЗаказПокупателя,"покупателю:", "поставщика:");
           Сделка = Документы["СчетНаОплату"+?(ЗаказПокупателя, "Покупателю", "Поставщика")].ПустаяСсылка()
           
       КонецЕсли;
       
       // Поменяем значение сделки, если она не того типа.
       Если ТипЗнч(ДокументОбъект.РасшифровкаПлатежа[0].Сделка) <> ТипЗнч(Сделка) Тогда
           
           ДокументОбъект.РасшифровкаПлатежа[0].Сделка = Сделка;
           
       КонецЕсли;
       
   КонецЕсли;

КонецПроцедуры // УстановитьТипСделки()
21 Lamer1C
 
27.08.11
22:03
(20) тогда вид договора - "по заказу". неправильный подод у тебя..
22 heavenly
 
27.08.11
22:47
(21)Если выбирать вид договора по заказу, тогда (6) ;)
23 Lamer1C
 
27.08.11
22:50
(22) ну вот как раз тут правильно дописать, на мой взгляд. хотя конечно тебе виднее, все зависит от ситуации.. у нас тоже 100% предоплата, правда пока без заказов, хотя думаю будет в будущем, придется тоже пилить