8.х Запрос. Свойства номенклатуры. 1С8

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Alex Kidd, 29 мар 2010.

  1. TopicStarter Overlay
    Alex Kidd
    Offline

    Alex Kidd Опытный в 1С

    Регистрация:
    7 сен 2009
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    Добрый день!

    Прошу помощи!
    Сам только недавно начал изучать встроенный язык 1с (8-ка), поэтому еще не до конца разобрался.
    Возникла проблема с Запросом.
    Есть - свойства номенклатуры - "Артикул на сайте" и "Планы продаж" (рис.1)
    Данные в товары занесены (рис.2)

    Посмотреть вложение 3738
    рис.1
    Посмотреть вложение 3739
    рис.2

    Необходимо - сформировать выгрузку в текстовой файл для загрузки на сайт информации.

    Создал следующий запрос:

    При выполнении в 1с выдается следующая ошибка:

    Вложения:

    • 1c_01.jpg
      1c_01.jpg
      Размер файла:
      113 КБ
      Просмотров:
      569
    • 1c_02.jpg
      1c_02.jpg
      Размер файла:
      75,2 КБ
      Просмотров:
      450
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Запятую пропустили
  3. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Запятая после "Информация". Используй конструктор запроса.
  4. TopicStarter Overlay
    Alex Kidd
    Offline

    Alex Kidd Опытный в 1С

    Регистрация:
    7 сен 2009
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    Добрый день еще раз!

    Попробовал через конструктор.
    Получилось следующее:

    При проверке ругается:
    p.s. Прошу прощения, что создал тему не в форуме по конфигурированию.
  5. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Попробуйте

    СГРУППИРОВАТЬ ПО
    | ЗначенияСвойствОбъектов1.Значение,
    | ЗначенияСвойствОбъектов.Значение

    или тогда уберите из выборки поле

    ЗначенияСвойствОбъектов.Значение
    т.е так

    ВЫБРАТЬ
    | ЗначенияСвойствОбъектов1.Значение КАК Артикул
  6. TopicStarter Overlay
    Alex Kidd
    Offline

    Alex Kidd Опытный в 1С

    Регистрация:
    7 сен 2009
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    В первом случае возникает ошибка:


    а во втором случае получаем Артикул, но не данных из блока Плана продаж :(
  7. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    выкладывай, какой у тебя запрос получился. Кто будет таблицы содинять по объекту?
  8. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    А зачем 2 раза регистр хватать? Можно сделать совйтсва списком, а потом при переборе будете обрабатывать конкретное свойство
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ЗначенияСвойствОбъектов.Объект,
    |    ЗначенияСвойствОбъектов.Свойство,
    |    ЗначенияСвойствОбъектов.Значение
    |ИЗ
    |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |ГДЕ
    |     ЗначенияСвойствОбъектов.Свойство В(&СписокСвойств)";
    
    СписокСвойств = Новый Массив;
    СписокСвойств.Добавить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("УТ0000006"));
    СписокСвойств.Добавить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("УТ0000001"));
    
    Запрос.УстановитьПараметр("СписокСвойств",СписокСвойств);
    
    
  9. TopicStarter Overlay
    Alex Kidd
    Offline

    Alex Kidd Опытный в 1С

    Регистрация:
    7 сен 2009
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    Вообщем, вот полностью к какой процедуре пришел (работает она не правильно, но почти уже)..

    Код:
    Процедура ВыгрузитьИнформацию() Экспорт
    //
    Если (ИмяФайлаИнформации)="" Тогда
    Сообщить("Не указано имя файла выгрузки информации",СтатусСообщения.Внимание);
    Возврат;
    КонецЕсли;
    
    ВыбСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("УТ0000006");
    ВыбСвойство1 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("УТ0000001");
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |	ЗначенияСвойствОбъектов1.Значение КАК Артикул,
    |	ЗначенияСвойствОбъектов.Значение КАК Информация
    |ИЗ
    |	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов,
    |	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1	
    |ГДЕ
    | 	ЗначенияСвойствОбъектов.Свойство = &ВыбСвойство
    | 	И ЗначенияСвойствОбъектов1.Свойство = &ВыбСвойство1
    | 	И (НЕ ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL )
    | 	И (НЕ ЗначенияСвойствОбъектов1.Значение ЕСТЬ NULL )
    |УПОРЯДОЧИТЬ ПО
    |Информация";
    Запрос.УстановитьПараметр("ВыбСвойство", ВыбСвойство);
    Запрос.УстановитьПараметр("ВыбСвойство1", ВыбСвойство1);
    
    Результат = Запрос.Выполнить().Выгрузить();
    
    Текст = Новый ТекстовыйДокумент;
    
    ЕстьДанные = ЛОЖЬ;
    Для Каждого стр из Результат Цикл
    Если НЕ ЗначениеЗаполнено(стр.Информация) Тогда
    Продолжить;
    КонецЕсли;	
    
    Текст.ДобавитьСтроку(СокрЛП(стр.Артикул) + "#" + СокрЛП(стр.Информация));
    ЕстьДанные=Истина;
    КонецЦикла;
    
    Если ЕстьДанные Тогда
    Попытка
    Текст.Записать(ИмяФайлаИнформации, "windows-1251");
    Сообщить("Остатки сохранены в файл " + СокрЛП(ИмяФайлаИнформации),СтатусСообщения.Информация);
    Исключение
    Сообщить("Ошибка сохранения файла. " + ОписаниеОшибки(),СтатусСообщения.Внимание);
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конецпопытки')">		КонецПопытки	</span>
    КонецЕсли;	
    
    КонецПроцедуры
    
    Получается следующий результат:

    Вообщем не хватает связки..


    2 x_under - Спасибо! Чуть позже попробую.. Сейчас только с текучкой на работе разберусь.
  10. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Код:
    ВЫБРАТЬ
    ЕСТЬNULL(ЗначенияСвойствОбъектов.Объект, ЗначенияСвойствОбъектов1.Объект) КАК Объект,
    ЗначенияСвойствОбъектов1.Значение КАК Артикул,
    ЗначенияСвойствОбъектов.Значение КАК Информация
    ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1
    ПО ЗначенияСвойствОбъектов.Объект = ЗначенияСвойствОбъектов1.Объект
    ГДЕ
    ЗначенияСвойствОбъектов.Свойство = &ВыбСвойство
    И ЗначенияСвойствОбъектов1.Свойство = &ВыбСвойство1
    
    УПОРЯДОЧИТЬ ПО
    Информация
    
    
    Дополнительно функция, может пригодится:
    Код:
    // Функция возвращает значеник свойства объекта.
    //
    // Параметры:
    //  Объект - объект свойство которого необходимо получить
    //  СвойствоОбъекта  - искомое свойство
    //
    // Возвращаемое значение:
    //  Значения свойств и категории объекта.
    //
    Функция ПолучитьСвойствоОбъекта(Объект,СвойствоОбъекта) Экспорт
    Структ = Новый Структура;
    Структ.Вставить("Объект",      Объект);
    Структ.Вставить("Свойство", СвойствоОбъекта);
    Возврат РегистрыСведений.ЗначенияСвойствОбъектов.Получить(Структ).Значение;
    КонецФункции
    
    
    
    
  11. TopicStarter Overlay
    Alex Kidd
    Offline

    Alex Kidd Опытный в 1С

    Регистрация:
    7 сен 2009
    Сообщения:
    56
    Симпатии:
    0
    Баллы:
    26
    Stack_G, Спасибо огромное! Заработало так как необходимо!
    Пойду теперь пошагово разбираться как и что работает.
    Всем спасибо за помощь!

Поделиться этой страницей