Имя: Пароль:
1C
1С v8
Отчет с иерархией
0 Sky69
 
28.01.13
15:34
Создаю отчет,через набор данных - объект, по нажатию на кнопку запускается процедура. Выдает ошибку "Недостаточно памяти". Отчет нужно сделать с иерархией, как например в справочнике "номенклатура".
Процедура НоменклатураНажатие(Элемент)
   Запрос = Новый Запрос;
   СпособОбхода = ОбходРезультатаЗапроса.ПоГруппировкам;
   //СпособОбхода = ОбходРезультатаЗапроса.ПоГруппировкамСИерархией;
       
   Запрос.текст =   "ВЫБРАТЬ
                  |    Номенклатура.Наименование как Номенклатура
                  |ИЗ
                  |    Справочник.Номенклатура КАК Номенклатура
                  |" ;
   Результат = Запрос.Выполнить() ;
   ОтборНоменклатура = Результат.Выгрузить(СпособОбхода);
   
  ВнешниеНаборыДанных = Новый Структура;
   ВнешниеНаборыДанных.Вставить("Номенклатура",ОтборНоменклатура);
   
   СхемаКомпоновкиДанных = ПолучитьМакет("Номенклатура");
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   
   КомпоновщикМакета = Новый  КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);
   
   ПроцессорКомпоновкиДанных = Новый  ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных);
   
   ДокументРезультат = Новый ТабличныйДокумент;
   ПроцессорВывода = Новый ПроцессорвыводаРезультатаКомпоновкиДанныхВтабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   
   ДокументРезультат.ОтображатьСетку = Ложь;
   ДокументРезультат.ОтображатьЗаголовки = Ложь;
   ДокументРезультат.Показать();

КонецПроцедуры
1 Бешеная Нога
 
28.01.13
15:35
имхо памяти не хватает
2 Sky69
 
28.01.13
15:36
ну это я и так понимаю
3 France
 
28.01.13
15:36
а что там в настройках по умолчанию??
4 Sky69
 
28.01.13
15:36
ей памяти не хватает и когда обход с иерархией,и когда по группам
5 Sky69
 
28.01.13
15:38
когда делаю обход -прямой,к сожалению все в перемешку идет и группы и элементы
6 Sky69
 
28.01.13
15:40
в настройках много чего
7 Sky69
 
28.01.13
15:41
тут скриншот вставить нельзя?
8 Ayvengo
 
28.01.13
15:41
(6) небось значения реквизиты уже в настройках тащишь? :)
9 Ayvengo
 
28.01.13
15:41
(7) используй ximage.ru
10 France
 
28.01.13
15:42
а эти "много чего" в итоге не приводят к полному перебору всех возможных комбинаций записей?? я баловался со справочником номенклатура в СКД, и на раз два три ронял 1С с "нехватает памяти"..
11 Ayvengo
 
28.01.13
15:44
(8) если так, то запрос правь.
12 Sky69
 
28.01.13
15:45
Настройки.Выбор
Настройки.ДополнительныеСвойства
Настройки.ДоступныеОбъекты
Настройки.ДоступныеПоляВыбора
Настройки.ДоступныеПоляГруппировок
Настройки.ДоступныеПоляДополнительныхОтборов
Настройки.ДоступныеПоляОтбора
Настройки.ДоступныеПоляОтбораЭлементовСтруктуры
Настройки.ДоступныеПоляПараметровДанных
Настройки.ДоступныеПоляПорядка
Настройки.Отбор
Настройки.ПараметрыВывода
Настройки.ПараметрыДанных
Настройки.ПользовательскиеПоля
Настройки.Порядок
Настройки.Родитель
Настройки.Структура
Настройки.УсловноеОформление
И еще много чего там,в каждом пункте
13 Sky69
 
28.01.13
15:46
Ayvengo как?
14 Ayvengo
 
28.01.13
15:46
(13) давай скриншоты ;)
15 Sky69
 
28.01.13
15:47
интересно как?
16 Sky69
 
28.01.13
15:47
здесь вроде их не вставить
17 Ayvengo
 
28.01.13
15:47
(15) загружаешь на ximage.ru и сюда ссылки ...
18 ИС-2
 
naïve
28.01.13
15:47
(0) надо получить только все группы номенклатуры?
19 Sky69
 
28.01.13
15:47
вам все смех
20 Ayvengo
 
28.01.13
15:48
(19) а я не шучу
21 Sky69
 
28.01.13
15:48
надо получить полностью и группы и все что в них входит,как в справочнике. С вложенными папками. Интернета нету-заблокирован он. Только этот форум открыт
22 Ayvengo
 
28.01.13
15:51
(21) меняй работу :P А как на счет настройки группировок с иерархией, у тебя не настроено это?
23 Sky69
 
28.01.13
15:51
при прямом обходе "Уровень в группе" ставит = 1
24 Sky69
 
28.01.13
15:52
в настройках так и стоит группировка по "Номенклатуре"(с иерархией)
25 Ayvengo
 
28.01.13
15:52
СКД не советовать? :)
26 Sky69
 
28.01.13
15:53
- Отчет
 - Номенклатура(Иерархия)
   -Детальные записи

))) это типа имитация скриншота
27 Ayvengo
 
28.01.13
15:55
(26) ок, тогда иерархия работает :) А что в выбранных полях?
28 Sky69
 
28.01.13
15:55
СКД это схема компоновки данных? я через нее и делаю
29 Sky69
 
28.01.13
15:56
УровеньВГруппировке и Номенклатура
30 France
 
28.01.13
15:57
кросс таблица с выводом номенклатуры по вертикали и горизонтали: и придет пушистый зверь))
31 halconel
 
28.01.13
16:00
А на сервер выполнение переносить не пробовал. Там памяти больше чем на клиенте (по идее).

Сколько элементов и сколько групп в справочнике?
32 Ayvengo
 
28.01.13
16:00
(29) А зачем тогда процедура такая? Не проще просто отбор в этот отчет добавить? :) Я так понял у тебя при нажатии куда-то отчет этот должен открываться?
33 Ayvengo
 
28.01.13
16:03
Ну и запрос, наверное, нужно выполнять с отбором по номенклатуре ;)
34 Ayvengo
 
28.01.13
16:04
А если вся номенклатура нужна, тогда вообще не вижу смысла использовать эту процедуру.. просто вызываешь форму отчета пусть там тыкают :) Ну или в самой форме в зависимости от значения параметра нажимай кнопочку программно
35 Ayvengo
 
28.01.13
16:05
Номенклатура.Наименование как Номенклатура - то точно так нужно?:) А какой запрос вообще в СКД?
36 Sky69
 
28.01.13
16:07
там нет запроса. я же написала через объект делаю,а не через запросы. Я изучаю построение отчетов,вот на таком примере. Мне начальник сказал сделать с иерархией по группам один справочник,разумеется там будет и отбор и все такое,но я сначала попроще решила попробовать на "Номенклатуре"
37 Ayvengo
 
28.01.13
16:09
Номенклатура.Наименование как Номенклатура - поправь хотя бы на Номенклатура.Ссылка как Номенклатура , ато где в наименовании иерархия то
38 Sky69
 
28.01.13
16:10
Мне нужно чтобы параметры из формы(результат запроса и прочие данные) передавались в отчет. Вот и все. По нажатию кнопки запускается процедура,получаем результат,выводим в отчет.
39 France
 
28.01.13
16:10
(36) напиши в яндексе Хрусталева+СКД..
40 Ayvengo
 
28.01.13
16:10
А нафига такой гемморой, если можно просто в СКД сделать :D Чет начальник фантазер какой-то :D
41 Sky69
 
28.01.13
16:10
Ayvengo - а вот он и косяк мой. Дошло
42 Sky69
 
28.01.13
16:12
Как ни жаль, но и с ссылкой не работает. ((
43 Sky69
 
28.01.13
16:12
я по Хрусталевой и делаю
44 Sky69
 
28.01.13
16:12
"Разработка сложных отчетов в 1С Предприятии 8"
45 Sky69
 
28.01.13
16:14
Ayvengo все равно все через СКД не сделать. Если я запрос пишу свой,там ВТ и ТЗ и куча кода,а потом все это выводится в ТЗ которую и надо вывести в отчет.
46 halconel
 
28.01.13
16:15
Селай в самой СКД. Не надов коде.
47 France
 
28.01.13
16:15
без сношения с тз не научились, похоже..
48 Sky69
 
28.01.13
16:16
Просто выводила в отчет раньше - вручную макет создавала и пр.,но с иерархией там не получилось - чтоб папки были и открывались. Поэтому я и делаю сейчас в СКД, но через набор данных-объект.
49 halconel
 
28.01.13
16:16
(45) Оу. Можно конечно перекинуть ТЗ в источник данных СКД. но попробуй таки на сервер код перенести. Может взлетит ;)
50 Ayvengo
 
28.01.13
16:16
(45) ну тут просто изучить нужно
51 Sky69
 
28.01.13
16:17
halconel простой запрос можно сделать,а где их много и много аналитики? куда я в СКД это запихну?
52 France
 
28.01.13
16:17
в скд и запихни(те)
53 halconel
 
28.01.13
16:18
(48) Есть подозрение, что проблема у тебя не с ошибкой про память. Похоже у тебя изначально, что-то не так.

Напиши сюда, пожалуйста, как тебе начальник задачу поставил.
54 Sky69
 
28.01.13
16:18
4ГБ оперативки не хватает для простенького запроса? Я этот 1С не понимаю
55 halconel
 
28.01.13
16:18
(51) В наборы данных конечно
56 Sky69
 
28.01.13
16:19
ТО что он поставил я сделала-отчет получила, но через макет вручную и без раскрывающихся списков
57 France
 
28.01.13
16:19
(54) грамотно составив запрос можно угробить не только 1С..
58 halconel
 
28.01.13
16:19
(54) Мне недавно 64ГБ не хватило когда перекресные ссылки анализировал в базе :)
59 halconel
 
28.01.13
16:20
Так что это нормально
60 Sky69
 
28.01.13
16:20
Что не так? выбираю номенклатуру ПоГруппировкамСИерархией
61 France
 
28.01.13
16:20
(58) и для чего был анализ?
62 France
 
28.01.13
16:21
(60) группировка по строкам? по колонкам? и по строкам и колонкам?
63 Sky69
 
28.01.13
16:22
просто я раньше работала с VFP9,там все оч. быстро работает запросы SQL выполняются мгновенно
64 France
 
28.01.13
16:23
в 1С тоже все мгновенно выполняется..
65 Sky69
 
28.01.13
16:25
мы сравнивали работу 1С и VFP9 - VFP быстрей в разы
66 France
 
28.01.13
16:25
если я сравню: 1С будет быстрей в разы..
67 Sky69
 
28.01.13
16:26
Когда количество записей таблицы превышает миллион - как например с составе изделия
68 France
 
28.01.13
16:26
судя по знаниям в 1С: неудивительно что фокс оказался быстрей))
69 Sky69
 
28.01.13
16:26
ну не я сравнивала,а программист который до меня работал - толковый программист
70 Sky69
 
28.01.13
16:27
в 1С я еще только начинаю
71 Sky69
 
28.01.13
16:27
фокс как раз и создан для работы с БД.
72 France
 
28.01.13
16:29
(69) и конечно же, этот программист 1С знал в также хорошо, как фокс
73 Ayvengo
 
28.01.13
16:30
ТЗ в студию :)
74 halconel
 
28.01.13
16:34
(61) Искали чёбы удалить не используемого.
75 France
 
28.01.13
16:35
(74) проще решается: все помечается на удаление, и затем - удаление.. что осталось то и нужно))
76 halconel
 
28.01.13
16:36
(65) Ну 1С она конечно такая 1С. Но и фокс тоже. Это разные системы. Халиварить можно долго...
77 Aprobator
 
