Форма для автоматического разбора возвратных заказов с маркетплейса

16.04.26

Учетные задачи - Логистика, склад и ТМЦ

Компания занимается продажей аксессуаров для сотовых телефонов. Форма работы склада ордерная, склады ячеечные. Некоторые позиции, перед продажей собираются по варианту комплектации. Но если товар был возращен хранителем, о его нужно разобрать, так как комплектующие могут быть использованы в других вариантах комплектации.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Форма для автоматического разбора возвратных заказов с Маркетплейсом
.epf 21,11Kb
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Задача: Если пришел возврат на позицию, которая была собрана по варианту комплектации, то нужно выполнить её разбор и положить комплектующие в ячейки на складе.

Ход выполнения:  

1 шаг: При получении возврата от хранители оформляем приход и размещение возвращенной позиции на склад в ячейку приемки.

2 шаг: Проверяем, есть ли в структуре «Заказ клиента» связанный документ «Заказ на сборку», тем самым понимаем что продаваемая позиция собиралась из комплектующих.

3 шаг: Если документ «Заказ на сборку» имеется в структуре «Заказ клиента», тогда формируем цепочку документов разбора. «Заказ на разбор» - «Расходный ордер» - «Документ отбора»-«Разборка» - «Приходный ордер» - «Размещение». 

Итог: Получаем возвращенный товар на склад в разобранном виде. 

Решение: На форме имеется динамический список "Заказы", сформированный по данным обмена с Маркетплейсом. 

Выделяем строку табличной части "Заказы" и нажимаем кнопку "ВыполнитьРазборкуОтмененныхЗаказов".

&НаКлиенте
Процедура ВыполнитьРазборкуОтмененныхЗаказов(Команда) 
	
	вЗаказы = Новый Массив; 
	
	Для Каждого ВыделеннаяСтрока из Элементы.Заказы.ВыделенныеСтроки Цикл 
		ДанныеСтрокиЗаказМп = Элементы.Заказы.ДанныеСтроки(ВыделеннаяСтрока).ЗаказТорговойПлощадки;
		Струкуктурастроки = Новый Структура;		
		вЗаказы.Добавить(ДанныеСтрокиЗаказМп);		
	КонецЦикла;  
	
	Если вЗаказы.Количество() = 0 Тогда 
		ОбщегоНазначенияКлиент.СообщитьПользователю("Не выбраны строки для выполнения возврата");
		Возврат;
	КонецЕсли;
	
	ВыполнитьРазборкуОтмененныхЗаказовНаСервере(вЗаказы);
КонецПроцедуры

По выделенным заказам начинается проверка и формирование документов приемки:

&НаСервере
Процедура ВыполнитьРазборкуОтмененныхЗаказовНаСервере(Заказы)
    ДокументыПередачаНаКомиссию = ПолучитьДокументыПередачаНаКомиссиюПоЗаказам(Заказы);
	ОсновнаяУпаковкаСборок = Константы.ОсновнаяУпаковкаСборок.Получить();
	Если ДокументыПередачаНаКомиссию.Количество() = 0 Тогда 
		ОбщегоНазначения.СообщитьПользователю("По выбранным заказам не Создан документ 'Передача на комиссию'.");
		Возврат;
	КонецЕсли;
	
	Для Каждого ДокументПередачи из ДокументыПередачаНаКомиссию Цикл	
		Передача = ДокументПередачи.Ссылка; 
		ЗаказКлиента = Передача.ЗаказКлиента;
		
		ВозвратОтКоммисионера = Документы.ПоступлениеТоваровОтХранителя.СоздатьДокумент();
		ВозвратОтКоммисионера.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
		
		ВозвратОтКоммисионера.Заполнить(Передача);
		ЗаполнитьЗначенияСвойств(ВозвратОтКоммисионера,Передача);
		ВозвратОтКоммисионера.Номер = "";
		ВозвратОтКоммисионера.ДокументОснование = Передача;
		ВозвратОтКоммисионера.Дата = ТекущаяДата(); 
		
		Для Каждого СтрокаТовара Из Передача.Товары Цикл  
			НовСтрТовары = ВозвратОтКоммисионера.Товары.Добавить();	
			ЗаполнитьЗначенияСвойств(НовСтрТовары,СтрокаТовара);
		КонецЦикла;
		
		ВозвратОтКоммисионера.Записать();
		
		ОрдерныйСклад = СкладыСервер.ЕстьОрдерныйНаОтгрузкуСклад(Передача.Склад);
		
		Если ОрдерныйСклад Тогда 					
			//Создаем ПриходныйОрдер  
			#Область ПриходныйОрдер 
			
			ЗонаПриемки = Справочники.СкладскиеЯчейки.ЗонаПриемкиПоУмолчанию(Передача.Склад,Справочники.СкладскиеПомещения.ПустаяСсылка());
			
			НовыйПриходныйОрдер = Документы.ПриходныйОрдерНаТовары.СоздатьДокумент();
			Номер = ВозвратОтКоммисионера.Номер;	
			Пока Лев(Номер,1)="0" или Лев(Номер,1)="-" Цикл
				Номер = Прав(Номер,СтрДлина(Номер)-1);
			КонецЦикла;
			
			НовыйПриходныйОрдер.Дата								= ВозвратОтКоммисионера.Дата+120;
			ДанныеЗаполнения = Новый Структура;	
			ДанныеЗаполнения.Вставить("Склад",                      ВозвратОтКоммисионера.Склад);
			ДанныеЗаполнения.Вставить("Помещение",                 	Справочники.СкладскиеПомещения.ПустаяСсылка());
			ДанныеЗаполнения.Вставить("Распоряжение",               ВозвратОтКоммисионера.Ссылка);
			ДанныеЗаполнения.Вставить("ДатаПоступления",           	Дата(01,01,01));
			ДанныеЗаполнения.Вставить("ЗонаПриемки",                ЗонаПриемки);
			ДанныеЗаполнения.Вставить("СкладскаяОперация",          Перечисления.СкладскиеОперации.ПриемкаСобранныхКомплектов);
			ДанныеЗаполнения.Вставить("Отправитель",                ВозвратОтКоммисионера.Склад);
			ДанныеЗаполнения.Вставить("ДатаВходящегоДокумента",     ВозвратОтКоммисионера.Дата);
			ДанныеЗаполнения.Вставить("НомерВходящегоДокумента",    Номер);
			ДанныеЗаполнения.Вставить("ХозяйственнаяОперация",      Перечисления.ХозяйственныеОперации.СборкаТоваров);
			ДанныеЗаполнения.Вставить("Статус",     				Перечисления.СтатусыПриходныхОрдеров.Принят);
			
			
			НовыйПриходныйОрдер.Статус = Перечисления.СтатусыПриходныхОрдеров.Принят;
			НовыйПриходныйОрдер.Заполнить(ДанныеЗаполнения);
			НовыйПриходныйОрдер.Товары.Очистить(); 
			Для Каждого СтрТовара Из ВозвратОтКоммисионера.Товары Цикл  
				НоваяСтрокаТоварыПрихода = НовыйПриходныйОрдер.Товары.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрокаТоварыПрихода,СтрТовара);
				НоваяСтрокаТоварыПрихода.Назначение = Справочники.Назначения.ПустаяССылка(); 
			КонецЦикла; 
			
			Попытка
				НовыйПриходныйОрдер.Записать(РежимЗаписиДокумента.Проведение);		
			Исключение
				Сообщить("Не удалось провести приходный ордер от документа: " +ДокументПередачи+ "! -" +ОписаниеОшибки());
				Возврат;
			КонецПопытки; 
			
			#КонецОбласти
			
			//Создаем Размещение 
			#Область Размещение 
			Если ЗначениеЗаполнено(НовыйПриходныйОрдер.Ссылка) Тогда 
				НовыйДокументРазмещения = Документы.ОтборРазмещениеТоваров.СоздатьДокумент(); 
				
				НовыйДокументРазмещения.Дата						 = НовыйПриходныйОрдер.Дата+180;
				НовыйДокументРазмещения.Склад						 = НовыйПриходныйОрдер.Склад;
				НовыйДокументРазмещения.ВидОперации					 = Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Размещение;
				НовыйДокументРазмещения.ДатаНачалаВыполнения		 = НовыйПриходныйОрдер.Дата;
				НовыйДокументРазмещения.ДатаОкончанияВыполнения		 = НовыйПриходныйОрдер.Дата;
				НовыйДокументРазмещения.Распоряжение				 = НовыйПриходныйОрдер.Ссылка; 
				НовыйДокументРазмещения.ДокументОснование			 = ВозвратОтКоммисионера;
				
				НовыйДокументРазмещения.Заполнить(НовыйПриходныйОрдер.Ссылка);
				Для Каждого Стр Из НовыйДокументРазмещения.ТоварыРазмещение Цикл
					Стр.КоличествоРазмещено			 = Стр.Количество;
					Стр.КоличествоУпаковокРазмещено	 = Стр.КоличествоУпаковок;  
					стр.Ячейка						 = ПолучитьЯчейкуОтбораПоЗаказу(ЗаказКлиента);
				КонецЦикла;
				НовыйДокументРазмещения.Статус		 = Перечисления.СтатусыОтборовРазмещенийТоваров.ВыполненоБезОшибок;
				Попытка
					НовыйДокументРазмещения.Записать(РежимЗаписиДокумента.Проведение);
				Исключение
					Сообщить("Не удалось провести размещение от документа: " +НовыйПриходныйОрдер+ "! -" +ОписаниеОшибки());
					Возврат;
				КонецПопытки;
				
			КонецЕсли;			  
			#КонецОбласти  
			
			Если БылЗаказНаСборку(ДокументПередачи) Тогда 
				//Создаем ЗаказНаСборку
				#Область ЗаказНаСборку 	
				Для Каждого Стр Из ВозвратОтКоммисионера.Товары Цикл
					НовыйЗаказНаСборку = Документы.ЗаказНаСборку.СоздатьДокумент(); 
					
					ВариантКомплектацииСтроки = ПолучитьВариантКомплектации(стр.Номенклатура, стр.Характеристика, стр.Упаковка);
					
					Если ВариантКомплектацииСтроки = Неопределено Тогда 
						Продолжить;
					КонецЕсли;
					
					НовыйЗаказНаСборку.ВариантКомплектации 				= ВариантКомплектацииСтроки[0].Ссылка;
					НовыйЗаказНаСборку.Номенклатура						= стр.Номенклатура;
					НовыйЗаказНаСборку.Дата 							= ТекущаяДата(); 
					
					Переменная = 1;
					Если ОсновнаяУпаковкаСборок.ЕдиницаИзмерения.Числитель > 1 Тогда				
						Переменная										= ОсновнаяУпаковкаСборок.Числитель;		
					КонецЕсли;
					НовыйЗаказНаСборку.Упаковка							 = ОсновнаяУпаковкаСборок;
					НовыйЗаказНаСборку.ВариантОбеспечения				 = Перечисления.ВариантыОбеспечения.Отгрузить;
					НовыйЗаказНаСборку.Количество 						 = Стр.Количество;
					НовыйЗаказНаСборку.КоличествоУпаковок 				 = Стр.КоличествоУпаковок;
					НовыйЗаказНаСборку.Организация 						 = Передача.Организация;
					НовыйЗаказНаСборку.Склад 							 = Передача.Склад;
					НовыйЗаказНаСборку.ХозяйственнаяОперация 			 = Перечисления.ХозяйственныеОперации.РазборкаТоваров;
					НовыйЗаказНаСборку.Ответственный					 = Пользователи.АвторизованныйПользователь();
					НовыйЗаказНаСборку.ДокументОснование 				 = ДокументПередачи.ЗаказКлиента; 
					НовыйЗаказНаСборку.СборкаПодДеятельность			 = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
					НовыйЗаказНаСборку.ВариантПриемкиТоваров			 = Перечисления.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным;
					НовыйЗаказНаСборку.Статус							 = Перечисления.СтатусыВнутреннихЗаказов.КВыполнению; 
					НовыйЗаказНаСборку.Характеристика                  	 = стр.Характеристика;
					НовыйЗаказНаСборку.Приоритет						 = Справочники.Приоритеты.НайтиПоНаименованию("Средний");
					НовыйЗаказНаСборку.НачалоСборкиРазборки              = НовыйЗаказНаСборку.Дата;
					НовыйЗаказНаСборку.ОкончаниеСборкиРазборки           = НовыйЗаказНаСборку.Дата;
					
					Для Каждого СтрокаВариантаКомплектации из ВариантКомплектацииСтроки Цикл 							
						
						НовыйСтрокаЗаказНаСборкуТовар = НовыйЗаказНаСборку.Товары.Добавить();
						
						Переменная2 = 1;	
						Если СтрокаВариантаКомплектации.ЕдиницаИзмерения.Числитель > 1 Тогда					
							Переменная2										= СтрокаВариантаКомплектации.ЕдиницаИзмерения.Числитель;		
						КонецЕсли;
						УпаковкаКомпл										= СтрокаВариантаКомплектации.ЕдиницаИзмерения;
						НовыйСтрокаЗаказНаСборкуТовар.Количество 			= СтрокаВариантаКомплектации.КоличествоКомплектующей * Переменная2; 
						НовыйСтрокаЗаказНаСборкуТовар.КоличествоУпаковок 	= СтрокаВариантаКомплектации.КоличествоКомплектующей;
						
						НовыйСтрокаЗаказНаСборкуТовар.Номенклатура 			= СтрокаВариантаКомплектации.Номенклатура;
						НовыйСтрокаЗаказНаСборкуТовар.Характеристика 		= Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
						НовыйСтрокаЗаказНаСборкуТовар.Упаковка				= УпаковкаКомпл;
						НовыйСтрокаЗаказНаСборкуТовар.ВариантОбеспечения	= Перечисления.ВариантыОбеспечения.Отгрузить; 
						
						//разбивать на то сколько есть на складе и остаток 
						ПараметрыОтбора = Новый Структура;
						ПараметрыОтбора.Вставить("Номенклатура"			,стр.Номенклатура);
						ПараметрыОтбора.Вставить("ВариантОбеспечения"	,Перечисления.ВариантыОбеспечения.КОбеспечению);
						ПараметрыОтбора.Вставить("Отменено"				,ЛОЖЬ);
						
					КонецЦикла;
					
					Шаблон = Новый Структура;
					Шаблон.Вставить("Заказ",Передача.ссылка);
					Шаблон.Вставить("Партнер",Справочники.Партнеры.ПустаяСсылка());
					Шаблон.Вставить("Договор",Справочники.ДоговорыКонтрагентов.ПустаяСсылка());
					Шаблон.Вставить("ТипНазначения",Перечисления.ТипыНазначений.Собственное);
					Шаблон.Вставить("НаправлениеДеятельности",Передача.НаправлениеДеятельности);
					
					Назначение = Справочники.Назначения.НайтиПоШаблону(Шаблон); 
					
					НовыйЗаказНаСборку.Назначение						 = Назначение;
					
					Попытка
						Если НовыйЗаказНаСборку.Товары.Количество()=0 Тогда 
							Сообщить("Не удалось провести заказ на разборку от документа: " +ДокументПередачи+ "! Нет комплектующих на остатках!");	
						Иначе
							НовыйЗаказНаСборку.Записать(РежимЗаписиДокумента.Проведение);
						КонецЕсли;				
					Исключение
						Сообщить("Не удалось провести заказ на разборку от документа: " +ДокументПередачи+ "! -" +ОписаниеОшибки());	
					КонецПопытки;
				КонецЦикла;
				#КонецОбласти	
				
				//Создаем РасходныйОрдер 
				#Область РасходныйОрдер
				Если ЗначениеЗаполнено(НовыйЗаказНаСборку.Ссылка) Тогда 
					
					МассивРаспоряжений = Новый Массив;
					МассивРаспоряжений.Добавить(НовыйЗаказНаСборку.Ссылка);
					
					ПараметрыДляСозданияОрдера =  Новый Структура;
					ПараметрыДляСозданияОрдера.Вставить("Склад",НовыйЗаказНаСборку.Склад); 
					ПараметрыДляСозданияОрдера.Вставить("РаспоряженияНаОтгрузку",МассивРаспоряжений);
					ПараметрыДляСозданияОрдера.Вставить("Получатель",НовыйЗаказНаСборку.Склад);
					ПараметрыДляСозданияОрдера.Вставить("ЗаданиеНаПеревозку",Документы.ЗаданиеНаПеревозку.ПустаяСсылка());
					ПараметрыДляСозданияОрдера.Вставить("ЗонаОтгрузки",Неопределено);
					ПараметрыДляСозданияОрдера.Вставить("Помещение",Неопределено);
					ПараметрыДляСозданияОрдера.Вставить("ФоновоеЗадание",ЛОЖЬ);
					
					
					ОформленныеОрдера = СкладыСервер.ПереоформитьРасходныеОрдера(ПараметрыДляСозданияОрдера);
					
					Если ОформленныеОрдера.ЕстьОшибка Тогда	
						Сообщить("Не удалось провести расходный ордер  от документа: " +НовыйЗаказНаСборку+ "! -" +ОписаниеОшибки());
						Возврат;
					КонецЕсли; 
					
					НовРасхОрдер		 = ОформленныеОрдера.ОформленныеОрдера[0].РасходныйОрдер.ПолучитьОбъект(); 
					НовРасхОрдер.Статус	 =  Перечисления.СтатусыРасходныхОрдеров.КОтбору;
					
					Попытка
						НовРасхОрдер.Записать(РежимЗаписиДокумента.Проведение);	
					Исключение
						Сообщить("Не удалось провести расходный ордер от документа: " +НовыйЗаказНаСборку+ "! -" +ОписаниеОшибки());
						Возврат;
					КонецПопытки;
					
				КонецЕсли;
				#КонецОбласти  
				
				//Создаем Отбор 
				#Область ДокументОтбора
				Если ЗначениеЗаполнено(НовРасхОрдер.Ссылка) Тогда
					
					НовыйДокументОтбора = Документы.ОтборРазмещениеТоваров.СоздатьДокумент();
					
					НовыйДокументОтбора.Дата						 = НовРасхОрдер.Дата;
					НовыйДокументОтбора.Склад						 = НовРасхОрдер.Получатель;
					НовыйДокументОтбора.ВидОперации					 = Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Отбор;
					НовыйДокументОтбора.ДатаНачалаВыполнения		 = НовРасхОрдер.Дата;
					НовыйДокументОтбора.ДатаОкончанияВыполнения		 = НовРасхОрдер.Дата;
					НовыйДокументОтбора.Распоряжение				 = НовРасхОрдер.Ссылка; 
					НовыйДокументОтбора.ДокументОснование			 = Передача;
					
					НовыйДокументОтбора.Заполнить(НовРасхОрдер.Ссылка);
					
					НовыйДокументОтбора.Статус						 = Перечисления.СтатусыОтборовРазмещенийТоваров.ВыполненоБезОшибок;  
					
					Для Каждого СтрОтбор Из НовыйДокументОтбора.ТоварыОтбор Цикл
						Если СтрОтбор.Ячейка	 = Справочники.СкладскиеЯчейки.ПустаяСсылка() Тогда 
							ЗонаПриемки			 = Справочники.СкладскиеЯчейки.ЗонаПриемкиПоУмолчанию(НовыйДокументОтбора.Склад,Справочники.СкладскиеПомещения.ПустаяСсылка());
							СтрОтбор.Ячейка		 = ЗонаПриемки; 
							
							СтрОтбор.Упаковка	 = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию("шт");
						КонецЕсли;
					КонецЦикла;
					
					Попытка
						НовыйДокументОтбора.Записать(РежимЗаписиДокумента.Проведение);
						РасходныйОрдерОбъект						 = 	НовРасхОрдер.Ссылка.ПолучитьОбъект();
						РасходныйОрдерОбъект.Статус					 =  Перечисления.СтатусыРасходныхОрдеров.Отгружен; 
						Для Каждого Стр Из РасходныйОрдерОбъект.ОтгружаемыеТовары Цикл 
							Стр.Упаковка = ОсновнаяУпаковкаСборок; 
							Стр.Действие = Перечисления.ДействияСоСтрокамиОрдеровНаОтгрузку.Отгрузить;
						КонецЦикла;					
						РасходныйОрдерОбъект.Записать(РежимЗаписиДокумента.Проведение); 
					Исключение
						Сообщить("Не удалось провести отбор от документа: " +НовРасхОрдер+ "! -" +ОписаниеОшибки());
						Возврат;
					КонецПопытки;
				КонецЕсли;
				#КонецОбласти
				
				//Создаем Сборку 
				#Область ДокументСборки
				Если ЗначениеЗаполнено(НовыйЗаказНаСборку.Ссылка) И ?(ОрдерныйСклад,ЗначениеЗаполнено(НовыйДокументОтбора.Ссылка),Истина) Тогда  
					
					НовСборка = Документы.СборкаТоваров.СоздатьДокумент();
					НовСборка.ВариантКомплектации 				 = НовыйЗаказНаСборку.ВариантКомплектации;
					НовСборка.НоменклатураОсновногоКомпонента 	 = НовыйЗаказНаСборку.ВариантКомплектации.НоменклатураОсновногоКомпонента;
					НовСборка.Номенклатура						 = НовыйЗаказНаСборку.Номенклатура;
					НовСборка.Дата 								 = НовыйЗаказНаСборку.Дата+60;
					НовСборка.Назначение						 = НовыйЗаказНаСборку.Назначение;;
					НовСборка.ДатаПоступления					 = НовыйЗаказНаСборку.Дата;
					НовСборка.Упаковка							 = НовыйЗаказНаСборку.Упаковка;
					НовСборка.Количество 						 = НовыйЗаказНаСборку.Количество;
					НовСборка.КоличествоУпаковок 			 	 = НовыйЗаказНаСборку.КоличествоУпаковок;
					НовСборка.Организация 						 = НовыйЗаказНаСборку.Организация;
					НовСборка.Склад 							 = НовыйЗаказНаСборку.Склад;
					НовСборка.ХозяйственнаяОперация 			 = Перечисления.ХозяйственныеОперации.РазборкаТоваров;
					НовСборка.Ответственный						 = Пользователи.АвторизованныйПользователь();
					НовСборка.ЗаказНаСборку						 = НовыйЗаказНаСборку.Ссылка; 
					НовСборка.СборкаПодДеятельность				 = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
					НовСборка.ВариантПриемкиТоваров				 = Перечисления.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным;
					НовСборка.Статус							 = Перечисления.СтатусыСборокТоваров.СобраноРазобрано; 
					НовСборка.Характеристика                     = НовыйЗаказНаСборку.ВариантКомплектации.Характеристика;
					НовСборка.ХарактеристикаОсновногоКомпонента  = НовыйЗаказНаСборку.ВариантКомплектации.ХарактеристикаОсновногоКомпонента;
					
					
					Пар1 = Новый Структура();
					Пар1.Вставить("Номенклатура",НовСборка.Номенклатура);
					Пар1.Вставить("Характеристика",НовСборка.Характеристика);
					Пар1.Вставить("МестоХранения",НовСборка.Склад);
					КлючАналитикиНомен = ПолучитьКлючАналитикиНоменклатуры(Пар1);
					НовСборка.АналитикаУчетаНоменклатуры = КлючАналитикиНомен;
					
					Для Каждого стр из НовыйЗаказНаСборку.Товары Цикл 							
						
						НовСборкаТовар = НовСборка.Товары.Добавить();				
						
						НовСборкаТовар.Количество 			= стр.Количество; 
						НовСборкаТовар.КоличествоУпаковок 	= стр.КоличествоУпаковок;
						
						НовСборкаТовар.Номенклатура 		= стр.Номенклатура;
						НовСборкаТовар.Характеристика 		= стр.Характеристика;
						НовСборкаТовар.Упаковка				= стр.Упаковка;
						НовСборкаТовар.КодСтроки			= стр.КодСтроки;
						
						Пар2 = Новый Структура();
						Пар2.Вставить("Номенклатура",НовСборкаТовар.Номенклатура);
						Пар2.Вставить("Характеристика",НовСборкаТовар.Характеристика);
						Пар2.Вставить("МестоХранения",НовСборка.Склад);
						КлючАналитикиНомен2 = ПолучитьКлючАналитикиНоменклатуры(Пар2);
						НовСборкаТовар.АналитикаУчетаНоменклатуры = КлючАналитикиНомен2;
						
					КонецЦикла; 
					
					Попытка
						НовСборка.Записать(РежимЗаписиДокумента.Проведение);	
					Исключение
						Сообщить("Не удалось провести сборку от документа: " +НовыйДокументОтбора+ "! -" +ОписаниеОшибки());
						Возврат;
					КонецПопытки;
				КонецЕсли;  
				#КонецОбласти
				
				//Создаем ПриходныйОрдер  
				#Область ПриходныйОрдер
				Если ЗначениеЗаполнено(НовСборка.Ссылка) Тогда  
					
					ЗонаПриемки = Справочники.СкладскиеЯчейки.ЗонаПриемкиПоУмолчанию(НовСборка.Склад,Справочники.СкладскиеПомещения.ПустаяСсылка());
					
					НовыйПриходныйОрдер = Документы.ПриходныйОрдерНаТовары.СоздатьДокумент();
					Номер = НовСборка.Номер;	
					Пока Лев(Номер,1)="0" или Лев(Номер,1)="-" Цикл
						Номер = Прав(Номер,СтрДлина(Номер)-1);
					КонецЦикла;
					
					НовыйПриходныйОрдер.Дата								= НовСборка.Дата+120;
					ДанныеЗаполнения = Новый Структура;	
					ДанныеЗаполнения.Вставить("Склад",                      НовСборка.Склад);
					ДанныеЗаполнения.Вставить("Помещение",                 	Справочники.СкладскиеПомещения.ПустаяСсылка());
					ДанныеЗаполнения.Вставить("Распоряжение",               НовСборка.Ссылка);
					ДанныеЗаполнения.Вставить("ДатаПоступления",           	ТекущаяДата());
					ДанныеЗаполнения.Вставить("ЗонаПриемки",                ЗонаПриемки);
					ДанныеЗаполнения.Вставить("СкладскаяОперация",          Перечисления.СкладскиеОперации.ПриемкаСобранныхКомплектов);
					ДанныеЗаполнения.Вставить("Отправитель",                НовСборка.Склад);
					ДанныеЗаполнения.Вставить("ДатаВходящегоДокумента",     НовСборка.Дата);
					ДанныеЗаполнения.Вставить("НомерВходящегоДокумента",    Номер);
					ДанныеЗаполнения.Вставить("ХозяйственнаяОперация",      Перечисления.ХозяйственныеОперации.РазборкаТоваров);
					ДанныеЗаполнения.Вставить("Статус",     				Перечисления.СтатусыПриходныхОрдеров.Принят);
					
					
					НовыйПриходныйОрдер.Статус = Перечисления.СтатусыПриходныхОрдеров.Принят;
					
					НовыйПриходныйОрдер.Заполнить(ДанныеЗаполнения);
					НовыйПриходныйОрдер.Товары.Очистить();
					Для каждого СтрСтрока ИЗ НовСборка.Товары Цикл
						НоваяСтрокаТоварыПрихода = НовыйПриходныйОрдер.Товары.Добавить();
						ЗаполнитьЗначенияСвойств(НоваяСтрокаТоварыПрихода,СтрСтрока);
						НоваяСтрокаТоварыПрихода.Упаковка = ОсновнаяУпаковкаСборок;
						НоваяСтрокаТоварыПрихода.Назначение = Справочники.Назначения.ПустаяСсылка();
					КонецЦикла;
					
					Попытка
						НовыйПриходныйОрдер.Записать(РежимЗаписиДокумента.Проведение);		
					Исключение
						Сообщить("Не удалось провести приходный ордер от документа: " +НовСборка+ "! -" +ОписаниеОшибки());
						Возврат;
					КонецПопытки; 
					
				КонецЕсли;		  
				#КонецОбласти
				
				//Создаем Размещение 
				#Область Размещение 
				Если ЗначениеЗаполнено(НовыйПриходныйОрдер.Ссылка) Тогда 
					НовыйДокументРазмещения = Документы.ОтборРазмещениеТоваров.СоздатьДокумент(); 
					
					НовыйДокументРазмещения.Дата						 = НовыйПриходныйОрдер.Дата+180;
					НовыйДокументРазмещения.Склад						 = НовыйПриходныйОрдер.Склад;
					НовыйДокументРазмещения.ВидОперации					 = Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Размещение;
					НовыйДокументРазмещения.ДатаНачалаВыполнения		 = НовыйПриходныйОрдер.Дата;
					НовыйДокументРазмещения.ДатаОкончанияВыполнения		 = НовыйПриходныйОрдер.Дата;
					НовыйДокументРазмещения.Распоряжение				 = НовыйПриходныйОрдер.Ссылка; 
					НовыйДокументРазмещения.ДокументОснование			 = НовыйПриходныйОрдер.Ссылка;
					
					НовыйДокументРазмещения.Заполнить(НовыйПриходныйОрдер.Ссылка);
					Для Каждого Стр Из НовыйДокументРазмещения.ТоварыРазмещение Цикл
						Стр.КоличествоРазмещено			 = Стр.Количество;
						Стр.КоличествоУпаковокРазмещено	 = Стр.КоличествоУпаковок; 
						Если НовыйДокументОтбора.ТоварыОтбор.Количество()>1 Тогда 
							стр.Ячейка					 = Справочники.СкладскиеЯчейки.НайтиПоНаименованию("В нескольких ячейка"); 
						Иначе
							стр.Ячейка					 = НовыйДокументОтбора.ТоварыОтбор[0].Ячейка; 
						КонецЕсли;
					КонецЦикла;
					
					НовыйДокументРазмещения.Статус						 = Перечисления.СтатусыОтборовРазмещенийТоваров.ВыполненоБезОшибок;
					Попытка
						НовыйДокументРазмещения.Записать(РежимЗаписиДокумента.Проведение);
					Исключение
						Сообщить("Не удалось провести размещение от документа: " +НовыйПриходныйОрдер+ "! -" +ОписаниеОшибки());
						Возврат;
					КонецПопытки;
					
				КонецЕсли;			  
				#КонецОбласти  
			Сообщить("Разборка возвратных товаров произведена!");	
			КонецЕсли;	 
		КонецЕсли; 	
	КонецЦикла;
КонецПроцедуры

Приложенный файл обработки проверен и работает на базе 1С:КА + БИТ.УМ. 

Проверено на следующих конфигурациях и релизах:

  • 1С:Комплексная автоматизация 2, релизы 2.5.25.77

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Маркетплейсы 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Подключите маркетплейсы Ozon, WB, АлиЭкспресс и ЯндексМаркет к 1С. Удобное управление заказами, остатками и синхронизация данных из одного окна 1С для УНФ, УТ, КА, ERP. Единый интерфейс работы для всех площадок. Отправка остатков по сопоставленным товарам по расписанию, гибкая настройка отправки.

14890 руб.

23.01.2023    70705    664    212    

249

Маркетплейсы Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Управленческий учет Платные (руб)

Полноценный обмен со всеми маркетплейсами: МегаМаркет, Wildberries, Яндекс.Маркет, OZON, VK, ALI, Авито, МагнитМаркет. Так же подключили сервис Dostavista, автоматическая отправка заказов на доставку. Данный модуль позволяет полностью интегрировать 1С:УТ11.4/11.5, 1С:КА 2.4/2.5, 1С:ERP 2.4/2.5, 1С: УНФ 3.1, 1С: Розница 2.3/2.4 по API с Wldberries, Яндекс.Маркет, OZON, ALI, VK, МегаМаркет и МагнитМаркет. Схемы работы: ВИТРИНА + ДОСТАВКА, ЗАКАЖИ И ЗАБЕРИ + ВИТРИНА, ДОСТАВКА СИЛАМИ ПРОДАВЦА, ЭКСПРЕСС-ДОСТАВКА. Модуль зарегистрирован в Реестре программного обеспечения, а также являемся технологическими партнерами МегаМаркет и Wildberries, что говорит о гарантиях использования решения.

60000 руб.

09.10.2020    65009    408    84    

135

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы преобразуете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, Детский мир, Магнит Маркет (быв.МагнитЭкспресс), Лемана про, ЭНФАНТА (Акушерство), ЛаМода, Летуаль, Твой дом, Золотое Яблоко, Каспи в документы "Отчет комиссионера (агента) о продажах" и другие. Работает в 1С:БП 3.0, 1С:БП 3.0 КОРП, 1С:УТ 11, 1С:УНФ, 1С:ERP.

5490 руб.

12.08.2021    45372    567    71    

218
Для отправки сообщения требуется регистрация/авторизация