Имя: Пароль:
1C
 
Автоматическое создание ПКО
0 okosv
 
11.03.10
13:44
Привет всем.
Проблема при создании ПКО, документ сам создается но не проводится, так как касса не устанавливается и договор контрагента.
Код следующий:

Попытка
   Сообщить("Создание ПКО...");
   НачатьТранзакцию();
   //Создаем приходный ордер
   ДокПКО = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
   ДокПКО.Организация = Справочники.Организации.НайтиПоКоду("000000001");
   ДокПКО.Касса = Касса;
   ДокПКО.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета;
   ДокПКО.ВалютаВзаиморасчетовРаботника = Константы.ВалютаРегламентированногоУчета;
   ДокПКО.КурсДокумента = 1;
   
   ДокПКО.Контрагент = СпрКонтр.Ссылка;
   ДокПКО.ДоговорКонтрагента = СпрДог;
   ДокПКО.Дата = ТекущаяДата();
   ДокПКО.СуммаДокумента = СуммаЗапроса;
   ДокПКО.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
   ДокПКО.ОтражатьВУправленческомУчете = Истина;
   ДокПКО.ОтражатьВБухгалтерскомУчете = Истина;
   ДокПКО.ОтраженоВОперУчете = Истина;
   ДокПКО.Оплачено = Истина;
   
   //Расшифровка
   НоваяСтрока = ДокПКО.РасшифровкаПлатежа.Добавить();
   НоваяСтрока.ДоговорКонтрагента = СпрДог;
   НоваяСтрока.КурсВзаиморасчетов = 1;
   НоваяСтрока.СтавкаНДС = 0;
   НоваяСтрока.СтавкаНСП = 0;
   
   ДокПКО.Записать();
   ЗафиксироватьТранзакцию();
   Сообщить("ПКО Создан!");
   
   Сообщить("Запрос обработан!");
Исключение
   Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
   ОтменитьТранзакцию();
КонецПопытки;


Код получения кассы:
Запрос = Новый Запрос("ВЫБРАТЬ
                     |    Кассы.Ссылка
                     |ИЗ
                     |    Справочник.Кассы КАК Кассы
                     |ГДЕ
                     |    Кассы.Родитель.ЭтоГруппа = Истина
                     |    И Кассы.Родитель.Наименование = ""ДИЛЕРЫ""");
Запрос.УстановитьПараметр("КодКассы", КодКассы);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() > 0 Тогда
   Сообщить("Касса найдена!");
   Касса = Выборка.Ссылка;
КонецЕсли;

Помогите камрады
1 okosv
 
11.03.10
13:46
Также не устанавливается сумма документа
2 чувак
 
11.03.10
13:48
В отладке "Выборка.Ссылка" что нибудь показывает?
3 чувак
 
11.03.10
13:48
Запрос = Новый Запрос("ВЫБРАТЬ
                     |    Кассы.Ссылка
                     |ИЗ
                     |    Справочник.Кассы КАК Кассы
                     |ГДЕ
                     |    Кассы.Родитель.ЭтоГруппа = Истина
                     |    И Кассы.Родитель.Наименование = ""ДИЛЕРЫ""");
Запрос.УстановитьПараметр("КодКассы", КодКассы);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
   Сообщить("Касса найдена!");
   Касса = Выборка.Ссылка;
КонецЕсли;
4 73
 
11.03.10
13:48
<Код получения кассы>
Параметр зачем?
Выборке Следующий() не помешает...
5 okosv
 
11.03.10
13:55
ЧЁРТ!!! Млин, пропустил этот момент спасибо, еще покопаюсь насчет договора...
6 okosv
 
11.03.10
13:58
С договором такая же история
теперь другая проблема не могу установить сумму документа, т.е. сумма устанавливается в расшифровке ПКО сумма без значения остается
7 okosv
 
11.03.10
14:09
Сумму тоже установил, следующим образом:

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

//Расшифровка
НоваяСтрока = ДокПКО.РасшифровкаПлатежа.Добавить();
НоваяСтрока.ДоговорКонтрагента = СпрДог;
НоваяСтрока.СтатьяДвиженияДенежныхСредств = Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
НоваяСтрока.КурсВзаиморасчетов = 1;
НоваяСтрока.СтавкаНДС = 0;
НоваяСтрока.СтавкаНСП = 0;
НоваяСтрока.СуммаВзаиморасчетов = СуммаЗапроса;
НоваяСтрока.СуммаПлатежа = СуммаЗапроса;



Но теперь другая проблема, документ при добавлении должен проводиться автоматически? или проведение нужно делать отдельной операцией?
И еще, при ручной проводке документа, выходит следующее сообщение:
"ПересчитатьИзВалютыВВалюту(): при пересчете обнаружен нулевой курс."
Регламентированный и управленческий учет ведется на одной и той же валюте, курс валюты установлен
8 okosv
 
11.03.10
14:14
С проведением разобрался, сделал так:

ДокПКО.Записать(РежимЗаписиДокумента.Проведение);


С сообщением

ПересчитатьИзВалютыВВалюту(): при пересчете обнаружен нулевой курс.

еще нет
9 mikecool
 
11.03.10
14:15
(8) а почему не используешь метод Заполнить()?
10 73
 
11.03.10
14:15
Константы.ВалютаРегламентированногоУчета.ПОЛУЧИТЬ()
11 okosv
 
11.03.10
14:16
(9)

где это надо использовать?
просто я новичок в 1С, и первый раз пробую
12 okosv
 
11.03.10
14:19
(10) Сделал
сообщение по поводу Валют все равно выходит
13 okosv
 
11.03.10
14:20
Попробовал открыть ПКО, созданный программно
В расшифровке стоит 1 руб = 1 руб
14 okosv
 
11.03.10
14:20
И еще, валюта договора в той же валюте что и регламентированный учет и управленческий учет
15 kn
 
11.03.10
14:29
КратностьВзаиморасчетов установи в (7)
16 okosv
 
11.03.10
14:31
Вот весь код:


Попытка
   Сообщить("Создание ПКО...");
   НачатьТранзакцию();
   //Создаем приходный ордер
   ДокПКО = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
   ДокПКО.Организация = Справочники.Организации.НайтиПоКоду("000000001");
   ДокПКО.Касса = Касса;
   ДокПКО.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета;
   ДокПКО.ВалютаВзаиморасчетовРаботника = Константы.ВалютаРегламентированногоУчета.Получить();
   ДокПКО.КурсДокумента = 1;
   
   ДокПКО.Контрагент = СпрКонтр.Ссылка;
   ДокПКО.Дата = ТекущаяДата();
   ДокПКО.СуммаДокумента = СуммаЗапроса;
   ДокПКО.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
   ДокПКО.ОтражатьВУправленческомУчете = Истина;
   ДокПКО.ОтраженоВОперУчете = Истина;
   ДокПКО.Оплачено = Истина;
   
   //Расшифровка
   НоваяСтрока = ДокПКО.РасшифровкаПлатежа.Добавить();
   НоваяСтрока.ДоговорКонтрагента = СпрДог;
   НоваяСтрока.КурсВзаиморасчетов = 1;
   НоваяСтрока.СуммаПлатежа = СуммаЗапроса;
   НоваяСтрока.КратностьВзаиморасчетов = 1;
   НоваяСтрока.СуммаВзаиморасчетов = СуммаЗапроса;
   НоваяСтрока.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("000000002");
   
   ДокПКО.Записать(РежимЗаписиДокумента.Проведение);
   ЗафиксироватьТранзакцию();
   Сообщить("ПКО Создан!");
   
   Сообщить("Запрос обработан!");
Исключение
   Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
   ОтменитьТранзакцию();
КонецПопытки;





Валюта ПКО не устанавливается
17 73
 
11.03.10
14:36
ДокПКО.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета.ПОЛУЧИТЬ()
18 okosv
 
11.03.10
14:44
(17)
ВАЙ!!! ВАЙ!!! Такую ошибку допустил, млин
Ну ладно, на ошибках учатся ;)))
Спасибо, всем

Special thanks for 73 :))))))))))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший