Имя: Пароль:
1C
1C 7.7
v7: Добавление колонки в ТЗ
, ,
0 Gera1t
 
07.06.22
23:33
Здравствуйте!
Можно ли как то в 1С 7.7 добавить в ТЗ новую колонку и сражу записать в нее значение.
Например:
Есть ТЗ.
Делаем цикл по справочнику номенклатура

    НаимНоменклатура = Выборка.Номенклатура.Наименование;
    ТЗ.НоваяКолонка(НаимНоменклатура,,,,,4);
    ТЗ.НаимНоменклатура = Остаток;

Пишет ошибка НаимНоменклатура  не найдена.
Как обратиться к добавленной колонке?
1 vicof
 
07.06.22
23:37
Говорят, у таблицы значений есть строки.
2 Gera1t
 
07.06.22
23:39
(1) Само собой до этого кода есть
ТЗ.НоваяСтрока();
3 Gera1t
 
07.06.22
23:39
ну т.е. сначала новая колонка, а потом новая строка. пример кода для наглядности
4 vicof
 
07.06.22
23:43
Ну и НаимНоменклатура в кавычки надо взять.
5 Gera1t
 
07.06.22
23:44
Если я напишу ТЗ."НаимНоменклатура" = то будет ошибка
6 vicof
 
07.06.22
23:46
ТЗ.НоваяКолонка("НаимНоменклатура",,,,,4);
7 Builder
 
07.06.22
23:47
(0) Идея - полная хрень.
Если будут названия с пробелом - все вывалится с ошибкой.
Делай названия типа
НаимКолонки = "Н"+Выборка.Номенклатура.Код;
..
ТЗ.УстановитьЗначение(НаимКолонки,ТЗ.НомерСтроки,Остаток);
8 Gera1t
 
07.06.22
23:47
Так в том и суть, мне нужно что вместо НаимНоменклатура название элемента справочника Номенклатура
9 Gera1t
 
07.06.22
23:48
(7) Спасибо, попробую
10 Builder
 
07.06.22
23:49
(8) Суть в том что название колонки не может быть с пробелом например. А наименование товара - может.
А зачем тебе название в колонке? Чем в строке не устраивает?
11 Gera1t
 
07.06.22
23:50
Наверное лучше номенклатуру в строке, а в колонке склад
12 Builder
 
07.06.22
23:52
(11) Ну и еще вопрос - а нахрена это все в ТЗ пихать?
Что дальше с этим делать будешь? Может и не надо будет ТЗ городить....
13 Gera1t
 
08.06.22
00:03
На форму вывести нужно в виде таблицы
14 Злопчинский
 
08.06.22
01:01
(11) ясен пень, в таком виде твоя шахматы хоть и ублюдочно, но будет хоть как-то читаема
15 Злопчинский
 
08.06.22
01:04
(13) зачем? В чем практический смысл выводить на форму в ТЗ пусть даже всего два-три склада, но с тысячью строк-номенклатур.
Ну вывел. А дальше что? Надо хорошо подумать прежде чем такие штуки городить, скорее всего есть более вменяемое решение
16 Злопчинский
 
08.06.22
01:08
Создавая новую колонка - ей можно указать идентификатор. По этому идентификатору будешь обращаться к значению в ячейке из.
Вместе с этим можно указать текстовый ЗАГОЛОВОК новой колонки, он будет отображаться на форме.
В к
17 Злопчинский
 
08.06.22
01:09
Открой для себя синтакс-помощник.
18 Харлампий Дымба
 
08.06.22
10:45
(0) Ну по коду просто ВСЁ неправильно.

>Делаем цикл по справочнику номенклатура
>НаимНоменклатура = Выборка.Номенклатура.Наименование;
Что за Выборка такая? Я так в не умею в семерке...
>ТЗ.НоваяКолонка(НаимНоменклатура,,,,,4);
А ты в цикле по товарам создаёшь под каждый товар новую колонку с наименованием равным наименованию товара? Что ж за таблица получится!
>ТЗ.НоваяКолонка(НаимНоменклатура,,,,,4);
Из всех возможных реквизитов создаваемой колонки тебя волнует только её ширина при отображении?
>ТЗ.НаимНоменклатура = Остаток;
Ну тут всё и так понятно. Так и не работает.

Ну ты поковыряй формы списка справочника Номенклатуры в типовой торговле или бухгалтерии (на чем там у тебя конфа), посмотри как там вывод остатков сделан, и скопируй себе.
Ну или:
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Номенклатура","Справочник.Номенклатура",,,"Товар",20,,1);//заголовок - Товар, ширина в представлении - 20, представление значения в колонке - слева
ТЗ.НоваяКолонка("Остаток","Число",,,"Остаток",10,"Ч0.3",2);
..Выбрать..
Пока ..Получить.. Цикл
Если ...Устаивает... Тогад
Тз.НоваяСтрока();
ТЗ.Номенклатура = ..Товар..ТекущийЭлемент();
ТЗ.Остаток = ..Остаток..;
КонецЕсли;
КонецЦикла

Если надо по складам, тогда сначала создаешь колонки в цикле по списку складов
ТЗ.НоваяКолонка("Остаток"+НомерСклада,"Число",,,"Остаток на "+ИмяСклада,,"Ч0.3",2);//где НомерСклада - может быть его код, если он уникальный, или номер в СпискеЗначений складов. Главное чтобы ты мог потом по складу его НомерСклада однозначно определить
Потом в цикле уже

Для .... Цикл//цикл по товарам
ТЗ.НоваяСтрока();
ТЗ.Номенклатура=ТекТовар
Для .... Цикл//цикл по складам
НомерСклада=...;
ОстатокТекТовараНаСкладе=...
ТЗ.УстановитьЗначение("Остаток"+НомерСклада,ТЗ.НомерСтроки,ОстатокТекТовараНаСкладе);
КонецЦикла;//по складам
КонецЦикла;//по товарам


Ну или открой для себя ВыгрузитьИтоги()

Или Запрос и Выгрузить()
19 uno-group
 
08.06.22
11:37
Может проще таблицу в режиме ввода данных юзать. там и пробелы нормально отображаются и переносятся и многострочное отображение поддержуется.
Вам это все для чего надо.
20 Злопчинский
 
08.06.22
12:42
смотря для чего такой полукостыль надо для ТС
может проще - если так подойдет если просто для "посмотреть" - запихнуть все в ТЗ и вывести отчет шахматку через "универсальыне" отчеты.
Формируем ТЗ ПЛОСКУЮ, нихера не думаем, вид ТЗ "Номенклатура, Склад, Остатток" - всё.
подсовываем в https://infostart.ru/public/14794/ и выводим кликами мыши (можно и сразху настройкой задать программно) шахматку нужного вида. Хоть "Номенклатура-Склад", холть "Склад-Номенклатура", хоть в обычно плоском виде группировок...
21 Злопчинский
 
08.06.22
12:42
.. но мне кажется что ТС зАпил с горя и бетон мешает... ;-)
22 Злопчинский
 
08.06.22
12:43
(0) ТС, ты это.. не грусти.. стучись если что в личку вечером - если нужно тебе это конечно - помогу, поясню по текущей ветке...
23 АгентБезопасной Нацио
 
08.06.22
13:12
(21) главное, чтоб не "его в бетон мешали"
24 Gera1t
 
08.06.22
15:47
Большое всем спасибо за советы!
Нужно это для интерактивности, Что бы тыкать в ячейки и менять данные на лету.
25 Злопчинский
 
08.06.22
16:56
(24) но случится пичалька... если ты не предусмотришь доп.блокировки на запрет одновременной работы с таким фейсом от нескольких сессий...