28.01.13
16:37
(0) а нафига СпособОбхода по группировкам нужен для подготовки данных для СКД?
78 Ayvengo
 
28.01.13
16:37
(75) мне не нужен неудачливый код? :D
79 halconel
 
28.01.13
16:39
(75) Нам так не подходило. База в промышленной эксплуатации уже. Получать разрешение на копирование, переносить... А я часа за 2-3 справился.
80 halconel
 
28.01.13
16:45
(69)  Sky69, поставь нам задачу. А то мы твою тему всю захоливарим, пока ждем постановку.

Извини. Вопросы неправильные. Ты рассказывай лучше. Мы поймем, поможем ;)
81 Sky69
 
29.01.13
07:33
Моя задача сейчас построить отчет с иерархией, чтоб раскрывающимся списком папок просматривать отчет. Вот. Причем данные будут получены из ТЗ.
82 Sky69
 
29.01.13
07:35
Код получения ТЗ прописан в кнопке на форме.
83 Sky69
 
29.01.13
07:51
Самое простое задание, которое можно сделать СКД через запрос(хотелось бы через код) это список пользователей с иерархией. Нужно отобрать пользователей,которые не включены ни в одну группу, а так же второй вариант пользователей с их группами. В левом столбце данные из справочника Пользователи -перечень пользователей(с иерархией - в какую папку они включены), в правом столбце данные из справочника группы пользователей,в какую группу данный пользователь включен.   Сейчас это реализовано через созданный вручную макет. И имеет вид:
Пользователи    
спр. Пользователь             спр. Группа пользователей
АДМИНИСТРАТОР    
Ботезату Вячеслав Александрович    
Любимов Геннадий Владимирович    
Федоров Борис Михайлович    
АДМИНИСТРАЦИЯ    
Абдулов Юрий Владимирович    
Борисова Надежда Даниловна    Физ лица+Все организации
Ефремов Артур Васильевич    Закупки
--//--//--                    Мебельная фабрика
--//--//--                    Торговый дом
Иванцова Лилия Евгеньевна    Мебельная фабрика
Карпов Денис Алексеевич            Мебельная фабрика
Коновалова Наталья Николаевна    Торговый дом
Краснова Венера Петровна    Торговый дом
Круглова Светлана Львовна    Мебельная фабрика
--//--//--                    Физ лица+Все организации
--//--//--                    Цех №2
Малкова Виола Михайловна    Закупки
--//--//--                    Мебельная фабрика
--//--//--                    Торговый дом
Романовская Екатерина Львовна    Мебельная фабрика
--//--//--                    Физ лица+Все организации
Сучкова Наталья Евгеньевна    Торговый дом
ЗАВЕДУЮЩИЙ УЧЕТОМ    
Широкова (Зав учетом)    
КАССИРЫ / ГЛАВНАЯ КАССА    
Билялова Валентина Андреевна    Мебельная фабрика
КАССИРЫ    
Ефимова Венера Викторовна    Торговый дом
Шурыгина Виола Ивановна            Мебельная фабрика
--//--//--                    Торговый дом
МЕНЕДЖЕРЫ / МЕНЕДЖЕР ПО
РАБОТЕ С КЛИЕНТАМИ / ОПТОВИКИ    
Иванов (Бухгалтер по складу)
84 Sky69
 
29.01.13
08:26
Через СКД запрос я сделала
85 Aprobator
 
29.01.13
10:24
Все решается в СКД без внешних данных. Примеры построения иерархии есть в книге по СКД Хрусталевой.
86 Sky69
 
29.01.13
11:10
Aprobator у меня такой вопрос по СКД. к примеру я делаю через два набора данных через запрос. Один набор данных из спр. Пользователи(беру только наименование КАК Пользователь и ссылку), другой из спр. ГруппыПользователей(беру Наименование КАК группа,и ссылку на спр.ПОльзователи из подчиненной таблицы). в связи если пытаюсь главной сделать набор данных ПОЛЬЗОВАТЕЛЬ -ругается,связь делаю по ссыллке. Если делаю наоборот главной ГРУППЫ,то выводится нормальный отчет с иерархией(но не показываются пользователи не включенные в группу). Мне нужно чтоб в отчете отразились и пользователи с группами и без групп
87 Sky69
 
