Помогите пожалуйста
Здравствуйте. Помогите мне идиоту кто чем может. Написал пару запросов,
а последний не могу. Он вообще то первый. Управление Торговым Предприятием.
Документ - "Реализация товаров и услуг".Суть что нужно: нужно узнать сколько
у контрагента обратной тары находится на данный момент (общая сумма), которую
затем можно будет использовать для блокировки выписки ему документа. Документ
ниже. Если отсортировать Тару от другой продукции по ВидомНоменклатуры это
вообще идеально.
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
......
ПРОЦЕДУРА(ЗАПИТ) который я не могу сделать;
ЗаполнитьТару();
ПроверитьЛимитТары();
КонецПроцедуры // ПередЗаписью
Процедура ПроверитьЛимитТары()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Объект,
| ЗначенияСвойствОбъектов.Свойство,
| ЗначенияСвойствОбъектов.Значение
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Объект = &Объект
| И ЗначенияСвойствОбъектов.Свойство = &Свойство";
Запрос.УстановитьПараметр("Объект", Контрагент);
Запрос.УстановитьПараметр("Свойство",ПланыВидовХар актеристик.СвойстваОбъектов.НайтиПоКоду("000000003 "));
Выборка = Запрос.Выполнить().Выбрать();
ОчиститьСообщения();
ЛимитТары = 0;
Пока Выборка.Следующий() Цикл
ЛимитТары = Выборка.Значение;
Прервать;
КонецЦикла;
КолЗменш = (ВозвратнаяТара.Итог("Количество") - (ЛимитТары));
Если (ЛимитТары > 0) И (ВозвратнаяТара.Итог("Количество") > ЛимитТары) Тогда
Сообщить("Ліміт тари по даному клієнту є перевищеним, потрібно зменшити кількість продукції, що відпускається");
Сообщить("Ліміт тари по даному клієнту=" + СокрЛП(ЛимитТары));
Сообщить("Кількість тари, що вибивається=" + СокрЛП(ВозвратнаяТара.Итог("Количество")));
Сообщить("Кількість на яку потрібно зменшити=" + СокрЛП(КолЗменш));
КонецЕсли;
КонецПроцедуры //ПроверитьЛимитТары
Процедура ЗаполнитьТару()
ВозвратнаяТара.Очистить();
Для каждого строка из Товары цикл
Запрос = Новый Запрос("
|Выбрать * Из РегистрСведений.ЗначенияСвойствОбъектов
|ГДЕ Объект = &ВыбОбъект И Свойство = &ВыбСвойство");
Запрос.УстановитьПараметр("ВыбОбъект",Строка.Номен клатура);
Запрос.УстановитьПараметр("ВыбСвойство",ПланыВидов Характеристик.СвойстваОбъектов.НайтиПоКоду("000000 002"));
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Свойство = Выборка.Значение;
если Не Свойство = Неопределено Тогда
Строкатара = ВозвратнаяТара.Добавить();
Строкатара.Номенклатура = Свойство;
Строкатара.Количество = Строка.Количество;
Запрос = Новый Запрос ("ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена КАК Ціна
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
| И ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура");
Запрос.УстановитьПараметр("ТипЦен",Справочники.Тип ыЦенНоменклатуры.НайтиПоКоду("000000001"));
Запрос.УстановитьПараметр("Номенклатура",Свойство) ;
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Цена = Выборка.Ціна;
Строкатара.Цена = 0;
Строкатара.Цена = Цена;
Строкатара.Сумма = Цена * Строкатара.Количество;
Строкатара.СпособСписанияОстаткаТоваров = Строка.СпособСписанияОстаткаТоваров;
Строкатара.СчетУчетаБУ = ПланыСчетов.Хозрасчетный.ТараИТарныеМатериалы;
Строкатара.СхемаРеализации = Справочники.СхемыРеализации.Товары;
Строкатара.НалоговоеНазначение = Справочники.НалоговыеНазначенияАктивовИЗатрат.НДС_ НеоблагаемаяХозДеятельность;
Строкатара.НалоговоеНазначениеДоходовИЗатрат = Строка.НалоговоеНазначениеДоходовИЗатрат;
Строкатара.Склад = Справочники.Склады.НайтиПоКоду("000000002");
КонецЕсли;
Конеццикла;
КонецПроцедуры //ЗаполнитьТару
|