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

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

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

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

tmpnikl

я хочу добавить запись в таблицу ТЧ с кодом записи номер 1, и заполнить поля данными записи с кодом 2, а где я уже нахожусь, я уже потерял ориентацию... в объекте, в ссылке на объект или ещё где... без понятия....

k_aleks80

Цитата: tmpnikl от 24 мар 2015, 12:13
я хочу добавить запись в таблицу ТЧ с кодом записи номер 1, и заполнить поля данными записи с кодом 2, а где я уже нахожусь, я уже потерял ориентацию... в объекте, в ссылке на объект или ещё где... без понятия....
Вы не ориентируетесь в структуре БД 1С:
    "При добавлении в справочник табличной части в информационной базе создается
подчиненная таблица со стандартными полями Ссылка и НомерСтроки и реквизитами
табличной части, заданными в конфигураторе. Таблица, содержащая табличную часть,
связана по полю Ссылка с основной таблицей. Благодаря этому можно получить
информацию из табличной части, относящуюся к конкретному элементу справочника (см скриншот).
    ПРИМЕЧАНИЕ
    В поле Ссылка подчиненной таблицы, содержащей табличную часть, на самом деле
хранится ссылка на запись основной таблицы, но для большей ясности в таблице на скриншоте
в этом поле отражено представление ссылки в виде наименования.
В информационной базе создается столько подчиненных таблиц, сколько табличных
частей задано у справочника.
    Таким образом, на примере справочника, имеющего табличную часть, мы видим, что
одному объекту конфигурации в информационной базе могут соответствовать несколько
таблиц – основная и одна или несколько подчиненных ей по полю Ссылка таблиц. При
этом одному объекту базы данных соответствует одна запись в основной таблице и одна
или несколько записей в подчиненных таблицах, содержащих табличные части."
(с) Хрусталева. "Запросы"

От себя: Табличная часть, например "Договора" - это одна единственная таблица
для всех элементов (записей) справочника "Поставщики" (на скриншоте видно).


Цитата: cska-fanat-kz от 24 мар 2015, 12:07
эл2 = справочники.спр.найтипокоду("2");
эл1 = справочники.спр.найтипокоду("1");
эл1объект = эл1.получитьОбъект();
эл1объект.тч.загрузить(эл2.тч.выгрузить());
эл1объект.записать();

// В табл. Справочники, по коду, мы находим ссылку на нужную запись таблицы и сохраняем ее.
эл2 = справочники.спр.найтипокоду("2");

// аналогично для 2-й записи
эл1 = справочники.спр.найтипокоду("1");

// по ссылке мы получаем объект с данными (т.е. в оперативке создается "копия" с данными нашего объекта).
эл1объект = эл1.получитьОбъект();

// заполняем таб.часть нашей "копии" данными таб. части 2-го объекта (к данным можно обратиться и по ссылке).
эл1объект.тч.загрузить(эл2.тч.выгрузить());

// теперь "копия" с отредактированными данными записывается в наш реальный объект в нашей БД!
эл1объект.записать();

Фух, примерно так.

tmpnikl

спасибо, более менее понятно, просто ещё не знал функций выгрузить-загрузить... но это выгружает и загружает всю табличную часть данной записи, а если например будет условие, что загрузить только третью запись ТЧ записи кода 2... но это наверное уже слишком..:-)
PS: я просто создал простейший справочник, и на нем отрабатываю ситуацию до полного прояснения, чтоб потом перенести в реальные условия...

cska-fanat-kz

да, выгрузить, загрузить это для ТЧ целиком.
если нужна определенная строка, то либо:
1) цикл по тч элемента 2
для каждого строкатч из эл2.тч цикл
если строкатч.сумма = 0 тогда
новаястрока = эл1объект.тч.Добавить();
заполнитьзначениясвойств(новаястрока, строкатч);
конецесли;

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

Anion

Цитата: k_aleks80 от 24 мар 2015, 13:19
От себя: Табличная часть, например "Договора" - это одна единственная таблица
для всех элементов (записей) справочника "Поставщики" (на скриншоте видно).
Запутанно , насколько помню в табличной части может находиться от 0 до бесконечности таблиц , не считая "шапки"(которая тоже является таблицей) справочника .

k_aleks80

Цитата: Anion от 24 мар 2015, 19:44
Цитата: k_aleks80 от 24 мар 2015, 13:19
От себя: Табличная часть, например "Договора" - это одна единственная таблица
для всех элементов (записей) справочника "Поставщики" (на скриншоте видно).
Запутанно , насколько помню в табличной части может находиться от 0 до бесконечности таблиц , не считая "шапки"(которая тоже является таблицей) справочника .
не совсем понял вашу мысль, но все же повторюсь:
Цитировать... Таким образом, на примере справочника, имеющего табличную часть, мы видим, что
одному объекту конфигурации в информационной базе могут соответствовать несколько
таблиц – основная и одна или несколько подчиненных ей по полю Ссылка таблиц ...

cska-fanat-kz

Цитата: Anion от 24 мар 2015, 19:44насколько помню в табличной части может находиться от 0 до бесконечности таблиц

переведите
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

tmpnikl

Цитата: k_aleks80 от 24 мар 2015, 13:19// ...заполняем таб.часть нашей "копии" данными таб. части 2-го объекта (к данным можно обратиться и по ссылке)// теперь "копия" с отредактированными данными записывается в наш реальный
Да, очень много спрятано в 1С, например когда я загружаю данные табличной части Справочника с кодом 1, то его табличная часть удаляется, и вместо ней становится табличная часть из справочника с кодом 2... Не совсем то, хотелось бы чтоб записи добавлялись, а не замещались, т.е. в спр. с кодом 1 были записи и его табличнй части и табличной части спр. с кодом записи 2.
вот экспериментирую...
эл2_1_тч=эл1.тч.выгрузить()+эл2.тч.выгрузить()
а затем загрузить их общее кол-во...

cska-fanat-kz

тогда обходите строки тч элемента2 циклом Для каждого
и добавляете строки в тч элемента1
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

tmpnikl

я что-то плохо понимаю СП, например мне надо найти какие есть методы, которые можно применить к этому объекту...
нахожу(справочник->поиск) Загрузить, там мало, что написано, примеров нет, но указано на тип ТаблицаЗначений, перехожу на ТаблицаЗначений, там есть методы,
но это не то, там нет метода Загрузить, а есть Загрузитьколонку и т.д.
т.е. мне надо как-то найти в помощи какие методы можно использовать сэтого объекта, пока буду экспериментировать Скопировать - добавить - Вставить

Теги:

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

Рейтинг@Mail.ru

Поиск