|
Списание/оприходование партий одним документом Ут 10.3 | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
10.05.16
✎
09:09
|
Здравствуйте.
Не могу никак решить задачу. У нас есть документ Ремонт, который списывает товары со склада, по партиям и т.д... Но есть иногда потребность этим же типом документа возвращать эти товары на склад, которые находятся в ТЧ ТоварыВозврат. Все хорошо работает если, отдельным документом списывать Товары или оприходововать ТоварыВозврат. Но если надо и то и другое, то наши возвраты проводятся, а типовые функции списания уже не делают движений. Не важно, ставлю я свою процедуру до или после типовой процедуры проведения. ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, Отказ, Заголовок); // Типовая - списание // Наш код: Движения.ТоварыВНТТ.Записывать = Истина; Для Каждого Стр ИЗ ТоварыВозврат Цикл д = Движения.ТоварыВНТТ.ДобавитьПриход(); д.Период = Дата; д.Количество = стр.Количество; д.Номенклатура = стр.Номенклатура; д.СерияНоменклатуры = стр.СерияНоменклатуры; д.Склад = Склад; д.ХарактеристикаНоменклатуры = стр.ХарактеристикаНоменклатуры; д.ЦенаВРознице = стр.Цена; д.ТоварТара = Перечисления.ТоварТара.Товар; КонецЦикла; |
|||
1
Звездец
10.05.16
✎
09:11
|
Скорее всего забываешь записать. Лучше весь код покажи
|
|||
2
Boudybuilder
10.05.16
✎
09:12
|
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Перем Заголовок, СтруктураШапкиДокумента, ТаблицаПоТоварам; Если мУдалятьДвижения Тогда ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ); КонецЕсли; ТабДвижРем = ПолучитьТаблицуДвиженийДока(); мТекущаяСхемаНалогообложения = НалоговыйУчет.ПолучитьСхемуНалогообложения(Дата,Организация); ПодготовитьСтруктуруШапкиДокумента(Заголовок, СтруктураШапкиДокумента); ПроверитьЗаполнениеШапки(СтруктураШапкиДокумента, Отказ, Заголовок); УправлениеДопПравамиПользователей.ПроверитьДопустимостьЦенОтпуска(ЭтотОбъект, "Товары", Отказ); ПодготовитьТаблицыДокумента(СтруктураШапкиДокумента, ТаблицаПоТоварам); Для каждого Стр Из ТабДвижРем Цикл Если Стр.КолОст = 0 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "ID: "+Стр.ID+" отсутствует на складе "+Склад; Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; КонецЦикла; Если Не Отказ Тогда // ВОЗВРАТ ТОВАРОВ НА СКЛАД // Снимем использованые комплектующие из ремонта и вернем их на склад Если ТоварыВозврат.Количество() > 0 Тогда // Оприходуем товары на НТТ Если Склад.ВидСклада = Перечисления.ВидыСкладов.НТТ Тогда Движения.ТоварыВНТТ.Записывать = Истина; Для Каждого Стр ИЗ ТоварыВозврат Цикл д = Движения.ТоварыВНТТ.ДобавитьПриход(); д.Период = Дата; д.Количество = стр.Количество; д.Номенклатура = стр.Номенклатура; д.СерияНоменклатуры = стр.СерияНоменклатуры; д.Склад = Склад; д.ХарактеристикаНоменклатуры = стр.ХарактеристикаНоменклатуры; д.ЦенаВРознице = стр.Цена; д.ТоварТара = Перечисления.ТоварТара.Товар; КонецЦикла; КонецЕсли; // Оприходуем партии товаров Запрос = Новый Запрос("ВЫБРАТЬ | П.Номенклатура, | П.ХарактеристикаНоменклатуры, | П.СерияНоменклатуры, | П.ДокументОприходования, | П.СтатусПартии, | П.Заказ, | П.Качество, | П.Стоимость / Д.Количество / Д.Коэффициент КАК Стоимость, | П.КодОперации, | П.СписаниеПартий, | П.НомерКорСтроки, | П.ДокументДвижения, | П.ДокументДвиженияПериод, | П.НомерСтрокиСписанныхТоваров, | Д.Количество / Д.Коэффициент КАК Количество |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах КАК П | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ФанРемонтВнутренний.ТоварыВозврат КАК Д | ПО П.Номенклатура = Д.Номенклатура | И П.ХарактеристикаНоменклатуры = Д.ХарактеристикаНоменклатуры | И П.Регистратор = Д.ДокументСписания |ГДЕ | Д.Ссылка = &Ссылка"); Запрос.УстановитьПараметр("Ссылка",Ссылка); тВозврат = Запрос.Выполнить().Выгрузить(); Движения.ПартииТоваровНаСкладах.Записывать = Истина; Для Каждого Стр ИЗ тВозврат Цикл д = Движения.ПартииТоваровНаСкладах.ДобавитьПриход(); д.Период = Дата; д.ДокументОприходования = Стр.ДокументОприходования; д.Номенклатура = Стр.Номенклатура; д.ХарактеристикаНоменклатуры = Стр.ХарактеристикаНоменклатуры; д.Количество = Стр.Количество; д.Стоимость = Стр.Стоимость; КонецЦикла; КонецЕсли; // Подготовим таблицу товаров для проведения. ТаблицаПоСкидкам = ПодготовитьТаблицуСкидок(ТаблицаПоТоварам, СтруктураШапкиДокумента); СтруктураШапкиДокумента.Вставить("ПартияРемонта",ТабДвижРем[0].Документ); ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, Отказ, Заголовок); КонецЕсли; //Регистр Стоимость Ремонтов Движения.ФанСтоимостьРемонтов.Записывать = Истина; Движения.ФанСтоимостьРемонтов.Очистить(); Для Каждого Строка Из Товары Цикл Движение = Движения.ФанСтоимостьРемонтов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.ID = ID; Движение.Работы = Строка.Работы; Движение.Сервис = Мастер; Движение.Цена = Строка.Сумма; Движение.ГарантийныйРемонт = ГарантийныйРемонт; Движение.НоменклатураРемонта = Строка.Номенклатура; Движение.СерияНоменклатурыРемонта = Строка.СерияНоменклатуры; Движение.ХарактеристикаНоменклатурыРемонта = Строка.ХарактеристикаНоменклатуры; Движение.Количество = Строка.Количество; Движение.ЕдиницаИзмерения = Строка.ЕдиницаИзмерения; Движение.ДокументОприходования = СтруктураШапкиДокумента.ПартияРемонта; Движение.ГарантийныйСрок = ГарантийныйСрок; КонецЦикла; // регистр ФанСостояниеРемонтов Движения.ФанСостояниеРемонтов.Записывать = Истина; Движения.ФанСостояниеРемонтов.Очистить(); Движение = Движения.ФанСостояниеРемонтов.Добавить(); Движение.Период = Дата; Движение.Состояние = Состояние; Движение.ID = ID; Движение.ГарантийныйРемонт = ГарантийныйРемонт; // Продажи ///////////////////////////////////////////// Движения.Продажи.Записывать = Истина; Движения.Продажи.Очистить(); Для Каждого Стр Из Товары Цикл Если Стр.Номенклатура.ВидНоменклатуры.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга Тогда Продолжить; КонецЕсли; Д = Движения.Продажи.Добавить(); Д.Период = Дата; Д.Организация = Организация; Д.Подразделение = ДокументОприходования.Подразделение; Д.Номенклатура = Стр.Номенклатура; Д.ХарактеристикаНоменклатуры = Стр.ХарактеристикаНоменклатуры; Д.Контрагент = Контрагент; Д.Количество = Стр.Количество/Стр.Коэффициент; Д.ДокументПродажи = Ссылка; КонецЦикла; КонецПроцедуры |
|||
3
Масянька
10.05.16
✎
09:13
|
(1) +100 (насчет всего кода).
А может ТЧ (куда пихается) уже пустая. |
|||
4
Boudybuilder
10.05.16
✎
09:14
|
(3) Хотя что я там забыть могу, если при срабатывании моей процедуры, все ок, а не проводится типовая.
Может как то надо перед запуском моей процедуры типовую записать, что ли? Моя как бы затирает расходные движения типовой. |
|||
5
Boudybuilder
10.05.16
✎
09:15
|
(3)
Я свою процедуру пробовал ставить до или после типовой. Один результат. |
|||
6
Масянька
10.05.16
✎
09:20
|
(5) А если ТоварыВозврат заменить на тВозврат?
|
|||
7
Звездец
10.05.16
✎
09:29
|
3 раза код просмотрел, а где собственно списание со склада?
возврат вижу, партии возврата вижу, продажи и фин состояние вижу. А списание то где? И вообще, почему ННТ используете, по мне как-то не очень такой выбор |
|||
8
Boudybuilder
10.05.16
✎
09:44
|
(7) Нтт, ну понятно что не выбор, но пока так.
ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, Отказ, Заголовок);// Типовая - списание |
|||
9
Звездец
10.05.16
✎
09:48
|
(8) отладчиком на нее и смотри что передается в этом случае
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |