|
проверка заказов при создании нового документа | ☑ | ||
---|---|---|---|---|
0
spapin87
19.08.13
✎
14:17
|
Добрый день. Подскажите как лучше организовать проверку по заказам в новом документе корректировка заказа. Т.е. у меня есть документ Поступления, у которого есть доп колонкуа СкКол(проставляется при приходе товара из файла СФ). Если колонки количество и СкКол не равны мне надо сделать документы: Возврат поставщику и Корректировка заказа покупателя.
Но проблема в том, что приход может быть по нескольким заказам и по каждому заказу надо создать свой документ корректировки с позициями, количество у которых не равны. Как лучше сделать? ТекПользователь = глЗначениеПеременной("глТекущийПользователь"); ТЗТоварыПеремещения = новый ТаблицаЗначений; ТЗТоварыПеремещения.Колонки.Добавить("Номенклатура"); ТЗТоварыПеремещения.Колонки.Добавить("Количество"); ТЗТоварыПеремещения.Колонки.Добавить("ЗаказанноеКоличество"); ТЗТоварыПеремещения.Колонки.Добавить("ДокументРезерва"); ТЗТоварыПеремещения.Колонки.Добавить("Коэффициент"); ТЗТоварыПеремещения.Колонки.Добавить("ЕдиницаИзмерения"); ТЗТоварыПеремещения.Колонки.Добавить("ЕдиницаИзмеренияМест"); ТЗТоварыПеремещения.Колонки.Добавить("Качество"); ТЗТоварыПеремещения.Колонки.Добавить("ВалютаДокумента"); ТЗТоварыПеремещения.Колонки.Добавить("СтавкаНДС"); ТЗТоварыПеремещения.Колонки.Добавить("Цена"); ТЗТоварыПеремещения.Колонки.Добавить("СкладОрдер"); ТЗТоварыПеремещения.Колонки.Добавить("Заказ"); ТЗТоварыПеремещения.Колонки.Добавить("ЗаказПоставщику"); ТЗТоварыПеремещения.Колонки.Добавить("ФлагНовогоЗаказа"); РазличноеКоличество = товары.Итог("Количество") - товары.Итог("СкКол"); Если РазличноеКоличество > 0 Тогда ТекДокументПоступления = ЭтотОбъект.Ссылка; Для Каждого строка Из ТекДокументПоступления.Товары Цикл Если строка.СкКол < строка.Количество Тогда ОстатокОтПоступления = строка.Количество - Строка.СкКол; СтрокаТЗ = ТЗТоварыПеремещения.Добавить(); СтрокаТЗ.Номенклатура = строка.Номенклатура; СтрокаТЗ.Количество = ОстатокОтПоступления; СтрокаТЗ.ЗаказанноеКоличество = строка.Количество; СтрокаТЗ.Коэффициент = 1; СтрокаТЗ.ЕдиницаИзмерения = строка.Номенклатура.ЕдиницаХраненияОстатков; СтрокаТЗ.ЕдиницаИзмеренияМест = строка.Номенклатура.ЕдиницаИзмеренияМест; СтрокаТЗ.Качество = Справочники.Качество.Новый; СтрокаТЗ.СтавкаНДС = строка.СтавкаНДС; СтрокаТЗ.Цена = строка.Цена; СтрокаТЗ.СкладОрдер = СкладОрдер; СтрокаТЗ.Заказ = строка.Заказ; СтрокаТз.ЗаказПоставщику = строка.ЗаказПоставщику; КонецЕсли; КонецЦикла; //Создадим документ возврата поставщику Если ТЗТоварыПеремещения.Количество() > 0 Тогда ДокументВозврата = Документы.ВозвратТоваровПоставщику.СоздатьДокумент(); ДокументВозврата.Дата = ТекущаяДата(); ДокументВозврата.Организация = ТекДокументПоступления.Организация; ДокументВозврата.Контрагент = Контрагент; ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокументВозврата, глЗначениеПеременной("глТекущийПользователь"), глЗначениеПеременной("ВалютаРегламентированногоУчета"), "Закупка", ,); Если ДокументВозврата.Организация = Справочники.Организации.ПустаяСсылка() тогда нашаглавнаяорганизация =УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь, "ОсновнаяОрганизация"); ДокументВозврата.Организация = нашаглавнаяорганизация; Док = ТекДокументПоступления.получитьобъект(); Док.организация = нашаглавнаяорганизация; Док.Записать(); КонецЕсли; ДокументВозврата.Товары.Загрузить(ТЗТоварыПеремещения); ДокументВозврата.Записать(); ДокументВозврата.ЗаполнитьПоСериям(); ДокументВозврата.Записать(РежимЗаписиДокумента.Проведение); Сообщить("Создан документ:" + ДокументВозврата); КонецЕсли; //Создадим документ корректировки заказа покупателя Если ТЗТоварыПеремещения.Количество() > 0 Тогда ТЗЗаказов = ТЗТоварыПеремещения.Скопировать(); Для каждого стТЗЗаказов из ТЗЗаказов цикл ДокКорректировки = Документы.КорректировкаЗаказаПокупателя.СоздатьДокумент(); ДокКорректировки.Дата = ТекущаяДата(); ДокКорректировки.ЗаказПокупателя = стТЗЗаказов.Заказ; Для каждого стрТЗТоварыПеремещения из ТЗТоварыПеремещения цикл Если стрТЗТоварыПеремещения.Заказ = стТЗЗаказов.Заказ тогда стрДокументКорректировки = ДокКорректировки.Товары.Добавить(); стрДокументКорректировки.Номенклатура = стрТЗТоварыПеремещения.Номенклатура; стрДокументКорректировки.Количество = -1*стрТЗТоварыПеремещения.Количество; стрДокументКорректировки.Коэффициент = 1; стрДокументКорректировки.ЕдиницаИзмерения = стрТЗТоварыПеремещения.ЕдиницаИзмерения; стрДокументКорректировки.Цена = стрТЗТоварыПеремещения.Цена; СуммаВКорректировку = стрТЗТоварыПеремещения.Цена * стрТЗТоварыПеремещения.Количество; стрДокументКорректировки.Сумма = -СуммаВКорректировку; СуммаНДСВКорректировку = (СуммаВКорректировку/118*18)* стрТЗТоварыПеремещения.Количество; стрДокументКорректировки.СуммаНДС = -СуммаНДСВКорректировку; стрДокументКорректировки.Размещение = стрТЗТоварыПеремещения.СкладОрдер; КонецЕсли; КонецЦикла; КонецЦикла; ДокКорректировки.Записать(РежимЗаписиДокумента.Запись); Сообщить("Создан документ " + ДокКорректировки); КонецЕсли; КонецЕсли; |
|||
1
dka80
19.08.13
✎
14:22
|
а потом сделали документ задним числом и все стало совсем покрыто мраком...
|
|||
2
spapin87
19.08.13
✎
14:23
|
(2)Стоят запреты на проведение документов задним числом
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |