|
Запрос в 1с торговля 11 | ☑ | ||
---|---|---|---|---|
0
ТеньПустоты
16.04.12
✎
16:04
|
Такие дела: Нужно вывести так
Дата1 сотрудник1,сотрудник2,сотрудник3 дата2 сотрудник1,сотрудник3, сотрудник6 дата3 сотрудник.... и так далее. При условии что сотрудники у меня находятся в отдельной табличной части. Вопрос конкретный: как вывести поле из вложенной таблицы при условии что сгруппировать нужно по дате, а она на форме документа а не в вложенной таблице. |
|||
1
МихаилМ
16.04.12
✎
16:05
|
||||
2
ilya_i
16.04.12
✎
16:07
|
Выбрать "Дата1", "сотрудник1" ,"сотрудник2","сотрудник3"
Объединить Выбрать "Дата2", "сотрудник1" ,"сотрудник3","сотрудник6" Объединить Выбрать "Дата3", "сотрудник...." ,"","" |
|||
3
ТеньПустоты
16.04.12
✎
16:26
|
трололо идут на юх
В общем делаю так ВЫБРАТЬ документ.Дата КАК Дата, документ.Исполнители.( Сотрудник ) ИЗ Документ КАК документ УПОРЯДОЧИТЬ ПО Дата выдает всё верно, но вот дата1 сотрудник1 дата1 сотрудник2 дата2 сотрудник3 дата2 сотрудник4 А как подправить чтобы былло так дата1 сотрудник1, сотрудник2... вот в этом и вся проблема |
|||
4
ТеньПустоты
16.04.12
✎
16:26
|
а да, там ещё не просто дата, а только день месяц год, без времени
|
|||
5
Buster007
16.04.12
✎
16:29
|
куда вывести?
|
|||
6
ТеньПустоты
16.04.12
✎
16:31
|
в отчет
|
|||
7
ТеньПустоты
16.04.12
✎
17:18
|
Задание почти готово, нужно только сделать так чтобы для каждой даты выводились все упомянутые в эту дату сотрудники, в одну строку, а не так чтобы в сколько сотрудников столько и строк...
Есть какие нибудь идеи? |
|||
8
МихаилМ
16.04.12
✎
17:20
|
(7)
болезнь одинесника - путаете получение данных с представлением. пользуйтесь скд. |
|||
9
Wobland
16.04.12
✎
17:22
|
(7) итоги по сотруднику, в обходе собираешь строку представления
|
|||
10
ТеньПустоты
17.04.12
✎
02:39
|
(9) я вас не понял, объясните попроще пожалуста, чтобы прям как для чайника
|
|||
11
ТеньПустоты
17.04.12
✎
03:06
|
пилю так
ВЫБРАТЬ НАЧАЛОПЕРИОДА(документ.Дата, ДЕНЬ) КАК дата, пРЕДСТАВЛЕНИЕ(документ.Исполнители.Сотрудник) ИЗ Документ КАК документ УПОРЯДОЧИТЬ ПО дата проблема всё таже. для каждого сотрудника отдельную строчку требует. |
|||
12
perec1982
17.04.12
✎
04:58
|
Делай через СКД. Е.Ю.Хрусталева - Разработка сложных отчетов в 1С_Предприятии 8.
Делаешь ТЗ, добавляешь колонку, обходом по ТЗ заполняешь ее как надо и выводишь данные ТЗ в отчет. |
|||
13
ТеньПустоты
17.04.12
✎
12:14
|
По этой книжке и пытюсь делать! только не понимаю что есть обход по ТЗ
|
|||
14
ТеньПустоты
17.04.12
✎
14:13
|
Господа Уважаемые, объясните пожалуста как мне несколько сотрудников для одной даты засунуть в одну строку?? Ну очень прошу. Без подъ***ок!!!
|
|||
15
ТеньПустоты
17.04.12
✎
14:15
|
я понимаю что нужно всех сотрудников для одной даты засунуть в строку и вывести эту строку в таблицу. но как это реализовать?
|
|||
16
ТеньПустоты
17.04.12
✎
14:25
|
+
|
|||
17
perec1982
18.04.12
✎
07:27
|
Процедура Сформировать(Кнопка)
НастрокаПоУмолчанию = КомпоновщикНастроек.ПолучитьНастройки(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ..., "; ТЗ = Запрос.Выполнить().Выгрузить(); Для Каждого СтрокаТЗ Из ТЗ Цикл СтрокаТЗ.сотрудник = "Сотрудник1, Сотрудник2, ..."; КонецЦикла; ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("тз",тз); СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастрокаПоУмолчанию); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных); ТабДок = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; //КомпановкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ЭлементыФормы.Результат.Очистить(); ЭлементыФормы.Результат.Вывести(ТабДок); КонецПроцедуры |
|||
18
perec1982
18.04.12
✎
07:30
|
Все как в книге
|
|||
19
ТеньПустоты
18.04.12
✎
17:41
|
Что такое ТЗ? А вы уверены что будет работать?
|
|||
20
ТеньПустоты
18.04.12
✎
17:43
|
Да не правильно.
Для Каждого СтрокаТЗ Из ТЗ Цикл СтрокаТЗ.сотрудник = "Сотрудник1, Сотрудник2, ..."; КонецЦикла; Мы что же, все фамилии будем вручную присывать что ли? И как в цикле будет определено сколько, и какисе сотрудники должны быть запилины в строку? |
|||
21
Undefined
18.04.12
✎
17:51
|
количество сотрудников в одном документе известно заранее? или хотябы максимальное количество?
|
|||
22
ТеньПустоты
18.04.12
✎
18:03
|
Смотри какая фишка. Есть Документ Заявка клиента. Там есть дата и внизу таблица
1 васяПупкин сделал тототото 2 пупкаВасин сделал вот то и это 3 петявасечкин сделал всё Вот в запросе у меня вот так вот дата1 васяпупкин дата1 пупкаВасин дата1 петявасечкин А я спрашиваю у вас что мне сделат ьчтобы было во так: дата1 васяпупкин, пупкаВасин,ПетяВасечкин Только смотри я писал код прямо в скд. 8.2 торговля |
|||
23
ТеньПустоты
18.04.12
✎
18:26
|
Господа и дамы, очень ннада сделать
|
|||
24
GoldenCalf
18.04.12
✎
18:44
|
Для начала, что за документ?
|
|||
25
ТеньПустоты
18.04.12
✎
19:01
|
Заявка Клиента
|
|||
26
DrHiHi
18.04.12
✎
19:04
|
Никого не слушай %))
.... как вариант можно в СКД создать таблицу типа дата сотрудник номерпп Дата1 сотрудник1 1 Дата1 сотрудник2 2 Дата1 сотрудник3 3 дата2 сотрудник1 1 дата2 сотрудник3 2 дата2 сотрудник6 3 дата3 сотрудник8 1 а потом в сделать группировку колонок по колонке "номерпп" и у тебя в итоге получиться таблица дата 1 2 3 дата1 сотрудник1 сотрудник2 сотрудник3 дата2 сотрудник1 сотрудник3 сотрудник6 дата3 сотрудник8 если тебе такая таблица нужна ;)) |
|||
27
ТеньПустоты
18.04.12
✎
19:08
|
дата 1 2 3
дата1 сотрудник1 сотрудник2 сотрудник3 дата2 сотрудник1 сотрудник3 сотрудник6 дата3 сотрудник8 сотрудник1 сотрудник2 сотрудник3 должны быть в одной ячейке. И главное! сотрудники у меня в вложенной таблице! поэтому группировки быт ьне может |
|||
28
DrHiHi
18.04.12
✎
19:11
|
(27) если захочешь, то получиться...
если не получиться, то напишешь в аську... помогу |
|||
29
perec1982
19.04.12
✎
02:21
|
(20) Все правильно. То что ты хочешь только так и реализуется. Язык запросов пока не может реализовать такие поля. Дам тебе всю процедуру.
Процедура Сформировать(Кнопка) //Получаем пользовательские настройки отчета НастрокаПоУмолчанию = КомпоновщикНастроек.ПолучитьНастройки(); //Запрос основной таблицы (с датами и ссылкой на документы) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаявкаКлиента.Дата КАК Дата, | """" КАК Сотрудники, | ЗаявкаКлиента.Ссылка КАК Документ |ИЗ | Документы.ЗаявкаКлиента КАК ЗаявкаКлиента |ГДЕ | ЗаявкаКлиента.Дата >= &ДатаНач и ЗаявкаКлиента.Дата <= &ДатаКон |"; Запрос.УстановитьПараметр("ДатаНач", НачПериода); Запрос.УстановитьПараметр("ДатаКон", КонПериода); //Таблица значений (результат запроса) ТЗ = Запрос.Выполнить().Выгрузить(); //Запрос по сотрудникам из документа ЗапросСотрудник = Новый Запрос; ЗапросСотрудник.Текст = "ВЫБРАТЬ | Сотрудники.Сотрудник КАК Сотрудник |ИЗ | Документы.ЗаявкаКлиента.Сотрудники КАК Сотрудники |ГДЕ | Документы.ЗаявкаКлиента.Ссылка = &Документ |"; Для Каждого СтрокаТЗ Из ТЗ Цикл //Устанавливаем параметр документ и получаем выборку сотрудников из документа ЗапросСотрудник.УстановитьПараметр("Документ", СтрокаТЗ.Документ); Выборка = ЗапросМаршрут.Выполнить().Выбрать(); //В цикле формируем строку сотрудника СотрудникСтрока = ""; Пока Выборка.Следующий() цикл СотрудникСтрока = СотрудникСтрока + Выборка.Сотрудник.Наименование + "; "; КонецЦикла; //Присваиваем строке основной таблицы строковое значение сотрудника СтрокаТЗ.Сотрудники = СотрудникСтрока; КонецЦикла; //Здесь тупо копи пасти ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("тз",тз); СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастрокаПоУмолчанию); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных); ТабДок = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; //КомпановкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ЭлементыФормы.Результат.Очистить(); ЭлементыФормы.Результат.Вывести(ТабДок); КонецПроцедуры Мог ошибиться с запросами т.к. не видел конфу. Работает отменно. Но не очень быстро т.к. в цикле выполняем запрос. Но из этой ж... выхода нет. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |