Различия
Здесь показаны различия между двумя версиями данной страницы.
отрывки:перемещение_товаров [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> |