Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конвертация данных ПВД или ?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Конфигурация "1С:Конвертация данных"
kosalex
Добрый день. столкнулся с задачей по выгрузке из УТП в другую конфигурацию справочника "Номенклатуры".

В этом справочнике есть много папок - групп. Мне нужно выгрузить определённые группы, как это сделать?

Пишу в ПВД перед выгрузкой такое:

Если Объект.ЭтоГруппа() Тогда
Если НЕ Объект.ЭтоГруппа() И НЕ Объект.Наименование = "Изделия из золота с драгоценными камнями"  Тогда
  Отказ = Истина;
КонецЕсли;

Если НЕ Объект.ЭтоГруппа() И НЕ Объект.Наименование = "Изделия из золота с ситнетическими вставками" Тогда
  Отказ = Истина;
КонецЕсли;
Иначе
Отказ = Истина;
КонецЕсли;



 i 

Выделяйте код тегами, в правилах же написано как это делать
 


Ошибка: Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1638)}: Ошибка в обработчике события ПередВыгрузкойОбъекта
ПВД = Номенклатура
Объект = Камни в ассортименте (Номенклатура)
Обработчик = ПередВыгрузкойОбъектаВыборки
ОписаниеОшибки = Метод объекта не обнаружен (ЭтоГруппа)
ПозицияМодуля = (1)
КодСообщения = 33


Я посмотрел действительно, этот элемент не является группой. Никак не додуплю как выгрузить нужную группу ?
logist
Цитата(kosalex @ 06.08.13, 12:52) необходимо зарегистрироваться для просмотра ссылки
Метод объекта не обнаружен (ЭтоГруппа)

Ни о чем не говорит? ЭтоГруппа - это свойство, а не метод
Если Объект.ЭтоГруппа Тогда
kosalex
Не выгружается как хочется ((



хочу выгрузить полностью структуру папок как показано на рисунке.

ТМЦ -> Продукция 26 -> Изделия из золота -> Изделия из золота с драг камнями -> Элементы папки.



Если НЕ Объект.ЭтоГруппа  = "Изделия из золота с ситнетическими вставками" Тогда
    
Отказ = Истина;    
    
КонецЕсли;



Не получается....

может нужно создать ручками такую же структуру папок в конфигурации в которую выгружаю?

Наставьте на путь истинный!

Vofka
kosalex, faceoff.gif

Если НЕ Объект.Наименование  = "Изделия из золота с ситнетическими вставками" Тогда
    
Отказ = Истина;    
    
КонецЕсли;
kosalex
или так

СсылкаНаГруппу = Справочники.Номенклатура.НайтиПоНаименованию("Изделия из золота с драгоценными камнями");

Если Не Объект.ПринадлежитЭлементу(СсылкаНаГруппу) Тогда
  Отказ = Истина;
КонецЕсли;


Сори за глупые вопросы) Учусь же)) Скоро будут умные ответы))
kosalex
Ничего не выгружается((

СсылкаНаГруппу1 = Справочники.Номенклатура.НайтиПоНаименованию("Изделия из золота с драгоценными камнями");
СсылкаНаГруппу2 = Справочники.Номенклатура.НайтиПоНаименованию("Изделия из золота с ситнетическими вставками");

Если НЕ Объект.ПринадлежитЭлементу(СсылкаНаГруппу2) Тогда
  Отказ = Истина;
КонецЕсли;

Если НЕ Объект.ПринадлежитЭлементу(СсылкаНаГруппу1) Тогда
  Отказ = Истина;
КонецЕсли;
logist
Если Объект.ПринадлежитЭлементу(СсылкаНаГруппу2) ИЛИ Объект.ПринадлежитЭлементу(СсылкаНаГруппу1) Тогда
  // Объект входит в эти группы и можно с ним что-то делать
Иначе
  // Объект не входит в эти группы
КонецЕсли;


Я бы на вашем месте использовать НайтиПоКоду, вместо наименования, это железно выберет что надо.
kosalex
Можете объяснить чем логика вашего условия отличается от моего?
logist
Да в принципе ничем. Не понятна роль "Отказа" в вашем коде, возможно он вызывает Отказ для исполнения всей процедуры поэтому ничего и не происходит.
kosalex
Проверял в конфигураторе этот код. Шагает как надо)
Изменил на НайтиПоКоду, вроде пошло выгружаться.

Кодга так написано,работает, стоит добавить ещё одно условие перестаёт выгружать. Пробовал и с вашим условием.
СсылкаНаГруппу1 = Справочники.Номенклатура.НайтиПоНаименованию("Изделия из золота с драгоценными камнями");

Если НЕ Объект.ПринадлежитЭлементу(СсылкаНаГруппу1) Тогда
  Отказ = Истина;
КонецЕсли;



Можно же как то запросом выбрать то что мне нужно, правильно? Быстрее же будет)


logist, всё таки вы правы, если два отказа то ничего не выгрузиться...

странно что в конфигураторе шагает на второй отказ.
logist
Цитата(kosalex @ 06.08.13, 22:46) необходимо зарегистрироваться для просмотра ссылки
странно что в конфигураторе шагает на второй отказ.

Потому что Отказ срабатывает в конце процедуры, процедура выполняется полностью, а уже потом происходит отмена результатов ее выполнения.
andogskiy
Цитата(kosalex @ 06.08.13, 23:07) необходимо зарегистрироваться для просмотра ссылки
Ничего не выгружается((

СсылкаНаГруппу1 = Справочники.Номенклатура.НайтиПоНаименованию("Изделия из золота с драгоценными камнями");
СсылкаНаГруппу2 = Справочники.Номенклатура.НайтиПоНаименованию("Изделия из золота с ситнетическими вставками");

Если НЕ Объект.ПринадлежитЭлементу(СсылкаНаГруппу2) Тогда
  Отказ = Истина;
КонецЕсли;

Если НЕ Объект.ПринадлежитЭлементу(СсылкаНаГруппу1) Тогда
  Отказ = Истина;
КонецЕсли;

Только наткнулся на эту тему.
У Вас 2 условия, которые не могут выполняться одновременно (если, конечно, одна из групп не подчинена другой). Поэтому Отказ всегда будет равен Истина.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.