- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
"ВЫБРАТЬ
	|	СчетСписокНоменклатуры.Номенклатура,
	|	СУММА(СчетСписокНоменклатуры.Количество) КАК Количество
	|ПОМЕСТИТЬ ВТ
	|ИЗ
	|	Документ.СчетНаОплатуПокупателю.Товары КАК СчетСписокНоменклатуры
	|ГДЕ
	|	СчетСписокНоменклатуры.Ссылка = &Ссылка
	|
	|СГРУППИРОВАТЬ ПО
	|	СчетСписокНоменклатуры.Номенклатура
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ОстаткиНоменклатурыОстатки.Номенклатура КАК Товар,
	|	ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК Свободныйостаток,
	|	ВТ.Количество,
	|	ОстаткиНоменклатурыОстатки.Номенклатура.Код КАК Код,
	|	ОстаткиНоменклатурыОстатки.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения
	|ИЗ
	|	ВТ КАК ВТ
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
	|				&Дата,
	|				Номенклатура В
	|						(ВЫБРАТЬ
	|							ВТ.Номенклатура
	|						ИЗ
	|							ВТ)
	|					И Склад = &Склад) КАК ОстаткиНоменклатурыОстатки
	|		ПО ВТ.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
	|		ПО ВТ.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура";
	
	
	Запрос.УстановитьПараметр("Дата", НаДату);
	Запрос.УстановитьПараметр("Ссылка", СсылкаДок);
	Запрос.УстановитьПараметр("Склад", Склад);
	
	Результат = Запрос.Выполнить().Выбрать();
	
	Пока Результат.Следующий() Цикл
		ЗаменаНоменклатуры = РегистрыСведений.ЗаменаНоменклатуры.СоздатьМенеджерЗаписи();
		ЗаменаНоменклатуры.Номенклатура = Результат.Товар;
		ЗаменаНоменклатуры.Прочитать();
		Если ЗаменаНоменклатуры.Выбран() Тогда
			Если Результат.СвободныйОстаток < Результат.Количество Тогда
				Сообщить("Недостаточно номенклатуры """+Результат.Товар+"""" + " ("+СокрП(Результат.Код)+") требуется "+Результат.Количество+" "+Результат.ЕдиницаИзмерения+" осталось на складе "+Результат.СвободныйОстаток+" "+Результат.ЕдиницаИзмерения+"!", СтатусСообщения.Внимание);
				
				Возврат Истина;
			Иначе
				Возврат Ложь;	
			КонецЕсли;
			//	Если Результат.СвободныйОстаток = 0 Тогда
			//		Сообщить("Не хватает "+Результат.Номенклатура+" требуется "+Результат.Количество+" осталось на складе "+Результат.СвободныйОстаток);
			//		Возврат Истина;
			//	Иначе
			//		Возврат Ложь;	
			//	КонецЕсли;
		КонецЕсли;
	КонецЦикла;
                                 
        
ЛЕВАЯ РЕЗЬБА
И синоним ТоварыНаСкладах как ОстаткиНоменклатуры.
Мне кажется, или это какая-то учебная задачка, в которую впилили еще регистр сведений, но поленились переписать запрос?
Либо говно, либо стажер, либо корявая оптимизация (может раньше еще хуже было).
Поскольку совсем не каждый одноэсник может в запросы, империативщиков лично я встречал. Более того, не каждый может влёгкую выдумать запрос без конструктора запросов. Я встречал людей, которые агрессивно относились к тому, что написать (пусть на птичьем) запрос руками будет быстрее, нежели чем тыкать без понимания мышкой.
>> Я встречал людей, которые агрессивно относились к тому, что написать (пусть на птичьем) запрос руками будет быстрее, нежели чем тыкать без понимания мышкой.
Какие странные люди Оо Ладно там отмазы вроде "синтаксиса не знаю", "я конструктором привык", но с агрессией...
Был нахерачен запрос из юнионов, количеством числа загружаемых документов. Логика примитивная: так, тут у нас документ поступление, давайте поищем его по комментарию во всех документах, лол. Врать не буду, дело давнее, но не исключено, что такой запрос был в цикле для каждого документа.
У бухов сраная загрузка шла по полчаса, они рвали на себе волосы.
В той же рарусорознице творится просто невообразимый ад содомии.