Различия

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

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

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