|
Таблица значений программное добавление колонок | ☑ | ||
---|---|---|---|---|
0
vlasabo
08.02.17
✎
11:57
|
Добрый день всем еще раз.
Пытаюсь сделать ТЗ и программно её заполнить. Для этого пытаюсь добавить колонки из цикла. табличка = НОВЫЙ ТаблицаЗначений; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | РасписаниеРегистр.ФИОСотрудника.Наименование КАК сотр |ИЗ | РегистрСведений.РасписаниеРегистр КАК РасписаниеРегистр |ГДЕ | РасписаниеРегистр.Период = &Период"; Запрос.Параметры.Вставить("Период",объект.Дата); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ТипЗнч(ВыборкаДетальныеЗаписи.сотр)); Табличка.Колонки.Добавить(ВыборкаДетальныеЗаписи.Сотр); КонецЦикла; Ошибка: {Обработка.Сетка.Форма.Форма.Форма(68)}: Ошибка при вызове метода контекста (Добавить) Табличка.Колонки.Добавить(ВыборкаДетальныеЗаписи.Сотр); по причине: Неверное имя колонки Неверное имя колонки Почему? Пробовал еще вот так: Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяСтрока = Табличка.Добавить(); НоваяСтрока[ВыборкаДетальныеЗаписи.сотр] = (" "); КонецЦикла; тоже ошибка, "Поле объекта не обнаружено (тут ФИО первого сотруднкиа из выборки)" Ткните носом, пожалуйста, где почитать о добавлении изменяющегося количества колонок в ТЗ. (на всякий пожарный - стоит задача вывести пользователю на экран таблчику, где в столбцах сотрудники, а строки представляют собой расписание - кому и какую услугу оказывает сотрудник.) |
|||
1
lxndr
08.02.17
✎
11:59
|
Имя колонки присваивается по имени переменной. У иванова пробелы..
|
|||
2
lxndr
08.02.17
✎
11:59
|
(1) * по правилам именования переменных
|
|||
3
KishMish
08.02.17
✎
12:00
|
ВыборкаДетальныеЗаписи.Сотр - имеет пробелы или другие недопустимые символы
|
|||
4
vicof
08.02.17
✎
12:02
|
(0) Бро, выводи в отчет, не страдай херней
|
|||
5
vlasabo
08.02.17
✎
12:06
|
С пробелами ясно, как-то можно побороть?) Теперь хоть ясно почему ошибка
(4) я б с радостью, но это обработка, предполагающая дальнейшее изменение данных. |
|||
6
vlasabo
08.02.17
✎
12:23
|
(5) а вот и не угадал я(
Не только в пробелах дело. Для проверки решил взять первые 4 буквы фамилии, опять та же ошибка: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | РасписаниеРегистр.ФИОСотрудника.Наименование как сотр |ИЗ | РегистрСведений.РасписаниеРегистр КАК РасписаниеРегистр |ГДЕ | РасписаниеРегистр.Период = &Период"; Запрос.Параметры.Вставить("Период",объект.Дата); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяСтрока = Табличка.Добавить(); ИмяКолонки=Лев(ВыборкаДетальныеЗаписи.сотр,4); НоваяСтрока[ИмяКолонки] = (" "); КонецЦикла; {Обработка.Сетка.Форма.Форма.Форма(70)}: Поле объекта не обнаружено (Айда) НоваяСтрока[ИмяКолонки] = (" "); Что является первыми 4 буквами первого сотрудника из выборки |
|||
7
Вафель
08.02.17
✎
12:27
|
бери тогда "К" + СокрЛП(Сотр.Код)
|
|||
8
vlasabo
08.02.17
✎
12:28
|
(7) неожиданно сработало вот так:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ИмяКолонки=Лев(ВыборкаДетальныеЗаписи.сотр,4); табличка.Колонки.Добавить(ИмяКолонки); КонецЦикла; Вариант выше потом буду разбираться почему не сработал, пока надо дело доделывать. Огромное спасибо каждому за помощь, нигде не увидел при гуглинге о запрете пробелов и спецсимволов в названии колонки |
|||
9
lera01
08.02.17
✎
12:30
|
(6) А где в коллекцию колонок добавляешь?
|
|||
10
lera01
08.02.17
✎
12:32
|
(8) не в пробелах дело. из (0) - Выборка.Сотр - какой тип? Ведь явно не строка.
|
|||
11
Вафель
08.02.17
✎
12:33
|
(10) Там же весь код есть.
|
|||
12
vlasabo
08.02.17
✎
12:37
|
(10) строка. Там же справочник.сотрудники.наименование
|
|||
13
aka AMIGO
08.02.17
✎
12:37
|
У меня работает вот это:
ВремТаб = Новый ТаблицаЗначений; КС = Новый КвалификаторыСтроки(20); Массив.Добавить(Тип("Строка")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); Кол = ЭтаФорма.Колонка1; //на форме валяется реквизит Если НЕ ПустаяСтрока(Кол) Тогда ВремТаб.Колонки.Добавить(ЭтаФорма.Колонка1,,КС); ... ЗЫ. извините, если что © :) |
|||
14
aka AMIGO
08.02.17
✎
12:38
|
+13 пропустил..
Массив = Новый Массив; |
|||
15
Вафель
08.02.17
✎
12:39
|
Можно просто
ОписаниеТиповС = Новый ОписаниеТипов("Строка", , КС); |
|||
16
aka AMIGO
08.02.17
✎
12:40
|
(15) Ммм.. спасибо. Я тоже учусь :)
|
|||
17
aka AMIGO
08.02.17
✎
12:52
|
Пара операторов - лишние.. У меня в коде.
Работает так: ВремТаб = Новый ТаблицаЗначений; КС = Новый КвалификаторыСтроки(20); Кол = ЭтаФорма.Колонка1; Если НЕ ПустаяСтрока(Кол) Тогда ВремТаб.Колонки.Добавить(ЭтаФорма.Колонка1,,КС); |
|||
18
Serg_1960
08.02.17
✎
13:22
|
Табличка.Очистить();
Табличка = Запрос.Выполнить().Выгрузить(); ЭлементыФормы.Табличка.СоздатьКолонки(); |
|||
19
Serg_1960
08.02.17
✎
13:33
|
ЭлементыФормы.Табличка[0].ТекстШапки...
|
|||
20
vlasabo
08.02.17
✎
13:45
|
(18) если б я мог просто выгрузить запрос в табличку я бы так и сделал, но увы, каким образом я "переверну" запрос так, что у меня значения запроса станут колонками?)
|
|||
21
Serg_1960
08.02.17
✎
13:58
|
(20) В запросе, через "КАК ..." присвоить нужные значения, аналогичные колонкам таблички (если они уже есть) ?
|
|||
22
Serg_1960
08.02.17
✎
14:00
|
Стоп, отставить. Дай подумать.
|
|||
23
Serg_1960
08.02.17
✎
14:24
|
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Табличка.Колонки.Добавить("Колонка"+СокрЛ(Табличка.Колонки.Количество()+1),,ВыборкаДетальныеЗаписи.Сотр); ... |
|||
24
Serg_1960
08.02.17
✎
14:29
|
Не, лучше так:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Имя = "Колонка" + СокрЛ(Табличка.Колонки.Количество()+1); Табличка.Колонки.Добавить(Имя,,ВыборкаДетальныеЗаписи.Сотр); Строка = Табличка.Добавить(); Строка[Имя] = ... |
|||
25
vlasabo
08.02.17
✎
14:31
|
(23) здесь просто колонка1, колонка2 и т.д.
(24) здесь с именами колонок то же самое, только еще строки сразу добавляем |
|||
26
aka AMIGO
08.02.17
✎
14:33
|
(25) Тебе зачем эта ТЗ нужна? перенести в ТЧ документа?
Если - да, то назови колонки сам, заполнишь обходом запроса, и загрузишь в ТЧ. |
|||
27
vlasabo
08.02.17
✎
14:33
|
Упс, пардон муа, тут я был не прав - у меня в выводе на форму этой ТЗ не было передачи заголовка. Передал - всё работает, спасибо
|
|||
28
vlasabo
08.02.17
✎
14:34
|
(26) нет, я в (1) писал цели и задачи.
Это обработка расписания, надо вывести сетку сотрудников и кто чем занят. В дальнейшем будет обработка выбора значения и т.д. |
|||
29
Serg_1960
08.02.17
✎
14:35
|
(26) Автор скажет что ему нужно после сотого поста. Всё как обычно :)
|
|||
30
Serg_1960
08.02.17
✎
14:37
|
(27) Если ТЗ нужна на форму, то см.(19). "Заголовок" - это ТЗ, а на форме это - "ТекстШапки" :)
|
|||
31
DailyLookingOnA Sunse
08.02.17
✎
14:38
|
Имена колонок нужно создавать просто как Колонка01, Колонка02 и т.д.
А наименования сотрудников хранить в массиве размерностью количеством колонок. |
|||
32
DailyLookingOnA Sunse
08.02.17
✎
14:39
|
А, ну еще в заголовках колонок можно заполнить наименования сотрудников.
|
|||
33
vlasabo
08.02.17
✎
16:43
|
(29) всё уже написано в (1) же.
Ребят, спасибо всем, главный затык решен, код сюда скинул |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |