Это старая версия документа.
Способ реализации внутренних перещений товаров
Описание ситуации:
- требуется перемещение товаров с одного поднадзорного объекта на другой со сменой владельца или без
- операция отражается в 1С документом ПеремещениеТоваров (для примера)
Порядок изменений:
- Внести изменения в справочник АСП_ВидыДокументов1С:
Наименование Вид документа Тип операции Код операции Перемещение ПеремещениеТоваров Перемещение - отправка ПеремещениеТоваров Исходящий STEP1 Перемещение - получение ПеремещениеТоваров Входящий STEP2 - Внести изменения в модуль АСП_Общие:
- Процедура СоздатьВетДокиПоОснованию:
Функция СоздатьВетДокиПоОснованию(Обработка, Документ) Экспорт СписСерт = 0; // для перемещений перехватываем логику создания сертификатов и пускаем по сценарию STEP1 Если ТипЗнч(Документ) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда СписСерт = Обработка.СформироватьОбновитьСертификаты1С(Документ, ОперацияПоКоду("STEP1")).Количество(); Иначе СписСерт = СписСерт + Обработка.СформироватьОбновитьСертификаты1С(Документ).Количество(); КонецЕсли; Возврат СписСерт; КонецФункции
- Процедура ПровестиПоОснованию:
Процедура ПровестиПоОснованию(Обработка, ВидДокумента, Документ) Экспорт // добавляем ВидДокумента во второй параметр для уточнённой выборки сертификатов по коду операции Если ВидДокумента.КодОперации = "STEP1" Тогда СписВетДок = АСП_Функции.ПолучитьСписокВетДокументов(Документ, ВидДокумента); Иначе СписВетДок = АСП_Функции.ПолучитьСписокВетДокументов(Документ); КонецЕсли; Для Каждого ВетДок Из СписВетДок Цикл Объект = ВетДок.ПолучитьОбъект(); Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); КонецЦикла; КонецПроцедуры
- Процедура ЗарегистрироватьПоОснованию:
Процедура ЗарегистрироватьПоОснованию(Обработка, ВидДокумента, Документ) Экспорт //Перехватываем ВидДокумента для изменения сценария регистрации Если ВидДокумента.Наименование = "Перемещение" Тогда Обработка.НачатьПоследовательнуюРегистрацию(); Обработка.ЗарегистрироватьТранспортнуюПартию(Документ, ОперацияПоКоду("STEP1")); Обработка.ЗарегистрироватьВходящуюПартию(Документ, ОперацияПоКоду("STEP2")); Обработка.ЗавершитьПоследовательнуюРегистрацию(); Возврат; КонецЕсли; // для остальных документов - обычный сценарий Если ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Входящий Тогда Обработка.ЗарегистрироватьВходящуюПартию(Документ); ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Исходящий Тогда Обработка.ЗарегистрироватьТранспортнуюПартию(Документ); ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Производственный Тогда Обработка.ЗарегистрироватьПроизводственнуюПартию(Документ); ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Инвентаризация Тогда Обработка.ЗарегистрироватьИнвентаризацию(Документ); КонецЕсли; КонецПроцедуры