новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Дорабатываем контроль остатков по серийным номерам в документах ПриходнаяНакладная и ЧекККМВозврат в УНФ 1.6.13.58

  • Добавить свою публикацию
  • для этого требуется регистрация

Здравствуйте коллеги.

В типовой УНФ 1.6 вплоть до последней редакции 1.6.13.58 при проведении документов ПриходнаяНакладная и ЧекККМВозврат отсутствует контроль остатков по серийным номерам даже при установке константы КонтрольОстатковСерийныхНомеров в Истина. 

Поводом для написании этой небольшой статьи послужила публикация "УНФ: Учет серийных номеров".

 

Итак, начнем с документа ПриходнаяНакладная.

Открываем модуль менеджера документа ПриходнаяНакладная, находим процедуру 

ВыполнитьКонтроль(ДокументСсылкаПриходнаяНакладная, ДополнительныеСвойства, Отказ, УдалениеПроведения = Ложь) Экспорт

и видим, что в СтруктураВременныеТаблицы отсутствует ДвиженияСерийныеНомераИзменение, а в тексте запроса нет обращения к РегистрНакопления.СерийныеНомера.Остатки. Пробуем исправить. Заменяем текст данной процедуры на следующий код: 

 

 // Выполняет контроль возникновения отрицательных остатков.
//
Процедура ВыполнитьКонтроль(ДокументСсылкаПриходнаяНакладная, ДополнительныеСвойства, Отказ, УдалениеПроведения = Ложь) Экспорт
	
	Если НЕ УправлениеНебольшойФирмойСервер.ВыполнитьКонтрольОстатков() Тогда
		Возврат;
	КонецЕсли;
	
	// МобильноеПриложение
	Если МобильноеПриложениеВызовСервера.НужноОграничитьФункциональность() Тогда
		Возврат;
	КонецЕсли;
	// Конец МобильноеПриложение
	
	СтруктураВременныеТаблицы = ДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы;
	
	// Если временные таблицы "ДвиженияЗапасыИзменение", "ДвиженияЗапасыНаСкладахИзменение", 
	// "ДвиженияЗапасыКПоступлениюНаСкладыИзменение", "ДвиженияЗапасыПереданныеИзменение",
	// "ДвиженияЗапасыПринятыеИзменение", "ДвиженияРазмещениеЗаказовИзменение",
	// "ДвиженияПотребностьВЗапасахИзменение" содержат записи, необходимо выполнить контроль 
	// реализации товаров.
	Если СтруктураВременныеТаблицы.ДвиженияЗапасыИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияЗапасыНаСкладахИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияЗапасыКПоступлениюНаСкладыИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияЗапасыПереданныеИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияЗапасыПринятыеИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияРазмещениеЗаказовИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияЗаказыПокупателейИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияЗаказыПоставщикамИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияПотребностьВЗапасахИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияРасчетыСПоставщикамиИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияСуммовойУчетВРозницеИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияЗапасыВРазрезеГТДИзменение
		ИЛИ СтруктураВременныеТаблицы.ДвиженияСерийныеНомераИзменение   //Для контроля серийных номеров
		Тогда
		
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	ДвиженияЗапасыНаСкладахИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияЗапасыНаСкладахИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияЗапасыНаСкладахИзменение.СтруктурнаяЕдиница КАК СтруктурнаяЕдиницаПредставление,
		|	ДвиженияЗапасыНаСкладахИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияЗапасыНаСкладахИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ДвиженияЗапасыНаСкладахИзменение.Партия КАК ПартияПредставление,
		|	ДвиженияЗапасыНаСкладахИзменение.Ячейка КАК ЯчейкаПредставление,
		|	ЗапасыНаСкладахОстатки.СтруктурнаяЕдиница.ТипСтруктурнойЕдиницы КАК ТипСтруктурнойЕдиницы,
		|	ЗапасыНаСкладахОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияЗапасыНаСкладахИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ЗапасыНаСкладахОстатки.КоличествоОстаток, 0) КАК ОстатокЗапасыНаСкладах,
		|	ЕСТЬNULL(ЗапасыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗапасыНаСкладах
		|ИЗ
		|	ДвиженияЗапасыНаСкладахИзменение КАК ДвиженияЗапасыНаСкладахИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах.Остатки(&МоментКонтроля, ) КАК ЗапасыНаСкладахОстатки
		|		ПО ДвиженияЗапасыНаСкладахИзменение.Организация = ЗапасыНаСкладахОстатки.Организация
		|			И ДвиженияЗапасыНаСкладахИзменение.СтруктурнаяЕдиница = ЗапасыНаСкладахОстатки.СтруктурнаяЕдиница
		|			И ДвиженияЗапасыНаСкладахИзменение.Номенклатура = ЗапасыНаСкладахОстатки.Номенклатура
		|			И ДвиженияЗапасыНаСкладахИзменение.Характеристика = ЗапасыНаСкладахОстатки.Характеристика
		|			И ДвиженияЗапасыНаСкладахИзменение.Партия = ЗапасыНаСкладахОстатки.Партия
		|			И ДвиженияЗапасыНаСкладахИзменение.Ячейка = ЗапасыНаСкладахОстатки.Ячейка
		|			И (ЕСТЬNULL(ЗапасыНаСкладахОстатки.КоличествоОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияЗапасыИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияЗапасыИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияЗапасыИзменение.СтруктурнаяЕдиница КАК СтруктурнаяЕдиницаПредставление,
		|	ДвиженияЗапасыИзменение.СчетУчета КАК СчетУчетаПредставление,
		|	ДвиженияЗапасыИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияЗапасыИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ДвиженияЗапасыИзменение.Партия КАК ПартияПредставление,
		|	ДвиженияЗапасыИзменение.ЗаказПокупателя КАК ЗаказПокупателяПредставление,
		|	ЗапасыОстатки.СтруктурнаяЕдиница.ТипСтруктурнойЕдиницы КАК ТипСтруктурнойЕдиницы,
		|	ЗапасыОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияЗапасыИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ЗапасыОстатки.КоличествоОстаток, 0) КАК ОстатокЗапасы,
		|	ЕСТЬNULL(ЗапасыОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗапасы,
		|	ЕСТЬNULL(ЗапасыОстатки.СуммаОстаток, 0) КАК СуммаОстатокЗапасы
		|ИЗ
		|	ДвиженияЗапасыИзменение КАК ДвиженияЗапасыИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Запасы.Остатки(&МоментКонтроля, ) КАК ЗапасыОстатки
		|		ПО ДвиженияЗапасыИзменение.Организация = ЗапасыОстатки.Организация
		|			И ДвиженияЗапасыИзменение.СтруктурнаяЕдиница = ЗапасыОстатки.СтруктурнаяЕдиница
		|			И ДвиженияЗапасыИзменение.СчетУчета = ЗапасыОстатки.СчетУчета
		|			И ДвиженияЗапасыИзменение.Номенклатура = ЗапасыОстатки.Номенклатура
		|			И ДвиженияЗапасыИзменение.Характеристика = ЗапасыОстатки.Характеристика
		|			И ДвиженияЗапасыИзменение.Партия = ЗапасыОстатки.Партия
		|			И ДвиженияЗапасыИзменение.ЗаказПокупателя = ЗапасыОстатки.ЗаказПокупателя
		|			И (ЕСТЬNULL(ЗапасыОстатки.КоличествоОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияЗапасыПереданныеИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияЗапасыПереданныеИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияЗапасыПереданныеИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияЗапасыПереданныеИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ДвиженияЗапасыПереданныеИзменение.Партия КАК ПартияПредставление,
		|	ДвиженияЗапасыПереданныеИзменение.Контрагент КАК КонтрагентПредставление,
		|	ДвиженияЗапасыПереданныеИзменение.Договор КАК ДоговорПредставление,
		|	ДвиженияЗапасыПереданныеИзменение.Заказ КАК ЗаказПредставление,
		|	ДвиженияЗапасыПереданныеИзменение.ТипПриемаПередачи КАК ТипПриемаПередачиПредставление,
		|	ЗапасыПереданныеОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияЗапасыПереданныеИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ЗапасыПереданныеОстатки.КоличествоОстаток, 0) КАК ОстатокЗапасыПереданные,
		|	ЕСТЬNULL(ЗапасыПереданныеОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗапасыПереданные,
		|	ЕСТЬNULL(ДвиженияЗапасыПереданныеИзменение.СуммаРасчетовИзменение, 0) + ЕСТЬNULL(ЗапасыПереданныеОстатки.СуммаРасчетовОстаток, 0) КАК СуммаРасчетовЗапасыПереданные,
		|	ЕСТЬNULL(ЗапасыПереданныеОстатки.СуммаРасчетовОстаток, 0) КАК СуммаРасчетовОстатокЗапасыПереданные
		|ИЗ
		|	ДвиженияЗапасыПереданныеИзменение КАК ДвиженияЗапасыПереданныеИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыПереданные.Остатки(&МоментКонтроля, ) КАК ЗапасыПереданныеОстатки
		|		ПО ДвиженияЗапасыПереданныеИзменение.Организация = ЗапасыПереданныеОстатки.Организация
		|			И ДвиженияЗапасыПереданныеИзменение.Номенклатура = ЗапасыПереданныеОстатки.Номенклатура
		|			И ДвиженияЗапасыПереданныеИзменение.Характеристика = ЗапасыПереданныеОстатки.Характеристика
		|			И ДвиженияЗапасыПереданныеИзменение.Партия = ЗапасыПереданныеОстатки.Партия
		|			И ДвиженияЗапасыПереданныеИзменение.Контрагент = ЗапасыПереданныеОстатки.Контрагент
		|			И ДвиженияЗапасыПереданныеИзменение.Договор = ЗапасыПереданныеОстатки.Договор
		|			И ДвиженияЗапасыПереданныеИзменение.Заказ = ЗапасыПереданныеОстатки.Заказ
		|			И ДвиженияЗапасыПереданныеИзменение.ТипПриемаПередачи = ЗапасыПереданныеОстатки.ТипПриемаПередачи
		|			И (ЕСТЬNULL(ЗапасыПереданныеОстатки.КоличествоОстаток, 0) < 0
		|				ИЛИ ЕСТЬNULL(ЗапасыПереданныеОстатки.СуммаРасчетовОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияЗапасыПринятыеИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияЗапасыПринятыеИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияЗапасыПринятыеИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияЗапасыПринятыеИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ДвиженияЗапасыПринятыеИзменение.Партия КАК ПартияПредставление,
		|	ДвиженияЗапасыПринятыеИзменение.Контрагент КАК КонтрагентПредставление,
		|	ДвиженияЗапасыПринятыеИзменение.Договор КАК ДоговорПредставление,
		|	ДвиженияЗапасыПринятыеИзменение.Заказ КАК ЗаказПредставление,
		|	ДвиженияЗапасыПринятыеИзменение.ТипПриемаПередачи КАК ТипПриемаПередачиПредставление,
		|	ЗапасыПринятыеОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияЗапасыПринятыеИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ЗапасыПринятыеОстатки.КоличествоОстаток, 0) КАК ОстатокЗапасыПринятые,
		|	ЕСТЬNULL(ЗапасыПринятыеОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗапасыПринятые,
		|	ЕСТЬNULL(ДвиженияЗапасыПринятыеИзменение.СуммаРасчетовИзменение, 0) + ЕСТЬNULL(ЗапасыПринятыеОстатки.СуммаРасчетовОстаток, 0) КАК СуммаРасчетовЗапасыПринятые,
		|	ЕСТЬNULL(ЗапасыПринятыеОстатки.СуммаРасчетовОстаток, 0) КАК СуммаРасчетовОстатокЗапасыПринятые
		|ИЗ
		|	ДвиженияЗапасыПринятыеИзменение КАК ДвиженияЗапасыПринятыеИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыПринятые.Остатки(&МоментКонтроля, ) КАК ЗапасыПринятыеОстатки
		|		ПО ДвиженияЗапасыПринятыеИзменение.Организация = ЗапасыПринятыеОстатки.Организация
		|			И ДвиженияЗапасыПринятыеИзменение.Номенклатура = ЗапасыПринятыеОстатки.Номенклатура
		|			И ДвиженияЗапасыПринятыеИзменение.Характеристика = ЗапасыПринятыеОстатки.Характеристика
		|			И ДвиженияЗапасыПринятыеИзменение.Партия = ЗапасыПринятыеОстатки.Партия
		|			И ДвиженияЗапасыПринятыеИзменение.Контрагент = ЗапасыПринятыеОстатки.Контрагент
		|			И ДвиженияЗапасыПринятыеИзменение.Договор = ЗапасыПринятыеОстатки.Договор
		|			И ДвиженияЗапасыПринятыеИзменение.Заказ = ЗапасыПринятыеОстатки.Заказ
		|			И ДвиженияЗапасыПринятыеИзменение.ТипПриемаПередачи = ЗапасыПринятыеОстатки.ТипПриемаПередачи
		|			И (ЕСТЬNULL(ЗапасыПринятыеОстатки.КоличествоОстаток, 0) < 0
		|				ИЛИ ЕСТЬNULL(ЗапасыПринятыеОстатки.СуммаРасчетовОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияЗаказыПокупателейИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияЗаказыПокупателейИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияЗаказыПокупателейИзменение.ЗаказПокупателя КАК ЗаказПредставление,
		|	ДвиженияЗаказыПокупателейИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияЗаказыПокупателейИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ЗаказыПокупателейОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияЗаказыПокупателейИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) КАК ОстатокЗаказыПокупателей,
		|	ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗаказыПокупателей
		|ИЗ
		|	ДвиженияЗаказыПокупателейИзменение КАК ДвиженияЗаказыПокупателейИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(&МоментКонтроля, ) КАК ЗаказыПокупателейОстатки
		|		ПО ДвиженияЗаказыПокупателейИзменение.Организация = ЗаказыПокупателейОстатки.Организация
		|			И ДвиженияЗаказыПокупателейИзменение.ЗаказПокупателя = ЗаказыПокупателейОстатки.ЗаказПокупателя
		|			И ДвиженияЗаказыПокупателейИзменение.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура
		|			И ДвиженияЗаказыПокупателейИзменение.Характеристика = ЗаказыПокупателейОстатки.Характеристика
		|			И (ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияЗаказыПоставщикамИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияЗаказыПоставщикамИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияЗаказыПоставщикамИзменение.ЗаказПоставщику КАК ЗаказПоставщикуПредставление,
		|	ДвиженияЗаказыПоставщикамИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияЗаказыПоставщикамИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ЗаказыПоставщикамОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияЗаказыПоставщикамИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ЗаказыПоставщикамОстатки.КоличествоОстаток, 0) КАК ОстатокЗаказыПоставщикам,
		|	ЕСТЬNULL(ЗаказыПоставщикамОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗаказыПоставщикам
		|ИЗ
		|	ДвиженияЗаказыПоставщикамИзменение КАК ДвиженияЗаказыПоставщикамИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&МоментКонтроля, ) КАК ЗаказыПоставщикамОстатки
		|		ПО ДвиженияЗаказыПоставщикамИзменение.Организация = ЗаказыПоставщикамОстатки.Организация
		|			И ДвиженияЗаказыПоставщикамИзменение.ЗаказПоставщику = ЗаказыПоставщикамОстатки.ЗаказПоставщику
		|			И ДвиженияЗаказыПоставщикамИзменение.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
		|			И ДвиженияЗаказыПоставщикамИзменение.Характеристика = ЗаказыПоставщикамОстатки.Характеристика
		|			И (ЕСТЬNULL(ЗаказыПоставщикамОстатки.КоличествоОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияПотребностьВЗапасахИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияПотребностьВЗапасахИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияПотребностьВЗапасахИзменение.ТипДвижения КАК ТипДвиженияПредставление,
		|	ДвиженияПотребностьВЗапасахИзменение.ЗаказПокупателя КАК ЗаказПокупателяПредставление,
		|	ДвиженияПотребностьВЗапасахИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияПотребностьВЗапасахИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ПотребностьВЗапасахОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияПотребностьВЗапасахИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ПотребностьВЗапасахОстатки.КоличествоОстаток, 0) КАК ОстатокПотребностьВЗапасах,
		|	ЕСТЬNULL(ПотребностьВЗапасахОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокПотребностьВЗапасах
		|ИЗ
		|	ДвиженияПотребностьВЗапасахИзменение КАК ДвиженияПотребностьВЗапасахИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПотребностьВЗапасах.Остатки(&МоментКонтроля, ) КАК ПотребностьВЗапасахОстатки
		|		ПО ДвиженияПотребностьВЗапасахИзменение.Организация = ПотребностьВЗапасахОстатки.Организация
		|			И ДвиженияПотребностьВЗапасахИзменение.ТипДвижения = ПотребностьВЗапасахОстатки.ТипДвижения
		|			И ДвиженияПотребностьВЗапасахИзменение.ЗаказПокупателя = ПотребностьВЗапасахОстатки.ЗаказПокупателя
		|			И ДвиженияПотребностьВЗапасахИзменение.Номенклатура = ПотребностьВЗапасахОстатки.Номенклатура
		|			И ДвиженияПотребностьВЗапасахИзменение.Характеристика = ПотребностьВЗапасахОстатки.Характеристика
		|			И (ЕСТЬNULL(ПотребностьВЗапасахОстатки.КоличествоОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияРазмещениеЗаказовИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияРазмещениеЗаказовИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияРазмещениеЗаказовИзменение.ЗаказПокупателя КАК ЗаказПокупателяПредставление,
		|	ДвиженияРазмещениеЗаказовИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияРазмещениеЗаказовИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ДвиженияРазмещениеЗаказовИзменение.ИсточникОбеспечения КАК ИсточникОбеспеченияПредставление,
		|	РазмещениеЗаказовОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияРазмещениеЗаказовИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(РазмещениеЗаказовОстатки.КоличествоОстаток, 0) КАК ОстатокРазмещениеЗаказов,
		|	ЕСТЬNULL(РазмещениеЗаказовОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокРазмещениеЗаказов
		|ИЗ
		|	ДвиженияРазмещениеЗаказовИзменение КАК ДвиженияРазмещениеЗаказовИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказов.Остатки(&МоментКонтроля, ) КАК РазмещениеЗаказовОстатки
		|		ПО ДвиженияРазмещениеЗаказовИзменение.Организация = РазмещениеЗаказовОстатки.Организация
		|			И ДвиженияРазмещениеЗаказовИзменение.ЗаказПокупателя = РазмещениеЗаказовОстатки.ЗаказПокупателя
		|			И ДвиженияРазмещениеЗаказовИзменение.Номенклатура = РазмещениеЗаказовОстатки.Номенклатура
		|			И ДвиженияРазмещениеЗаказовИзменение.Характеристика = РазмещениеЗаказовОстатки.Характеристика
		|			И ДвиженияРазмещениеЗаказовИзменение.ИсточникОбеспечения = РазмещениеЗаказовОстатки.ИсточникОбеспечения
		|			И (ЕСТЬNULL(РазмещениеЗаказовОстатки.КоличествоОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияРасчетыСПоставщикамиИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияРасчетыСПоставщикамиИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияРасчетыСПоставщикамиИзменение.Контрагент КАК КонтрагентПредставление,
		|	ДвиженияРасчетыСПоставщикамиИзменение.Договор КАК ДоговорПредставление,
		|	ДвиженияРасчетыСПоставщикамиИзменение.Договор.ВалютаРасчетов КАК ВалютаПредставление,
		|	ДвиженияРасчетыСПоставщикамиИзменение.Документ КАК ДокументПредставление,
		|	ДвиженияРасчетыСПоставщикамиИзменение.Заказ КАК ЗаказПредставление,
		|	ДвиженияРасчетыСПоставщикамиИзменение.ТипРасчетов КАК ТипРасчетовПредставление,
		|	ЛОЖЬ КАК ДвиженияДенежныхДокументов,
		|	ДвиженияРасчетыСПоставщикамиИзменение.СуммаПередЗаписью КАК СуммаПередЗаписью,
		|	ДвиженияРасчетыСПоставщикамиИзменение.СуммаПриЗаписи КАК СуммаПриЗаписи,
		|	ДвиженияРасчетыСПоставщикамиИзменение.СуммаИзменение КАК СуммаИзменение,
		|	ДвиженияРасчетыСПоставщикамиИзменение.СуммаВалПередЗаписью КАК СуммаВалПередЗаписью,
		|	ДвиженияРасчетыСПоставщикамиИзменение.СуммаВалПриЗаписи КАК СуммаВалПриЗаписи,
		|	ДвиженияРасчетыСПоставщикамиИзменение.СуммаВалИзменение КАК СуммаВалИзменение,
		|	ДвиженияРасчетыСПоставщикамиИзменение.СуммаВалПриЗаписи - ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаВалОстаток, 0) КАК СуммаВыданныхАвансов,
		|	ДвиженияРасчетыСПоставщикамиИзменение.СуммаВалИзменение + ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаВалОстаток, 0) КАК СуммаНепогашеннойЗадолженности,
		|	ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
		|	ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаВалОстаток, 0) КАК СуммаВалОстаток,
		|	ДвиженияРасчетыСПоставщикамиИзменение.ТипРасчетов КАК ТипРасчетов
		|ИЗ
		|	ДвиженияРасчетыСПоставщикамиИзменение КАК ДвиженияРасчетыСПоставщикамиИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПоставщиками.Остатки(&МоментКонтроля, ) КАК РасчетыСПоставщикамиОстатки
		|		ПО ДвиженияРасчетыСПоставщикамиИзменение.Организация = РасчетыСПоставщикамиОстатки.Организация
		|			И ДвиженияРасчетыСПоставщикамиИзменение.Контрагент = РасчетыСПоставщикамиОстатки.Контрагент
		|			И ДвиженияРасчетыСПоставщикамиИзменение.Договор = РасчетыСПоставщикамиОстатки.Договор
		|			И ДвиженияРасчетыСПоставщикамиИзменение.Документ = РасчетыСПоставщикамиОстатки.Документ
		|			И ДвиженияРасчетыСПоставщикамиИзменение.Заказ = РасчетыСПоставщикамиОстатки.Заказ
		|			И ДвиженияРасчетыСПоставщикамиИзменение.ТипРасчетов = РасчетыСПоставщикамиОстатки.ТипРасчетов
		|			И (ВЫБОР
		|				КОГДА ДвиженияРасчетыСПоставщикамиИзменение.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Аванс)
		|					ТОГДА ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаВалОстаток, 0) > 0
		|				ИНАЧЕ ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаВалОстаток, 0) < 0
		|			КОНЕЦ)
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияСуммовойУчетВРозницеИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияСуммовойУчетВРозницеИзменение.Организация КАК ОрганизацияПредставление,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СтруктурнаяЕдиница КАК СтруктурнаяЕдиницаПредставление,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СтруктурнаяЕдиница.РозничныйВидЦен.ВалютаЦены КАК ВалютаПредставление,
		|	ЕСТЬNULL(СуммовойУчетВРозницеОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СуммаВалИзменение + ЕСТЬNULL(СуммовойУчетВРозницеОстатки.СуммаВалОстаток, 0) КАК ОстатокВРознице,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СуммаПередЗаписью КАК СуммаПередЗаписью,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СуммаПриЗаписи КАК СуммаПриЗаписи,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СуммаИзменение КАК СуммаИзменение,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СуммаВалПередЗаписью КАК СуммаВалПередЗаписью,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СуммаВалПриЗаписи КАК СуммаВалПриЗаписи,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СуммаВалИзменение КАК СуммаВалИзменение,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СебестоимостьПередЗаписью КАК СебестоимостьПередЗаписью,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СебестоимостьПриЗаписи КАК СебестоимостьПриЗаписи,
		|	ДвиженияСуммовойУчетВРозницеИзменение.СебестоимостьИзменение КАК СебестоимостьИзменение
		|ИЗ
		|	ДвиженияСуммовойУчетВРозницеИзменение КАК ДвиженияСуммовойУчетВРозницеИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.СуммовойУчетВРознице.Остатки(&МоментКонтроля, ) КАК СуммовойУчетВРозницеОстатки
		|		ПО ДвиженияСуммовойУчетВРозницеИзменение.Организация = СуммовойУчетВРозницеОстатки.Организация
		|			И ДвиженияСуммовойУчетВРозницеИзменение.СтруктурнаяЕдиница = СуммовойУчетВРозницеОстатки.СтруктурнаяЕдиница
		|			И (ЕСТЬNULL(СуммовойУчетВРозницеОстатки.СуммаВалОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияЗапасыВРазрезеГТДИзменение.НомерСтроки КАК НомерСтроки,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыВРазрезеГТДИзменение.Организация) КАК ОрганизацияПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыВРазрезеГТДИзменение.НомерГТД) КАК НомерГТДПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыВРазрезеГТДИзменение.Номенклатура) КАК НоменклатураПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыВРазрезеГТДИзменение.Характеристика) КАК ХарактеристикаПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыВРазрезеГТДИзменение.Партия) КАК ПартияПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыВРазрезеГТДИзменение.СтранаПроисхождения) КАК СтранаПроисхожденияПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ЗапасыВРазрезеГТДОстатки.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияЗапасыВРазрезеГТДИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ЗапасыВРазрезеГТДОстатки.КоличествоОстаток, 0) КАК ОстатокЗапасыВРазрезеГТД,
		|	ЕСТЬNULL(ЗапасыВРазрезеГТДОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗапасыВРазрезеГТД
		|ИЗ
		|	ДвиженияЗапасыВРазрезеГТДИзменение КАК ДвиженияЗапасыВРазрезеГТДИзменение
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыВРазрезеГТД.Остатки(
		|				&МоментКонтроля,
		|				(Организация, НомерГТД, Номенклатура, Характеристика, Партия, СтранаПроисхождения) В
		|					(ВЫБРАТЬ
		|						ДвиженияЗапасыВРазрезеГТДИзменение.Организация КАК Организация,
		|						ДвиженияЗапасыВРазрезеГТДИзменение.НомерГТД КАК НомерГТД,
		|						ДвиженияЗапасыВРазрезеГТДИзменение.Номенклатура КАК Номенклатура,
		|						ДвиженияЗапасыВРазрезеГТДИзменение.Характеристика КАК Характеристика,
		|						ДвиженияЗапасыВРазрезеГТДИзменение.Партия КАК Партия,
		|						ДвиженияЗапасыВРазрезеГТДИзменение.СтранаПроисхождения КАК СтранаПроисхождения
		|					ИЗ
		|						ДвиженияЗапасыВРазрезеГТДИзменение КАК ДвиженияЗапасыВРазрезеГТДИзменение)) КАК ЗапасыВРазрезеГТДОстатки
		|		ПО ДвиженияЗапасыВРазрезеГТДИзменение.Организация = ЗапасыВРазрезеГТДОстатки.Организация
		|			И ДвиженияЗапасыВРазрезеГТДИзменение.НомерГТД = ЗапасыВРазрезеГТДОстатки.НомерГТД
		|			И ДвиженияЗапасыВРазрезеГТДИзменение.Номенклатура = ЗапасыВРазрезеГТДОстатки.Номенклатура
		|			И ДвиженияЗапасыВРазрезеГТДИзменение.Характеристика = ЗапасыВРазрезеГТДОстатки.Характеристика
		|			И ДвиженияЗапасыВРазрезеГТДИзменение.Партия = ЗапасыВРазрезеГТДОстатки.Партия
		|			И ДвиженияЗапасыВРазрезеГТДИзменение.СтранаПроисхождения = ЗапасыВРазрезеГТДОстатки.СтранаПроисхождения
		|ГДЕ
		|	ЕСТЬNULL(ЗапасыВРазрезеГТДОстатки.КоличествоОстаток, 0) < 0
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияСерийныеНомераИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияСерийныеНомераИзменение.СерийныйНомер КАК СерийныйНомерПредставление,
		|	ДвиженияСерийныеНомераИзменение.СтруктурнаяЕдиница КАК СтруктурнаяЕдиницаПредставление,
		|	ДвиженияСерийныеНомераИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияСерийныеНомераИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ДвиженияСерийныеНомераИзменение.Партия КАК ПартияПредставление,
		|	ДвиженияСерийныеНомераИзменение.Ячейка КАК ЯчейкаПредставление,
		|	СерийныеНомераОстатки.СтруктурнаяЕдиница.ТипСтруктурнойЕдиницы КАК ТипСтруктурнойЕдиницы,
		|	СерийныеНомераОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияСерийныеНомераИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(СерийныеНомераОстатки.КоличествоОстаток, 0) КАК ОстатокЗапасыНаСкладах,
		|	ЕСТЬNULL(СерийныеНомераОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗапасыНаСкладах
		|ИЗ
		|	ДвиженияСерийныеНомераИзменение КАК ДвиженияСерийныеНомераИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.СерийныеНомера.Остатки(&МоментКонтроля, ) КАК СерийныеНомераОстатки
		|		ПО ДвиженияСерийныеНомераИзменение.СерийныйНомер = СерийныеНомераОстатки.СерийныйНомер
		|			И ДвиженияСерийныеНомераИзменение.СтруктурнаяЕдиница = СерийныеНомераОстатки.СтруктурнаяЕдиница
		|			И ДвиженияСерийныеНомераИзменение.Номенклатура = СерийныеНомераОстатки.Номенклатура
		|			И ДвиженияСерийныеНомераИзменение.Характеристика = СерийныеНомераОстатки.Характеристика
		|			И ДвиженияСерийныеНомераИзменение.Партия = СерийныеНомераОстатки.Партия
		|			И ДвиженияСерийныеНомераИзменение.Ячейка = СерийныеНомераОстатки.Ячейка
		|			И (ЕСТЬNULL(СерийныеНомераОстатки.КоличествоОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки");
	
		
		Запрос.МенеджерВременныхТаблиц = СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
		Запрос.УстановитьПараметр("МоментКонтроля", ДополнительныеСвойства.ДляПроведения.МоментКонтроля);
		
		МассивРезультатов = Запрос.ВыполнитьПакет();
		
		Если НЕ МассивРезультатов[0].Пустой()
			ИЛИ НЕ МассивРезультатов[1].Пустой()
			ИЛИ НЕ МассивРезультатов[2].Пустой()
			ИЛИ НЕ МассивРезультатов[3].Пустой()
			ИЛИ НЕ МассивРезультатов[4].Пустой()
			ИЛИ НЕ МассивРезультатов[5].Пустой()
			ИЛИ НЕ МассивРезультатов[6].Пустой()
			ИЛИ НЕ МассивРезультатов[7].Пустой()
			ИЛИ НЕ МассивРезультатов[8].Пустой()
			ИЛИ НЕ МассивРезультатов[9].Пустой()
			ИЛИ НЕ МассивРезультатов[10].Пустой()
			ИЛИ НЕ МассивРезультатов[11].Пустой()
			Тогда
			
			ДокументОбъектПриходнаяНакладная = ДокументСсылкаПриходнаяНакладная.ПолучитьОбъект()
			
		КонецЕсли;
		
		// Отрицательный остаток запасов на складе.
		Если НЕ МассивРезультатов[0].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[0].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗапасыНаСкладах(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток учета запасов.
		Если НЕ МассивРезультатов[1].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[1].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗапасы(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток запасов переданных.
		Если НЕ МассивРезультатов[2].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[2].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗапасыПереданные(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток запасов принятых.
		Если НЕ МассивРезультатов[3].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[3].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗапасыПринятые(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток по заказу покупателя.
		Если НЕ МассивРезультатов[4].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[4].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗаказыПокупателей(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток по заказу поставщику.
		Если НЕ МассивРезультатов[5].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[5].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗаказыПоставщикам(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток потребностей в запасах.
		Если НЕ МассивРезультатов[6].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[6].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструПотребностьВЗапасах(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток размещение заказов.
		Если НЕ МассивРезультатов[7].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[7].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструРазмещениеЗаказов(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток по расчетам с поставщиками.
		Если НЕ МассивРезультатов[8].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[8].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструРасчетыСПоставщиками(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток по суммовому учету в рознице.
		Если НЕ МассивРезультатов[9].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[9].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструСуммовойУчетВРознице(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток по остаткам запасов в разрезе номеров ГТД.
		Если Константы.КонтролироватьОстаткиПоНомерамГТД.Получить()
			И НЕ МассивРезультатов[10].Пустой() Тогда
			
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[10].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗапасыВРазрезеГТД(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
			
		КонецЕсли;
		
		// Отрицательный остаток по серийным номерам.
		Если Константы.КонтрольОстатковСерийныхНомеров.Получить() 
		И НЕ МассивРезультатов[11].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[11].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструСерийныеНомера(ДокументОбъектПриходнаяНакладная, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры // ВыполнитьКонтроль()

 

Далее открываем модуль менеджера документа ЧекККМВозврат. Находим процедуру 

ВыполнитьКонтроль(ДокументСсылкаЧекККМВозврат, ДополнительныеСвойства, Отказ, УдалениеПроведения = Ложь) Экспорт и заменяем код процедуры на следующий:

 

// Выполняет контроль возникновения отрицательных остатков.
//
Процедура ВыполнитьКонтроль(ДокументСсылкаЧекККМВозврат, ДополнительныеСвойства, Отказ, УдалениеПроведения = Ложь) Экспорт
	
	Если НЕ УправлениеНебольшойФирмойСервер.ВыполнитьКонтрольОстатков()
	 ИЛИ НЕ Константы.КонтролироватьОстаткиПриПробитииЧековККМ.Получить()
	    ИЛИ ДокументСсылкаЧекККМВозврат.Архивный Тогда
		Возврат;
	КонецЕсли;
	
	СтруктураВременныеТаблицы = ДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы;
	
	// Если временные таблицы "ДвиженияЗапасыИзменение", необходимо выполнить контроль реализации товаров.
	Если СтруктураВременныеТаблицы.ДвиженияЗапасыНаСкладахИзменение
	 ИЛИ СтруктураВременныеТаблицы.ДвиженияЗапасыИзменение
	 ИЛИ СтруктураВременныеТаблицы.ДвиженияДенежныеСредстваВКассахККМИзменение 
	 ИЛИ СтруктураВременныеТаблицы.ДвиженияСерийныеНомераИзменение Тогда
		
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	ДвиженияЗапасыНаСкладахИзменение.НомерСтроки КАК НомерСтроки,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыНаСкладахИзменение.Организация) КАК ОрганизацияПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыНаСкладахИзменение.СтруктурнаяЕдиница) КАК СтруктурнаяЕдиницаПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыНаСкладахИзменение.Номенклатура) КАК НоменклатураПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыНаСкладахИзменение.Характеристика) КАК ХарактеристикаПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыНаСкладахИзменение.Партия) КАК ПартияПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияЗапасыНаСкладахИзменение.Ячейка) КАК ЯчейкаПредставление,
		|	ЗапасыНаСкладахОстатки.СтруктурнаяЕдиница.ТипСтруктурнойЕдиницы КАК ТипСтруктурнойЕдиницы,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ЗапасыНаСкладахОстатки.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияЗапасыНаСкладахИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(ЗапасыНаСкладахОстатки.КоличествоОстаток, 0) КАК ОстатокЗапасыНаСкладах,
		|	ЕСТЬNULL(ЗапасыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокЗапасыНаСкладах
		|ИЗ
		|	ДвиженияЗапасыНаСкладахИзменение КАК ДвиженияЗапасыНаСкладахИзменение
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыНаСкладах.Остатки(
		|				&МоментКонтроля,
		|				(Организация, СтруктурнаяЕдиница, Номенклатура, Характеристика, Партия, Ячейка) В
		|					(ВЫБРАТЬ
		|						ДвиженияЗапасыНаСкладахИзменение.Организация КАК Организация,
		|						ДвиженияЗапасыНаСкладахИзменение.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
		|						ДвиженияЗапасыНаСкладахИзменение.Номенклатура КАК Номенклатура,
		|						ДвиженияЗапасыНаСкладахИзменение.Характеристика КАК Характеристика,
		|						ДвиженияЗапасыНаСкладахИзменение.Партия КАК Партия,
		|						ДвиженияЗапасыНаСкладахИзменение.Ячейка КАК Ячейка
		|					ИЗ
		|						ДвиженияЗапасыНаСкладахИзменение КАК ДвиженияЗапасыНаСкладахИзменение)) КАК ЗапасыНаСкладахОстатки
		|		ПО ДвиженияЗапасыНаСкладахИзменение.Организация = ЗапасыНаСкладахОстатки.Организация
		|			И ДвиженияЗапасыНаСкладахИзменение.СтруктурнаяЕдиница = ЗапасыНаСкладахОстатки.СтруктурнаяЕдиница
		|			И ДвиженияЗапасыНаСкладахИзменение.Номенклатура = ЗапасыНаСкладахОстатки.Номенклатура
		|			И ДвиженияЗапасыНаСкладахИзменение.Характеристика = ЗапасыНаСкладахОстатки.Характеристика
		|			И ДвиженияЗапасыНаСкладахИзменение.Партия = ЗапасыНаСкладахОстатки.Партия
		|			И ДвиженияЗапасыНаСкладахИзменение.Ячейка = ЗапасыНаСкладахОстатки.Ячейка
		|ГДЕ
		|	ЕСТЬNULL(ЗапасыНаСкладахОстатки.КоличествоОстаток, 0) < 0
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияДенежныеСредстваВКассахККМИзменение.НомерСтроки КАК НомерСтроки,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияДенежныеСредстваВКассахККМИзменение.Организация) КАК ОрганизацияПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияДенежныеСредстваВКассахККМИзменение.КассаККМ) КАК КассаККМПредставление,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДвиженияДенежныеСредстваВКассахККМИзменение.КассаККМ.ВалютаДенежныхСредств) КАК ВалютаПредставление,
		|	ЕСТЬNULL(ДенежныеСредстваВКассахККМОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
		|	ЕСТЬNULL(ДенежныеСредстваВКассахККМОстатки.СуммаВалОстаток, 0) КАК СуммаВалОстаток,
		|	ДвиженияДенежныеСредстваВКассахККМИзменение.СуммаВалИзменение + ЕСТЬNULL(ДенежныеСредстваВКассахККМОстатки.СуммаВалОстаток, 0) КАК ОстатокДенежныхСредств,
		|	ДвиженияДенежныеСредстваВКассахККМИзменение.СуммаПередЗаписью КАК СуммаПередЗаписью,
		|	ДвиженияДенежныеСредстваВКассахККМИзменение.СуммаПриЗаписи КАК СуммаПриЗаписи,
		|	ДвиженияДенежныеСредстваВКассахККМИзменение.СуммаИзменение КАК СуммаИзменение,
		|	ДвиженияДенежныеСредстваВКассахККМИзменение.СуммаВалПередЗаписью КАК СуммаВалПередЗаписью,
		|	ДвиженияДенежныеСредстваВКассахККМИзменение.СуммаВалПриЗаписи КАК СуммаВалПриЗаписи,
		|	ДвиженияДенежныеСредстваВКассахККМИзменение.СуммаВалИзменение КАК СуммаВалИзменение
		|ИЗ
		|	ДвиженияДенежныеСредстваВКассахККМИзменение КАК ДвиженияДенежныеСредстваВКассахККМИзменение
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДенежныеСредстваВКассахККМ.Остатки(
		|				&МоментКонтроля,
		|				(Организация, КассаККМ) В
		|					(ВЫБРАТЬ
		|						ДвиженияДенежныеСредстваВКассахККМИзменение.Организация КАК Организация,
		|						ДвиженияДенежныеСредстваВКассахККМИзменение.КассаККМ КАК ТипДенежныхСредств
		|					ИЗ
		|						ДвиженияДенежныеСредстваВКассахККМИзменение КАК ДвиженияДенежныеСредстваВКассахККМИзменение)) КАК ДенежныеСредстваВКассахККМОстатки
		|		ПО ДвиженияДенежныеСредстваВКассахККМИзменение.Организация = ДенежныеСредстваВКассахККМОстатки.Организация
		|			И ДвиженияДенежныеСредстваВКассахККМИзменение.КассаККМ = ДенежныеСредстваВКассахККМОстатки.КассаККМ
		|ГДЕ
		|	ЕСТЬNULL(ДенежныеСредстваВКассахККМОстатки.СуммаВалОстаток, 0) < 0
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДвиженияСерийныеНомераИзменение.НомерСтроки КАК НомерСтроки,
		|	ДвиженияСерийныеНомераИзменение.СерийныйНомер КАК СерийныйНомерПредставление,
		|	ДвиженияСерийныеНомераИзменение.СтруктурнаяЕдиница КАК СтруктурнаяЕдиницаПредставление,
		|	ДвиженияСерийныеНомераИзменение.Номенклатура КАК НоменклатураПредставление,
		|	ДвиженияСерийныеНомераИзменение.Характеристика КАК ХарактеристикаПредставление,
		|	ДвиженияСерийныеНомераИзменение.Партия КАК ПартияПредставление,
		|	ДвиженияСерийныеНомераИзменение.Ячейка КАК ЯчейкаПредставление,
		|	СерийныеНомераОстатки.СтруктурнаяЕдиница.ТипСтруктурнойЕдиницы КАК ТипСтруктурнойЕдиницы,
		|	СерийныеНомераОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмеренияПредставление,
		|	ЕСТЬNULL(ДвиженияСерийныеНомераИзменение.КоличествоИзменение, 0) + ЕСТЬNULL(СерийныеНомераОстатки.КоличествоОстаток, 0) КАК ОстатокСерийныеНомера,
		|	ЕСТЬNULL(СерийныеНомераОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокСерийныеНомера
		|ИЗ
		|	ДвиженияСерийныеНомераИзменение КАК ДвиженияСерийныеНомераИзменение
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.СерийныеНомера.Остатки(&МоментКонтроля, ) КАК СерийныеНомераОстатки
		|		ПО ДвиженияСерийныеНомераИзменение.СтруктурнаяЕдиница = СерийныеНомераОстатки.СтруктурнаяЕдиница
		|			И ДвиженияСерийныеНомераИзменение.Номенклатура = СерийныеНомераОстатки.Номенклатура
		|			И ДвиженияСерийныеНомераИзменение.Характеристика = СерийныеНомераОстатки.Характеристика
		|			И ДвиженияСерийныеНомераИзменение.Партия = СерийныеНомераОстатки.Партия
		|			И ДвиженияСерийныеНомераИзменение.СерийныйНомер = СерийныеНомераОстатки.СерийныйНомер
		|			И ДвиженияСерийныеНомераИзменение.Ячейка = СерийныеНомераОстатки.Ячейка
		|			И (ЕСТЬNULL(СерийныеНомераОстатки.КоличествоОстаток, 0) < 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	НомерСтроки");		
		Если Не ДокументСсылкаЧекККМВозврат.ДвиженияПоЗапасамУдалять Тогда
			Запрос.Текст = Запрос.Текст // [0 и 1]
			+ СформироватьШаблонПакетногоЗапроса()
			+ СформироватьТекстЗапросаОстаткиЗапасы(); // [2]
		КонецЕсли;
		
		Запрос.МенеджерВременныхТаблиц = СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
		Запрос.УстановитьПараметр("МоментКонтроля", ДополнительныеСвойства.ДляПроведения.МоментКонтроля);
		
		МассивРезультатов = Запрос.ВыполнитьПакет();
		
		Если НЕ МассивРезультатов[0].Пустой()
		 ИЛИ НЕ МассивРезультатов[1].Пустой() Тогда
			ДокументОбъектЧекККМВозврат = ДокументСсылкаЧекККМВозврат.ПолучитьОбъект()
		КонецЕсли;
		
		// Отрицательный остаток запасов на складе.
		Если НЕ МассивРезультатов[0].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[0].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗапасыНаСкладах(ДокументОбъектЧекККМВозврат, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток по кассе ККМ.
		Если НЕ МассивРезультатов[1].Пустой() Тогда
			ВыборкаИзРезультатаЗапроса = МассивРезультатов[1].Выбрать();
			УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструДенежныеСредстваВКассахККМ(ДокументОбъектЧекККМВозврат, ВыборкаИзРезультатаЗапроса, Отказ);
		КонецЕсли;
		
		// Отрицательный остаток учета запасов.
		Если Не ДокументСсылкаЧекККМВозврат.ДвиженияПоЗапасамУдалять Тогда
			Если НЕ МассивРезультатов[2].Пустой() Тогда
				ВыборкаИзРезультатаЗапроса = МассивРезультатов[2].Выбрать();
				УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструЗапасы(ДокументОбъектЧекККМВозврат, ВыборкаИзРезультатаЗапроса, Отказ);
			КонецЕсли;
		КонецЕсли;
		
		// Отрицательный остаток учета серийных номеров.
		Если Не ДокументСсылкаЧекККМВозврат.ДвиженияПоЗапасамУдалять Тогда
			Если Константы.КонтрольОстатковСерийныхНомеров.Получить() 
		      И НЕ МассивРезультатов[3].Пустой() Тогда
				ВыборкаИзРезультатаЗапроса = МассивРезультатов[3].Выбрать();
				УправлениеНебольшойФирмойСервер.СообщитьОбОшибкахПроведенияПоРегиструСерийныеНомера(ДокументОбъектЧекККМВозврат, ВыборкаИзРезультатаЗапроса, Отказ);
			КонецЕсли;
		КонецЕсли;		
	КонецЕсли;
	
КонецПроцедуры // ВыполнитьКонтроль()
 

 

Обновляем конфигурацию базы данных, проверяем и пользуемся.

Доработку документов КорректировкаПоступления и КорректировкаРеализации будем рассматривать в следующей статье.

Спасибо.

 
0
Еще от автора
≡ к списку статей