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