Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Табличная часть справочника          
Lada Подменю пользователя
сообщение 17.06.10, 9:16
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Здравствуйте!
Подскажите пожалуйста, как программно в 1с 8,1 проверить наличие в справочнике/документе табличной части?
и название табличной части

Спасибо

Zaval Подменю пользователя
сообщение 17.06.10, 10:09
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Метаданные.ТабличныеЧасти - подробности в СП

Спасибо сказали: Lada,

Lada Подменю пользователя
сообщение 17.06.10, 11:06
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(Zaval @ 17.06.10, 12:09) *
Метаданные.ТабличныеЧасти - подробности в СП


Спасибо. Буду ковырять в этом направлении

Lada Подменю пользователя
сообщение 07.07.10, 11:58
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Подскажите пожалуйста
для того чтоб создать новый элемент справочника пишем:

НовыйЭлемент = Справочники.ИмяСправочника.СоздатьЭлемент();
НовыйЭлемент.Наименование = НаименованиеЭлемента;
НоваяСтрокаТабличнойЧасти=НовыйЭлемент.НазваниеТЧ.Добавить();
НоваяСтрокаТабличнойЧасти.ИмяРеквизита = ЗначениеРеквизитаТЧ;
....
НовыйЭлемент.Записать();

можно ли как-то записать элемент, если я не знаю названия справочника, его реквизитов табличной части, но знаю, что все названия хранятся в переменных
т.е. ИмяСправочника, ИмяРеквизита - это переменные
как их правильно подставить в такую конструкцию?

Zaval Подменю пользователя
сообщение 07.07.10, 12:16
Сообщение #5

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Объект метаданных можно получить по полному имени, а уж где и как оно хранится - дело десятое.

А еще есть чудная вещь (спасибо Вам СПsmile.gif):
Выполнить (Execute)
Синтаксис:
Выполнить(<Строка>)
Параметры:
<Строка>
Строка, содержащая текст исполняемого кода.
Описание:
Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения.
Нпр, так должно получиться

Выполнить("НовыйЭлемент = Справочники." + ИмяСправочника +".СоздатьЭлемент();");

Спасибо сказали: Lada,

Lada Подменю пользователя
сообщение 07.07.10, 12:44
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(Zaval @ 07.07.10, 14:16) *
Объект метаданных можно получить по полному имени, а уж где и как оно хранится - дело десятое.

А еще есть чудная вещь (спасибо Вам СПsmile.gif):
Выполнить (Execute)


Спасибо!
Работает!

а можно ли как-то обращаться к реквизитам по порядку
к примеру есть Код, Наименование, Реквизит1, Реквизит2
а обращаться к ним как 1-й, 2-й, 3-й, 4-й?

Zaval Подменю пользователя
сообщение 07.07.10, 13:02
Сообщение #7

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Подход стандартный...
Если через Метаданные...Реквизиты получить коллекцию реквизитов, то

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора [...]. В качестве аргумента передается индекс (нумерация с 0) объекта в дереве метаданных.

Спасибо сказали: Lada,

Lada Подменю пользователя
сообщение 07.07.10, 13:07
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(Zaval @ 07.07.10, 15:02) *
Подход стандартный...


Спасибо!
сейчас буду всё пробовать

Lada Подменю пользователя
сообщение 13.07.10, 12:20
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Не знаю, может кому пригодится

Выполнить("НовыйЭлемент = Справочники." + ИмяСправочника +".СоздатьЭлемент();");
можно заменить на
НовыйЭлемент = Справочники[ИмяСправочника].СоздатьЭлемент();
и не вызывать дополнительную обработку

и потом точно так же с реквизитами

НовыйЭлемент.Наименование = "ёжик";
Для Каждого метаспр из Метаданные.Справочники[ИмяСправочника].Реквизиты Цикл
РеквизитСпр=метаспр.Имя;
НовыйЭлемент[РеквизитСпр]=Переменная;
КонецЦикла;
НовыйЭлемент.Записать();


Ещё раз спасибо за помощь)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 12.06.24, 23:37
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!