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