Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:57

Как Добавить новую запись в табличную часть

Автор tmpnikl, 23 мар 2015, 12:25

0 Пользователей и 1 гость просматривают эту тему.

tmpnikl

Нахожу в справочнике по коду нужную запись
Спр_мой = Справочники.Тест.НайтиПоКоду(стр_пск)
у этого справочника есть табличная часть тест_тч
как добавить запись в эту табличную часть
делаю Спр_мой.тест_тч.Добавить();
Спр_мой.тест_тч.моеполе="афыафыаф"
ошибка, как надо правильно обратиться к ТЧ?

mashencev_anton

Для Каждого стрТЧ из Справочник Цикл
стрТЧ.НужнаястрокаИзТЧСправочника="Чему угодно";
КонецЦикла


tmpnikl

мне не надо в цикле перебор, я нашел запись в справочнике(тест), теперь надо просто добавить запись в табличную часть(в таблицу тест_тч), у меня выдает ошибку, объект не доступен....и т.д.

mashencev_anton

ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, <ИсключаяСвойства>)

cska-fanat-kz

mashencev_anton, внимательно перечитайте вопрос! :^454^:
вы не совсем по теме отвечаете.

tmpnikl, программно добавить строку можно например так:
НоваяСтрока = Спр_мой.тест_тч.добавить(); //метод Добавить() - это не процедура, а функция
НоваяСтрока.МоеПоле = "алпаапввардпрвап";
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

tmpnikl

спасибо, сейчас буду проверять, только вот что смущает..., раньше работал на VFP(это не для того, что бы говорить, что хорошо хорошо, что плохо), и эта привычка, мешает понять, все время навязывая аналогии в алгоритмах и здесь я тоже стараюсь понять
В 1с открываются почему то все таблицы разом, далее просто идет переход по таблицам оператором выбрать( меня это все время сбивает с толку, т.к. подсознательно связывается с sql выборкой, что не так...) или по аналогии select указатель рабочей области, т.к. вот мы указали рабочую область
Справочники.Тест.select
сделали поиск
Спр_мой = Справочники.Тест.НайтиПоКоду(стр_пск)
"Спр_мой" это что?, указатель, ссылка на запись, объект, что хранится в этой переменной?
Далее..мне надо запомнить код связи с которым он связан с табличной частью, перейти в эту таблицу(т.к. все relation в 1с тоже создаются при старте) и добавить запись
и вот тут мне не понятно
НоваяСтрока = Спр_мой.тест_тч.добавить();
запись добавляется, как проверить что преставился код связи(тест->тест_тч) именно той записи которая нашлась, а не первой или последней записи таблицы "тест"... Как-то нет четкой ясности, что в табличную часть таблицы "тест_тч", добавилась запись с кодом(ссылкой)найденой записи в таблице "тест"...


cska-fanat-kz

tmpnikl, как там обычно говорится? "забудьте все, что вы знали до этого..."

ладно бы это происходило (и происходит) при переходе с платформы на платформу.
так вы с фокс про сравнивать пытаетесь.
1Ской очень много чего из внутренней "кухни" спрятано от разработчика.

Цитата: tmpnikl от 23 мар 2015, 16:20Спр_мой = Справочники.Тест.НайтиПоКоду(стр_пск)
"Спр_мой" это что?, указатель, ссылка на запись, объект, что хранится в этой переменной?
ну так берем справку по НайтиПоКоду() (как и по любому другому методу) и смотрим раздел "Возвращаемое значение"

Цитата: tmpnikl от 23 мар 2015, 16:20НоваяСтрока = Спр_мой.тест_тч.добавить();
запись добавляется, как проверить что преставился код связи(тест->тест_тч) именно той записи которая нашлась, а не первой или последней записи таблицы "тест"... Как-то нет четкой ясности, что в табличную часть таблицы "тест_тч", добавилась запись с кодом(ссылкой)найденой записи в таблице "тест"...
раз вы добавляете (.Добавить()) строку в тч тест_тч у переменной Спр_мой - значит без вариантов, вы работаете с найденным элементом и никак иначе. даже если и остались сомнения, отладку никто не отменял, ставите на этой строке точку останова и потом смотрите какое значение "сидит" в Спр_мой.

Опять же очень много (как оказывается! )) ) казалось бы при такой простой операции как добавление строки в ТЧ 1Ска от вас спрятала, а вы простите паниковать начинаете ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

tmpnikl

Цитата: cska-fanat-kz от 23 мар 2015, 17:551Ской очень много чего из внутренней "кухни" спрятано от разработчика.
вот поэтому и появляются вопросы...
в данном коде,
Спр_мой = Справочники.Тест.НайтиПоКоду(стр_пск)
НоваяСтрока = Спр_мой.тест_тч.добавить();
когда попытался применить, выдалось сообщение "Объект недоступен для изменения"
если бы на
в общем алгоритм следущий

в справочнике тест находятся запись 1 с кодом 1 и запись 2 с кодом 2, я должен добавить в тест_ТЧ записи с кодом 1, в количестве сколько находятся записей в тест_ТЧ с кодом 2, и заполнить их данными из тест_ТЧ с кодом 2, если бы раньше на это уходило 5 минут, здесь я бьюсь уже второй день...
нахожу запись к кодом 1, запомнил там что-то непонятное
затем нахожу запись с кодом 2 и иду по табличной части этой записи с кодом 2, добавляя записи, где ссылка должна быть на запись 1 и заполненны данными из записи с кодом 2...  вроде всё...

vitasw

Т.е. находясь в самом объекте в хотите его изменить?

cska-fanat-kz

эл2 = справочники.спр.найтипокоду("2");
эл1 = справочники.спр.найтипокоду("1");
эл1объект = эл1.получитьОбъект();
эл1объект.тч.загрузить(эл2.тч.выгрузить());
эл1объект.записать();
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск