Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

отрывки:перемещение_товаров [2017/12/27 19:40]
adminasp
отрывки:перемещение_товаров [2022/07/04 18:58]
Строка 1: Строка 1:
-====== Способ реализации внутренних перещений товаров ====== 
  
-Описание ситуации:​ 
-  * требуется перемещение товаров с одного поднадзорного объекта на другой со сменой владельца или без 
-  * операция отражается в 1С документом **ПеремещениеТоваров** (для примера) 
- 
-Порядок изменений:​\\ 
-  - Внести изменения в справочник **АСП_ВидыДокументов1С**:<​WRAP>​ 
-^ Наименование ​           ^ Вид документа ​     ^ Тип операции ^ Код операции ^ 
-| Перемещение ​            | ПеремещениеТоваров |              |              | 
-| Перемещение - отправка ​ | ПеремещениеТоваров | Исходящий ​   | STEP1        | 
-| Перемещение - получение | ПеремещениеТоваров | Входящий ​    | STEP2        | 
-</​WRAP>​ 
-  - Внести изменения в модуль **[[компоненты:​асп_общие|АСП_Общие]]**:​ 
-    - Процедура **СоздатьВетДокиПоОснованию**:<​1c>​Функция СоздатьВетДокиПоОснованию(Обработка,​ Документ) Экспорт 
-  
- СписСерт = 0; 
-        // для перемещений перехватываем логику создания сертификатов и пускаем по сценарию STEP1 
- Если ТипЗнч(Документ) = Тип("​ДокументСсылка.ПеремещениеТоваров"​) Тогда 
- СписСерт = Обработка.СформироватьОбновитьСертификаты1С(Документ,​ ОперацияПоКоду("​STEP1"​)).Количество();​  
- Иначе 
- СписСерт = СписСерт + Обработка.СформироватьОбновитьСертификаты1С(Документ).Количество();​ 
- КонецЕсли;​  
- Возврат СписСерт;​ 
-    
-КонецФункции 
-</1c> 
-    - Процедура **ПровестиПоОснованию**:<​1c>​Процедура ПровестиПоОснованию(Обработка,​ ВидДокумента,​ Документ) Экспорт 
-        // добавляем ВидДокумента во второй параметр для уточнённой выборки сертификатов по коду операции ​ 
- Если ВидДокумента.КодОперации = "​STEP1"​ Тогда 
- СписВетДок = АСП_Функции.ПолучитьСписокВетДокументов(Документ,​ ВидДокумента);​ 
- Иначе 
- СписВетДок = АСП_Функции.ПолучитьСписокВетДокументов(Документ);​ 
- КонецЕсли;​ 
-   ​ 
- Для Каждого ВетДок Из СписВетДок Цикл 
- Объект = ВетДок.ПолучитьОбъект();​ 
- Объект.Записать(РежимЗаписиДокумента.Проведение,​ РежимПроведенияДокумента.Неоперативный);​ 
- КонецЦикла;​ 
-КонецПроцедуры 
-</1c> 
-    - Процедура **ЗарегистрироватьПоОснованию**:<​1c>​Процедура ЗарегистрироватьПоОснованию(Обработка,​ ВидДокумента,​ Документ) Экспорт 
-  
- //​Перехватываем ВидДокумента для изменения сценария регистрации 
- Если ВидДокумента.Наименование = "​Перемещение"​ Тогда 
-      ​Обработка.НачатьПоследовательнуюРегистрацию();​ 
- Обработка.ЗарегистрироватьТранспортнуюПартию(Документ,​ ОперацияПоКоду("​STEP1"​));​ 
- Обработка.ЗарегистрироватьВходящуюПартию(Документ,​ ОперацияПоКоду("​STEP2"​));​ 
- Обработка.ЗавершитьПоследовательнуюРегистрацию();​ 
- Возврат;​ 
- КонецЕсли;​ 
-   
- // для остальных документов - обычный сценарий 
- Если ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Входящий Тогда 
- Обработка.ЗарегистрироватьВходящуюПартию(Документ);​ 
- ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Исходящий Тогда 
- Обработка.ЗарегистрироватьТранспортнуюПартию(Документ);​ 
- ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Производственный Тогда 
- Обработка.ЗарегистрироватьПроизводственнуюПартию(Документ);​ 
- ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Инвентаризация Тогда 
- Обработка.ЗарегистрироватьИнвентаризацию(Документ);​ 
- КонецЕсли;​ 
-  
-КонецПроцедуры 
-</1c>