8.х Как оптимизировать код

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем freud, 30 июл 2014.

  1. TopicStarter Overlay
    freud
    Offline

    freud

    Регистрация:
    30 июл 2014
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Как оптимизировать код

    Код:
     // сентябрь        
            Если ДобавитьМесяц(ВыборкаДетальныеЗаписи.Дата,ВыборкаДетальныеЗаписи.ДнейПосещения)>ДобавитьМесяц(Дата1,1)   тогда
                ОбластьДетальныхЗаписей.Параметры.М1    = (ВыборкаДетальныеЗаписи.Сумма)/ВыборкаДетальныеЗаписи.ДнейПосещения;
                ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
                ТабДок.Вывести(ОбластьДетальныхЗаписей);
                ОбластьДетальныхЗаписей.Очистить();  
                ИтогиМ1=ИтогиМ1+ Сумма0
            КонецЕсли;
    Код:
     //Октябрь        
            Если ДобавитьМесяц(ВыборкаДетальныеЗаписи.Дата,ВыборкаДетальныеЗаписи.ДнейПосещения)>ДобавитьМесяц(Дата1,2)   тогда
                ОбластьДетальныхЗаписей.Параметры.М2    = (ВыборкаДетальныеЗаписи.Сумма)/ВыборкаДетальныеЗаписи.ДнейПосещения;
                ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
                ТабДок.Вывести(ОбластьДетальныхЗаписей);
                ОбластьДетальныхЗаписей.Очистить();  
                ИтогиМ1=ИтогиМ1+ Сумма0
            КонецЕсли;
    Код:
     //ноябрь        
            Если ДобавитьМесяц(ВыборкаДетальныеЗаписи.Дата,ВыборкаДетальныеЗаписи.ДнейПосещения)>ДобавитьМесяц(Дата1,3)   тогда
                ОбластьДетальныхЗаписей.Параметры.М3    = (ВыборкаДетальныеЗаписи.Сумма)/ВыборкаДетальныеЗаписи.ДнейПосещения;
                ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
                ТабДок.Вывести(ОбластьДетальныхЗаписей);
                ОбластьДетальныхЗаписей.Очистить();  
                ИтогиМ1=ИтогиМ1+ Сумма0
            КонецЕсли;
    и тд

    меняется часть
    ОбластьДетальныхЗаписей.Параметры.М1 до ОбластьДетальныхЗаписей.Параметры.М10
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Может запрос стоит оптимизировать ?
  3. TopicStarter Overlay
    freud
    Offline

    freud

    Регистрация:
    30 июл 2014
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    В запросе получаю сумму, дату и количество месяцев и надо раскидать сумму по периоду
    думаю в запросе это будит куда сложнее сделать
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    За-то с выводом проблем не будет:D
    А что вы тогда хотите оптимизировать ? Ваш вывод по-месячно????
  5. TopicStarter Overlay
    freud
    Offline

    freud

    Регистрация:
    30 июл 2014
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    это приходится писать 10 раз а меняется только параметр М1 до м10 и
    ДобавитьМесяц(Дата1,1) до ДобавитьМесяц(Дата1,10)

    как в цикл это всунуть

    Если ДобавитьМесяц(ВыборкаДетальныеЗаписи.Дата,ВыборкаДетальныеЗаписи.ДнейПосещения)>ДобавитьМесяц(Дата1,1) тогда
    ОбластьДетальныхЗаписей.Параметры.М1 = (ВыборкаДетальныеЗаписи.Сумма)/ВыборкаДетальныеЗаписи.ДнейПосещения;
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей);
    ОбластьДетальныхЗаписей.Очистить();
    ИтогиМ1=ИтогиМ1+ Сумма0
    КонецЕсли;
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Ну и организуйте цикл от 0 до 9
  7. TopicStarter Overlay
    freud
    Offline

    freud

    Регистрация:
    30 июл 2014
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    это понятно не могу найти как
    Счетчик использовать в параметре

    Для Счетчик = 1 По 10 Цикл
    ОбластьДетальныхЗаписей.Параметры.М1???

    КонецЦикла;
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Счетчик = Счетчик+1
    --- Объединение сообщений, 30 июл 2014 ---
    И проверяйте ее на значение, т.е. если Счетчик=1 то выводим одну область, иначе другую. Ну вы поняли:D
  9. TopicStarter Overlay
    freud
    Offline

    freud

    Регистрация:
    30 июл 2014
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    вод эта часть непонятна
    ОбластьДетальныхЗаписей.Параметры.(М+Счетчик)
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Так работать не будет
  11. TopicStarter Overlay
    freud
    Offline

    freud

    Регистрация:
    30 июл 2014
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    это я понял а как надо сделать чтобы Счетчик использовать в параметре
  12. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Никак.
  13. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Код:
    Для Счетчик = 1 По 10 Цикл
    ОбластьДетальныхЗаписей.Параметры["М" + Счетчик] = ЗНАЧЕНИЕ;
    КонецЦикла;
    alexburn нравится это.
  14. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Точно, по имени же можно:)
    Привык постоянно явно указывать параметры:)
  15. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
  16. TopicStarter Overlay
    freud
    Offline

    freud

    Регистрация:
    30 июл 2014
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Спасибо,
    а как переменным обратится
    ИтогиМ1 ИтогиМ2
  17. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Код:
    Для Счетчик = 1 По 10 Цикл
    ОбластьДетальныхЗаписей.Параметры["М" + Счетчик] = ИтогиМ + Счетчик;
    КонецЦикла;
  18. TopicStarter Overlay
    freud
    Offline

    freud

    Регистрация:
    30 июл 2014
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Код:
    Для Счетчик = 1 По 10 Цикл
                    Если ДобавитьМесяц(ВыборкаДетальныеЗаписи.Дата,ВыборкаДетальныеЗаписи.ДнейПосещения)>ДобавитьМесяц(Дата1,Счетчик)   тогда
                        ОбластьДетальныхЗаписей.Параметры["М" + Счетчик]    = (ВыборкаДетальныеЗаписи.Сумма)/ВыборкаДетальныеЗаписи.ДнейПосещения;
                ИтогиМ+Счетчик=ИтогиМ+Счетчик+ (ВыборкаДетальныеЗаписи.Сумма)/ВыборкаДетальныеЗаписи.ДнейПосещения;
                    КонецЕсли;
                    КонецЦикла;
    
    ошибка ИтогиМ+Счетчик
  19. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.991
    Симпатии:
    399
    Баллы:
    104
    Код:
    ИтогиМ+Счетчик=ИтогиМ+Счетчик+ (ВыборкаДетальныеЗаписи.Сумма)/ВыборкаДетальныеЗаписи.ДнейПосещения;
    Это что такое вообще?
    --- Объединение сообщений, 30 июл 2014 ---
    Имена переменных так нельзя присваивать.
    --- Объединение сообщений, 30 июл 2014 ---
    Их нужно явно объявлять.

Поделиться этой страницей