|
дополнительные реквизиты в 1С 8.3 | ☑ | ||
---|---|---|---|---|
0
Darchick
05.03.15
✎
09:29
|
Добрый день, уважаемые гуру!
Проблема возникла в связи с использованием дополнительных реквизитов в Документообороте: есть справочник ВнутренниеДокументы, а в нем табличная часть ДополнительныеРеквизиты с полями Свойство и Значение. Пользователям понадобился запрос, в котором проводится фильтрация по дополнительным реквизитам. Мое решение было создать доп.обработку с кучей полей для выбора(в соответствие с доп.реквизитами). В коде прописываю запрос: Запрос = Новый Запрос; Запрос.УстановитьПараметр("Вид",Вид); Запрос.Текст = "ВЫБРАТЬ | ВД.Ссылка как ссылка, | ВД.ВидДокумента, |ИЗ | Справочник.ВнутренниеДокументы КАК ВД |ГДЕ | ВД.ВидДокумента = &Вид"; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Потом в цикле делаю отбор по доп.Реквизитам. Здесь выкладываю на примере мощности (а вообще их около 10 штук): Пока Выборка.Следующий() Цикл Строка=Макет.ПолучитьОбласть("Строка"); ВнДок=Выборка.Ссылка; Таб=ВнДок.ДополнительныеРеквизиты; Для каждого стр из Таб цикл Если стр.свойство.наименование="Мощность" тогда м=стр.значение; конецесли; конеццикла; //фильтруем по мощности Если м<=МощностьДо и м>=МощностьОт тогда продолжить; Конецесли; //и выводим строку в макет Строка.Параметры.РегНом=ВнДок.РегистрационныйНомер; Строка.Параметры.Корр=ВнДок.Корреспондент; Строка.Параметры.РегДата=ВнДок.ДатаРегистрации; Строка.Параметры.Мощ=м; ТабДокумент.Вывести(Строка); конеццикла; В результате получаю таблицу типа: Номер Корреспондент Дата Мощность 1 Иванов 01.01.2014 5 2 Петров 01.02.2014 10 3 Сидоров 01.03.2014 50 И все бы хорошо, но в справочнике 12000 записей и таблица формируется минуты 4.... Пыталась такую же таблицу сделать в СКД... Мощность дополнительной колонкой не выводится, и фильтрация по доп.реквизитам тоже не получается. Уважаемые знатоки, подскажите как в СКД сделать аналог перекрестного запроса... Ну или как ускорить вывод в макете... |
|||
1
shuhard
05.03.15
✎
09:32
|
(0) Строка=Макет.ПолучитьОбласть("Строка");
а макет то что содержит ? |
|||
2
banco
05.03.15
✎
09:40
|
(0) Доп. реквизиты прописать в характеристки документа и использовать в отчетах скд как обычные реквизиты
|
|||
3
Defender aka LINN
05.03.15
✎
09:42
|
Жесть какая...
|
|||
4
Креатив
05.03.15
✎
10:05
|
(0)Делай сразу запрос по табличной части.
|
|||
5
cons74
05.03.15
✎
11:25
|
(0) отбор в цикле - чего ж ты еще хотел как не тормозов.
Решение должно быть в запросе, например как (4) |
|||
6
cons74
05.03.15
✎
11:29
|
Ах это сисадмин Даша.
Даша, посмотрите видеолекции Павла Чистова. http://forum.chistov.pro/index.php?PHPSESSID=k5g31182vt7iil40c7mcjt5kd4&board=38.0 Хоть простые вопросы отпадут. Судя по коду с запросами у вас не важно. А у него как раз отдельные 2 лекции по запросам есть. |
|||
7
DexterMorgan
05.03.15
✎
11:50
|
(0) В скд для этого используются характеристики - их можно указать как на уровне самой скд, так и на уровне объекта (данные - характеристики).
После этого в отчетах, дин списках и т.д. можно выводить доп. реквизиты как обычные реквизиты и делать по ним отбор |
|||
8
Darchick
06.03.15
✎
03:00
|
(1) В макете области: заголовок, шапка, строка, а в строке все необходимые параметры. При исполнении кода получается табличка, как на выходе в посте (0)
|
|||
9
PR
06.03.15
✎
03:41
|
Правильный ответ в (2)
|
|||
10
Darchick
16.03.15
✎
09:03
|
(2) Разобралась с характеристиками СКД, в результате получаю вот такой запрос:
ВЫБРАТЬ ВнутренниеДокументы.Ссылка ИЗ Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы {ХАРАКТЕРИСТИКИ ТИП(Справочник.ВнутренниеДокументы) ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения ПОЛЕКЛЮЧА Ссылка ПОЛЕИМЕНИ Наименование ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ ВнутренниеДокументыДополнительныеРеквизиты.Ссылка, ВнутренниеДокументыДополнительныеРеквизиты.Свойство, ВнутренниеДокументыДополнительныеРеквизиты.Значение ИЗ Справочник.ВнутренниеДокументы.ДополнительныеРеквизиты КАК ВнутренниеДокументыДополнительныеРеквизиты) ПОЛЕОБЪЕКТА Ссылка ПОЛЕВИДА Свойство ПОЛЕЗНАЧЕНИЯ Значение } После настройки под предприятием отчет выводится ООООООЧЕНЬ медленно. И к тому же, если в поля выводишь более 2 допреквизитов, все виснет, и программа с ошибкой закрывается... |
|||
11
Darchick
16.03.15
✎
09:44
|
Разобралась. Все гораздо проще. Запрос в конфигураторе:
ВЫБРАТЬ ВнутренниеДокументы.Ссылка ИЗ Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы Потом в режиме предприятия Все действия-Изменить вариант и настроить выводимые поля. Дело в том, что в конфигурации Документооборота в справочнике "Внутренние документы" уже прописаны характеристики объекта. Поэтому лишние навороты в отчете только замедляют его вывод. (7)Спасибо, натолкнули на мысль. (6)Согласна, активно взялась за запросы :-) |
|||
12
D_E_S_131
16.03.15
✎
09:47
|
Вообще-то рекомендовали
|
|||
13
Darchick
17.03.15
✎
01:56
|
(12) Я аналогично пробовала... Но данных 12 000 записей, только по нужному типу документов и примерно столько же всех остальных - обрабатывается очень долго.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |