ПроверкаПроведения, и неприятный запрос

1. sasha-asn 10.06.19 09:47 Сейчас в теме
Доброго времени суток, уважаемые эксперты!

Прошу подсказать как обойти Проверку в запросе – есть Упаковки у данной номенклатуры и коэффициент (кол-во ШТ в УПаковке), при проведении ругается запрос на проверку Кол-ва ШТ в УПаковке. Хотя в справочнике и в документах, подчиненных при продаже всё правильной указанно и Кол-Во, и Упаковки…. Запрос самописный, может как-то можно убрать проверку для коэффициентов ? Очень прошу вашей помощи, а то при возникновение проверки, приходится через Отладчик проводить (Отказ = Ложь)

Запрос = Новый Запрос; 
    Запрос.Текст = "ВЫБРАТЬ 
                   |    РеализацияТоваровУслугТовары.Номенклатура, 
                   |    РеализацияТоваровУслугТовары.ЗаказПокупателя, 
                   |    ВЫБОР 
                   |        КОГДА ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) - РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Коэффициент < 0 
                   |            ТОГДА ИСТИНА 
                   |        ИНАЧЕ ЛОЖЬ 
                   |    КОНЕЦ КАК Запрет 
                   |ИЗ 
                   |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары 
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(&Период, ) КАК ЗаказыПокупателейОстатки 
                   |        ПО РеализацияТоваровУслугТовары.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура 
                   |            И РеализацияТоваровУслугТовары.ЗаказПокупателя = ЗаказыПокупателейОстатки.ЗаказПокупателя 
                   |ГДЕ 
                   |    РеализацияТоваровУслугТовары.Ссылка = &Ссылка 
                   |    И РеализацияТоваровУслугТовары.СпособСписанияОстаткаТоваров = ЗНАЧЕНИЕ(Перечисление.СпособыСписанияОстаткаТоваров.ИзРезерва) 
                   | 
                   |СГРУППИРОВАТЬ ПО 
                   |    РеализацияТоваровУслугТовары.Номенклатура, 
                   |    РеализацияТоваровУслугТовары.ЗаказПокупателя, 
                   |    ВЫБОР 
                   |        КОГДА ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) - РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Коэффициент < 0 
                   |            ТОГДА ИСТИНА 
                   |        ИНАЧЕ ЛОЖЬ 
                   |    КОНЕЦ"; 
     
    Запрос.УстановитьПараметр("Ссылка", Ссылка); 
    Запрос.УстановитьПараметр("Период", Ссылка.Дата); 
     
    Результат = Запрос.Выполнить(); 
    Выборка = Результат.Выбрать(); 
     
    Пока Выборка.Следующий() Цикл 
        Если Выборка.Запрет Тогда 
             
            Сообщить("Ошибка! слишком много по заказу покупателя: " + Выборка.Номенклатура.Артикул  + " - " +  Выборка.Номенклатура, СтатусСообщения.Важное); 
             
            Отказ = Истина; 
             
        КонецЕсли; 
    КонецЦикла;
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. alex-l19041 8 10.06.19 10:12 Сейчас в теме
(1) если
Запрос самописный
и эта проверка больше не нужна, то лучше отключить всю эту проверку, чтобы быстрее проводилось...
5. sasha-asn 10.06.19 10:15 Сейчас в теме
(3) ПроверкаПроведения нужна для проверки Коэффициентов упаковок ... Как я понимаю это....
8. alex-l19041 8 10.06.19 10:19 Сейчас в теме
(5) нет...
ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) - РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Коэффициент < 0
здесь сравнивается остаток по регистру ЗаказыПокупателей и количество в документе
sasha-asn; +1 Ответить
10. sasha-asn 10.06.19 10:32 Сейчас в теме
(8) подскажите пожалуйста, тогда какой вариант ещё есть? чтобы избегать
("Ошибка! слишком много по заказу покупателя: " + Выборка.Номенклатура.Артикул + " - " + Выборка.Номенклатура, СтатусСообщения.Важное);

Ведь всё верно по Заказу и по Реализации верное кол-во ШТ в упаковке... Как лучше исправить ошибку? Заранее благодарен за совет
13. alex-l19041 8 10.06.19 10:47 Сейчас в теме
(10) надо выяснить почему

