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

Перебор всех справочников и их елементов

Автор Rispekt, 21 июл 2016, 23:46

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

Rispekt

Здравствуйте) Нужно переименовать все элементы во всех справочниках на "Номенклатура" + "Код Справочника"
Реализовал так:


Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика. 


Для Инд=1 По Метаданные.Справочник() Цикл
       
    Значение = Метаданные.Справочник(Инд).Идентификатор;
    Представление = Метаданные.Справочник(Инд).Представление();   
   

Для Каждого ЭлементМассива Из Значение Цикл

СправочникОбъект = ЭлементМассива.Ссылка.ПолучитьОбъект();
    СправочникОбъект.Наименование = ЭлементМассива.Наименование + " " + ЭлементМассива.Код;
    СправочникОбъект.Записать();

КонецЦикла;          

КонецЦикла;  

КонецПроцедуры



но появляется ошибка"Метод объекта не обнаружен(Справочник)". Как исправить ошибку?

Luzer1C

Судя по коду нужно взять все справочники в базе и переписать наименование: Наименование + Код?
Халамбалам.

SGIRG

Судя по названию процедуры и передаваемым параметрам, она выполняется на клиенте. Необходимо перенести исполняемый код на сервер (если у Вас УФ)
Ничего не знаю, но иногда могу произнести праведную чушь)

cska-fanat-kz

белым по синему же...
не
Для Инд=1 По Метаданные.Справочник() Цикл
а
Для Инд=1 По Метаданные.Справочники Цикл

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

cska-fanat-kz

Цитата: Rispekt от 21 июл 2016, 23:46Для Каждого ЭлементМассива Из Значение Цикл

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

Rispekt

Цитата: Luzer1C от 22 июл 2016, 04:32
Судя по коду нужно взять все справочники в базе и переписать наименование: Наименование + Код?
Верно
Добавлено: 22 июл 2016, 08:29


Цитата: cska-fanat-kz от 22 июл 2016, 08:01
белым по синему же...
не
Для Инд=1 По Метаданные.Справочник() Цикл
а
Для Инд=1 По Метаданные.Справочники Цикл

да и цикл не такой а Для каждого...
Поменял так как Вы написали, но возникла ошибка с каким-то сравнением(скрин)
Добавлено: 22 июл 2016, 08:32


Цитата: SGIRG от 22 июл 2016, 07:55
Судя по названию процедуры и передаваемым параметрам, она выполняется на клиенте. Необходимо перенести исполняемый код на сервер (если у Вас УФ)
Да, написал &НаСервере, но не помогло(

cska-fanat-kz

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

Rispekt

Цитата: cska-fanat-kz от 22 июл 2016, 08:35
Цитата: Rispekt от 22 июл 2016, 08:24Поменял так как Вы написали

и как теперь стало?

&НаСервере
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика. 


Для Инд=1 По Метаданные.Справочники Цикл
       
    Значение = Метаданные.Справочник(Инд).Идентификатор;
    Представление = Метаданные.Справочник(Инд).Представление();   
   

Для Каждого ЭлементМассива Из Значение Цикл

СправочникОбъект = ЭлементМассива.Ссылка.ПолучитьОбъект();
    СправочникОбъект.Наименование = ЭлементМассива.Наименование + " " + ЭлементМассива.Код;
    СправочникОбъект.Записать();

КонецЦикла;          

КонецЦикла;  

КонецПроцедуры


Скрин с ошибкой

cska-fanat-kz

1) процедура должна быть НаКлиенте - это обработчик события нажатия на кнопку,
а уж внутри этой вы вызываете серверную внеконтекстную процедуру и в ней уже обрабатываете справочники

2) циклы нужны перечислимые "ДЛЯ КАЖДОГО...ИЗ..."!!
3) вам из метаданных нужен не идентификатор а ИМЯ,
его вы используете в последующем
    СпрВыборка = Справочники[мИмяСправочника].Выбрать();
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Rispekt

Цитата: cska-fanat-kz от 22 июл 2016, 10:20
1) процедура должна быть НаКлиенте - это обработчик события нажатия на кнопку,
а уж внутри этой вы вызываете серверную внеконтекстную процедуру и в ней уже обрабатываете справочники

2) циклы нужны перечислимые "ДЛЯ КАЖДОГО...ИЗ..."!!
3) вам из метаданных нужен не идентификатор а ИМЯ,
его вы используете в последующем
    СпрВыборка = Справочники[мИмяСправочника].Выбрать();
Спасибо Вам, буду пробовать)

Теги:

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

Рейтинг@Mail.ru

Поиск