Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
отрывки:перемещение_товаров [2017/12/27 19:40] adminasp |
отрывки:перемещение_товаров [2018/05/03 11:04] juravka |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Способ реализации внутренних перещений товаров ====== | + | ====== Способ реализации внутренних перемещений товаров ====== |
Описание ситуации: | Описание ситуации: | ||
- | * требуется перемещение товаров с одного поднадзорного объекта на другой со сменой владельца или без | + | * требуется перемещение товаров с одного поднадзорного объекта на другой без смены владельца |
* операция отражается в 1С документом **ПеремещениеТоваров** (для примера) | * операция отражается в 1С документом **ПеремещениеТоваров** (для примера) | ||
Строка 8: | Строка 8: | ||
- Внести изменения в справочник **АСП_ВидыДокументов1С**:<WRAP> | - Внести изменения в справочник **АСП_ВидыДокументов1С**:<WRAP> | ||
^ Наименование ^ Вид документа ^ Тип операции ^ Код операции ^ | ^ Наименование ^ Вид документа ^ Тип операции ^ Код операции ^ | ||
- | | Перемещение | ПеремещениеТоваров | | | | + | | Перемещение | ПеремещениеТоваров | Исходящий | | |
| Перемещение - отправка | ПеремещениеТоваров | Исходящий | STEP1 | | | Перемещение - отправка | ПеремещениеТоваров | Исходящий | STEP1 | | ||
| Перемещение - получение | ПеремещениеТоваров | Входящий | STEP2 | | | Перемещение - получение | ПеремещениеТоваров | Входящий | STEP2 | | ||
Строка 64: | Строка 64: | ||
КонецПроцедуры | КонецПроцедуры | ||
</1c> | </1c> | ||
+ | - Процедура **ДозаполнитьПоляВетСертификата1С**:<1c>Процедура ДозаполнитьПоляВетСертификата1С(Ссылка, ОбъектСертификата) Экспорт | ||
+ | |||
+ | Если ОбъектСертификата.ВидДокумента.КодОперации = "STEP1" Тогда | ||
+ | ОбъектСертификата.Организация = Ссылка.СкладОтправитель; | ||
+ | ОбъектСертификата.Контрагент = Ссылка.СкладПолучатель; | ||
+ | Возврат; | ||
+ | ИначеЕсли ОбъектСертификата.ВидДокумента.КодОперации = "STEP2" Тогда | ||
+ | ОбъектСертификата.Организация = Ссылка.СкладПолучатель; | ||
+ | ОбъектСертификата.Контрагент = Ссылка.СкладОтправитель; | ||
+ | Возврат; | ||
+ | КонецЕсли; | ||
+ | |||
+ | // далее оставляем тело процедуры | ||
+ | ... | ||
+ | КонецПроцедуры | ||
+ | </1c> | ||
+ | - Процедура **ДействияПередРегистрациейВетСертификата**:<1c>Процедура ДействияПередРегистрациейВетСертификата(Основание, ВидДокумента) Экспорт | ||
+ | Если ВидДокумента.КодОперации = "STEP2" Тогда | ||
+ | СписПолучателей = АСП_Функции.ПолучитьСписокВетДокументов(Основание, ОперацияПоКоду("STEP2")); | ||
+ | Для Каждого Получатель Из СписПолучателей Цикл | ||
+ | // нужно изменить обработчик и получить второй документ по первому; | ||
+ | СписОтправителей = АСП_Функции.ПолучитьСписокВетДокументов(Основание, ОперацияПоКоду("STEP1"), Получатель.Разрез); | ||
+ | Об = Получатель.ПолучитьОбъект(); | ||
+ | //ОбъектДок = Документы.АСП_ВетеринарныйДокумент.НайтиПоНомеру(Ссылка.НомерВСД); | ||
+ | Об.ГУИДВходящегоВСД = СписОтправителей[0].ГУИД; | ||
+ | Об.Записать(); | ||
+ | КонецЦикла; | ||
+ | КонецЕсли; | ||
+ | КонецПроцедуры | ||
+ | </1c> | ||
+ | - Процедура **ДействияПослеПроведенияВетСертификата**:<1c>Процедура ДействияПослеПроведенияВетСертификата(Ссылка, Движения) Экспорт | ||
+ | Если Ссылка.ВидДокумента.КодОперации = "STEP1" Тогда | ||
+ | //1. найти уже созданное | ||
+ | Основание = Ссылка.ДокументОснование; | ||
+ | Если ТипЗнч(Основание) = Тип("ДокументСсылка.АСП_ВетеринарныйДокумент") Тогда | ||
+ | Основание = Основание.ДокументОснование; | ||
+ | КонецЕсли; | ||
+ | Спис = АСП_Функции.ПолучитьСписокВетДокументов(Основание, ОперацияПоКоду("STEP2"), Ссылка.Разрез); | ||
+ | |||
+ | Если Спис.Количество()=0 Тогда | ||
+ | Объект = Документы.АСП_ВетеринарныйДокумент.СоздатьДокумент(); | ||
+ | Иначе | ||
+ | Объект = Спис[0].Ссылка.ПолучитьОбъект(); | ||
+ | КонецЕсли; | ||
+ | |||
+ | //2. заполнить по шаблону | ||
+ | Шаблон = АСП_Функции.НайтиШаблон(Ссылка.Ссылка, ОперацияПоКоду("STEP2")); | ||
+ | Если НЕ Шаблон = Неопределено Тогда | ||
+ | ЗаполнитьЗначенияСвойств(Объект, Шаблон); | ||
+ | Объект.Шаблон = Шаблон; | ||
+ | КонецЕсли; | ||
+ | Объект.Дата = Ссылка.Дата+1; | ||
+ | Объект.ВидДокумента = ОперацияПоКоду("STEP2"); | ||
+ | Объект.ДокументОснование = Основание; | ||
+ | Объект.Контрагент = Ссылка.Организация; | ||
+ | Объект.Организация = Ссылка.Контрагент; | ||
+ | Объект.НомерВСД = Ссылка.НомерВСД; | ||
+ | Объект.ДатаВСД = Ссылка.ДатаВСД; | ||
+ | Объект.ДатаТТН = Ссылка.ДатаТТН; | ||
+ | Объект.НомерТТН = Ссылка.НомерТТН; | ||
+ | Объект.Разрез = Ссылка.Разрез; | ||
+ | |||
+ | // запрос получения информации по партии | ||
+ | Запрос = Новый Запрос( | ||
+ | "ВЫБРАТЬ | ||
+ | | АСП_ВходящиеПартии.Категория, | ||
+ | | АСП_ВходящиеПартии.Номенклатура, | ||
+ | | АСП_ВходящиеПартии.Единица, | ||
+ | | АСП_ВходящиеПартии.Кратность, | ||
+ | | АСП_ВходящиеПартии.Упаковка, | ||
+ | | АСП_ВходящиеПартии.ДатаВыработки, | ||
+ | | АСП_ВходящиеПартии.ДатаВыработкиКон, | ||
+ | | АСП_ВходящиеПартии.ДатаПросрочки, | ||
+ | | АСП_ВходящиеПартии.ДатаПросрочкиКон, | ||
+ | | АСП_ВходящиеПартии.Маркировки, | ||
+ | | АСП_ВходящиеПартии.Производитель | ||
+ | |ИЗ | ||
+ | | РегистрСведений.АСП_ВходящиеПартии КАК АСП_ВходящиеПартии | ||
+ | |ГДЕ | ||
+ | | АСП_ВходящиеПартии.НомерСтрокиТЧ = &НомерСтрокиТЧ | ||
+ | | И АСП_ВходящиеПартии.Регистратор = &Регистратор"); | ||
+ | |||
+ | //3. перезаполнение таблицы товаров | ||
+ | Объект.Товары.Очистить(); | ||
+ | Для Каждого Движение Из Движения.АСП_СкладскиеЗаписи Цикл | ||
+ | Нов = Объект.Товары.Добавить(); | ||
+ | Запрос.УстановитьПараметр("НомерСтрокиТЧ", Движение.НомерСтрокиТЧ); | ||
+ | Запрос.УстановитьПараметр("Регистратор", Движение.Сертификат); | ||
+ | Партия = Запрос.Выполнить().Выгрузить()[0]; | ||
+ | ЗаполнитьЗначенияСвойств(Нов, Партия); | ||
+ | Нов.Количество = Движение.Количество; | ||
+ | Нов.КоличествоУпаковок = Движение.КоличествоУпаковок; | ||
+ | КонецЦикла; | ||
+ | |||
+ | Объект.Записать(); | ||
+ | КонецЕсли; | ||
+ | КонецПроцедуры | ||
+ | </1c> | ||
+ |