РегистрНакопления.ЗаказыПокупателей.Остатки(&Период, ) для конкретной номенклатуры и заказа возвращает остаток меньше, чем пытаетесь списать в документе
2. Oldsad 10.06.19 09:55 Сейчас в теме
 И РеализацияТоваровУслугТовары.СпособСписанияОстаткаТоваров = ЗНАЧЕНИЕ(Перечисление.СпособыСписанияОстаткаТоваров.ИзРезерва) 
                   | 

можно указать в документе что товар списывается не из резерва, и тогда проверки не будет
alex-l19041; sasha-asn; +2 Ответить
4. sasha-asn 10.06.19 10:12 Сейчас в теме
(2) спасибо за подсказку!
6. sasha-asn 10.06.19 10:18 Сейчас в теме
(2)
И РеализацияТоваровУслугТовары.СпособСписанияОстаткаТоваров = ЗНАЧЕНИЕ(Перечисление.СпособыСписанияОстаткаТоваров.ИзРезерва)

Упс, так у меня товар теперь списывается не из Резерва? или это проверка что не проверяет Резерв ?
14. alex-l19041 8 10.06.19 10:53 Сейчас в теме
(6) это условие оставляет только те строки таблицы Товары, где СпособСписанияОстаткаТоваров " из резерва"
sasha-asn; +1 Ответить
17. sasha-asn 10.06.19 11:03 Сейчас в теме
(6)

И РеализацияТоваровУслугТовары.СпособСписанияОстаткаТоваров = ЗНАЧЕНИЕ(Перечисление.СпособыСписанияОстаткаТоваров.ИзРезерва)
более мягкое исключение для резерва может придумать?
18. alex-l19041 8 10.06.19 11:13 Сейчас в теме
(17) "мягкое" - ??? поменяйте СпособСписанияОстаткаТоваров и вопрос отпадет...
sasha-asn; +1 Ответить
20. sasha-asn 10.06.19 11:23 Сейчас в теме
(18) спасибо! вот тут мысли уже появились у меня
7. sasha-asn 10.06.19 10:18 Сейчас в теме
9. Oldsad 10.06.19 10:22 Сейчас в теме
(7)
скорее всего это так, перед списанием из резерва идет проверка что бы в минуса не улететь
alex-l19041; sasha-asn; +2 Ответить
11. sasha-asn 10.06.19 10:43 Сейчас в теме
Господа как лучше дописать Запрос? Подскажите пожалуйста...
12. alex-l19041 8 10.06.19 10:45 Сейчас в теме
(11) что хотите изменить ?
sasha-asn; +1 Ответить
15. sasha-asn 10.06.19 10:59 Сейчас в теме
(12) ругается сообщением что Товара одновременно слишком много и слишком мало... Отладчиком падаю на два запроса... Запрос как то косячно выдаёт ошибку проверки... Я вот думаю может как то можно было сделать мягкую ПроверкуПроведения? Но тут же опять Резервы, остатки...

Вот второй запрос
Процедура ПроверитьНаличияРезерваПодИсточник(Ссылка, Отказ, РеквизитИсточника) ЭКСПОРТ
		
		Если Ссылка.дата > Дата("20150101") Тогда
			Запрос = Новый Запрос;
			Запрос.Текст = "ВЫБРАТЬ
			|	Док.Номенклатура,
			|	Док.СерияНоменклатуры,
			|	Док." + ?(Ссылка.Метаданные().Имя = "_КорректировкаРезерва", "Ссылка." + РеквизитИсточника, "ЗаказПокупателя") + " КАК ЗаказПокупателя,
			|	СУММА( " + ?(Ссылка.Метаданные().Имя = "_КорректировкаРезерва", "Док.НовоеКоличество)", "Док.Количество * Док.Коэффициент)") + " КАК КоличествоОтгрузка,
			|	Док.ХарактеристикаНоменклатуры
			|ПОМЕСТИТЬ ВТ_Отгрузка
			|ИЗ
			|	Документ." + ?(Ссылка.Метаданные().Имя = "_КорректировкаРезерва", "_КорректировкаРезерва.ТоварыВРезерве", "РеализацияТоваровУслуг.Товары") + " КАК Док
			|ГДЕ
			|	Док.Ссылка = &Ссылка
			|	" + ?(Ссылка.Метаданные().Имя = "_КорректировкаРезерва", "", "И Док.СпособСписанияОстаткаТоваров = ЗНАЧЕНИЕ(Перечисление.СпособыСписанияОстаткаТоваров.ИзРезерва)")
			+ " 
			|СГРУППИРОВАТЬ ПО
			|	Док.Номенклатура,
			|	Док.СерияНоменклатуры,
			|	Док." + ?(Ссылка.Метаданные().Имя = "_КорректировкаРезерва", "Ссылка." + РеквизитИсточника, "ЗаказПокупателя") +",
			|	Док.ХарактеристикаНоменклатуры
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ
			|	ТоварыВРезервеНаСкладахОстатки.Номенклатура,
			|	ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры,
			|	ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
			|	ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры,
			|	СУММА(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
			|ПОМЕСТИТЬ ВТ_РезервыСделки
			|ИЗ
			|	РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Период, ДокументРезерва = &Сделка) КАК ТоварыВРезервеНаСкладахОстатки
			|
			|СГРУППИРОВАТЬ ПО
			|	ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры,
			|	ТоварыВРезервеНаСкладахОстатки.Номенклатура,
			|	ТоварыВРезервеНаСкладахОстатки.ДокументРезерва,
			|	ТоварыВРезервеНаСкладахОстатки.СерияНоменклатуры
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ
			|	ВТ_Отгрузка.Номенклатура,
			|	ВТ_Отгрузка.СерияНоменклатуры,
			|	ВТ_Отгрузка.ЗаказПокупателя,
			|	ЕСТЬNULL(ВТ_РезервыСделки.КоличествоОстаток, 0) - ВТ_Отгрузка.КоличествоОтгрузка КАК ОстаткиКОтгрузки
			|ПОМЕСТИТЬ ВТ_АнализВыполнение
			|ИЗ
			|	ВТ_Отгрузка КАК ВТ_Отгрузка
			|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_РезервыСделки КАК ВТ_РезервыСделки
			|		ПО ВТ_Отгрузка.Номенклатура = ВТ_РезервыСделки.Номенклатура
			|			И ВТ_Отгрузка.СерияНоменклатуры = ВТ_РезервыСделки.СерияНоменклатуры
			|			И ВТ_Отгрузка.ЗаказПокупателя = ВТ_РезервыСделки.ДокументРезерва
			|			И ВТ_Отгрузка.ХарактеристикаНоменклатуры = ВТ_РезервыСделки.ХарактеристикаНоменклатуры
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ
			|	ВТ_АнализВыполнение.Номенклатура,
			|	ВТ_АнализВыполнение.СерияНоменклатуры,
			|	ВТ_АнализВыполнение.ЗаказПокупателя,
			|	ВЫБОР
			|		КОГДА ВТ_АнализВыполнение.ОстаткиКОтгрузки < 0
			|			ТОГДА ИСТИНА
			|		ИНАЧЕ ЛОЖЬ
			|	КОНЕЦ КАК Запрет
			|ИЗ
			|	ВТ_АнализВыполнение КАК ВТ_АнализВыполнение";
			
			Запрос.УстановитьПараметр("Ссылка", Ссылка);
			Запрос.УстановитьПараметр("Период", Ссылка.Дата);
			Запрос.УстановитьПараметр("Сделка", Ссылка[РеквизитИсточника]);
			
 			Результат = Запрос.Выполнить();
			Выборка = Результат.Выбрать();
			
			Пока Выборка.Следующий() Цикл
				Если Выборка.Запрет Тогда
					
					Сообщить("Внимание! этого товара недостаточно в резерве: " + Выборка.Номенклатура.Артикул  + " - " +  Выборка.Номенклатура + " (" + Выборка.СерияНоменклатуры + ")", СтатусСообщения.Важное);
					Отказ = Истина;
					
				КонецЕсли; 
			КонецЦикла;
			
		КонецЕсли;
	КонецПроцедуры
Показать
19. alex-l19041 8 10.06.19 11:17 Сейчас в теме
(15) если видите "Внимание! этого товара недостаточно в резерве:" и хотите списывать из резерва, то надо выяснять причину остатков в резерве
sasha-asn; +1 Ответить
16. sasha-asn 10.06.19 11:01 Сейчас в теме
(12) сложно понять, как убрать ошибку проведения - чтобы не было слишком много и слишком мало одновременно... Мне кажется какая та проблема в проверке коэффициента упаковок в Запросе?
Оставьте свое сообщение

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