|
Методы Выгрузить и Загрузить набора записей регистра | ☑ | ||
---|---|---|---|---|
0
FReIM
24.08.11
✎
22:25
|
В модуле набора записей регистра сведений, вот такая вот процедура. Версия платформы 8.1
Процедура ПередЗаписью(Отказ, Замещение) Если ЭтотОбъект.Количество()<4 тогда Для каждого СтрокаНабора Из ЭтотОбъект Цикл Запрос = Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ПМ_Материалы.Тип, | ПМ_Материалы.Код, | ПМ_Материалы.Параметры |ИЗ | Справочник.ПМ_Материалы КАК ПМ_Материалы |ГДЕ | ПМ_Материалы.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",СтрокаНабора.Материал); Выборка=Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() тогда СтрокаНабора.МатериалКод=Выборка.Код; СтрокаНабора.Тип=Выборка.Тип; СтрокаНабора.Параметры=Выборка.Параметры; КонецЕсли КонецЦикла; Иначе Запрос =Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ТЗ.Активна, | ТЗ.Количество, | ТЗ.Материал, | ТЗ.Период, | ТЗ.Норма, | ТЗ.Работы |ПОМЕСТИТЬ НаборЗаписей |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НаборЗаписей.Активна, | НаборЗаписей.Количество, | НаборЗаписей.Материал, | НаборЗаписей.Период, | НаборЗаписей.Норма, | НаборЗаписей.Работы, | ПМ_Материалы.Тип, | ПМ_Материалы.Параметры, | ПМ_Материалы.Код КАК МатериалКод |ИЗ | НаборЗаписей КАК НаборЗаписей | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПМ_Материалы КАК ПМ_Материалы | ПО НаборЗаписей.Материал = ПМ_Материалы.Ссылка"; Запрос.УстановитьПараметр("ТЗ",ЭтотОбъект.Выгрузить()); ЭтотОбъект.Загрузить(Запрос.Выполнить().Выгрузить()); КонецЕсли; КонецПроцедуры Пока такая. Просто заметил, что на маленьких обемах данных запрос в цикле оказался быстрее(когда не более 2 записей), чем выгружение набора записей в таблицу значений и последующая загрузка набора записей в регистр. Данная процедура служит только для заполнения реквизитов. Да я знаю какой это ужас - запрос в цикле, но при работе с набором записей альтернатива мне известная - только выгрузить и загрузить. Кто либо когда либо занимался исследованием этих методов? |
|||
1
ilpar
24.08.11
✎
22:32
|
кто ж так то тестирует?...
после первого замера закрываем 1С и запускаем 2 фрагмент кода. При этом в 1 фрагменте нет записи набора движений в регистр. |
|||
2
ilpar
24.08.11
✎
22:33
|
совершенно сравнивать нельзя, если я правильно понял ход твоих мыслей...
При этом НЕСФОРМУЛИРОВАННЫХ совершенно, постановка - г... |
|||
3
ilpar
24.08.11
✎
22:34
|
в 1 фрагменте после его отработки еще будет запись движений в регистр некоторое время
|
|||
4
FReIM
24.08.11
✎
22:41
|
Хм. Лол. Чуть не забыл. Процедура ПередЗаписью() находится в модуле набора записей регистра. А ЭтотОбъект - набор записей регистра.
|
|||
5
FReIM
24.08.11
✎
22:51
|
ilpar
извини, не добавил начальное условие. Простая задача заполнения реквизитов регистра при записи набора записей регистра, в модуле набора записей. Через точку обращаться - система делает не явный запрос. причем столько раз, сколько через точку обращений будет. Единый Запрос уменьшает количество обращений, но не решает проблему запроса в цикле. А создание временной таблицы и методы выгрузить и загрузить - требуют достаточно много времени и собственно не сравнимы с одним или двумя простыми запросами к бд. |
|||
6
FReIM
24.08.11
✎
23:56
|
ну собственно проблема еще актуальна.
|
|||
7
Reaper_1c
25.08.11
✎
00:04
|
А на маленьких объемах тебе не похрену ли?
|
|||
8
FReIM
25.08.11
✎
00:40
|
Маленькие объемы - заносят ручками,
большие при проведении документа, точнее записи набора по строкам таблицы документа записей. И честно говоря вопрос не о конкретной задаче, я её уже решил. А о методологии. |
|||
9
FReIM
25.08.11
✎
09:34
|
ну а тема все еще актуальна
|
|||
10
unregistered
25.08.11
✎
09:44
|
Извиняюсь за ОФФ, но какой-то странный регистр.
А что произойдет, если у материала поменяют код или тип? получиться, что в регистре у нас запись: Материала - Материал1, МатериалКод - 0001, Тип - ТипМатериала1. А в справочнике у это материала Материал1, напрмер: Код - 0009, Тип - СовершенноДругойТип |
|||
11
FReIM
25.08.11
✎
10:10
|
Регистр сведений. Это не ресурсы, а реквизиты, платформа 8.1, возможностей 8.2 по выводу - нет.
Форма списка регистра выведена в форму элемента справочника, с отбором по этому элементу, поскольку он является ведущим измерением регистра, выбран срез последних. Да код может поменяться. И собствено если кто что либо ручками поменял, есть кнопка обновить в форме, выбраный набор записей просто перезапишется с уже нужными реквизитами. Это все нужно для вывода данных в форму, без использования соотвествий и События ПриВыводеСтроки(). Поскольку смотреть данные будут гораздо, гораздо чаще, нежели их изменять. |
|||
12
FReIM
25.08.11
✎
11:02
|
Тема актуальности не потеряла.
|
|||
13
FReIM
26.08.11
✎
10:02
|
Нда. Неуж-то никто не замерял производительность методов выгрузить и загрузить, и не знает их внутренего механизма?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |