You've already forked Lock1C-cheet-sheet
							
							
				mirror of
				https://github.com/kuzyara/Lock1C-cheet-sheet.git
				synced 2025-10-30 23:07:40 +02:00 
			
		
		
		
	Create УправлениеСтатусами.bsl
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							7e4fc691eb
						
					
				
				
					commit
					6ca0334639
				
			
							
								
								
									
										196
									
								
								УправлениеСтатусами.bsl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								УправлениеСтатусами.bsl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,196 @@ | ||||
| Процедура ОбновитьСтатусРеализации(Документ, Статус) Экспорт | ||||
| 	 | ||||
| 	НачатьТранзакцию(); | ||||
| 	 | ||||
| 	Попытка | ||||
| 		 | ||||
| 		БлокировкаОчереди = Новый БлокировкаДанных; | ||||
| 		Блок 			  = БлокировкаОчереди.Добавить("РегистрСведений.СтатусРеализации"); | ||||
| 		Блок.Режим		  = РежимБлокировкиДанных.Исключительный; | ||||
| 		Блок.УстановитьЗначение("Документ", Документ); | ||||
| 		БлокировкаОчереди.Заблокировать(); | ||||
|  | ||||
| 		Запрос = Новый Запрос(); | ||||
| 		Запрос.УстановитьПараметр("Документ",Документ); | ||||
| 		Запрос.УстановитьПараметр("Статус",Статус); | ||||
| 		Запрос.Текст =  | ||||
| 		"ВЫБРАТЬ | ||||
| 		|	СтатусРеализацииСрезПоследних.Документ КАК Документ, | ||||
| 		|	СтатусРеализацииСрезПоследних.Статус КАК Статус, | ||||
| 		|	IsNull(СтатусРеализацииСрезПоследних.Документ.Контрагент.ПодключенКЭДО, FALSE) КАК ПодключенКЭДО | ||||
| 		|ИЗ | ||||
| 		|	РегистрСведений.СтатусРеализации.СрезПоследних(, Документ = &Документ) КАК СтатусРеализацииСрезПоследних"; | ||||
| 		 | ||||
| 		Рез = Запрос.Выполнить().Выбрать(); | ||||
| 		 | ||||
| 		Записывать = Ложь;				    | ||||
| 		Если Рез.Количество() > 0   Тогда  | ||||
| 			Рез.Следующий(); | ||||
| 			Если Рез.Статус <> Статус Тогда | ||||
| 				Записывать = Истина; | ||||
| 			КонецЕсли; | ||||
| 			Если (Рез.Статус = Перечисления.СтатусЗаказа.Собран И Статус = Перечисления.СтатусЗаказа.ВРаботе) | ||||
| 				ИЛИ (Рез.Статус = Перечисления.СтатусЗаказа.Отгружен И Статус = Перечисления.СтатусЗаказа.Собран) | ||||
| 				ИЛИ (Рез.Статус = Перечисления.СтатусЗаказа.Доставлен И Статус = Перечисления.СтатусЗаказа.Собран) Тогда | ||||
| 				 | ||||
| 				ЭДОПодкючено = ?(ЗначениеЗаполнено(Рез.ПодключенКЭДО), Рез.ПодключенКЭДО, Ложь); | ||||
| 				 | ||||
| 				Если ЭДОПодкючено И Статус = Перечисления.СтатусЗаказа.Собран | ||||
| 					И (Рез.Статус = Перечисления.СтатусЗаказа.Отгружен ИЛИ Рез.Статус = Перечисления.СтатусЗаказа.Доставлен) Тогда | ||||
| 					 | ||||
| 					ВидПечатнойФормы = "Utd"; | ||||
| 					 | ||||
| 					Запрос = Новый Запрос; | ||||
| 					Запрос.УстановитьПараметр("ВидПечатнойФормы", ВидПечатнойФормы); | ||||
| 					Запрос.УстановитьПараметр("Документ", Документ); | ||||
| 					Запрос.Текст = "ВЫБРАТЬ | ||||
| 					|	1 КАК Представление | ||||
| 					|ИЗ | ||||
| 					|	РегистрСведений.ЖурналДокументыЭДО КАК ЖурналДокументыЭДО | ||||
| 					|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ||||
| 					|		ПО (РеализацияТоваровУслуг.Ссылка = &Документ | ||||
| 					|				И ЖурналДокументыЭДО.ДокументОтгрузки = РеализацияТоваровУслуг.Ссылка) | ||||
| 					|			И (ЖурналДокументыЭДО.ВидПечатнойФормы = &ВидПечатнойФормы)"; | ||||
| 					Результат = Запрос.Выполнить(); | ||||
| 					 | ||||
| 					Если Результат.Пустой() Тогда | ||||
| 						ПроверитьОтправитьВЭДОПоРасходномуОрдеру(Документ);		 | ||||
| 					КонецЕсли; | ||||
| 					 | ||||
| 				КонецЕсли; | ||||
| 				 | ||||
| 				Записывать = Ложь; | ||||
| 			КонецЕсли; | ||||
| 		Иначе  | ||||
| 			Записывать = Истина; | ||||
| 		КонецЕсли; | ||||
| 		 | ||||
| 		// Чибинин Я.Ф. 2017-04-25 номер карточки 309844 { | ||||
| 		// отгрузка должна быть только одна | ||||
| 		Если Статус = Перечисления.СтатусЗаказа.Отгружен  | ||||
| 			И НЕ ПроверитьДубльОтгрузки(Документ) Тогда | ||||
| 			 Записывать = Ложь; | ||||
| 		КонецЕсли; | ||||
| 		// Чибинин Я.Ф. 2017-04-25 } | ||||
| 		 | ||||
| 		Если Записывать Тогда | ||||
| 			Запись = РегистрыСведений.СтатусРеализации.СоздатьМенеджерЗаписи(); | ||||
| 			Запись.Документ 		= Документ; | ||||
| 			Запись.Статус 			= Статус; | ||||
| 			Запись.Ответственный 	= ПараметрыСеанса.ТекущийПользователь; | ||||
| 			Запись.Период 			= ТекущаяДатаНаСервере(); | ||||
| 			Запись.Записать(Истина); | ||||
| 			 | ||||
| 			СтрокиЗаказовСобытия.ОпубликоватьСтрокиЗаказовВОчередиСобытийПриИзмененииСтатусаРеализации(Документ); | ||||
| 			 | ||||
| 		КонецЕсли; | ||||
| 		 | ||||
| 		ЗафиксироватьТранзакцию(); | ||||
| 		 | ||||
| 	Исключение | ||||
| 		ОтменитьТранзакцию(); | ||||
| 		ТекстОшибки = ОписаниеОшибки(); | ||||
| 		ВызватьИсключение ТекстОшибки; | ||||
| 	КонецПопытки; | ||||
|  | ||||
| КонецПроцедуры | ||||
|  | ||||
| // Чибинин Я.Ф. 2017-04-25 номер карточки 309844 { | ||||
| Функция ПроверитьДубльОтгрузки(Документ) Экспорт | ||||
| 	 | ||||
| 	Запрос = Новый Запрос; | ||||
| 	Запрос.Текст = "ВЫБРАТЬ | ||||
| 	               |	СтатусРеализации.Документ | ||||
| 	               |ИЗ | ||||
| 	               |	РегистрСведений.СтатусРеализации КАК СтатусРеализации | ||||
| 	               |ГДЕ | ||||
| 	               |	СтатусРеализации.Документ = &Документ | ||||
| 	               |	И СтатусРеализации.Статус = &Статус | ||||
| 	               |	И СтатусРеализации.Документ ССЫЛКА Документ.РеализацияТоваровУслуг"; | ||||
| 	 | ||||
| 	Запрос.УстановитьПараметр("Документ", Документ); | ||||
| 	Запрос.УстановитьПараметр("Статус", Перечисления.СтатусЗаказа.Отгружен); | ||||
|  | ||||
| 	Результат = Запрос.Выполнить(); | ||||
| 	 | ||||
| 	Возврат Результат.Пустой(); | ||||
| 	 | ||||
| КонецФункции | ||||
| // Чибинин Я.Ф. 2017-04-25 } | ||||
|  | ||||
| Процедура ПроверитьОтправитьВЭДОПоРасходномуОрдеру(Документ) Экспорт | ||||
| 	 | ||||
| 			Запрос 		 = Новый Запрос; | ||||
| 			Запрос.Текст =  | ||||
| 			"ВЫБРАТЬ | ||||
| 			|	РеализацияТоваровУслуг.Ссылка КАК РеализацияТоваров, | ||||
| 			|	РеализацияТоваровУслуг.Контрагент КАК Контрагент | ||||
| 			|ПОМЕСТИТЬ втРеализацияТоваров | ||||
| 			|ИЗ | ||||
| 			|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ||||
| 			|ГДЕ | ||||
| 			|	РеализацияТоваровУслуг.Ссылка = &Ссылка | ||||
| 			|	И РеализацияТоваровУслуг.Контрагент.ПодключенКЭДО | ||||
| 			|	И РеализацияТоваровУслуг.Контрагент.ДатаПодключенияЭДО <> ДАТАВРЕМЯ(1, 1, 1) | ||||
| 			|	И РеализацияТоваровУслуг.Дата >= РеализацияТоваровУслуг.Контрагент.ДатаПодключенияЭДО | ||||
| 			| | ||||
| 			|ИНДЕКСИРОВАТЬ ПО | ||||
| 			|	РеализацияТоваров, | ||||
| 			|	Контрагент | ||||
| 			|; | ||||
| 			| | ||||
| 			|//////////////////////////////////////////////////////////////////////////////// | ||||
| 			|ВЫБРАТЬ | ||||
| 			|	втРеализацияТоваров.РеализацияТоваров КАК РеализацияТоваров, | ||||
| 			|	втРеализацияТоваров.Контрагент КАК Контрагент, | ||||
| 			|	КонтрагентыПечатныеФормы.ПечатнаяФорма КАК ПечатнаяФорма, | ||||
| 			|	КонтрагентыПечатныеФормы.Внешняя КАК Внешняя | ||||
| 			|ИЗ | ||||
| 			|	втРеализацияТоваров КАК втРеализацияТоваров | ||||
| 			|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты.ПечатныеФормы КАК КонтрагентыПечатныеФормы | ||||
| 			|		ПО втРеализацияТоваров.Контрагент = КонтрагентыПечатныеФормы.Ссылка | ||||
| 			|			И (НЕ КонтрагентыПечатныеФормы.ПечатнаяФорма = ЗНАЧЕНИЕ(Перечисление.ВидыПечатныхФорм.ТН)) | ||||
| 			|			И (НЕ КонтрагентыПечатныеФормы.ПечатнаяФорма = ЗНАЧЕНИЕ(Перечисление.ВидыПечатныхФорм.УКД)) | ||||
| 			|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЖурналДокументыЭДО КАК ЖурналДокументыЭДО | ||||
| 			|		ПО втРеализацияТоваров.РеализацияТоваров = ЖурналДокументыЭДО.ДокументОтгрузки | ||||
| 			|ГДЕ | ||||
| 			|	ЖурналДокументыЭДО.ДокументОтгрузки ЕСТЬ NULL"; | ||||
| 			 | ||||
| 			Запрос.УстановитьПараметр("Ссылка", Документ); | ||||
| 			 | ||||
| 			РезультатЗапроса = Запрос.Выполнить();    			 | ||||
| 			 | ||||
| 			Если НЕ РезультатЗапроса.Пустой() Тогда | ||||
| 				 | ||||
| 				//{Кривенков А.С. 25.12.2018 #466094       | ||||
| 				 | ||||
| 				СчетФактураСсылка = УчетНДС.НайтиПодчиненныйДокумент(Документ, "СчетФактураВыданный"); | ||||
| 				 | ||||
| 				Если НЕ ЗначениеЗаполнено(СчетФактураСсылка) Тогда | ||||
| 					 | ||||
| 					ДокументОбъект = Документ.ПолучитьОбъект(); | ||||
| 					 | ||||
| 					Попытка | ||||
| 						ДокументОбъект.СоздатьСчФ(); | ||||
| 					Исключение | ||||
| 						ЗаписьЖурналаРегистрации("Ошибка создания СчФ", УровеньЖурналаРегистрации.Предупреждение, Метаданные.Документы.РеализацияТоваровУслуг, Документ, "Документ не отправлен по ЭДО, ошибка создания СчФ "+ОписаниеОшибки()); | ||||
| 						#Если Клиент Тогда | ||||
| 							Сообщить("Документ не отправлен по ЭДО, ошибка создания СчФ!"); | ||||
| 						#КонецЕсли | ||||
| 						Возврат; | ||||
| 					КонецПопытки;	 | ||||
| 					 | ||||
| 				КонецЕсли;  	 | ||||
| 				 | ||||
| 				//}Кривенков А.С. 25.12.2018 #466094 | ||||
| 					 | ||||
| 				ВыборкаПечатныеФормы = РезультатЗапроса.Выбрать();				 | ||||
| 				Пока ВыборкаПечатныеФормы.Следующий() Цикл | ||||
| 					 | ||||
| 					РеализацияЭДОПривилегированный.СобратьИОтправитьДанныеЧерезЭДОПолныеПрава(Документ, ВыборкаПечатныеФормы.Внешняя,, Строка(ВыборкаПечатныеФормы.ПечатнаяФорма)); | ||||
| 					 | ||||
| 				КонецЦикла;       | ||||
| 				 | ||||
| 			КонецЕсли; | ||||
| 	 | ||||
| КонецПроцедуры	 | ||||
		Reference in New Issue
	
	Block a user