0 / 0 / 0
Регистрация: 16.04.2008
Сообщений: 123
|
|
1 | |
Помогите с отчетом27.04.2008, 14:23. Показов 12260. Ответов 2
Метки нет (Все метки)
В отчете все работает верно за исключением регистра продаж упорно не записывает данные в ресурс стоимость, сразу скажу что условие
Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал выполняется. Заранее спасибо. Пока ВыборкаРезультатаЗапроса.Следующий() Цикл //Проверить остаток при оперативном проведении Если Режим = РежимПроведенияДокумента.Оперативный Тогда Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе = Null, 0, ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе); Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда Сообщить("Материала " + СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура) + " имеется только " + Остаток); Отказ = Истина; Возврат; КонецЕсли; КонецЕсли; КонецЕсли; //Сформировать движения Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда // регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура; Движение.Склад = Склад; Движение.Количество = ВыборкаРезультатаЗапроса.Количество; // регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура; //расчитать стоимость материала СтоимостьМатериала = ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null, 0, ВыборкаРезультатаЗапроса.СтоимостьОстаток / ВыборкаРезультатаЗапроса.КоличествоОстаток); Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество; КонецЕсли; // регистр Продажи Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Мастер; Движение.Количество = ВыборкаРезультатаЗапроса.Количество; Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма; Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество; Иначе Движение.Стоимость = 0; КонецЕсли; КонецЦикла; // записать движения регистров Движения.ОстаткиМатериалов.Записать(); Движения.СтоимостьМатериалов.Записать(); Движения.Продажи.Записать();
0
|
27.04.2008, 14:23 | |
Ответы с готовыми решениями:
2
Помогите С Отчетом Помогите, пожалуйста с отчетом Помогите с Отчетом о розничных продажах Помогите с отчетом / печатной формой в восьмерке |
|
|
27.04.2008, 16:12 | 2 |
Во-первых много лишнего кода, нет оформления отступов. Где запрос сам? У тебя тут в результате есть поле "количество", а есть "Количество остаток". Насколько я понял ты запутался с данными. ибо при таком коде не мудрено.
Попробуем разобраться: Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда // регистр СтоимостьМатериалов Расход ... Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество; КонецЕсли; // регистр Продажи Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество; Иначе Движение.Стоимость = 0; КонецЕсли; Ты хочешь сказать что в первом случае условие проходит и считает стоимость, а во-втором регистре он условие не проходит и не считает стоимость? Вообще спорный код. Перемудрил Имхо. |
0 / 0 / 0
Регистрация: 16.04.2008
Сообщений: 123
|
|
27.04.2008, 20:33 | 3 |
Ну код не мой.... я просто учусь по книге. да именно как ты сказал в первом случае проходит условие во втором нет, если не лень можешь просто закоментировать те моменты коды, которые лишние с небольшим комментарием. вот полный код:
Запрос = Новый Запрос; Запрос.УстановитьПараметр("СкладВДокументе",Склад); Если Режим = РежимПроведенияДокумента.Оперативный Тогда Запрос.Текст = "ВЫБРАТЬ | ОказаниеУслугПереченьНоменклатуры.Номенклатура, | ОказаниеУслугПереченьНоменклатуры.Количество, | ОказаниеУслугПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры, | ОказаниеУслугПереченьНоменклатуры.Сумма, | ОстаткиМатериаловОстатки.КоличествоОстаток, | СтоимостьМатериаловОстатки.СтоимостьОстаток, | ОстаткиМатериаловОстаткиНаСкладе.КоличествоОстаток КАК КоличествоОстатокНаСкладе |ИЗ | Документ.ОказаниеУслуг.ПереченьНоменклатуры КАК ОказаниеУслугПереченьНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериаловОстатки | ПО ОказаниеУслугПереченьНоменклатуры.Номенклатура = СтоимостьМатериаловОстатки.Материал | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиМатериаловОстатки | ПО ОказаниеУслугПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстатки.Материал | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки( | &МоментВремени, | Материал В (&СписокНоменклатурыДокумента) | И склад = &СкладВдокументе) КАК ОстаткиМатериаловОстаткиНаСкладе | ПО ОказаниеУслугПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстаткиНаСкладе.Материал |ГДЕ | ОказаниеУслугПереченьНоменклатуры.Ссылка = &Ссылка | |ДЛЯ ИЗМЕНЕНИЯ | РегистрНакопления.СтоимостьМатериалов.Остатки, | РегистрНакопления.ОстаткиМатериалов.Остатки"; Иначе Запрос.Текст = "ВЫБРАТЬ | ОказаниеУслугПереченьНоменклатуры.Номенклатура, | ОказаниеУслугПереченьНоменклатуры.Количество, | ОказаниеУслугПереченьНоменклатуры.ВидНоменклатуры КАК ВидНоменклатуры, | ОказаниеУслугПереченьНоменклатуры.Сумма, | ОстаткиМатериаловОстатки.КоличествоОстаток, | СтоимостьМатериаловОстатки.СтоимостьОстаток |ИЗ | Документ.ОказаниеУслуг.ПереченьНоменклатуры КАК ОказаниеУслугПереченьНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериаловОстатки | ПО ОказаниеУслугПереченьНоменклатуры.Номенклатура = СтоимостьМатериаловОстатки.Материал | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиМатериаловОстатки | ПО ОказаниеУслугПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстатки.Материал |ГДЕ | ОказаниеУслугПереченьНоменклатуры.Ссылка = &Ссылка | |ДЛЯ ИЗМЕНЕНИЯ | РегистрНакопления.СтоимостьМатериалов.Остатки, | РегистрНакопления.ОстаткиМатериалов.Остатки"; КонецЕсли; Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Запрос.УстановитьПараметр("СписокНоменклатурыДокумента", ПереченьНоменклатуры.ВыгрузитьКолонку("Номенклатура")); Запрос.УстановитьПараметр("Ссылка",Ссылка); ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать(); Пока ВыборкаРезультатаЗапроса.Следующий() Цикл //Проверить остаток при оперативном проведении Если Режим = РежимПроведенияДокумента.Оперативный Тогда Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе = Null, 0, ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе); Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда Сообщить("Материала " + СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура) + " имеется только " + Остаток); Отказ = Истина; Возврат; КонецЕсли; КонецЕсли; КонецЕсли; //Сформировать движения Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда // регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура; Движение.Склад = Склад; Движение.Количество = ВыборкаРезультатаЗапроса.Количество; // регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура; //расчитать стоимость материала СтоимостьМатериала = ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null, 0, ВыборкаРезультатаЗапроса.СтоимостьОстаток / ВыборкаРезультатаЗапроса.КоличествоОстаток); Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество; КонецЕсли; // регистр Продажи Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Мастер; Движение.Количество = ВыборкаРезультатаЗапроса.Количество; Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма; Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество; Иначе Движение.Стоимость = 0; КонецЕсли; КонецЦикла; // записать движения регистров Движения.ОстаткиМатериалов.Записать(); Движения.СтоимостьМатериалов.Записать(); Движения.Продажи.Записать();
0
|
27.04.2008, 20:33 | |
27.04.2008, 20:33 | |
Помогаю со студенческими работами здесь
3
Помогите с отчетом Помогите с отчетом! помогите с отчетом !! :( Помогите с отчетом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |