вопрос по ТЗ

1. pisarevEV 8 17.04.15 15:32 Сейчас в теме
друзья подскажите: как динамически (в цикле) построить структуру таблицы значений?
Т.е. есть некий цикл, внутри которого определяются идентификаторы колонок (например "Колонка1", "Колонка2" и т.д.)... и вот на выходе мне нужна ТЗ с этими колонками...
Не могу сообразить как это сделать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. aleksdbs 17.04.15 16:13 Сейчас в теме
тут все просто :)
взято тут

ВставитьКолонку

Вставить новую колонку в таблицу значений в указанную позицию.
Синтаксис:
ВставитьКолонку(<Идентификатор>, <НомерКолонки>, <Тип>, <Длина>, <Точность>, <3аголовок>, <Ширина>, <Формат>, <Положение>)

Параметры:
<Идентификатор> Необязательный параметр. Идентификатор колонки, если не указан обращение к колонке возможно только по номеру.
<НомерКолонки> Необязательный параметр. Числовое выражение, содержащее позицию, в которую вставляется новая колонка.
<Тип>Необязательный параметр. Строка или вид суб кон-то, задающий тип колонки. Если не указан, то можно хранить любой тип.
<Длина> Необязательный параметр. Длина для числовой или строковой колонки.
<Точность>Необязательный параметр. Точность (длина дробной части) для числовой колонки.
<Заголовок>Необязательный параметр. Строковое выражение, содержащее заголовок колонки в элементе диалога типа «ТаблицаЗначений».
<Ширина>Необязательный параметр. Числовое выражение, содержащее ширину колонки (в символах) для представления колонки в элементе диалога типа «ТаблицаЗначений».
<Формат>Необязательный параметр. Строковое выражение, содержащее форматную строку, которая будет использована при визуальном отображении значений данной колонки.
<Положение>Необязательный параметр. Определяет вариант выравнивания при визуальном отображении значений данной колонки. Число: 1 — слева; 2 — справа.
Возвращаемое значение: номер новой колонки.

Описание:
Метод ВставитьКолонку вставляет новую колонку в таблицу значений в указанную позицию.

Пример:
Табл.ВставитьКолонку("Код", 1, "Число", 6, 0, "Код", 6);
4. pisarevEV 8 17.04.15 16:18 Сейчас в теме
(2) aleksdbs, это не будет работать, идентификатор колонки есть переменная в моем случае
3. Ёпрст 1063 17.04.15 16:17 Сейчас в теме
(0) А в чем вообще трудность то ?
5. pisarevEV 8 17.04.15 16:18 Сейчас в теме
(3) Ёпрст, в том что я туплю(
6. Ёпрст 1063 17.04.15 16:21 Сейчас в теме
(5)
ТЗ=СоздатьОбъект("ТаблицаЗначений");

Для к = 1 по 10000000 Цикл
  ТЗ.НоваяКолонка("Вася"+к);
КонецЦикла;

или так:

Для к = 1 по 10000000 Цикл
  ТЗ.НоваяКолонка(); //оно само идентификатор задаст
КонецЦикла;
Показать
7. pisarevEV 8 17.04.15 16:25 Сейчас в теме
(6) Ёпрст, нее... так и я могу)) Идентификатор колонки нельзя так определить, это должна быть переменная, вычиляемая в цикле...
8. Ёпрст 1063 17.04.15 16:52 Сейчас в теме
(7) Че ?
Есть какая то монопенисуальная разница, как будет задаваться идентификатор колонки ?
А создание колонок
Вася1,Вася2....Вася1000000 - это не цикл ?
11. Jill 17 17.04.15 17:21 Сейчас в теме
(7) pisarevEV,
Идентификатор колонки нельзя так определить
.
Чёт Вы, правда, странное заявили. Вам бы поподробнее тему раскрыть.

12. Ёпрст 1063 17.04.15 17:21 Сейчас в теме
14. pisarevEV 8 18.04.15 18:23 Сейчас в теме
(12) Ёпрст, такой примерно код не работает:
Спр=СоздатьОбъект("Спраовнчик.Сотрудники"):
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
   Имя=СокрЛП(Спр.Фамилия);
   ТЗ.НоваяКолонка(Имя);
КонецЦикла;


прошу прощения что сразу его не привел(
15. spacecraft 18.04.15 20:18 Сейчас в теме
(14) pisarevEV, не работает, т.к. фамилии не уникальны.
16. dyuha 49 18.04.15 20:32 Сейчас в теме
(15) spacecraft,
ВставитьКолонку(Спр.Код,,,,,Спр.Фамилия,,,);
17. MaxDavid 127 18.04.15 20:34 Сейчас в теме
(14) pisarevEV, зато должен сработать такой код:
Спр=СоздатьОбъект("Справочник.Сотрудники"):
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
   Если Спр.ЭтоГруппа = 0 Тогда
      Имя = "_" + Спр.Код + "_" + СокрЛП(Спр.Фамилия);
      ТЗ.НоваяКолонка(Имя);
   КонецЕсли;
КонецЦикла;
22. pisarevEV 8 20.04.15 06:12 Сейчас в теме
(17) MaxDavid, да, так работает) + (15) видимо в этом причина была, хотя по факту наименования в справочнике были уникальны
спасибо за помощь друзья!
18. _Z1 38 19.04.15 00:55 Сейчас в теме
(14) идентефикатор колонки может содержать буквы цифры и _
В твоем коде это не та

Также можно с одним именем создать несколько колонок. Смысла в этом конечно нет
Но создать можно

Например

Табл.новаяколонка(""вася");
Табл.новаяколонка("вася");
19. Gkmy 28 19.04.15 01:58 Сейчас в теме
(14) В демо конфигурации «Бухгалтерский учет, редакция 4.5»



Код
Процедура Сформировать()
   т=СоздатьОбъект("ТаблицаЗначений");
   с=СоздатьОбъект("Справочник.Сотрудники");
   с.ВыбратьЭлементы();
   Пока с.ПолучитьЭлемент()=1 Цикл
      // смотри прикреплённый файл
   КонецЦикла;
   т.ВыбратьСтроку();
КонецПроцедуры
Показать полностью


выводит




Прикрепленные файлы
1504190136.ert (50 КБ) [ Скачать ]
20. Apelsinka 7 19.04.15 08:15 Сейчас в теме
(19) Gkmy, А цель то какая? И зачем в конце "ВыбратьСтроку" ? Дальше то что с ней делать? В список выводить...
21. _Z1 38 19.04.15 09:05 Сейчас в теме
(19) просто автор не заменил пробел на подчеркивание
Скорее всего из-за этого и не получалось
23. pisarevEV 8 20.04.15 06:15 Сейчас в теме
(19) Gkmy, помог ответ (15), спасибо
24. Rokky78 40 20.04.15 09:00 Сейчас в теме
(23) Также в свое время вышел из положения как в (15), когда надо было сохранить заголовок колонки "как есть" (с точками, пробелами и прочей....). Хочу только отметить, что это не идентификатор, а "<Заголовок>Необязательный параметр. Строковое выражение, содержащее заголовок колонки в элементе диалога типа «ТаблицаЗначений»" То есть к колонке обратиться по нему нельзя. Но мне это было и не надо. У меня вообще не было идентификатора (обращался при необходимости по номеру колонки)

P.S. написал бы об этом еще в пятницу, но сбило с толку слово "идентификаторы" у ТС.
25. pisarevEV 8 20.04.15 09:45 Сейчас в теме
(24) Rokky78, не много не так, в моем случае заголовки не важны, важны именно идентификаторы колонок ТЗ, и в (15) точный диагноз. Я так понял, что т.к. наименования элементов справочника формально могут совпадать (по факту они у меня уникальны и никаких точек пробелов и прочего в них нет) то платформа и выдает ошибку, т.к. есть вероятность дублей по наименованию
26. MaxDavid 127 20.04.15 09:58 Сейчас в теме
(25) pisarevEV, если наименования уникальны - платформа ругаться не будет. Ругань возникает лишь в том случае, когда есть попытка завести новую колонку с уже существующим идентификатором. Вообще, если платформа ругается - значит, или есть дубли, или пробелы в середине наименования, или неотображаемые символы в наименовании. Раз код в (17) работает, значит, дело не в пробелах и не в символах. Значит, дубли 100%.
29. pisarevEV 8 20.04.15 13:20 Сейчас в теме
(26) MaxDavid, точно, дефис есть в одном элементе... не по глазам было))))
пойду очки покупать)))
9. Ёпрст 1063 17.04.15 16:53 Сейчас в теме
Ну, создавай так

Для к = 1 по 10000000 Цикл
  ТЗ.НоваяКолонка(); //оно само идентификатор задаст
КонецЦикла;

или так


Для к = 1 по 10000000 Цикл
  ТЗ.НоваяКолонка("_"+к); //оно само идентификатор задаст
КонецЦикла;
Показать


Так то вообще не понял, в чём у тебя затык.
10. Ёпрст 1063 17.04.15 16:55 Сейчас в теме
Можешь даже так создать

ТЗ = ЗначениеИЗСтроки(блаблаба)
или
ТЗ = ЗначениеИЗСтрокиВнутр(блаблабаВнутр)

т.е просто из строки (кстати, весьма быстрый метод, если нужно шаблонную тз создавать)
13. pashamix 17.04.15 19:02 Сейчас в теме
Да вообще не вопрос. Вот пример на 8. ну суть такая же.
Читаем таблицу SQL и создаем копию в 1С. Состав колонок заранее не известен.

Для сч=1 по СтрокаТаблицы.Fields.Count Цикл
	ТЗКлиентов.Колонки.Добавить(СтрокаТаблицы.Fields(сч-1).Name);
КонецЦикла;
27. Serginio 938 20.04.15 11:33 Сейчас в теме
Функция	глКлонироватьСтруктуруТЗ(Тз)  экспорт
		перем Тип,Длина,Точность;
		Резулт=СоздатьОбъект("ТаблицаЗначений");
		Для сч=1 по Тз.КоличествоКолонок() Цикл
		     поле=Тз.ПолучитьПараметрыКолонки(сч,тип,Длина,Точность);
			 Резулт.НоваяКолонка(поле,тип,длина,Точность);
		КонецЦикла;
	 возврат резулт
КонецФункции
Показать
28. Serginio 938 20.04.15 11:51 Сейчас в теме
Если нужно по справочнику или документу то Метаданные в руки и
Метаданные.Справочник(х).Реквизит(ж).Идентификатор
Метаданные.Справочник(ВидСпр).Реквизит(ж).Идентификатор

Метаданные.Справочник(х).Реквизит(ж).Тип
Метаданные.Справочник(ВидСпр).Реквизит(ж).Тип

Метаданные.Справочник(х).Реквизит(ж).Длина
Метаданные.Справочник(ВидСпр).Реквизит(ж).Длина

Метаданные.Справочник(х).Реквизит(ж).Точность
Метаданные.Справочник(ВидСпр).Реквизит(ж).Точность


Метаданные.Справочник(х).ТипКода
Метаданные.Справочник(х).ДлинаКода 
Показать

итд
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот