|
v7: Выборка элементов справочника | ☑ | ||
---|---|---|---|---|
0
Wefast
05.05.16
✎
15:08
|
Семерка для меня совсем темный лес.
Есть сотрудники. Мне нужно выгрузить всех сотрудников у кого указано образование. Что то вида Сотрудник | Образование Образование строка не ограниченной длины. Воспользовался конструктором(который надо сказать вообще не понятный) Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать2) |Обрабатывать НеПомеченныеНаУдаление; |Без итогов; |Сотрудники = Справочник.Сотрудники.ТекущийЭлемент, Справочник.Сотрудники.Родитель; |Группировка Сотрудники; |Условие(Сотрудники.Образование <> ""жол""); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать2"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка() = 1 Цикл // Заполнение полей Сформировать2 Таб.ВывестиСекцию("Сформировать2"); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать2", ""); Мне бы в условие поставить <> "", но оно тогда не работает. Мне бы туда еще добавить |Образование = Справочники.Сотрудники.Образование Но ругается на не возможность использования строки неограниченной длины. |
|||
1
Mikeware
05.05.16
✎
15:17
|
Ну сделай не запросом, а перебором.
Спр.ВыбратьЭлементы() пока Спр.ПОлучитьЭлемент()=1 цикл ... |
|||
2
Господин ПЖ
05.05.16
✎
15:19
|
забудь про запросы в 7.7
|
|||
3
Господин ПЖ
05.05.16
✎
15:19
|
+ для таких целей
|
|||
4
Mikeware
05.05.16
✎
15:20
|
(2) про чорные.
прямыми - нормально :-) |
|||
5
пипец
05.05.16
✎
15:41
|
(2) все работает не гони
(0) через реквизит и переменную а не ручными скобочками |
|||
6
пипец
05.05.16
✎
15:42
|
+ можно еще внешнюю функцию
|
|||
7
пипец
05.05.16
✎
15:43
|
+ про неограниченную строку да - таки будет ругаться )))
|
|||
8
Ясный перец
05.05.16
✎
15:47
|
(0) >>Мне бы в условие поставить <> "",
А что? ПустоеЗначение() уже отменили? |
|||
9
Wefast
05.05.16
✎
15:49
|
Этим запросом конструктор сам создал макет. И все в него классно вывел.
Решил я тут перебором все сделать Таб = СоздатьОбъект("ТаблицаЗначений"); Таб.НоваяКолонка("Сотрудник"); Таб.НоваяКолонка("Родитель"); Таб.НоваяКолонка("Образование"); Спр = СоздатьОбЪект("Справочник.Сотрудники"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.Образование <> "" Тогда Таб.новаяСтрока(); Таб.Сотрудник = Спр.ТекущийЭлемент(); Таб.Родитель = Спр.Родитель; Таб.Образование = Спр.Образование; КонецЕсли; КонецЦикла; И как мне теперь эту классную таблицу куда то вывести макетом к примеру или сразу сохранить в файл |
|||
10
Wefast
05.05.16
✎
15:49
|
(8) нет наверное, но тут главное что строку неограниченной длины я не могу вывести в запросе. А все ради нее и затевается.
|
|||
11
Ясный перец
05.05.16
✎
15:51
|
(9) СоздатьОбъект("Таблица") и в него выводить значения из Таб
|
|||
12
Mikeware
05.05.16
✎
15:51
|
(9) создай конструктором макет отчета, и им...
|
|||
13
ptiz
05.05.16
✎
15:55
|
+100 к перебору, здесь вам не восьмерка.
|
|||
14
Wefast
05.05.16
✎
15:59
|
(11) каким образом?
Табб = СоздатьОбъект("Таблица"); А дальше что? |
|||
15
Mikeware
05.05.16
✎
16:00
|
(14) см (12)
|
|||
16
Wefast
05.05.16
✎
16:04
|
(15)
Таб = СоздатьОбъект("ТаблицаЗначений"); Таб.НоваяКолонка("Сотрудник"); Таб.НоваяКолонка("Родитель"); Таб.НоваяКолонка("Образование"); Таб2= СоздатьОбъект("Таблица"); Таб2.ИсходнаяТаблица("Отчет"); Таб2.ВывестиСекцию("Шапка"); Таб2.Опции(0,0,Таб.ВысотаТаблицы(),0); Спр = СоздатьОбЪект("Справочник.Сотрудники"); // Спр.ИспользоватьРодителя(ЭлементРодитель); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.Образование <> "" Тогда Таб.новаяСтрока(); Таб.Сотрудник = Спр.ТекущийЭлемент(); Таб.Родитель = Спр.Родитель; Таб.Образование = Спр.Образование; Таб2.ВывестиСекцию("Строка_1"); КонецЕсли КонецЦикла; Таб2.ВывестиСекцию("Подвал"); Таб2.ТолькоПросмотр(1); Таб2.Показать("Отчет",""); Я же так понимаю на макете нужно сделать параметры и как то их заполнить? Как их заполнить? |
|||
17
Злопчинский
05.05.16
✎
16:06
|
Восьмерочники смишные.. как дети...
http://caricatura.ru/parad/samoilov/pic/2190.jpg |
|||
18
пипец
05.05.16
✎
16:07
|
...гыгы я напишу запросом этот отчет за 5-ть минут ...
...а я за 4-ре ))) ... пишите |
|||
19
Злопчинский
05.05.16
✎
16:08
|
(16) макет состоит из секций
Секция это набор ячеек Ячека может содержать либо текст, либо шаблон, либо выражение Это задается в свойстваях ячеки В выражении допустимы переменные |
|||
20
Злопчинский
05.05.16
✎
16:09
|
(18) ну согласись, прикольные же они...
|
|||
21
пипец
05.05.16
✎
16:11
|
(20) угу , это они по 6.0 экзамен не сдавали ))) а ля книгу покупок по оплате ))))
|
|||
22
Mikeware
05.05.16
✎
16:12
|
(21) жестокий ты...
|
|||
23
Wefast
05.05.16
✎
16:16
|
(19) все это чудесно но что там писать.
Т.е. в макете у поля секции что в цикле выводится указать Выражение. И что там написать? Спр.Образование не работает. |
|||
24
пипец
05.05.16
✎
16:17
|
+ если про 7.7 есть еще таблица в режиме ввода данных )))
, а есть еще пост заполнение через области, аля как в финпланировании во всех практически отчетах - итоги наверх выводятся постфактум ))) (22) ненуачо 6.0 между прочим клиент серверной была и работала без множества релизов )))) |
|||
25
пипец
05.05.16
✎
16:20
|
Таб.новаяСтрока();
Таб.Сотрудник = Спр.ТекущийЭлемент(); Таб.Родитель = Спр.Родитель; Таб.Образование = Спр.Образование; Таб2.ВывестиСекцию("Строка_1"); это жесть открой любой отчет и посмотри как там выводится |
|||
26
Господин ПЖ
05.05.16
✎
16:23
|
нормальный человеческий запрос в 6 строк и вывод по сути через ЗаполнитьЗначенияСвойств()... а то и вообще в консоли или скд нарисовать
но клюшечники продолжают чесать ЧСВ |
|||
27
Wefast
05.05.16
✎
16:23
|
(25) т.е. ты не знаешь?)
ну ок |
|||
28
пипец
05.05.16
✎
16:26
|
Функция Есть(Док)
Если СокрЛП(Док.Образование)="" тогда Возврат 0; Иначе Возврат 1; КонецЕсли; КонецФункции //******************************************* // Процедура генерации запроса Сформировать. // Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Сотрудники = Справочник.Сотрудники.ТекущийЭлемент; |Функция Счётчик = Счётчик(); |Группировка Сотрудники без групп; |Условие(Есть(Сотрудники)=1); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Сотрудники Таб.ВывестиСекцию("Сотрудники"); КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры в таблице то что в таблице ЗЫ в конструктор так же как в 8-ке можно вставить запрос - таблицу он сам нарисует |
|||
29
пипец
05.05.16
✎
16:29
|
(26) ой ой ой )))
(27) вставь в конструкторе в ТЕКСТ запроса Сотрудники = Справочник.Сотрудники.ТекущийЭлемент; Функция Счётчик = Счётчик(); Группировка Сотрудники без групп; Условие(Есть(Сотрудники)=1); и функцию из (28) |
|||
30
Wefast
05.05.16
✎
16:29
|
(28) я не понимаю чем это отличается от того что я показывал в (0)
В запрос не удается вставить строку не ограниченной длины. Сделал так: Родитель = Спр.Родитель; Образование = Спр.Образование; Таб2.ВывестиСекцию("Строка_1"); и назвал в макете параметры Родитель и Образование |
|||
31
пипец
05.05.16
✎
16:30
|
написано , за 3-ри минуты )))
|
|||
32
пипец
05.05.16
✎
16:31
|
(30) внимательно прочитай (29) и посмотри (28) и пойми чем отличается )))
|
|||
33
пипец
05.05.16
✎
16:32
|
(30) в твоем случае в строке (в обединенной секции) должно быть поле с типом выражение и с значением Спр.Образование
|
|||
34
Wefast
05.05.16
✎
16:36
|
(32) какая то фун-я Счетчик и странное условие что мне не нужно. Мне же нужно вывести Сотрудника, Родителя, и Образование(Строка не ограниченной длины)
Вот эту строку в запрос поместить не удается. ВСе остальное в твоем коде создается через конструктор и у меня. (33) что то я так пробовал, не вышло, может ; надо было поставить. Но сейчас выводит и ладно |
|||
35
Господин ПЖ
05.05.16
✎
16:37
|
>какая то фун-я Счетчик и странное условие что мне не нужно.
запросы в клюшках мозгом не воспринимать лучше. просто "голосуй сердцем" |
|||
36
пипец
05.05.16
✎
16:40
|
http://picslife.ru/wp-content/uploads/2013/02/Fragment-turkmenskogo-meteorita.jpg
вот такой камень упал с душИ , рад, что получилось ))) |
|||
37
Злопчинский
05.05.16
✎
18:45
|
(28) справочник в запросе и без функции отработает
А если в запрос вывести Без итогов; То у топикстартера вообще крышу сорвет |
|||
38
Злопчинский
05.05.16
✎
18:47
|
А потом скажет желтая пресса
Что Пипец и Злопчинский клюшками в извращенной форме довели до умопомешательства беззащитного восьмерочника, который хотел нести в массы доброе и светлое, но надорвался... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |