Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите понять принцип создания запросов в 1с 7.7 конф 7.7.00 3 страниц V  < 1 2 3 >          
andrew76 Подменю пользователя
сообщение 24.09.19, 5:09
Сообщение #21

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

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

          
    Пока ЗапросСуммыУслуг.Группировка() = 1 Цикл
        ТЗ.НоваяСтрока();        
        ТЗ.Сотрудник=ЗапросСуммыУслуг.Инженер;
        ТЗ.ОР=ЗапросСуммыУслуг.СуммаСНДС;
        ТЗ.КолСис=1;
     КонецЦикла;

    ТЗ.Свернуть("Сотрудник","КолСис,ОР");

ZUBR Подменю пользователя
сообщение 25.09.19, 0:52
Сообщение #22

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

andrew76 @ Вчера, 6:09 * ,
запрос считает неправильно. И суммы неправильно, и количество систем неправильно.
Мой гибридный код, приведенный ранее, считает все четко. Почему Ваш не считает, я так и не разобрался. Не знаю, как строится в данном случае группировка по документам... Думаю, причина в том, что при данных условиях выборки товара посчитать количество аппаратов в одном запросе программно невозможно. Остаюсь пока на своем варианте. Тем более, что мне нужно выбирать несколько параметров из справочника Сотрудники. Так что справочник мне все равно нужен. Благодарю Вас за участие!


Я благодарю Вас не в смысле прощаюсь, а просто благодарю. Если есть решение этих двух задач одним запросом, это будет интересно. Я пока не могу найти логического построения такого запроса. Короче, если суммировать услуги не по товару, а по видам товаров, тогда не получается вычислить количество систем. А если считать количество систем, тогда нужно суммировать по одному товару, а не по виду. То есть, в моем случае нужны, как минимум, два запроса. Во всяком случае, я так думаю.

andrew76 Подменю пользователя
сообщение 25.09.19, 5:19
Сообщение #23

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

ZUBR @ Сегодня, 3:52 * ,
Будем разбираться,раз такое дело.
Вот Ваш запрос ,без условия по Сотруднику.Попробуйте такой вариант.

ЗапросСуммыУслуг = СоздатьОбъект("Запрос");
ТекстЗапроса =
    "    
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |Инженер = Документ.РасходнаяНакладная.Инженер;
    |Товар = Документ.РасходнаяНакладная.Товар;
    |СтатусЗаказа = Документ.РасходнаяНакладная.СтатусЗаказа;
    |ВидТовара = Документ.РасходнаяНакладная.Товар.ВидТовара;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Функция Сум = Сумма(СуммаСНДС);
    |Группировка Товар Без Групп;
    |Условие ((СтатусЗаказа = Перечисление.Статусы.Выдан)или(СтатусЗаказа = Перечисление.Статусы.Выезд)или(СтатусЗаказа = Перечисление.Статусы.ВыдОтказ));
    |Условие (ВидТовара = Перечисление.ВидыТоваров.Услуга);";

ТЗ = СоздатьОбъект("ТаблицаЗначений");      
       ТЗ.НоваяКолонка ("Сотрудник");
       ТЗ.НоваяКолонка ("КолСис");   // количество систем
       ТЗ.НоваяКолонка ("ОР");          // стоимость основной работы
      
ЗапросСуммыУслуг.Выполнить(ТекстЗапроса);    

          
    Пока ЗапросСуммыУслуг.Группировка() = 1 Цикл
        ТЗ.НоваяСтрока();        
        ТЗ.Сотрудник=ЗапросСуммыУслуг.Инженер;
        ТЗ.ОР=ЗапросСуммыУслуг.СуммаСНДС;
        ТЗ.КолСис=1;
     КонецЦикла;

ТЗ.Свернуть("Сотрудник","КолСис,ОР");

andrew76 Подменю пользователя
сообщение 25.09.19, 8:01
Сообщение #24

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

andrew76 @ Сегодня, 8:19 * ,

Если число Инженеров в выборке в моем варианте совпадает с Вашим отчетом,значит,где-то здесь в моём варианте проблема:

ТЗ.ОР=ЗапросСуммыУслуг.СуммаСНДС;
ТЗ.КолСис=1;


возможно так :
ТЗ.ОР=ЗапросСуммыУслуг.Сум;

ZUBR Подменю пользователя
сообщение 25.09.19, 18:49
Сообщение #25

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

andrew76 @ Сегодня, 9:01 * , у меня в тестовом режиме два инженера. В Вашем варианте отчета отображается почему-то один. Правильность суммы забыл проверить. Наверное, свертка. Сейчас нет времени, посмотрю позже

ZUBR Подменю пользователя
сообщение 25.09.19, 21:53
Сообщение #26

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Я пытаюсь анализировать последний предложенный вариант, но не могу, потому что не понимаю до конца, что такое группировка. Вот если, например, Группировка Товар, и идет оператор
Пока ЗапросСуммыУслуг.Группировка() = 1 Цикл
, что происходит в цикле? Что значит Группировка Товар? Что значит Группировка()? Что значит Группировка (2)? Что значит Группировка(1)? Объясните, пожалуйста, кратко, кто может. Потому что без понимания этого нет смысла пытаться найти причину неправильной работы запроса! Для того, чтобы найти причину некорректной работы системы, нужно четко понимать, КАК она работает.
Спасибо!

andrew76 Подменю пользователя
сообщение 26.09.19, 4:36
Сообщение #27

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Цитата(ZUBR @ 26.09.19, 0:53) *
В Вашем варианте отчета отображается почему-то один. Правильность суммы забыл проверить. Наверное, свертка.


Если в Вашем отчете это один и тот же человек , то это свертка.
Цитата(ZUBR @ 26.09.19, 0:53) *
Что значит Группировка()? Что значит Группировка (2)? Что значит Группировка(1)?


Оператор Группировка задает способ группировки информации и порядок ее упорядочивания в запросе.
Про группировки здесь есть:
[необходимо зарегистрироваться для просмотра ссылки]
В запросе может быть несколько группировок.Поэтому обращение к группировкам происходит при помощи номера или имени группировки (Товар,Сотрудник).

ZUBR Подменю пользователя
сообщение 26.09.19, 19:39
Сообщение #28

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

andrew76 @ Сегодня, 5:36 * , про группировки я читал. Сам давал эту ссылку. Но, не сочтите за тупого, мне не понятен сам термин Группировка. Что это значит физически? Конкретно. Как это происходит в деталях?
Вто например, Группировка Товар. Что это значит? Как группируются данные? И где?

Макс1С Подменю пользователя
сообщение 26.09.19, 20:27
Сообщение #29

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

ZUBR @ Сегодня, 20:39 * ,
группировки можно представить в виде дерева или вот таких "группировок" таблицы которая получается в результате выполнения запроса

в 7.7 в запросе должна быть как минимум одна группировка - это будет соответствовать простой таблице без "вложенностей".
2 группировки будут означать "дерево" из 2х уровней вложенности, 3 - из 3х и т.д.
Несмотря на то, что картинка из 1С8 и там принцип чуть другой, результат в отчете примерно такой же.

Также для каждой группировки рассчитываются функции запроса. На картинке например это Количество и Сумма
Примерно такой запрос мог быть для отчета как на картинке:
    
        Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Контрагент = Документ.РасходнаяНакладная.Контрагент;
    |ТМЦ = Документ.РасходнаяНакладная.ТМЦ;
    |ТекущийДокумент = Документ.РасходнаяНакладная.ТекущийДокумент;
    |Кво = Документ.РасходнаяНакладная.Кво;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Родитель = Документ.РасходнаяНакладная.Контрагент.Родитель;
    |Функция ИтогКоличество = Сумма(Кво);
    |Функция ИтогСумма = Сумма(СуммаСНДС);
    |Группировка Родитель;
    |Группировка Контрагент;
    |Группировка ТМЦ;
    |Группировка ТекущийДокумент;
    |Условие(ТМЦ в ВыбТМЦ);
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Родитель
        Пока Запрос.Группировка(2) = 1 Цикл
            // Заполнение полей Контрагент
            Пока Запрос.Группировка(3) = 1 Цикл
                 // Заполнение полей ТМЦ
                Пока Запрос.Группировка(4) = 1 Цикл
                    // Заполнение полей ТекущийДокумент
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;

если оставим обход запроса только по одной группировке - получим обычную таблицу без вложений
Пока Запрос.Группировка(1) = 1 Цикл

КонецЦикла;

в данном случае параметр функции Группировка() = 1 , это соответствует родителю, папке с клиентами.
получим таблицу такого вида (например у нас все клиенты находятся в группах: "покупатели мелкий опт" и "покупатели диллеры")

Родитель ИтогоСумма ИтогоКоличество
"покупатели мелкий опт" 23423,00 44
"покупатели диллеры" 1231545,00 444







Спасибо сказали: ZUBR,

ZUBR Подменю пользователя
сообщение 26.09.19, 21:24
Сообщение #30

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Макс1С @ Сегодня, 21:27 * , так, немного яснее. А как выводятся результаты? Они где-то хранятся, или при каждом прохождении цикла их надо выводить? Чтобы получилась таблица отчета.

Макс1С Подменю пользователя
сообщение 27.09.19, 8:31
Сообщение #31

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

ZUBR @ Вчера, 22:24 * ,
Для каждой группировки итоги (функции запроса) рассчитаны и доступны при обходе циклами.
Вот такую таблицу генерирует конструктор запроса:

и обработку результата запроса:
     Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать"); // это имя макета
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Родитель
        Таб.ВывестиСекцию("Родитель");
        Пока Запрос.Группировка(2) = 1 Цикл
            // Заполнение полей Контрагент
            Таб.ВывестиСекцию("Контрагент");
            Пока Запрос.Группировка(3) = 1 Цикл
                // Заполнение полей ТМЦ
                Таб.ВывестиСекцию("ТМЦ");
                Пока Запрос.Группировка(4) = 1 Цикл
                    // Заполнение полей ТекущийДокумент
                    Таб.ВывестиСекцию("ТекущийДокумент");
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");

В каждом из вложенных циклов выводится своя область,но имя переменных в макете "Запрос.ИтогКоличество" и "Запрос.ИтогСумма" одинаково во всех строках. Показатели которые будут там выводится как раз зависят от группировки для которой они рассчитаны - фактически в цикле какого уровня была дана команда на заполнение и вывод этой области

Ещё нюанс, который наглядно видно на макете - на верхних уровнях ничего не известно о том что будет во вложенном цикле, поэтому на макете такая лесенка. В самом первом цикле мы можем вывести только Родителя(группировочное поле, а также его реквизиты), количество и сумму (функции).

Спасибо сказали: ZUBR,

ZUBR Подменю пользователя
сообщение 01.10.19, 23:55
Сообщение #32

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Доброй ночи! Сегодня создал нужній мне отчет. Небольшой. Состоит из 3 текстов запросов. Работает))) Очень Прошу профессуру посмотреть и дать свои замечания. Можно ли его сократить? Оптимизировать? Спасибо!

Процедура Сформировать()   

    Запрос = СоздатьОбъект("Запрос");
    
ТекстЗапросаС =
    "
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |СтатусЗаказа = Документ.РасходнаяНакладная.СтатусЗаказа;    
    |Товар = Документ.РасходнаяНакладная.Товар;
    |ВидТовара = Документ.РасходнаяНакладная.Товар.ВидТовара;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Функция Сум = Сумма(СуммаСНДС);

    |Функция СумУс = Сумма(СуммаСНДС) когда (ВидТовара = Перечисление.ВидыТоваров.Услуга);
    |Группировка Товар Без Групп;
    |Условие ((СтатусЗаказа = Перечисление.Статусы.Выдан)или(СтатусЗаказа = Перечисление.Статусы.Выезд)или(СтатусЗаказа = Перечисление.Статусы.ВыдОтказ));";
    
ТекстЗапросаК =
     "    
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |ТекДок = Документ.РасходнаяНакладная.ТекущийДокумент;
    |СтатусЗаказа = Документ.РасходнаяНакладная.СтатусЗаказа;
    |Функция КолСис = Счётчик(ТекДок);
    |Группировка  ТекДок;
    |Условие ((СтатусЗаказа = Перечисление.Статусы.Выдан)или(СтатусЗаказа = Перечисление.Статусы.Выезд)или(СтатусЗаказа = Перечисление.Статусы.ВыдОтказ));";
    
    ТекстЗапросаАкс =
    "
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |СтатусЗаказа = Документ.РасходнаяНакладная.СтатусЗаказа;    
    |Товар = Документ.РасходнаяНакладная.Товар;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Функция СумАкс = Сумма(СуммаСНДС);
    |Группировка Товар Без Групп;
    |Условие (СтатусЗаказа = Перечисление.Статусы.Акс);";
    
Запрос.Выполнить(ТекстЗапросаС);
    Пока Запрос.Группировка() = 1 Цикл
        Вал = Запрос.Сум;
        СумУс = Запрос.СумУс;
    КонецЦикла;
    
Запрос.Выполнить(ТекстЗапросаК);
   КолСис = Запрос.КолСис;
  
Запрос.Выполнить(ТекстЗапросаАкс);
    Пока Запрос.Группировка() = 1 Цикл
        СумАкс = Запрос.СумАкс;
    КонецЦикла;
    
Сообщить("Количество систем:"+КолСис);    
Сообщить("Сумма:"+Вал);
Сообщить("Сумма услуг:"+СумУс);
Сообщить("Сумма акс:"+СумАкс);


КонецПроцедуры

Макс1С Подменю пользователя
сообщение 02.10.19, 8:14
Сообщение #33

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

ZUBR @ Сегодня, 0:55 * ,
Предлагаю для начал изложить цель этой процедуры, пользовательскую историю, так сказать. Чего хочется получить, какова конечная цель отчета? Потому что первое впечатление, что оно работает не так )))

andrew76 Подменю пользователя
сообщение 02.10.19, 15:03
Сообщение #34

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Цитата(Макс1С @ 02.10.19, 11:14) *
Состоит из 3 текстов запросов. Работает))) Очень Прошу профессуру посмотреть и дать свои замечания. Можно ли его сократить? Оптимизировать? Спасибо!


А может лучше не трогать ничего ? Ведь есть ветхозаветная истина: "Техника не тронет техника,если техник не тронет технику".
Тем более автор говорит,что все работает.


Вот такой вариант :

СумУс=0;
КолСис=0;
СумАкс=0;

Расх = СоздатьОбъект("Документ.РасходнаяНакладная");
Расх.ВыбратьДокументы(НачДата,КонДата);
          
Пока Расх.ПолучитьДокумент()=1 Цикл
        
     Если  (Расх.СтатусЗаказа = Перечисление.Статусы.Выдан) или (Расх.СтатусЗаказа = Перечисление.Статусы.Выезд) или (Расх.СтатусЗаказа =
                Перечисление.Статусы.ВыдОтказ) тогда
              КолСис=КолСис+1;

        Если Расх.ВидТовара = Перечисление.ВидыТоваров.Услуга тогда
               СумУс=СумУс+Расх.СуммаСНДС;
        КонецЕсли;

    КонецЕсли;

    Если Расх.СтатусЗаказа = Перечисление.Статусы.Акс тогда
           СумАкс =СумАкс+Рас.СуммаСНДС;
    КонецЕсли;

КонецЦикла;


Забыл про переменную Вал.Звиняйте,паны добродии...

СумУс=0;
КолСис=0;
СумАкс=0;
Вал=0;

Расх = СоздатьОбъект("Документ.РасходнаяНакладная");
Расх.ВыбратьДокументы(НачДата,КонДата);
          
Пока Расх.ПолучитьДокумент()=1 Цикл
        
     Если  (Расх.СтатусЗаказа = Перечисление.Статусы.Выдан) или (Расх.СтатусЗаказа = Перечисление.Статусы.Выезд) или (Расх.СтатусЗаказа =
                Перечисление.Статусы.ВыдОтказ) тогда
              КолСис=КолСис+1;
              Вал=Вал+Расх.СуммаСНДС;

        Если Расх.ВидТовара = Перечисление.ВидыТоваров.Услуга тогда
               СумУс=СумУс+Расх.СуммаСНДС;
        КонецЕсли;

    КонецЕсли;

    Если Расх.СтатусЗаказа = Перечисление.Статусы.Акс тогда
           СумАкс =СумАкс+Рас.СуммаСНДС;
    КонецЕсли;

КонецЦикла;

Сообщить("Количество систем:"+КолСис);    
Сообщить("Сумма:"+Вал);
Сообщить("Сумма услуг:"+СумУс);
Сообщить("Сумма акс:"+СумАкс);

ZUBR Подменю пользователя
сообщение 02.10.19, 21:47
Сообщение #35

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

andrew76 @ Сегодня, 16:03 * , у меня вопрос тогда. Как к профессору. Какой вариант забирает меньше ресурсов и более быстродейственен? Вариант запросов? Или предложенный Вами? Вопрос чисто академический для лучшего понимания оптимальных методов программирования. Осмелюсь предположить, что Ваш вариант проще и лучше.

andrew76 Подменю пользователя
сообщение 03.10.19, 3:59
Сообщение #36

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

ZUBR @ Сегодня, 0:47 * ,

Цитата(ZUBR @ 03.10.19, 0:47) *
Какой вариант забирает меньше ресурсов и более быстродейственен?


Это смотря по ситуации.Замеряйте производительность в каждом варианте ( запрос или перебор документов ).
Ну а код должен быть лёгким для восприятия.Мой вариант считает правильно ?

Макс1С Подменю пользователя
сообщение 03.10.19, 8:22
Сообщение #37

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

andrew76 @ Вчера, 16:03 * ,
но как минимум вот такие конструкции надо поменять:
    Пока Запрос.Группировка() = 1 Цикл
        Вал = Запрос.Сум;
        СумУс = Запрос.СумУс;
    КонецЦикла;
.............
Пока Запрос.Группировка() = 1 Цикл
        СумАкс = Запрос.СумАкс;
    КонецЦикла;

на
  
Вал  = 0;
СумУс = 0;  
СумАкс = 0;

Пока Запрос.Группировка() = 1 Цикл
        Вал = Вал + Запрос.Сум;
        СумУс = СумУс  + Запрос.СумУс;
    КонецЦикла;
.............
Пока Запрос.Группировка() = 1 Цикл
        СумАкс = СумАкс  + Запрос.СумАкс;
    КонецЦикла;

А то получим только результат последнего элемента выборки в каждом случае. Возможно в тестовой базе 1 документ удовлетворяющий условиям поэтому создается впечатление, что всё правильно


andrew76 Подменю пользователя
сообщение 03.10.19, 13:34
Сообщение #38

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Цитата(Макс1С @ 03.10.19, 11:22) *
Возможно в тестовой базе 1 документ удовлетворяющий условиям поэтому создается впечатление, что всё правильно


Да,вчера не досмотрел я это дело.
Цитата(Макс1С @ 03.10.19, 11:22) *
Какой вариант забирает меньше ресурсов


Если мой вариант с перебором документов работает правильно,то этот вариант забирает меньше ресурсов.За один проход цикла решаются все
поставленные задачи.А в варианте с запросами - трижды.Одна задача бъётся на 3 подзадачи.

volodya1122 Подменю пользователя
сообщение 03.10.19, 13:58
Сообщение #39

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

Цитата(ZUBR @ 02.10.19, 22:47) *
Какой вариант забирает меньше ресурсов и более быстродейственен?


Не завжди варіант який забирає манше ресурсів є більш швидкодійним. Ну і зараз на 1с7 слідкувати за ресурсами не думаю що потрібно (звичайно в розумних межах), або дуже потужній звіт і дуже велика база (тоді звіт може використати 1 чи 2 Гбайт (точно не памятаю) оперативної памяті - а це максимум що може використати 1с7, і тоді 1с просто зависне.
А на рахунок швидкодії можна ввикористовувати в "отладчику" "Замер производительности" -тут можна конкретно визначити який саме рядок виконується найдовше. Або просто на початку процедури написати
а2=_GetPerformanceCounter();

а в кінці процедури
    а2=_GetPerformanceCounter(); 
    а=а2-а1;
    сек=а/1000;
    Сообщить("Тривалысть формування= "+сек);


Сообщение отредактировал volodya1122 - 03.10.19, 13:59

ZUBR Подменю пользователя
сообщение 03.10.19, 16:43
Сообщение #40

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Макс1С @ Сегодня, 9:22 * , я не понял, в чем проблема. Отчет формируется нормально. Можете объяснить?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


3 страниц V  < 1 2 3 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 13:13
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!