29.01.13
11:12
Когда делаю через один сложный запрос(с левым соединением) - тоже самое ругается.
88 Aprobator
 
29.01.13
11:20
второй запрос покажи.
89 MaxS
 
29.01.13
11:23
(0) Может быть стоит в запросе выбирать только элементы (не группы).
И в СКД выводить элементы в иерархии.
Вероятно СКД когда строит группу в иерархии вперемешку с элементами, формирует некорректный запрос, в итоге памяти и не хватает.
90 Sky69
 
29.01.13
11:26
ВЫБРАТЬ
   Пользователи.Наименование КАК ПОЛЬЗОВАТЕЛЬ,
   ГруппыПользователей.Наименование КАК ГРУППА
ИЗ
   Справочник.Пользователи КАК Пользователи
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей КАК ГруппыПользователей
       ПО Пользователи.Ссылка = ГруппыПользователей.ПользователиГруппы.Ссылка
91 Sky69
 
29.01.13
11:26
выдается отчет с списком пользователей с иерархией,но группы не отображает
92 Sky69
 
29.01.13
11:27
ой,без иерарахии
93 Sky69
 
29.01.13
11:32
MaxS ГРУППЫ - это наименование группы пользователей, группировку я делаю в настройках по ПОЛЬЗОВАТЕЛЬ(Иерархия)
94 MaxS
 
29.01.13
11:38
(93) Группировка по группе в запросе это одно.

Иерархия пользователя - это другое. Система подрузумевает под этим родителя элемента справочника пользователи, а не соседнее поле из запроса.
95 Sky69
 
29.01.13
11:43
ну это то понятно
96 Sky69
 
29.01.13
11:44
Почему тогда не работает запрос? не понимаю. Когда главная таблица ГруппыПользователей - показывает иерархию и все как надо, не показывает только пользователей у которых нет групп. Когда делаю главной Пользователи - Показывает только список пользователей, без иерархии и без групп
97 Sky69
 
29.01.13
11:49
(94) Я делаю теперь через СКД
98 MaxS
 
29.01.13
14:30
(96) А зачем использовать (в Иерархии)? В данном случае по моему в настройках СКД достаточно выбрать группировки. Первая - группа пользователя, вторая - сам пользователь.
99 Sky69
 
29.01.13
14:38
Я уже все сделала - все работает.
Это запрос:
ВЫБРАТЬ
   Пользователи.Наименование КАК ПОЛЬЗОВАТЕЛЬ1,
   ГруппыПользователей.Наименование КАК ГРУППА,
   ГруппыПользователей.ПользователиГруппы.(
       Пользователь
   ),
   Пользователи.Ссылка  как ПОЛЬЗОВАТЕЛЬ
ИЗ
   Справочник.Пользователи КАК Пользователи
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыПользователей
       КАК ГруппыПользователей
       ПО Пользователи.Ссылка =
       ГруппыПользователей.ПользователиГруппы.Пользователь

а это в настройках:
Отчет
 - Пользователи(Иерархия)
   -<Детальные записи>
100 Sky69
 
29.01.13
14:40
Осталось только внешний вид подправить. Заголовки и прочее
101 Aprobator
 
29.01.13
16:10
вот за ....Наименование КАК ...... я бы сказал пару ласковых.
102 Ayvengo
 
29.01.13
16:11
(101) ну это любимая ошибка ТС :)
103 Aprobator
 
29.01.13
16:14
(102) ну что поделать, зато красивая )
104 Aprobator
 
29.01.13
16:16
соединение там тоже нафиг не упало. Все с одного справочника достать можно было. Ну и еще можно было условие на Пользователь закатать, чтобы лишних не тащить в запрос.