Это старая версия документа.


Способ реализации внутренних перещений товаров

Описание ситуации:

  • требуется перемещение товаров с одного поднадзорного объекта на другой со сменой владельца или без
  • операция отражается в 1С документом ПеремещениеТоваров (для примера)

Порядок изменений:

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