Имя: Пароль:
1C
1С v8
Работа с массивом в СКД
,
0 NickAn
 
03.08.12
10:12
Делаю глобальную функцию в которой возвращаю массив. Массив если добавить как поле выводиться как строка, а в расшифровке дает выбрать элемент массива.
Но мне этот массив нужно разбить на части, часть данных кинуть в одну строку, соответственно поменять представление, а часть в другую.
Как в вычисляемых полях можно работать с массивом, который в этих же вычисляемых полях.
Можно было сделать сразу разделение четыре функции которые возвращаю свои данные, две представление, а две расшифровки, но для каждой из них делать выборку, будет сильно накладно.
1 NickAn
 
03.08.12
10:31
Получается в вычисляемых полях доступны только поля из набора данных?
2 Kashemir
 
03.08.12
11:17
Значение вычисляемого поля рассчитывается для каждой записи / итога. Параметризируй свою функцию и получай результат с нужной детализацией.
3 NickAn
 
03.08.12
11:22
Можно ли этот массив как то обработать в пользовательских полях?
4 NickAn
 
03.08.12
11:23
(2) Но тогда мне каждый раз нужно делать выборку. А так вернул массив и крути его
5 Kashemir
 
03.08.12
11:25
(4) Такой массив крутить не получится. Посмотри v8: посчитать сумму выбранных строк в регистре сведений  походу в 8.1.14 появились другие объекты для кручения.
6 NickAn
 
03.08.12
11:34
(5) Совсем не по теме, че-то я не заметил СКД
7 Kashemir
 
03.08.12
11:35
(6) Упс сори - не ту тему линканул v8: СоединитьСтроки() - как?
8 NickAn
 
03.08.12
11:41
(7) Я так не понял что там мне подходит.
Тогда вопрос, можно ли вернуть значение, а выражении представления обратиться к этому выражению. Потому что я хочу вернуть документ для расшифровки, а показать в отчете только его номер
9 Kashemir
 
03.08.12
11:43
(8) Сделай еще одну функцию приведения представления к нужной. Кстати где-то вроде что на новых релизах некий функционал для изменения представления документов появился.
10 Leksus
 
03.08.12
11:46
(9) это в 8.3
11 NickAn
 
03.08.12
11:53
10) На 8.3 стремно переходить
(9) Функцию я смогу сделать, но как я писал в (1), мне придется 4 раза выборку одну и ту же делать.
И как в вычисляемых полях поставить в представление вычисляемое поле, дает только из набора данных
12 Kashemir
 
03.08.12
11:56
(11) Ты бы объяснил на конкретном примере чего нужно. Может все можно решить гораздо проще.
13 NickAn
 
03.08.12
12:02
Есть документ, на него есть несколько ссылок в других документах одного типа.
Мне нужно вернуть в первую колонку первый документ с его номером и расшифровкой на него,
во вторую колонку вернуть остальные документы с номерами через ";" и с расшифровкой на них

Пока только получилось через запрос и то во второй колонке только второй документ возвращаю, и работает жутко долго, решил переделать через внешние функции, т.к. там могу использовать критерии отбора, думаю будет быстрее
14 NickAn
 
03.08.12
12:04
Документ|Документ который ссылается (первый)|Документ который ссылается второй и остальные|
15 Kashemir
 
03.08.12
12:10
(14) А нельзя это все запросом получить ? 1 группировка - основной документ. 2 группировка - документы, ссылающиеся на основной документ(напрямую не выводить). Нужное представление формировать представлением полей. Для вывода одной строкой второй группировки можно пользовать тему из (7)
16 NickAn
 
03.08.12
12:24
Запросом, долго получается, сейчас переделал пока без расшифровки, смотрю что быстрее будет работать.
В табличных частях документов которые ищу бывает больше 100 строк, и самих документов прилично.
17 Kashemir
 
03.08.12
12:26
(16) Программный перебор табличных частей быстрее чем запросом ? - что-то тут не так :)
18 NickAn
 
03.08.12
12:29
Во внешней функции использую критерии отборов, и не вы первый раз стыкаюсь с тем, что выборка в табличных частях подтормаживает в запросах, а простой перебор работает быстрее. Смысл в том что в отчет вообще есть несколько виртуальных таблиц, которые дальше соединяются.
19 NickAn
 
03.08.12
12:39
И в добавок отчет сильно подгружает систему
20 Kashemir
 
03.08.12
12:40
(18) Никто не мешает критерии в запросе использовать. Можно так реализовать задачу и на внешнем источнике.
21 NickAn
 
03.08.12
13:04
хорошо, как критерий использовать в соединении, или как передать в него массив ссылок?
22 Kashemir
 
03.08.12
13:19
(21) Неясна суть вопросов. Критерий возвращает выборку неких документов - где тут проблема использования в соединении ? Массив ссылок передает в СКД как параметр - тут вроде тоже все понятно.
23 NickAn
 
03.08.12
13:27
Как в запросе сделать выборку по документам + выбрать все связанные используя критерий отбора

ВЫБРАТЬ
   СвязанныеДокументы.Ссылка
ИЗ
   КритерийОтбора.СвязанныеДокументы(&Ссылка) КАК СвязанныеДокументы
24 Kashemir
 
03.08.12
13:35
(23) Вот ты интересные вопросы задаешь - как мне догадаться как у тебя связанны документы ? Я ж мыслей не читаю
25 NickAn
 
03.08.12
13:38
Я просто хотел сказать, что критерий отбора в соединениях нельзя использовать
26 Kashemir
 
03.08.12
13:40
(25) У тебя настолько непредсказуемая связь что никак приличным запросом не выразить? - не верю - вот то что хотел я сказать
27 NickAn
 
03.08.12
13:47
ладно тема закрыта, переделал немного запрос, стало работать быстрее даже чем с внешней функцией. Буду ждать 1С8.3.
Спасибо за ответы, хотя бы ушел от неопределенности по своему вопросу.
28 Kashemir
 
03.08.12
13:51
(27) Зачем тебе 8.3 ?
29 NickAn
 
03.08.12
14:11
может что новое будет по перебору массивов