[экспорт] КАК выгрузить из Номенклатуры только товары, но не группы?

1. esculap 21.05.09 21:42 Сейчас в теме
привет всем!

пишу под себя обработку для выгрузки Номенклатуры в CSV для синхронизации с интернет-магазином
код такой:

Текст = СоздатьОбъект(«Текст»);
Список = СоздатьОбъект(«СписокЗначений»);
Спр=СоздатьОбъект(«Справочник.Номенклатура»);
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
     Список.ДобавитьЗначение(Спр.Код);
     Список.ДобавитьЗначение(Спр.Наименование);     // и другие поля…
     // выводим список в текст
     Текст.ДобавитьСтроку(Список.ВСтрокуСРазделителями());
     Список.УдалитьВсе();// очищаем список
КонецЦикла;
Текст.Записать(«exp_imp.txt»);
Показать


проблема вот в чём: поля "Код" и "Наименование" есть как у групп, так и у отдельных товаров номенклатуры.
однако у товаров помимо них есть и другие поля, в отличие от групп
при этом если я пытаюсь также выгружать и эти поля (например, "Спр.Марка"), то при запуске обработки получаю ошибку "Поле агрегатного объекта не обнаружено {Марка}" :(
по сути группы сами по себе мне и не нужны для эскпорта!
вопрос в том - КАК выгрузить из Номенклатуры ТОЛЬКО товары? по какому принципу можно исключить группы из выборки?

пробовал такой код - не работает...

Если ПустоеЗначение(Спр.Марка)<>1 Тогда
       Список.ДобавитьЗначение(Спр.Марка);
КонецЕсли;
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Larkin 396 21.05.09 23:21 Сейчас в теме
Если Это 8-ка тогда:
Товары = Справочники.Номенклатура.Выбрать();

Пока Товары.Следующий() Цикл
    Если НЕ Товары.ЭтоГруппа Тогда
        //Обработчик события
    КонецЕсли;
КонецЦикла;
Показать


По 7-ке не подскажу, но по идее нечто подобное...
3. alexk-is 6539 21.05.09 23:33 Сейчас в теме
Если Спр.ЭтоГруппа() = 1 Тогда 
       Продолжить; 
КонецЕсли;
4. esculap 22.05.09 01:20 Сейчас в теме
ребята, спасибо большое за подсказки!
однако проблема не решилась... :(
дело в том, что не во всех записях товаров заполнены все поля
когда пытаюсь обращаться к тому же полю Марка даже у простого товара (группы уже пропускаю), выдаётся точно такое же сообщение!
пытаюсь использовать такой код - без эффекта:

Если ПустоеЗначение(Спр.Марка)<>1 Тогда
       Список.ДобавитьЗначение(Спр.Марка);
КонецЕсли;


как-то можно проверить ещё, существует ли и заполнено ли данное поле?
8. Ёпрст 1064 22.05.09 06:59 Сейчас в теме
(4) тест на вшивость:

Сообщить(Метаданные.Справочник("Номенклатура").Реквизит("Марка").Выбран());
Сообщить(Метаданные.Справочник("Номенклатура").Реквизит("Марка").Периодический);


Что сообщает?
5. poppy 22.05.09 01:33 Сейчас в теме
Проблема не в том что поле не заполнено, но в чем то другом. Может такого поля в справочнике вообще нет?

Может ты неправильно вставил условие в свой код?
6. AVARY 175 22.05.09 05:59 Сейчас в теме
Либо ошибка с наименованием поля, либо ты неправильно пропускаешь группы, а реквизит используется только для элементов.
7. serguson 119 22.05.09 06:53 Сейчас в теме
Список.ДобавитьЗначение(Спр.Наименование) - не совсем корректно.
Лучше будет - Список.ДобавитьЗначение(СокрЛП(Спр.Наименование))

И еще, та же Марка - какого типа реквизит - строка,справочник,перечисление?
Если строка, тогда можно попробовать:
Если СокрЛП(Спр.Марка) <> "" Тогда
Список.ДобавитьЗначение(Спр.Марка);
КонецЕсли;
Если справочник:
Если Спр.Марка.Выбран() = 1 Тогда
Список.ДобавитьЗначение(СокрЛП(Спр.Марка.Наименование));
КонецЕсли;
Если перечисление:
Если Спр.Марка.Выбран() = 1 Тогда
Список.ДобавитьЗначение(Спр.Марка.Идентификатор());
КонецЕсли;
9. esculap 23.05.09 00:43 Сейчас в теме
ребята, всем огромное спасибо за помощь!
ошибка была действительно в том, что я неправильно обращался к полю
я просто до этого открыл Номенклатуру, там написано поле "Марка"
а на самом деле в справочнике такого поля нет, есть другое, к нему и получилось обратиться

только вот непонятно, где же задаётся соответствие между полями Номенклатуры и структурой справочника "Номенклатура"?
дело в том, что у меня, например, есть ещё поле Цена в Номенклатуре, значение которого определяется расчётами, использующими другие справочники
если кто-нибудь подскажет, где могут быть эти расчёты - буду очень признателен!
надеюсь, я достаточно подробно сформулировал вопрос...
10. AVARY 175 23.05.09 05:47 Сейчас в теме
соответствие между полями Номенклатуры и структурой справочника "Номенклатура"

Это имеется ввиду соответствие между данными, отображаемыми на форме элемента справочника "Номенклатура", и значениями реквизитов элемента справочника?
Расчеты могут производиться в формуле элемента диалога, в модуле формы, в глобальном модуле.
11. esculap 23.05.09 14:32 Сейчас в теме
нет, не совсем
мне нужно настроить отображение СПИСКА номенклатуры, который выводится по нажатию пункта меню "Номенклатуры"
что-то вроде этого делает вот эта обработка: http://infostart.ru/projects/3746/
ну и плюс надо настроить вывод полей этого списка, там же наверняка можно использовать какие-то формулы?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот