- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
Процедура ПересчитатьстоимостьПлан()
Если 1=1 тогда //ВидКомплектации = Перечисления.ВидыКомплектации.Сборка тогда
Для каждого стр из комплектующие Цикл
Если стр.ЦенаПлан = 0 тогда // заполнимЦену
мНоменклатура = Новый массив;
//Для каждого стр из Комплектующие Цикл
мНоменклатура.Добавить(стр.Номенклатура);
//Конеццикла;
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&датаД, ) КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
| И ЦеныНоменклатурыСрезПоследних.Номенклатура В ИЕРАРХИИ(&Номенклатура)";
Запрос.УстановитьПараметр("ДатаД",дата);
Запрос.УстановитьПараметр("типЦен",Склад.ТипЦенРозничнойТорговли);
Запрос.УстановитьПараметр("ссылка",ссылка);
Запрос.УстановитьПараметр("Номенклатура",стр.Номенклатура);
аа =Запрос.Выполнить().Выгрузить();
Если аа<> неопределено тогда
стр.ЦенаПлан = аа[0].цена;
КонецЕсли;
Конецесли;
стр.ЦенаПлан = стр.ЦенаПлан;
стр.Суммаплан = стр.Количество*стр.ЦенаПлан;
Конеццикла;
// *******************************************************888
иначе
Если СуммаПлан = 0 тогда
возврат;
КонецЕсли;
итСумма = 0;
Для каждого стр из Комплектующие Цикл
//стр.Суммаплан = глОкруглить(стр.ДоляСтоимости*СуммаПлан,0.5);
стр.Суммаплан = Окр(стр.ДоляСтоимости*СуммаПлан,1);
Если стр.Количество = 0 тогда
стр.ЦенаПлан = 0;
иначе
стр.ЦенаПлан = стр.Суммаплан/стр.Количество;
КонецЕсли;
итсумма = итСумма + стр.Суммаплан;
КонецЦикла;
Если итСумма<>Суммаплан тогда
стр.Суммаплан = стр.СуммаПлан - (СуммаПлан-итСумма);
Если стр.Количество = 0 тогда
стр.ЦенаПлан = 0;
иначе
стр.ЦенаПлан = стр.Суммаплан/стр.Количество;
КонецЕсли;
Конецесли;
КонецЕсли;
конецпроцедуры
alexinzaz 17.07.2014 22:51 # 0
anonimb84a2f6fd141 17.07.2014 22:58 # −9
gost 18.07.2014 08:05 # +1
С первого раза показалось 'Запрос.Текст = "ВЫЕБАТЬ'
bormand 18.07.2014 08:33 # +3
Недоёб, однако у вас... Необходимо срочное лечение женщиной.
kegdan 18.07.2014 08:53 # +3
gost 18.07.2014 13:48 # +2
eth0 18.07.2014 16:17 # 0
А ещё парсер говнокода не поддерживает восьмёрочный синтаксис.
doom2good 20.08.2014 15:10 # −1
Ну а так - типичные запросы в цикле; закомменченый код; добавление накой-то хрен номенклатуры в массив итд
eth0 20.08.2014 19:49 # +1
В первом человек пользуется базой данных как, скажем, массивом, или "волшебной" функцией. Тут чаще всего и возникают запросы в цикле.
Во втором случае человек знает, как эффективнее всего использовать базы данных. Он подготавливает данные, отправляет в базу, пишет чуть более сложный запрос, и получает уже готовые массивы данных.
Задачу можно решить и так, и так. Только по эффективности второй подход гораздо более лучше.
bormand 21.08.2014 05:18 # 0
defecate-plusplus 21.08.2014 07:51 # +1
kegdan 21.08.2014 08:11 # 0
defecate-plusplus 21.08.2014 10:01 # +1
было бы интересно обсудить, если кто-то придумает обратный пример для одной таблицы
kipar 21.08.2014 11:17 # 0
defecate-plusplus 21.08.2014 11:28 # +1
select t.id
from mytree t
start with t.id = :some_parent
connect by prior t.id = t.parent_id
можно даже воспользоваться connect_by_root и прочими няшностями, если надо в одном запросе сразу лес вернуть
kipar 21.08.2014 11:31 # 0
1024-- 21.08.2014 11:26 # 0
P.S. а, деревья уже выдвинули и опровергли.
defecate-plusplus 21.08.2014 11:54 # 0
eth0 21.08.2014 20:57 # 0
bormand 22.08.2014 05:42 # 0
Да и ораклы всякие поди умеют.
defecate-plusplus 22.08.2014 08:06 # 0
eth0 22.08.2014 18:36 # 0
kipar 21.08.2014 14:02 # 0
defecate-plusplus 21.08.2014 15:42 # 0
можно и из буханки сделать троллейбус)
kipar 21.08.2014 16:13 # 0
kaumov 11.09.2014 11:12 # 0
eth0 11.09.2014 11:28 # +1
kaumov 16.09.2014 18:46 # 0
guest 25.11.2014 08:47 # 0