Выгрузка данных через правило обмена

1. mista 13.04.17 09:27 Сейчас в теме
Здравствуйте,
есть правило выгрузки остатков ТМЦ через правило обмена, в параметрах выгрузки есть код, в котором указывается какую папку ТМЦ нужно игнорировать в выгрузке
<Параметр Имя="Группа1ОстаткиНеВыгружать                     " Наименование="1Остатки Не Выгружать                     " ИспользуетсяПриЗагрузке="false" УстанавливатьВДиалоге="true" ТипЗначения="СправочникСсылка.Номенклатура" ПередаватьПараметрПриВыгрузке="false" ПравилоКонвертации="Номенклатура                                      "/>

остатки ТМЦ отбираются в запросе:
	ВыборкаДанных  = СоздатьОбъект("ТаблицаЗначений");
		ВыборкаДанных.НоваяКолонка("Организация");
		ВыборкаДанных.НоваяКолонка("Товары");   
		
		
		Запрос = СоздатьОбъект("Запрос");
		ТекстЗапроса = 
		"//{{ЗАПРОС(Сформировать)
		|Период с ДатаНачала по ДатаОкончания;
		|Организация = Регистр.ОстаткиТМЦ.Фирма;
		|Товар = Регистр.ОстаткиТМЦ.Номенклатура;
		|Склад = Регистр.ОстаткиТМЦ.Склад;
		|Количество = Регистр.ОстаткиТМЦ.Количество;
		|Функция КоличествоКонОст = КонОст(Количество);
		|Группировка Организация все;
		|Группировка Товар без групп;  
		|"//}}ЗАПРОС
		;
		Если ПустоеЗначение(Параметры.Организация)=0 Тогда
			ТекстЗапроса = ТекстЗапроса + "Условие(Организация = Параметры.Организация);";
		КонецЕсли;
		
		Если ПустоеЗначение(Параметры.Склад)=0 Тогда
			ТекстЗапроса = ТекстЗапроса + "Условие(Склад <> Параметры.Склад);";
		КонецЕсли;        
		
				
		// Если ошибка в запросе, то выход из процедуры
		Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
			//Возврат;
		КонецЕсли;
		
		Пока Запрос.Группировка(1) = 1 Цикл
			// Группировка Организация
			ВыборкаДанных.НоваяСтрока();      
			ВыборкаДанных.Организация = Запрос.Организация;    
			
			Товары =  СоздатьОбъект("ТаблицаЗначений");
			Товары.НоваяКолонка("Товар");
			Товары.НоваяКолонка("ЕдиницаИзмерения");   
			Товары.НоваяКолонка("Количество");   
			Товары.НоваяКолонка("ХарактеристикиНоменклатуры");   
			Товары.НоваяКолонка("Склад");  
			
			Пока Запрос.Группировка(2) = 1 Цикл
				//Группировка Товар
				Товары.НоваяСтрока(); 
				Товары.Товар = Запрос.Товар; 
				Товары.ЕдиницаИзмерения = Запрос.Товар.ОсновнаяЕдиница;
				Товары.Количество = Запрос.КоличествоКонОст; 
				Товары.Склад = Запрос.Склад;    
			КонецЦикла;
			ВыборкаДанных.Товары = Товары; 
		КонецЦикла;    
Показать

в запрос ставлю
Если (Объект.ПометкаУдаления() = 1) ИЛИ (Объект.Родитель = Параметры.Группа1ОстаткиНеВыгружать)
			ИЛИ (Объект.Родитель.Родитель = Параметры.Группа1ОстаткиНеВыгружать) ИЛИ (Объект.ТекущийЭлемент() = Параметры.Группа1ОстаткиНеВыгружать) Тогда
			Отказ = 1;
		КонецЕсли;

идет выгрузка отстатков, но моя папка с тмц которую не надо выгружать тоже выгружается, ткните носом плиз...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. jj_mail 13.04.17 09:53 Сейчас в теме
может быть просто в запросе применить условие ? Для чего же получать остатки запросом по ТМЦ, который не нужны ?
5. mista 13.04.17 12:11 Сейчас в теме
(2)
может быть просто в запросе применить условие ? Для чего же получать остатки запросом по ТМЦ, который не нужны ?

посоветуйте как...
3. v3rter 13.04.17 10:22 Сейчас в теме
Допустим
Отказ = 1;
а дальше что с ним, с Отказом, происходит?
4. mista 13.04.17 10:30 Сейчас в теме
(3)
а дальше что с ним, с Отказом, происходит?

Функция ПВД_ПередОбработкойПравила_ОстаткиТоваров(
			ИмяПКО, Правило, ИсходящиеДанные, ВыборкаДанных)


	Отказ = 0;


	Попытка


		ВыборкаДанных  = СоздатьОбъект("ТаблицаЗначений");
		ВыборкаДанных.НоваяКолонка("Организация");
		ВыборкаДанных.НоваяКолонка("Товары");   
		
		
		Запрос = СоздатьОбъект("Запрос");
		ТекстЗапроса = 
		"//{{ЗАПРОС(Сформировать)
		|Период с ДатаНачала по ДатаОкончания;
		|Организация = Регистр.ОстаткиТМЦ.Фирма;
		|Товар = Регистр.ОстаткиТМЦ.Номенклатура;
		|Склад = Регистр.ОстаткиТМЦ.Склад;
		|Количество = Регистр.ОстаткиТМЦ.Количество;
		|Функция КоличествоКонОст = КонОст(Количество);
		|Группировка Организация все;
		|Группировка Товар без групп;  
		|"//}}ЗАПРОС
		;
		Если ПустоеЗначение(Параметры.Организация)=0 Тогда
			ТекстЗапроса = ТекстЗапроса + "Условие(Организация = Параметры.Организация);";
		КонецЕсли;
		
		Если ПустоеЗначение(Параметры.Склад)=0 Тогда
			ТекстЗапроса = ТекстЗапроса + "Условие(Склад <> Параметры.Склад);";
		КонецЕсли;        
		
				
		// Если ошибка в запросе, то выход из процедуры
		Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
			//Возврат;
		КонецЕсли;
		
		Пока Запрос.Группировка(1) = 1 Цикл
			// Группировка Организация
			ВыборкаДанных.НоваяСтрока();      
			ВыборкаДанных.Организация = Запрос.Организация;    
			
			Товары =  СоздатьОбъект("ТаблицаЗначений");
			Товары.НоваяКолонка("Товар");
			Товары.НоваяКолонка("ЕдиницаИзмерения");   
			Товары.НоваяКолонка("Количество");   
			Товары.НоваяКолонка("ХарактеристикиНоменклатуры");   
			Товары.НоваяКолонка("Склад");  
			
			Пока Запрос.Группировка(2) = 1 Цикл
				//Группировка Товар
				Товары.НоваяСтрока(); 
				Товары.Товар = Запрос.Товар; 
				Товары.ЕдиницаИзмерения = Запрос.Товар.ОсновнаяЕдиница;
				Товары.Количество = Запрос.КоличествоКонОст; 
				Товары.Склад = Запрос.Склад;    
			КонецЦикла;
			ВыборкаДанных.Товары = Товары; 
		КонецЦикла;    
		
		 
		Если (Товары.Товар.ПометкаУдаления() = 1) ИЛИ (Товары.Товар.Родитель = Параметры.Группа1НоменклатурыНеВыгружать)
			ИЛИ (Товары.Товар.Родитель.Родитель = Параметры.Группа1ОстаткиНеВыгружать) ИЛИ (Товары.Товар.ТекущийЭлемент() = Параметры.Группа1ОстаткиНеВыгружать) ИЛИ (Товары.Товар.Родитель = Параметры.Группа2ОстаткиНеВыгружать)
			ИЛИ (Товары.Товар.Родитель.Родитель = Параметры.Группа2ОстаткиНеВыгружать) ИЛИ (Товары.Товар.ТекущийЭлемент() = Параметры.Группа2ОстаткиНеВыгружать) Тогда
			Отказ = 1;
		КонецЕсли; 
		            
			
    Исключение
	
		Сообщить("Ошибка исполнения обработчика:  ПВД_ПередОбработкойПравила_ОстаткиТоваров", "!!!");
		Сообщить("  - " + ОписаниеОшибки());
		ЗафиксироватьОшибку("Ошибка исполнения обработчика:  ПВД_ПередОбработкойПравила_ОстаткиТоваров" + ": " + ОписаниеОшибки());

	КонецПопытки;

	Возврат Отказ;

КонецФункции // ПВД_ПередОбработкойПравила_ОстаткиТоваров()
Показать

таким же образом выгружаю весь справочник номенклатуры и работает
Функция ПВД_ПередВыгрузкойОбъекта_Номенклатура(
			ИмяПКО, Правило, Объект, ИсходящиеДанные, ВходящиеДанные)


	Отказ = 0;


	Попытка


		Если (Объект.ПометкаУдаления() = 1) ИЛИ (Объект.Родитель = Параметры.Группа1НоменклатурыНеВыгружать)
			ИЛИ (Объект.Родитель.Родитель = Параметры.Группа1НоменклатурыНеВыгружать) ИЛИ (Объект.ТекущийЭлемент() = Параметры.Группа1НоменклатурыНеВыгружать) ИЛИ (Объект.Родитель = Параметры.Группа2НоменклатурыНеВыгружать)
			ИЛИ (Объект.Родитель.Родитель = Параметры.Группа2НоменклатурыНеВыгружать) ИЛИ (Объект.ТекущийЭлемент() = Параметры.Группа2НоменклатурыНеВыгружать) Тогда
			Отказ = 1;
		КонецЕсли; 
		           
		
	Исключение
	
		Сообщить("Ошибка исполнения обработчика:  ПВД_ПередВыгрузкойОбъекта_Номенклатура", "!!!");
		Сообщить("  - " + ОписаниеОшибки());
		ЗафиксироватьОшибку("Ошибка исполнения обработчика:  ПВД_ПередВыгрузкойОбъекта_Номенклатура" + ": " + ОписаниеОшибки());

	КонецПопытки;

	Возврат Отказ;

КонецФункции // ПВД_ПередВыгрузкойОбъекта_Номенклатура()
Показать
6. jj_mail 14.04.17 12:03 Сейчас в теме
Условие(НЕ Регистр.ОстаткиТМЦ.Номенклатура В НужнаяГруппа)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот