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