Имя: Пароль:
1C
1С v8
Помогите избавится от запроса в цикле!!!
,
0 Eeelena
 
10.06.14
14:50
Ребята, посоветуйте пожалуйста, как можно избавится от запроса в цикле???

Пока Отборы.Следующий() Цикл
        Если Отборы.Прайс<>Перечисления.ПеречислениеПрайс.ПустаяСсылка() Тогда
            
            ГруппыНом.ЗагрузитьЗначения(Отборы.ГруппыНоменклауры.ВыгрузитьКолонку("Группы"));
            ЗначенияСвойств.ЗагрузитьЗначения(Отборы.ЗначенияСвойств.ВыгрузитьКолонку("Значение"));
            Если ЗначенияСвойств.Количество() > 0 Тогда

                                        
            Запрос1.УстановитьПараметр("Значение", ЗначенияСвойств);
            Запрос1.УстановитьПараметр("Группы", ГруппыНом);
            ТЗНом = Запрос1.Выполнить().Выгрузить();
            
            
            
            КонецЕсли;
    
        КонецЕсли;
                Если ТЗНом <>Неопределено Тогда
                    ПрошлаОтбор=ТЗНом.Найти(Номенклатура,"Номенклатура")<>Неопределено;//Результат.Найти
                    Если ПрошлаОтбор=Истина Тогда    
                        СтрНом=Номенклатура;
                        Расчитать(Отборы.Ссылка,СтрНом);
                        Если ПрошлаОтборПоПоставщикам=Истина И ((ЗАК>=Отборы.Интервал1 И ЗАК<=Отборы.Интервал2) ИЛИ (Отборы.Интервал1=0 И Отборы.Интервал2=0) )  Тогда
                            
                            
                            Строка=СтрЗаменить(Строка, ";в наличии1;", ";"+КОЛ+";");
                            Строка=СтрЗаменить(Строка, ";в наличии0;", ";"+КОЛ+";");
                            Строка=СтрЗаменить(Строка, ";в наличии;", ";"+КОЛ+";");
                            
                            ИмяПрайса=Отборы.Прайс;
                            Наценка=Отборы.Наценка;
                            
                            Если Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс1 Тогда
                                
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс2 Тогда    
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                                
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс3 Тогда    
                                
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                                
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс4 Тогда    
                                
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                                
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс5 Тогда    
                                
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                                
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс6 Тогда    
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                                
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс7 Тогда    
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                                
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс8 Тогда    
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс9 Тогда    
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                                
                            ИначеЕсли Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс10 Тогда    
                                Строка=Строка+ ";"+Формат(ЗАК+ЗАК*(Наценка/100),"ЧГ=0;ЧДЦ=2;ЧРД='.'");
                            КонецЕсли;
                        Иначе
                            Наценка=0;
                        КонецЕсли;
                        
                    КонецЕсли;
                    
                КонецЕсли;
            КонецЦикла;
1 Kalambur
 
10.06.14
14:51
фотография в личке моментально дает кучу ответов
2 jsmith82
 
10.06.14
14:51
закэшировать?
3 Wobland
 
10.06.14
14:51
а где тут запрос? и расчитать напиши правильно
4 Eeelena
 
10.06.14
14:52
Отборы это выборка из справочника отборы, в каждом отборе хранятся значения, группы и свойства, Запрос1 выбирает номенклатуру соответсвующую этим значениям и свойствам
5 H A D G E H O G s
 
10.06.14
14:52
Жесть как она есть
6 Kalambur
 
10.06.14
14:52
кстати а где запрос?
7 Eeelena
 
10.06.14
14:53
(3) ВЫБРАТЬ
    ЗначенияСвойствНоменклатуры.Номенклатура,
    ЗначенияСвойствНоменклатуры.СвойствоНоменклатуры,
    ЗначенияСвойствНоменклатуры.Значение
ИЗ
    РегистрСведений.ЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры
ГДЕ
    ЗначенияСвойствНоменклатуры.Номенклатура В ИЕРАРХИИ(&Группы)
    И ЗначенияСвойствНоменклатуры.Значение В(&Значение)
8 Wobland
 
10.06.14
14:53
(4) хрень какая
9 Eeelena
 
10.06.14
14:54
(8) конфа самописная пришлось мудрить
10 Маратыч
 
10.06.14
14:54
(4) А соединения для чего придумали? Одним запросом выбирайте и отборы, и номенклатуру, в чем проблема-то.
11 Мэс33
 
10.06.14
14:54
Жесть.
12 Маратыч
 
10.06.14
14:56
+(10) И вообще, визуализируйте для себя логику всей этой процедуры и полностью перепишите. Глядя на этот адЪ, глаза кровоточат =)
13 Fish
 
10.06.14
14:57
(9) Руки бы поотрывать таким "самописцам".
14 Wobland
 
10.06.14
14:57
(9) мож, всё заново, а? ну пожалуйста
15 H A D G E H O G s
 
10.06.14
14:59
(14) Может лучше голубушку замуж и к плите?
16 Fish
 
10.06.14
15:00
(0) И кстати, твоё условие "Если ПрошлаОтбор=Истина Тогда" - никогда не выполнится.
17 Eeelena
 
10.06.14
15:00
(13)что вам тут не нравится?
18 Wobland
 
10.06.14
15:00
(15) я не участвую. кто смелый? ;)
19 Eeelena
 
10.06.14
15:01
(16) представь себе выполняется!
20 Wobland
 
10.06.14
15:01
(17) ответы "всё" или (Васильев с нами) "весь этот бред" устроят?
21 lex-kex
 
10.06.14
15:02
Ник:     Eeelena
Настоящее имя:     Анна

(17) Все нормально
22 Fish
 
10.06.14
15:02
(19) Не верю.
23 Wobland
 
10.06.14
15:03
(22) глабвух сказал, что выполняется - не спорь
24 Fish
 
10.06.14
15:03
(19) Да, не заметил вторую часть. Но всё равно - так писать - это АДЪ
25 Eeelena
 
10.06.14
15:04
(24)почему?
26 Wobland
 
10.06.14
15:05
(25) святая корова! программист - это профессия, на минуточку. которой иногда нужно учиться
27 Dionis Sergeevich
 
10.06.14
15:05
я не пойму - вторым запросом что делается?
28 H A D G E H O G s
 
10.06.14
15:06
(25) Вы умеете готовить?
29 Fish
 
10.06.14
15:06
(25) Ну например, какой смысл в конструкции
"Если Наценка<>0 И ИмяПрайса=Перечисления.ПеречислениеПрайс.Прайс1 Тогда"


Лепить кучу ИНАЧЕЕСЛИ, если во всех навскидку делается одно и то же? Или я опять что-то не заметил?
30 Dionis Sergeevich
 
10.06.14
15:08
проверяем на то что есть свойство просто по отборам? суть написанного не понимаю) Ну а так на вскидку ВНУТРЕННЕЕ СОЕДИНЕНИЕ нужно
31 H A D G E H O G s
 
10.06.14
15:09
Ооо, Денич Сергеевич прокачал свой запросописательный скил.
32 Segate
 
10.06.14
15:10
(26) вот че ты врешь? Зачем учиться? "Тяп-ляп и в продакшн"
33 Dionis Sergeevich
 
10.06.14
15:10
(31) Эм. Ну а то, вчера научился
34 H A D G E H O G s
 
10.06.14
15:11
(25) Если умеете готовить - половник вам в руки - и - вперед!

http://www.avito.ru/moskva/predlozheniya_uslug/prigotovlyu_borsch_348780919
35 Eeelena
 
10.06.14
15:11
ладно ребята спасибо за ваши очень познавательные комментарии, разобралась.
36 Fish
 
10.06.14
15:15
(35) Будешь всё переписывать заново?
37 фросия
 
10.06.14
15:21
(36) зачем? конфа ж самописная, сойдет и так :)
38 Маратыч
 
10.06.14
15:23
(37) Дык тогда проще всего оставить все как есть из принципа: "Работает - не трожь" :)
39 Мэс33
 
10.06.14
16:01
Ей платят за количество написанных строк :-)
40 inspam
 
10.06.14
16:14
(0) Анна, ты ли?!
41 МойКодУныл
 
10.06.14
16:15
(39) Возможно, тут в соседней  ветке бухгалтерам платят за количество проводок.
42 Мэс33
 
11.06.14
12:12
(41) Но это вообще зло... :-)
За количество проводок платить :-).

Сегодня твоя смена - с тебя 1000 проводок как минимум.
43 VladZ
 
11.06.14
12:22
Легко!

1. Удалить указанный го***код.
2. Уточнить задачу.
3. Написать код, согласно п.2.
4. Бинго!