public void ТоварыВРезервеНаСкладахКонтрольОстатков_Реализация(/*СтруктураШапкиДокумента, СтруктураПараметров, Заголовок, Отказ*/)
{
//ЕстьСоставНабора = (СтруктураПараметров.ИмяТабличнойЧасти = "Товары");
if(true/*СтруктураПараметров.ИмяТабличнойЧасти = "ВозвратнаяТара"*/)
{
//ЕстьХарактеристика = Ложь;
//ЕстьСерия = Ложь;
//ЕстьКачество = Ложь;
}
if(true/*ЕстьСоставНабора*/)
{
/*ТекстЗапросаРеквизитыДокумента = "
| (ВЫБРАТЬ
//Строки ТЧ Товары, в которых номенклатура - не комплект
| Док.Ссылка,
| Док.Номенклатура,
| Док.Склад,
| Док.СпособСписанияОстаткаТоваров,
| Док.ХарактеристикаНоменклатуры,
| Док.СерияНоменклатуры,
| Док.Коэффициент,
| Док.ЗаказПокупателя,
| Док.ЕдиницаИзмерения,
| Док.Количество
| ИЗ
| Документ." + СтруктураПараметров.ИмяТаблицы + " КАК Док
| ГДЕ
| Док.Ссылка = &ДокументСсылка
| И НЕ Док.Номенклатура.Комплект
| И Док.СпособСписанияОстаткаТоваров = &ИзРезерва
| ОБЪЕДИНИТЬ ВСЕ
|
//Строки ТЧ Состав набора
| ВЫБРАТЬ
| Док.Ссылка,
| Док.Номенклатура,
| Док.Склад,
| Док.СпособСписанияОстаткаТоваров,
| Док.ХарактеристикаНоменклатуры,
| Док.СерияНоменклатуры,
| Док.Коэффициент,
| Док.ЗаказПокупателя,
| Док.ЕдиницаИзмерения,
| Док.Количество
| ИЗ
| (ВЫБРАТЬ
| ДокНаб.Ссылка,
| ДокНаб.Номенклатура,
//Склад может быть указан в целом для набора в строке ТЧ Товары, или для каждого элемента набора в ТЧ СоставНабора
| ВЫБОР
| КОГДА ДокНаб.Склад = &ПустойСклад ТОГДА ДокТов.Склад
| ИНАЧЕ ДокНаб.Склад
| КОНЕЦ КАК Склад,
//СпособСписанияОстатков может быть указан в целом для набора в строке ТЧ Товары, или для каждого элемента набора в ТЧ СоставНабора
| ВЫБОР
| КОГДА ДокНаб.СпособСписанияОстаткаТоваров = &ПустойСпособСписания ТОГДА ДокТов.СпособСписанияОстаткаТоваров
| ИНАЧЕ ДокНаб.СпособСписанияОстаткаТоваров
| КОНЕЦ КАК СпособСписанияОстаткаТоваров,
| ДокНаб.ХарактеристикаНоменклатуры,
| ДокНаб.СерияНоменклатуры,
| ДокНаб.ЕдиницаИзмерения.Коэффициент КАК Коэффициент,
| ДокТов.ЗаказПокупателя,
| ДокТов.ЕдиницаИзмерения,
| ДокНаб.Количество * ДокТов.Количество КАК Количество
| ИЗ
| Документ." + СтруктураПараметров.ИмяДокумента + ".СоставНабора КАК ДокНаб
| ЛЕВОЕ СОЕДИНЕНИЕ Документ." + СтруктураПараметров.ИмяТаблицы + " КАК ДокТов
| ПО ДокТов.КлючСтроки = ДокНаб.КлючСтроки
| И ДокТов.Ссылка = &ДокументСсылка
| ГДЕ
| ДокНаб.Ссылка = &ДокументСсылка
|
| ) КАК Док
| ГДЕ Док.СпособСписанияОстаткаТоваров = &ИзРезерва
| ) КАК Док
|";*/
}
/*// ПОЛУЧИМ УСЛОВИЯ ДЛЯ ВИРТУАЛЬНЫХ ТАБЛИЦ ОСТАТКОВ
*/
/*ПараметрыУсловий = Новый Структура(
"ПолеСклад,ЕстьХарактеристика,ЕстьКачество,ЕстьСоставНабора,РеквизитДокументРезерва,ДопУсловияТабличнойЧасти",
"Склад",
ЕстьХарактеристика,
ЕстьКачество,
ЕстьСоставНабора,
"ЗаказПокупателя",
" И Док.СпособСписанияОстаткаТоваров = &ИзРезерва И (НЕ Док.ЗаказПокупателя В (&МассивПустыхСсылок))");*/
//ПараметрыУсловий.Вставить("ИспользоватьХарактеристикиНоменклатуры", СтруктураПараметров.ИспользоватьХарактеристикиНоменклатуры);
/*УсловияТаблицыОстатков = ПолучитьСтруктуруУсловийТаблицыОстатков(
СтруктураПараметров.ИмяДокумента,
СтруктураПараметров.ИмяТаблицы,
Новый Структура("Резерв"),
ПараметрыУсловий);*/
//Запрос = Новый Запрос;
/*// Установим параметры запроса
*/
//Запрос.УстановитьПараметр("ДокументСсылка", СтруктураШапкиДокумента.Ссылка);
//Запрос.УстановитьПараметр("ИзРезерва", Перечисления.СпособыСписанияОстаткаТоваров.ИзРезерва);
//Запрос.УстановитьПараметр("ПустойСпособСписания", Перечисления.СпособыСписанияОстаткаТоваров.ПустаяСсылка());
//Запрос.УстановитьПараметр("ПустойСклад", Справочники.Склады.ПустаяСсылка());
//Запрос.УстановитьПараметр("ПустаяХарактеристика", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
//Запрос.УстановитьПараметр("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
//МассивПустыхСсылок = Новый Массив;
//МассивПустыхСсылок.Добавить(Неопределено);
//МассивПустыхСсылок.Добавить(Документы.ЗаказПокупателя.ПустаяСсылка());
//Запрос.УстановитьПараметр("МассивПустыхСсылок", МассивПустыхСсылок);
/*ТекстЗапроса = "
|ВЫБРАТЬ // Запрос, контролирующий остатки на складах
| Док.Номенклатура КАК Номенклатура,
| Док.Номенклатура.Представление КАК НоменклатураПредставление,
| Док.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаХраненияОстатковПредставление,
| %ПОЛЕ_Док_Характеристика% КАК ХарактеристикаНоменклатуры,
| ПРЕДСТАВЛЕНИЕ(%ПОЛЕ_Док_Характеристика%) КАК ХарактеристикаНоменклатурыПредставление,
| %ПОЛЕ_Док_Серия% КАК СерияНоменклатуры,
| ПРЕДСТАВЛЕНИЕ(%ПОЛЕ_Док_Серия%) КАК СерияНоменклатурыПредставление,
| Док.ЗаказПокупателя КАК ДокументРезерва,
| Док.Склад КАК Склад,
| %ПОЛЕ_Док_Количество% КАК ДокументКоличество,
| ЕСТЬNULL(МАКСИМУМ(Резервы.КоличествоОстаток), 0) КАК РезервыКоличество
|ИЗ
| "+ ТекстЗапросаРеквизитыДокумента + "
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(," + УсловияТаблицыОстатков.Резерв + ") КАК Резервы
|ПО
| Резервы.Склад = Док.Склад
| И Резервы.Номенклатура = Док.Номенклатура
| И Резервы.ДокументРезерва = Док.ЗаказПокупателя
| И Резервы.ХарактеристикаНоменклатуры = %СОЕДИНЕНИЕ_Характеристика_Остатки%
| И Резервы.СерияНоменклатуры = %СОЕДИНЕНИЕ_Серия_Остатки%
|ГДЕ
| Не Док.Номенклатура.Комплект
| И Док.Ссылка = &ДокументСсылка
| И Док.СпособСписанияОстаткаТоваров = &ИзРезерва
| И (НЕ Док.ЗаказПокупателя В (&МассивПустыхСсылок))
|СГРУППИРОВАТЬ ПО
|
| Док.Номенклатура,
| %ПОЛЕ_Док_Характеристика%,
| %ПОЛЕ_Док_Серия%,
| Док.ЗаказПокупателя,
| Док.Склад
|ИМЕЮЩИЕ ЕСТЬNULL(МАКСИМУМ(Резервы.КоличествоОстаток), 0) < %ПОЛЕ_Док_Количество%
|ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки // Блокирующие чтение таблицы остатков регистра для разрешения коллизий многопользовательской работы
|";*/
//УчитыватьСерии = ложь;
/*//По умолчанию отбор по пустой характеристике
*/
//СОЕДИНЕНИЕ_Характеристика_Остатки = "ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)";
/*//По умолчанию отбор по пустой серии, т.к. для тары и договоров без ОУ резервы выполняются без серии
*/
//СОЕДИНЕНИЕ_Серия_Остатки = "ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)";
if(true/*СтруктураПараметров.ИмяТабличнойЧасти = "ВозвратнаяТара"*/)
{
/*//нет серии, характеристики, единицы измерения и коэффициента
*/
//ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%ПОЛЕ_Док_Количество%","Сумма(Док.Количество)");
//ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%ПОЛЕ_Док_Характеристика%","&ПустаяХарактеристика");
}
if(true/*не УчитыватьСерии*/)
{
//ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%ПОЛЕ_Док_Серия%","&ПустаяСерия");
}
//ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%СОЕДИНЕНИЕ_Характеристика_Остатки%", СОЕДИНЕНИЕ_Характеристика_Остатки);
//ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%СОЕДИНЕНИЕ_Серия_Остатки%", СОЕДИНЕНИЕ_Серия_Остатки);
if(true/*глЗначениеПеременной("ИспользоватьБлокировкуДанных")*/)
{
/*Запрос.Текст =
"ВЫБРАТЬ Склад, Номенклатура, ЗаказПокупателя" + ?(ЕстьХарактеристика, ", ХарактеристикаНоменклатуры", "") + "
|ИЗ " + ТекстЗапросаРеквизитыДокумента + "
|ГДЕ
| Не Док.Номенклатура.Комплект
| И Док.Ссылка = &ДокументСсылка
| И Док.СпособСписанияОстаткаТоваров = &ИзРезерва
| И (НЕ Док.ЗаказПокупателя В (&МассивПустыхСсылок))";*/
//РезультатЗапросаДляБлокировки = Запрос.Выполнить();
if(true/*НЕ РезультатЗапросаДляБлокировки.Пустой()*/)
{
/*СтруктураПараметровБлокировки = Новый Структура(
"ТипТаблицы,ИмяТаблицы,ИсточникДанных"
,"РегистрНакопления"
,"ТоварыВРезервеНаСкладах"
,РезультатЗапросаДляБлокировки);*/
/*СтруктураИсточникаДанных = Новый Структура(
"Склад,Номенклатура,ДокументРезерва"
,"Склад"
,"Номенклатура"
,"ЗаказПокупателя");*/
if(true/*ЕстьХарактеристика И СтруктураПараметров.ИспользоватьХарактеристикиНоменклатуры*/)
{
//СтруктураИсточникаДанных.Вставить("ХарактеристикаНоменклатуры","ХарактеристикаНоменклатуры");
}
//ОбщегоНазначения.УстановитьУправляемуюБлокировку(СтруктураПараметровБлокировки,,СтруктураИсточникаДанных, Отказ, Заголовок);
}
}
//Запрос.Текст = ТекстЗапроса;
//РезультатЗапроса = Запрос.Выполнить();
if(true/*РезультатЗапроса.Пустой()*/)
{
}
//Выборка = РезультатЗапроса.Выбрать();
while(true/*Выборка.Следующий()*/)
{
/*СтрокаСообщения = "Остатка резерва " +
УправлениеЗапасами.ПредставлениеНоменклатуры(Выборка.НоменклатураПредставление,
?(СтруктураПараметров.ИмяТабличнойЧасти <> "ВозвратнаяТара", " "+Выборка.ХарактеристикаНоменклатурыПредставление, ""),
?(УчитыватьСерии, " "+Выборка.СерияНоменклатурыПредставление, "")) +
" на складе """ + СокрЛП(Выборка.Склад) + """ по документу """ + СокрЛП(Выборка.ДокументРезерва) +
""" недостаточно.";*/
/*УправлениеЗапасами.ОшибкаНетОстатка(СтрокаСообщения, Выборка.РезервыКоличество, Выборка.ДокументКоличество,
Выборка.ЕдиницаХраненияОстатковПредставление, Отказ, Заголовок);*/
}
//;;
}