Имя: Пароль:
1C
1С v8
Программно сгенерировать имя переменной
0 Web00001
 
01.09.12
07:33
Делаю несколько табличных полей на форме, этому табличному полю надо указать путь к данным, по понятным причинам  не могу указать: ТабличноеПоле.Данные = "ТабличноеПоле"; потому, что сколько их будет (табличных полей) заранее неизвестно, то есть надо как то генерировать объекты, не задавая их имена явно, попробовал так:

ДвиженияПоСкладам = Новый Структура;
ДвиженияПоСкладам.Вставить(ТекущийСклад, Новый ТаблицаЗначений);
       ДвиженияПоСкладам[ТекущийСклад].Колонки.Добавить("Номенклатура");
Для Каждого СкладВТЧ ИЗ СписокСкладов Цикл
   ДвиженияПоСкладам[ТекущийСклад].Колонки.Добавить("Склад"+СкладВТЧ.НомерСклада,НовоеЧисло,""+Склад.Наименование,10);
КонецЦикла;
но при указании источника данных:
ТабличноеПоле.Данные = ДвиженияПоСкладам[ТекущийСклад];
получаю ошибку: Неправильный путь к данным
что еще можно придумать?
1 Wobland
 
01.09.12
07:35
задавать данные строкой можно придумать
2 1C-band
 
01.09.12
07:38
"Склад"+СкладВТЧ.НомерСклада,НовоеЧисло,""+Склад.Наименование,10
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ в отладчике что даёт?
3 1C-band
 
01.09.12
07:40
НовоеЧисло,""+Склад.Наименование,10
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ вообще убрать бы.
4 Web00001
 
01.09.12
07:46
(1) Чуть чуть поподробнее можно?
(2)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ что это?
(2)В отладчике дает все прекрасно, ТЗ создается и заполняется, вопрос не про это
5 Wobland
 
01.09.12
07:47
(4) подробнее в СП. кстати, не купишь?
6 1C-band
 
01.09.12
07:49
(5) Ой, блин, не проснулся ещё. :)) У тебя ж на форме дело происходит...
7 Web00001
 
01.09.12
07:51
(5)там уже смотрел,  ТабличноеПоле.Данные = "ТабличноеПоле" делать не могу почему говорил уже в (0), хотелось бы узнать, что ты имеешь ввиду под фразой "задавать данные строкой", если возможно, если нет, то можно не умничать а просто промолчать
8 Wobland
 
01.09.12
07:53
(7) данные - это строка
9 Vladal
 
01.09.12
07:55
наглядный профиль... нет только "атстатыщ". Лови:

//_________________________________________________________________________________
//
// © Владимир - начало
// Название НаименованиеКолонки
//
// Назначение:
//        Пребразует строку наименования в строку идентификатора колонки ТЗ
// Аргументы:
//        Наименование товара, которое будет преобразовано в наименование колонки ТЗ в соответствии с правилами именования переменных.
//        Символ - символ, на который будут заменятся символы, не соответствующие правилам именования переменных.
Функция глНаименованиеКолонки(Элемент, Символ="_") Экспорт
   Перем Результат;
   Результат = "_"+СтрЗаменить(Элемент," ",Символ);
   Результат = СтрЗаменить(Результат,"/",Символ);
   Результат = СтрЗаменить(Результат,"\",Символ);
   Результат = СтрЗаменить(Результат,".",Символ);
   Результат = СтрЗаменить(Результат,",",Символ);
   Результат = СтрЗаменить(Результат,"+",Символ);
   Результат = СтрЗаменить(Результат,"-",Символ);
   Результат = СтрЗаменить(Результат,"!",Символ);
   Результат = СтрЗаменить(Результат,"@",Символ);
   Результат = СтрЗаменить(Результат,"#",Символ);
   Результат = СтрЗаменить(Результат,"$",Символ);
   Результат = СтрЗаменить(Результат,"%",Символ);
   Результат = СтрЗаменить(Результат,"^",Символ);
   Результат = СтрЗаменить(Результат,"&",Символ);
   Результат = СтрЗаменить(Результат,"*",Символ);
   Результат = СтрЗаменить(Результат,"(",Символ);
   Результат = СтрЗаменить(Результат,")",Символ);
   Результат = СтрЗаменить(Результат,"№",Символ);
   Результат = СтрЗаменить(Результат,";",Символ);
   Результат = СтрЗаменить(Результат,":",Символ);
   Результат = СтрЗаменить(Результат,"?",Символ);
   Возврат Результат;
КонецФункции //НаименованиеКолонки
// © Владимир - конец
//_________________________________________________________________________________
//
10 Vladal
 
01.09.12
07:58
(5) Wobland, СП на эксклюзивных правах продает только ДенисЧ
Хотя, он нигде не запрещал продавать копии )))
11 Wobland
 
01.09.12
07:59
(10) он ещё спит. кстати, ты тоже
12 Vladal
 
01.09.12
08:01
(0) Используй так:

ДвиженияПоСкладам[ТекущийСклад].Колонки.Добавить("Склад"+глНаименованиеКолонки(СкладВТЧ.НомерСклада),НовоеЧисло,глНаименованиеКолонки(Склад.Наименование),10);
13 Web00001
 
01.09.12
08:02
Если с Wobland еще можно попробовать догадаться, что он намекает, наверно на что то вроде "Выполнить"(хотя хрен его знает на что он намекает), то с (9) извините совсем непонятно о чем это и зачем.
14 Мимохожий Однако
 
01.09.12
08:02
Завалялся в загашниках фрагмент кода:
.
Для каждого ВыбЗначение из РеквизитДляТаблиц Цикл
       //ДляНадписи = ""+ВыбЗначение.Значение;
       Имя = ""+ВыбЗначение.Значение;//ДляНадписи;
       Представление = Имя;
       Страницы = ЭлементыФормы.ПанельОтчета.Страницы;
       Если Не Страницы.Найти(Имя) = Неопределено Тогда
           Сообщить("Страница "+Имя+" уже есть на панели");
           Возврат;
       КонецЕсли;
       СтраницаПанели = Страницы.Добавить(Имя, Представление);
       ЭлементыФормы.ПанельОтчета.ТекущаяСтраница = СтраницаПанели;
       НазваниеТаблПоля =  "ТабличноеПоле"+Имя;
       //Добавить(<Тип>, <Имя>, <Видимость>, <Поместить на>)
       НовоеТаблПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),НазваниеТаблПоля,Истина,ЭлементыФормы.ПанельОтчета);

...
15 Web00001
 
01.09.12
08:02
(12) у меня нет там недопустимых символов
16 Web00001
 
01.09.12
08:04
(14)этот код есть и работает
17 Vladal
 
01.09.12
08:04
Web00001 z ntve xbnf. @cutythbhjdfnm bvz gthtvtyyjq@? f e nt,z jib,rb? ytdhfpevbntkmyj yfgbcfyj/ Djn b gjkexfq/
18 Wobland
 
01.09.12
08:04
(13) берём ТабличноеПоле.Данные = ДвиженияПоСкладам[ТекущийСклад]. ДвиженияПоСкладам[ТекущийСклад] какого типа?
19 Web00001
 
01.09.12
08:08
(17) Извините буду аккуратней в след раз, но ты как бы тоже, (0) то читай прежде чем постить )
20 Web00001
 
01.09.12
08:13
(18)да я понял, там должна быть строка и ничего другого а я туда ТЗ леплю, а делать теперь что? Я так понял что нужны таблицы и генерировать им имена, которые потом можно будет указывать строкой. Только вот как сделать ТЗ со сгенерированныи именем? И как в случае чего к ней обращаться?
21 Vladal
 
01.09.12
08:15
(19) ок
22 Wobland
 
01.09.12
08:17
(20) тупо пронумеровать? Выполнить("ТЗ"+н+"=Новый ТЗ")?
23 Vladal
 
01.09.12
08:17
Я в какой-то конфе видел отчет ДвижениеТовараПоРегистрам, который каждый регистр выводил на отдельной вкладке в виде ТЗ. А типовой выводит в табличный документ
24 Мимохожий Однако
 
01.09.12
08:20
(23)Например, ЗУП или КА в документах по вводу остатков при переносах из 77
25 Web00001
 
01.09.12
08:21
(22)Да я уже так и подумал, когда думал про выполнить, а потом просто с помощью выполнить получать пронумерованную таблицу во временную и делать то что надо
26 Мимохожий Однако
 
01.09.12
08:23
ИМХО, удобнее один раз разложить по отдельным закладкам Табличное поле и работать по отдельности.
27 Vladal
 
01.09.12
08:23
(25) Проясни для меня, пожалуйста, ты эти табличный части куда девать будешь? Т.е. где размещать?
28 Web00001
 
01.09.12
08:35
(27)Есть выборка данных по складам, продажи, остатки, заявки, отгружено, получено и еще некоторые показатели, все это в разрезе складов, я делаю программно на каждый склад закладочку, туда программно ложу табличное поле, и заполняю его данными из общей таблички но только по конкретному складу, собственно все
29 Vladal
 
01.09.12
08:36
ага, понял!
Вопрос в "как создать демонически вкладочки с табличками"?
30 Wobland
 
01.09.12
08:38
(28) я так консоль запросов делал для дбф
31 Vladal
 
01.09.12
08:39
каждый склад в отдельную ТЧ... Дошло.
Тебе надо как-то обозвать таблицу, не зная заранее количество и наименования складов"
32 Web00001
 
01.09.12
08:39
(31) точно
33 Wobland
 
01.09.12
08:42
+(30) а обработка потерялась. у меня каждая вкладка носила имя файла
34 Web00001
 
01.09.12
08:46
Выполнить("Таблица1 = Новый ТаблицаЗначений");
Не делает почему то ничего, в чем может быть причина?
35 Wobland
 
01.09.12
08:50
(34) перем сделай
36 Web00001
 
01.09.12
08:53
(35) Как сделать перем к "Таблица"+НомерСклада?
37 Vladal
 
01.09.12
09:01
Вот... Первая ГруппировкаЗапроса по складам?

что приходит на ум: создать ТЗ с колонками "Склад", тип склад и "ТаблицаСклада", тип ТЗ. Заполнить их и обращаться к нудному складу по перевой колонке, а данные - ТЗ из второй колонки.
38 Web00001
 
01.09.12
09:07
Нет вопроса как хранить данные, если у меня не будет нескольких ТЧ, был вопрос как сделать объект не зная заранее его имени, а как хранить данные... так это вопрос номер два
39 Web00001
 
01.09.12
09:13
(38) Как я понимаю "такова селяви" и сей фокус, просто невозможен, буду наверно тогда грузить в одну ТЧ разные данные в зависимости от того какая закладка активная
40 Мимохожий Однако
 
01.09.12
09:15
Задай любое удобное имя, а потом переименуй.
41 Web00001
 
01.09.12
09:20
Не имеет смысла, ибо тогда во всех закладках будут одни и те же данные, только если заговонокодить типа:
перем Таблица1;
перем Таблица2;
...
перем Таблица50;
Тогда все пойдет в заданном ключе
42 Мимохожий Однако
 
01.09.12
09:22
Имя таблицы может быть одно и то же, а страницы разные. Как вариант
43 Vladal
 
01.09.12
09:23
(39) Когда-то на семерке был копрокод, имитирующий вторую таблицу документа, состав продукции.
Всё хранилось в одной ТЗ, а потом показывались связанные с текущей строкой данные.
44 Web00001
 
01.09.12
09:26
(42) я это и имел ввиду в (39)
(43) я так тоже делал в 7ке, тут хотелось бы уйти от перезаполнения таблиц на каждый чих, потому что в них будут вводиться данные
45 Мимохожий Однако
 
01.09.12
09:35
(44)Данные откуда берешь для табличных полей? Может быть, обращаться напрямую к источникам для правки?
46 Wobland
 
01.09.12
09:38
а, может не заводить переменные, а общаться непосредственно с табличными полями?
47 Web00001
 
01.09.12
09:43
(44) Из нескольких таблиц значений
(46) Может, надо попробовать, только сложно будет обрабатывать результаты ввода данных с таблицей то как то удобнее
48 Web00001
 
01.09.12
09:47
(46) Нет возможности указать тип колонки, ширину, Свернуть, найти, найтиСтроки, выгрузить
49 Web00001
 
01.09.12
10:20
кхм все гораздо проще, не надо лепить таблиц, выполнить и иже с ним можно сразу сказать: ТабличноеПоле.Значение = НужнаяТаблицаЗначений;
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.