Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
te_morituri
22 / 22 / 4
Регистрация: 17.10.2009
Сообщений: 281
1

Форму списка Заказов разбить на 4-ре списка по данным из регистра сведений (8.2, обычные формы)

07.08.2013, 11:35. Просмотров 1232. Ответов 11
Метки нет (Все метки)

Доброго времени суток, Форумчане!

после решения данной задачи я сильно нагрузил систему, лагать стало не по детски. Хочу найти альтернативный вариант решения. Подскажите
Значит есть Документ (неважно какой), номера зашли за 11 тыс. Есть регистр сведений периодический с измерением Документ и ресурсом статус. Так, вот - я Форму списка Документа разбил на 4-ре вкладки и исходя из последнего статуса Документ нужно отразить на одной из вкладок.

Как я сделал: Для всех элементов формы Список, на событие ПриПолученииДанных кинул процедурку которая делает такое:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Запрос=Новый Запрос();
    Запрос.Текст="ВЫБРАТЬ
                 |  ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних.ЗаказПокупателя как ссылка
                 |ИЗ
                 |  РегистрСведений.ф_СтатусыЗаказаИБыстрогоЗаказа.СрезПоследних КАК ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних
                 |ГДЕ
                 |  ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних.Статус = &Статус";
    Запрос.УстановитьПараметр("Статус",Справочники.ф_Статусы.НайтиПоКоду("000000009")); 
    СписокВсе09=новый СписокЗначений();
    СписокВсе09.ЗагрузитьЗначения( Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ССылка"));
    
    Запрос.Текст="ВЫБРАТЬ
                 |  ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних.ЗаказПокупателя КАК ссылка
                 |ИЗ
                 |  РегистрСведений.ф_СтатусыЗаказаИБыстрогоЗаказа.СрезПоследних КАК ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних
                 |ГДЕ
                 |  ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних.Статус = &Статус
                 |  Или ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних.Статус = &Статус2" ;
    Запрос.УстановитьПараметр("Статус",Справочники.ф_Статусы.НайтиПоКоду("000000009")); 
    Запрос.УстановитьПараметр("Статус2",Справочники.ф_Статусы.НайтиПоКоду("000000004"));
    СписокВсе09и04=новый СписокЗначений();
    СписокВсе09и04.ЗагрузитьЗначения( Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ССылка"));
    
    Запрос.Текст="ВЫБРАТЬ
                 |  ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних.ЗаказПокупателя как ссылка
                 |ИЗ
                 |  РегистрСведений.ф_СтатусыЗаказаИБыстрогоЗаказа.СрезПоследних КАК ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних
                 |ГДЕ
                 |  ф_СтатусыЗаказаИБыстрогоЗаказаСрезПоследних.Статус = &Статус";
    Запрос.УстановитьПараметр("Статус",Справочники.ф_Статусы.НайтиПоКоду("000000004"));
    СписокВсе04=новый СписокЗначений();
    СписокВсе04.ЗагрузитьЗначения( Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ССылка"));
 
    ДокументСписок1.Отбор.Ссылка.ВидСравнения   = ВидСравнения.НеВСписке;
    ДокументСписок1.Отбор.Ссылка.Значение       = СписокВсе09и04;
    ДокументСписок1.Отбор.Ссылка.Использование  = Истина;
    
    ДокументСписок1.Отбор.Проведен.ВидСравнения   = ВидСравнения.Равно;
    ДокументСписок1.Отбор.Проведен.Значение       = Ложь;
    ДокументСписок1.Отбор.Проведен.Использование  = Истина;
    
    ДокументСписок2.Отбор.Проведен.ВидСравнения   = ВидСравнения.Равно;
    ДокументСписок2.Отбор.Проведен.Значение       = Ложь;
    ДокументСписок2.Отбор.Проведен.Использование  = Истина;
 
    ДокументСписок2.Отбор.Ссылка.ВидСравнения   = ВидСравнения.ВСписке;
    ДокументСписок2.Отбор.Ссылка.Значение       = СписокВсе04;
    ДокументСписок2.Отбор.Ссылка.Использование  = Истина;
    
    ДокументСписок3.Отбор.Ссылка.ВидСравнения   = ВидСравнения.неВСписке;
    ДокументСписок3.Отбор.Ссылка.Значение       = СписокВсе09;
    ДокументСписок3.Отбор.Ссылка.Использование  = Истина;
    
    ДокументСписок3.Отбор.Проведен.ВидСравнения   = ВидСравнения.Равно;
    ДокументСписок3.Отбор.Проведен.Значение       = Истина;
    ДокументСписок3.Отбор.Проведен.Использование  = Истина;
    
    ДокументСписок4.Отбор.Ссылка.ВидСравнения   = ВидСравнения.ВСписке;
    ДокументСписок4.Отбор.Ссылка.Значение       = СписокВсе09;
    ДокументСписок4.Отбор.Ссылка.Использование  = Истина;
кроме того в этой процедурке уже до этого висело 5 запросов простых и цикл обхода Табличного поля (для отображения динамической информации).

Вопрос: можно ли заменить как то Отбор "вписке" что бы не формировать списки заказов. Если доков много то это капец)))

Спасибо.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2013, 11:35
Ответы с готовыми решениями:

Управление автотранспортом. Открыть форму списка регистра сведений с отбором по текущему элементу
Собственно надо при нажатии на кнопку ОтборПоТС, чтобы открывался регистр сведений по отбору...

УПП обычные формы.Закрыть форму списка
В процедуре (ячейка табличного поля) надо выбрать другой документ из списка, добавить запись и...

Для регистра сведений «ЦеныТоваров» создать форму списка
Для регистра сведений «ЦеныТоваров» создать форму списка, имеющую два табличных поля: стандартное...

Сортитровка Формы списка регистра сведений
Здравствуйте. Управляемые формы. Регистр сведений. Возможно ли отсортировать в ФормеСписок по...

Нестандартное отображение списка регистра сведений
Добрый день! Подскажите, такой вопрос: есть регистр сведений Ответственный за номенклатуру, он...

11
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
07.08.2013, 14:14 2
ну так 4 дин списка
0
te_morituri
22 / 22 / 4
Регистрация: 17.10.2009
Сообщений: 281
07.08.2013, 15:01  [ТС] 3
duk337, непонял
0
Joker_vad
Эксперт 1С
473 / 411 / 92
Регистрация: 26.09.2012
Сообщений: 1,847
07.08.2013, 16:13 4
А зачем вам вообще отборы? Каждый список формировать данными из запроса.
0
07.08.2013, 16:13
te_morituri
22 / 22 / 4
Регистрация: 17.10.2009
Сообщений: 281
07.08.2013, 18:51  [ТС] 5
Joker_vad, там такой момент что отбор "НЕвсписке", ну я это могу обойти сделав запрос наоборот, но для этого запрос станет тяжелее и есть ли смысл (точнее сказать я не знаю еще как ФормуСписка заполнить только Переменной типа СписокЗначений типовым функционалом, ибо на типовом отображении строк висят другие вещи. Подскажите как и пересмотрю свой подход)
0
Joker_vad
Эксперт 1С
473 / 411 / 92
Регистрация: 26.09.2012
Сообщений: 1,847
07.08.2013, 19:39 6
Ну да было предложение отказаться именно от типового отображения
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
07.08.2013, 20:54 7
Цитата Сообщение от te_morituri Посмотреть сообщение
duk337, непонял
читаю по диагонали: обычная форма. Я бы втетерил реквизитик, заполнил бы один раз по этим запросам, а потом поддерживал бы. Ну, и отбор по нему.
0
te_morituri
22 / 22 / 4
Регистрация: 17.10.2009
Сообщений: 281
08.08.2013, 11:41  [ТС] 8
duk337, Вы говорите о дополнительной колонке в табличной части? которую я заполнял бы тоже при получении данных или о чем-то другом. Попробую как я понял, если неправильно понял - поправте.
спасибо)

Добавлено через 31 минуту
Я неправильно понял. Добавить колонку по которой работает отбор и могу изменить данные - не могу.

На счет реквизита подробней, пожалуйста.

Добавлено через 42 минуты
Цитата Сообщение от duk337 Посмотреть сообщение
читаю по диагонали: обычная форма. Я бы втетерил реквизитик, заполнил бы один раз по этим запросам, а потом поддерживал бы. Ну, и отбор по нему.
Моя схема: Запрос->Отбор
Вы предлагаете: Запрос->Реквизит->Отбор

Это одно и тоже
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
08.08.2013, 12:09 9
1. Я понял так, что отбор по списку, и Вам приходится утюжить ТЧ при каждом обновлении формы.
2. Добавить свой реквизит "Флт" в ТЧ - не смертельно для обновлений, тем более форма всё равно "упилена вхлам". Единственная неприятность - один раз обновить в монопольке.
3. Отбор зато устанавливается 1 раз на каждое таб.Поле при смене закладки.
4. Проблемы с первоначальным заполнением "Флт" и его поддержкой (заполнение по значению в отборе) - легко решаемы
0
te_morituri
22 / 22 / 4
Регистрация: 17.10.2009
Сообщений: 281
08.08.2013, 13:42  [ТС] 10
Цитата Сообщение от duk337 Посмотреть сообщение
2. Добавить свой реквизит "Флт" в ТЧ - не смертельно для обновлений
если я его добавлю, то заполнять не могу: поле не доступно для заполнения.
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
08.08.2013, 13:47 11
ПриНачалеРедактированияСтроки(,НоваяСтрока,)
Если НоваяСтрока Тогда ЗаполнитьПоОтбору(Отбор) - сообразишь как напейсать?
А реквизит и показывать-то не надо
0
te_morituri
22 / 22 / 4
Регистрация: 17.10.2009
Сообщений: 281
08.08.2013, 17:27  [ТС] 12
Если честно, я все равно не понял Вашего принципа.

Как я сделал:
1) на событие панели СменаВкладки, ПриОткрытииФормы, и на кнопочку "Обновить" бросил код формирования отбора - клиенту не понравилось лишнее телодвижение по поводу кнопочки обновить и поэтому пункт 2
2) при открытии формы сделал
1C
1
ПодключитьОбработчикОжидания("ОбработчикОжидания", 2, Ложь);
ну и как бы буду тестить.

приму во внимание высказывания в мою сторону по поводу кривых рук(((
0
08.08.2013, 17:27
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2013, 17:27

Выводить информацию в форму соответствующую данным из выпадающего списка
Привет, народ! Вопрос в следующем. Как сделать так, чтобы при выборе определенного значения в...

Связать форму справочника и регистра сведений по физлицу
начинающий программист 1с, стала задача связать форму справочника и регистра сведений по физлицу,...

Перенос значения из справочника в форму регистра сведений
Здравствуйте. Возникла такая проблема. Имеется справочник Номенклатура, в котором находится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.