Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как оптимизировать участки кода в процедуре при записи

Как оптимизировать  участки кода в процедуре при записи
Я
   1сЮлия
 
03.02.20 - 11:25
Добрый день! Как оптимизировать  участки кода в процедуре при записи документ нетиповой, у меня там множество проверок к примеру:  мУдалятьДвижения = НЕ ЭтоНовый();
    
  Для Каждого Строка Из Серии Цикл
      
      Запрос = Новый Запрос;
      
      Запрос.Текст =
      
            "ВЫБРАТЬ
            |    аэсОперацияКВЛ.СерияНоменклатуры,
            |    аэсОперацияКВЛ.Ссылка,
            |    аэсОперацияКВЛ.Номенклатура
            |ИЗ
            |    Документ.аэсОперацияКВЛ.Серии КАК аэсОперацияКВЛ
            |ГДЕ
            |    аэсОперацияКВЛ.СерияНоменклатуры = &СерияНоменклатуры
            |    И аэсОперацияКВЛ.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.аэсВидыОперацийКВЛ.МеханическиеИспытания)
            |    И аэсОперацияКВЛ.Номенклатура = &Номенклатура";
        
      
      Запрос.УстановитьПараметр("СерияНоменклатуры",Строка.СерияНоменклатуры);
      
      Запрос.УстановитьПараметр("Номенклатура",Ссылка.Номенклатура);

      РезультатЗапроса = Запрос.Выполнить();
        
      Если  РезультатЗапроса.Пустой() Тогда  
           Сообщить("Для серии "+Строка.СерияНоменклатуры+" отсутствует документ Операция КВЛ с видом операции Механические испытания !");
            Отказ = Истина;
            Возврат;
     КонецЕсли;
          
  КонецЦикла;
  
   Для Каждого Строка из Серии Цикл

     Запрос = Новый Запрос;
    
     Запрос.Текст =
    
                 "ВЫБРАТЬ
                |    Сертификация.СерияНоменклатуры,
                |    Сертификация.Ссылка,
                |    Сертификация.РезультатСертификации
                |ИЗ
                |    Документ.аэсСертификация.Серии КАК Сертификация
                |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.аэсСертификация.Серии КАК аэсСертификацияСерии
                |        ПО Сертификация.СерияНоменклатуры = аэсСертификацияСерии.СерияНоменклатуры
                |            И Сертификация.Ссылка <> аэсСертификацияСерии.Ссылка
                |ГДЕ
                |    аэсСертификацияСерии.Ссылка = &Ссылка
                |    И Сертификация.РезультатСертификации = аэсСертификацияСерии.РезультатСертификации
                |    И аэсСертификацияСерии.СерияНоменклатуры = &СерияНоменклатуры
                |    И аэсСертификацияСерии.РезультатСертификации = &РезультатСертификации";

              
    Запрос.УстановитьПараметр("СерияНоменклатуры",Строка.СерияНоменклатуры);
        
    Запрос.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка);
    
    Запрос.УстановитьПараметр("РезультатСертификации",Строка.РезультатСертификации);
                
    РезультатЗапроса = Запрос.Выполнить();
                
    Выборка = РезультатЗапроса.Выбрать();
        
    Пока Выборка.Следующий() Цикл
        Сообщить("Документ с такой серией "+Выборка.СерияНоменклатуры+" уже существует!"+Выборка.Ссылка+" "+Выборка.РезультатСертификации+"");
        Отказ=Истина;
        Возврат;
    КонецЦикла;
Как оптимизировать код,подскажите пожайлуста?
   GROOVY
 
1 - 03.02.20 - 11:26
Запрос в цикле убрать нахрен.
   spiller26
 
2 - 03.02.20 - 11:29
(1) Поддерживаю
   Cyberhawk
 
3 - 03.02.20 - 11:29
Какой интересный префикс "аэс"...
   АнализДанных
 
4 - 03.02.20 - 11:32
(0) плюс к (1) перенести все проверки в обработку проверки заполнения, чтобы они выполнялись только когда это необходимо.
   hhhh
 
5 - 03.02.20 - 11:33
(3) год у нее уже этот префикс. Пока, тьфу-тьфу, ничего не взорвалось.
   Cyberhawk
 
6 - 03.02.20 - 11:33
(5) Еще и "Перечисление.аэсВидыОперацийКВЛ.МеханическиеИспытания"... неужели АЭС?
   1сЮлия
 
7 - 03.02.20 - 11:33
Имеется ввиду текст запроса куда отдельно вывести7
   unenu
 
8 - 03.02.20 - 11:35
(7) первое что пришло в голову - за пределы солнечной системы
   dka80
 
9 - 03.02.20 - 11:38
Сообщить("Для серии "+Строка.СерияНоменклатуры+" отсутствует документ Операция КВЛ с видом операции Механические испытания !"); 
Заменить на СтрШаблон

Пока Выборка.Следующий() Цикл
        Сообщить("Документ с такой серией "+Выборка.СерияНоменклатуры+" уже существует!"+Выборка.Ссылка+" "+Выборка.РезультатСертификации+"");
        Отказ=Истина;
        Возврат;
    КонецЦикла; 
Вообще мощно.
   unenu
 
10 - 03.02.20 - 11:39
заменить
|ГДЕ
            |    аэсОперацияКВЛ.СерияНоменклатуры = &СерияНоменклатуры 
Запрос.УстановитьПараметр("СерияНоменклатуры",Строка.СерияНоменклатуры); 

на
|ГДЕ
            |    аэсОперацияКВЛ.СерияНоменклатуры В (&СерияНоменклатуры) 
Запрос.УстановитьПараметр("СерияНоменклатуры",СписокСерияНоменклатуры); 

как собрать серии в список справитесь сами
   unenu
 
11 - 03.02.20 - 11:40
(9) сообщить вообще в проде быть не должно вообще или на условии РежимОтладки
   GROOVY
 
12 - 03.02.20 - 11:43
Да... такой код видеть с таким префиксом очень стремно :)
   goodprog
 
13 - 03.02.20 - 11:51
ядерный код)
   goodprog
 
14 - 03.02.20 - 11:52
Проведен док, непроведен - похеру.
   Bigbro
 
15 - 03.02.20 - 11:57
хмм...
кажется я знаю что это за аэс и это не то о чем подумали в (3)
хорошо что порядок взялись наводить.
   eTmy
 
16 - 03.02.20 - 11:59
Все сделать один запросом и уже потом обходить результат
   Cyberhawk
 
17 - 03.02.20 - 12:00
(15) Не томи, раскрой смысл этой аббревиатуры
   ezhikofff
 
18 - 03.02.20 - 12:33
(15) сказал с намеком на то, о чем все подумали...8-()
   Timon1405
 
19 - 03.02.20 - 12:35
все просто, аэс = АдынЭС
   ezhikofff
 
20 - 03.02.20 - 12:36
(19) что в переводе с чучмекского полная .опа?
   Bigbro
 
21 - 03.02.20 - 12:58
(17) КВЛ - кабельные воздушные линии, дальше догадаетесь.
   Simod
 
22 - 03.02.20 - 13:02
Код полезный. Можно использовать как лакмусовую бумажку на собеседовании - если на вопрос "Как лучше организовать вывод сообщения пользователю?" претендент отвечает "Через шаблон", то вердикт - "Следующий!"

(10) "Следующий!"
   1сЮлия
 
23 - 03.02.20 - 13:03
АтомныеЭлектроСтанции
   Simod
 
24 - 03.02.20 - 13:10
(23) Всю проверку необходимо организовать в рамках одного запроса (пакетного).
Вывод сообщений пользователям при проведении в типовых через специальные функции БСП - https://its.1c.ru/db/bsp312doc#content:399:hdoc
Если таких нет, то смотри реализацию в БСП и делай что-то подобное. Вывод сообщений должен быть минимизирован и не прерываться после первой ошибки.
   Cyberhawk
 
25 - 03.02.20 - 13:13
(21) Понятнее особо не стало)
   1СHИK78
 
26 - 03.02.20 - 13:18
(23) а, ну понятно, теперь я могу спать спокойно)
   1СHИK78
 
27 - 03.02.20 - 13:19
(26) реально атомный гкод.
   H A D G E H O G s
 
28 - 03.02.20 - 15:12
КВЛ - это кабельно-воздушные линии электропередачи.
аэсВидыОперацийКВЛ.МеханическиеИспытания.

Это точно АЭС. Слава яйцам, что на Украине.
   goodprog
 
29 - 03.02.20 - 15:17
(28) Лучше бы где нибудь в Антарктиде
   Cyberhawk
 
30 - 03.02.20 - 20:32
(28) Как какие-то "механические испытания" проводов ЛЭП относятся к АЭС?
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.