|
УТ 11.4 Программное создание заказа поставщику | ☑ | ||
---|---|---|---|---|
0
hawk1
03.10.20
✎
15:33
|
При проведении ПКО создаю заказ поставщику
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда Если ТипЗнч(ТекущийОбъект.ДокументОснование) = Тип("ДокументСсылка.ЗаказКлиента") Тогда Отбор = Новый Структура; Отбор.Вставить("ВариантОплаты", Перечисления.ВариантыОплатыКлиентом.АвансДоОбеспечения); СтрокаАванса = ТекущийОбъект.ДокументОснование.ЭтапыГрафикаОплаты.НайтиСтроки(Отбор); Если ТекущийОбъект.СуммаДокумента >= СтрокаАванса[0].СуммаПлатежа Тогда ЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент(); ЗаказПоставщику.Дата = ТекущаяДата(); ЗаказПоставщику.Валюта = Константы.ВалютаРегламентированногоУчета.Получить(); ЗаказПоставщику.Организация = Объект.ДокументОснование.Организация; ЗаказПоставщику.Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(ЗаказПоставщику.Склад, ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовЗакупки")); ЗаказПоставщику.Приоритет = Справочники.Приоритеты.ПолучитьПриоритетПоУмолчанию(ЗаказПоставщику.Приоритет); ЗаказПоставщику.Партнер = Справочники.Партнеры.НайтиПоНаименованию(ТекущийОбъект.ДокументОснование.Товары[0].Номенклатура.Производитель.Наименование); ЗаказПоставщику.Статус = Перечисления.СтатусыЗаказовПоставщикам.Согласован; Для Каждого СтрокаЗаказа Из ТекущийОбъект.ДокументОснование.Товары Цикл Если Справочники.Партнеры.НайтиПоНаименованию(СтрокаЗаказа.Номенклатура.Производитель.Наименование) <> ЗаказПоставщику.Партнер Тогда ЗаказПоставщику.СуммаДокумента = ЗаказПоставщику.Товары.Итог("Сумма"); ЗаказПоставщику.Записать(РежимЗаписиДокумента.Проведение); ЗаказПоставщику = Документы.ЗаказПоставщику.СоздатьДокумент(); ЗаказПоставщику.Дата = ТекущаяДата(); ЗаказПоставщику.Валюта = Константы.ВалютаРегламентированногоУчета.Получить(); ЗаказПоставщику.Организация = Объект.ДокументОснование.Организация; ЗаказПоставщику.Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(ЗаказПоставщику.Склад, ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовЗакупки")); ЗаказПоставщику.Приоритет = Справочники.Приоритеты.ПолучитьПриоритетПоУмолчанию(ЗаказПоставщику.Приоритет); ЗаказПоставщику.Партнер = Справочники.Партнеры.НайтиПоНаименованию(СтрокаЗаказа.Номенклатура.Производитель.Наименование); ЗаказПоставщику.Статус = Перечисления.СтатусыЗаказовПоставщикам.Согласован; КонецЕсли; СтрокаТЧ = ЗаказПоставщику.Товары.Добавить(); СтрокаТЧ.Номенклатура = СтрокаЗаказа.Номенклатура; СтрокаТЧ.Характеристика = СтрокаЗаказа.Характеристика; СтрокаТЧ.Количество = СтрокаЗаказа.Количество; СтрокаТЧ.СтавкаНДС = СтрокаЗаказа.СтавкаНДС; СтрокаТЧ.ВидЦеныПоставщика = Справочники.ВидыЦенПоставщиков.НайтиПоНаименованию("Закупочная"); Отбор = Новый Структура; Отбор.Вставить("Номенклатура", СтрокаТЧ.Номенклатура); Отбор.Вставить("Партнер", ЗаказПоставщику.Партнер); Отбор.Вставить("ВидЦеныПоставщика", Справочники.ВидыЦенПоставщиков.НайтиПоНаименованию("Закупочная")); ВыборкаЦены = РегистрыСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(ТекущаяДата(), Отбор); Если ВыборкаЦены.Количество() > 0 Тогда Цена = ВыборкаЦены[0].Цена; Иначе Цена = 0; КонецЕсли; СтрокаТЧ.Цена = Цена; СтрокаТЧ.Сумма = СтрокаТЧ.Цена * СтрокаТЧ.Количество; СтрокаТЧ.СуммаСНДС = СтрокаТЧ.Сумма; КонецЦикла; ЗаказПоставщику.СуммаДокумента = ЗаказПоставщику.Товары.Итог("Сумма"); ЗаказПоставщику.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; КонецЕсли; КонецЕсли; Но при попытке проведения выдается сообщение о том что склад не заполнен. Если же не заполнять склад и приоритет, документ проводится, но поле количество в табличной части Товары остается пустым. Что не так? |
|||
1
hhhh
03.10.20
✎
16:05
|
(0) а где
СтрокаТЧ.КоличествоУпаковок = ??? это же поле Количество. Забыли? И строкаТЧ.Склад тоже нет. |
|||
2
breezee
03.10.20
✎
17:42
|
Почему нельзя сделать процедуру в которой сначала сделать проверки типо
Если ТипЗнч(ТекущийОбъект.ДокументОснование) <> Тип("ДокументСсылка.ЗаказКлиента") Тогда возврат; КонецЕсли; Если ТекущийОбъект.СуммаДокумента < СтрокаАванса[0].СуммаПлатежа Тогда возврат; КонецЕсли; А не писать 10 вложенных если? Почему обраащение к СтрокаАванса[0] без контрля что есть строки? |
|||
3
PuhUfa
03.10.20
✎
18:02
|
(0) >>Если ТипЗнч(ТекущийОбъект.ДокументОснование) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
Я правильно понимаю что заказ поставщику вводится на основании ЗаказКлиента? Тогда зачем вообще это все если в МО документа ЗаказПоставщику есть типовой: ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказКлиента") Тогда ЗаполнитьДокументНаОснованииЗаказа(ДанныеЗаполнения); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |