Имя: Пароль:
1C
1С v8
Исключение договоров
0 zzzLEXzzz
 
03.10.12
12:19
Привет. Стоит такая задача Вот в УТ в справочнике "контрагенты" есть вкладка "Счета и договора". И есть обработка которая выгружает с КПК приходно-кассовые ордера, и при формировании документа он берёт договор первый попавшийся. нужно чтобы обработка исключила договора в котором есть наименование "бонус" и "оборудования", сразу говорю я начинающий, и извиниюсь за тупые вопросы, вот код функции

функция ДобавитьПКО(Агент_,НомерЗаказаДелф,НомерЗаказа_,ДатаОперации_,ВремяОперации_,Контрагент_,Сумма_,АдресДоставки_,Касса_)
   
   
   Качество = Справочники.Качество.НайтиПоКоду("000000001");
   
   ОпрКонф = "0"+ Лев(СокрЛП(Контрагент_),1);
   
   Если Преф <> ОпрКонф Тогда
       //Сообщить("Контагент не данной системы");
       Возврат 0;
   КонецЕсли;
         
   //Сообщить("Контрагент - "+ Строка(Контрагент_));                          //алекс2
       
   //Сообщить("Контрагент - "+ Строка(Контрагент_));  
   //Алекс2 **************************************************************************************************
   Контрагент_ = УП(Контрагент_);
   
   Контрагент1С_=Справочники.Контрагенты;
   Договор1С_ = Справочники.ДоговорыКонтрагентов;
   Док_=Документы.ПриходныйКассовыйОрдер;    
   
   ТоргПред_=Справочники.мбАгенты.НайтиПоРеквизиту("ИмяКПК",Агент_.ИмяКПК);
   
   Док_=Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
   
   
   // Добиваем код нулями
   КодВР_=Контрагент_;
   Для ИТ_=1 по 9-СтрДлина(Контрагент_) Цикл
       КодВР_="0"+КодВР_;  
   КонецЦикла;
   Контрагент_=КодВР_;
   //Сообщить("Контрагент с доб 0 - "+ Строка(Контрагент_));       //Алекс2 ***********************************************************************
   
   Расшифровка = Док_.РасшифровкаПлатежа.Добавить();
   Док_.IdMobile=Агент_.ИмяКПК+НомерЗаказаДелф+ДатаОперации_;
   Док_.ОтражатьВБухгалтерскомУчете = Истина;
   Док_.ОтражатьВНалоговомУчете = Истина;
   Док_.ОтражатьВУправленческомУчете = Истина;
   Док_.Оплачено = Истина;
   Док_.ОтраженоВОперУчете = Истина;
   Док_.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
   Док_.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;    
   Расшифровка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;    
   
   
   Док_.Организация=Справочники.Организации.НайтиПоКоду("000000001");
   Док_.Касса = Справочники.Кассы.НайтиПоКоду("000000001");
   
       Если Преф = "01" Тогда
   Если Касса_ = "1"  Тогда
       Док_.Организация=Справочники.Организации.НайтиПоКоду("000000001");
       Док_.Касса = Справочники.Кассы.НайтиПоКоду("000000001");
   ИначеЕсли Касса_= "2"  Тогда
       Док_.Организация=Справочники.Организации.НайтиПоКоду("000000002");
       Док_.Касса = Справочники.Кассы.НайтиПоКоду("000000002");
   КонецЕсли;
ИначеЕсли Преф = "02" Тогда
   Если Касса_ = "1"  Тогда
       Док_.Организация=Справочники.Организации.НайтиПоКоду("000000003");
       Док_.Касса = Справочники.Кассы.НайтиПоКоду("000000003");
   ИначеЕсли Касса_= "2"  Тогда
       Док_.Организация=Справочники.Организации.НайтиПоКоду("000000004");
       Док_.Касса = Справочники.Кассы.НайтиПоКоду("000000004");
   КонецЕсли;
ИначеЕсли Преф = "00" Тогда
   Сообщить ("Ошибка");
   КонецЕсли;


   
   
   
   Док_.Контрагент=Контрагент1С_.НайтиПоКоду(СокрЛП(Контрагент_),0);
   //Док_.Контрагент=Справочники.Контрагенты.НайтиПоКоду("000000317");
   Док_.ПринятоОт = СокрЛП(Док_.Контрагент);
   Док_.Основание = "выручка от реализации";

   
   Дог1С = Договор1С_.НайтиПоРеквизиту("Организация",Док_.Организация,,Док_.Контрагент);  
   
   Если СокрЛП(Дог1С) = "" Тогда
       Док_.ДоговорКонтрагента=Док_.Контрагент.ОсновнойДоговорКонтрагента;
   Иначе
       Док_.ДоговорКонтрагента = Дог1С;
   КонецЕсли;
   
   Док_.Дата=ТекущаяДата();
   Док_.КурсДокумента = 1;
   Док_.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("000000002");
   Расшифровка.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("000000002");
   Расшифровка.КурсВзаиморасчетов = 1;
   
   ПрефиксЮрЛицаФирмы = ?(СокрЛП(Док_.Организация.Префикс)="","0",СокрЛП(Док_.Организация.Префикс));
   Док_.УстановитьНовыйНомер(СокрЛП(ПрефиксЮрЛицаФирмы));
   
//    Док_.Комментарий = ВРег(СокрЛП("МБ!!! "+""+ТипОплаты_М+" "+Описание_));
   Док_.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("643");
   Док_.СуммаДокумента = Сумма_;
       
   Расшифровка.ДоговорКонтрагента = Док_.ДоговорКонтрагента;
   Расшифровка.СуммаПлатежа = Сумма_;
   Расшифровка.СуммаВзаиморасчетов = Сумма_;
   Расшифровка.СуммаНДС = Сумма_*18/118;
       
   Док_.Записать();
   
   
   
   
КонецФункции
1 Deon
 
03.10.12
12:24
Здесь разумнее всего будет засунуть поиск договора в запрос, ибо методами встроенного языка как-то геморно получится
2 Deon
 
03.10.12
12:26
А почему все переменные с _ ?
3 zzzLEXzzz
 
03.10.12
12:33
а хз, не я писал обработку, я её только правлю
4 mikecool
 
03.10.12
12:35
выбрать в ТЗ список контрагент - правильный договор
при создании документа искать в ТЗ контрагента и подставлять договор
5 zzzLEXzzz
 
03.10.12
13:18
не могли бы вы показать где это и как в коде исправить, просто для меня это пока не понятно, пожалуйста
2 + 2 = 3.9999999999999999999999999999999...