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