8.х не работают несколько кусков

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

  1. TopicStarter Overlay
    Muggsy
    Offline

    Muggsy одно ЭС

    Регистрация:
    10 сен 2008
    Сообщения:
    243
    Симпатии:
    0
    Баллы:
    26
    2. тут тоже на форме не выводится результаты выборки
    Код:
    Если Строка(ЭлементыФормы.ПолеВыбора1.Значение) = "7" Тогда
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    |ГДЕ
    |    ТоварыНаСкладахОстатки.Номенклатура.Ссылка = &Ном";
    
    Ном =  ЭлементыФормы.Список.ТекущаяСтрока.Ссылка;
    //Ном = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
    Запрос.УстановитьПараметр("Ном", Ном);
    Выборка23 = Запрос.Выполнить().Выбрать();
    Запрос12 = Новый Запрос;
    Запрос12.Текст = "ВЫБРАТЬ
    |    ЗаказыПокупателейОстатки.КоличествоОстаток КАК Заказ
    |    ИЗ
    |    РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
    |ГДЕ
    |    ЗаказыПокупателейОстатки.Номенклатура.Ссылка = &Ном";
    
    Ном =  ЭлементыФормы.Список.ТекущаяСтрока.Ссылка;
    //    Ном = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
    Запрос12.УстановитьПараметр("Ном", Ном);
    Выборка12 = Запрос12.Выполнить().Выбрать();
    Запрос22 = Новый Запрос;
    Запрос22.Текст = "ВЫБРАТЬ
    |    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток как Рез
    |ИЗ
    |    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
    |ГДЕ
    |    ТоварыВРезервеНаСкладахОстатки.Номенклатура.Ссылка = &Ном";
    
    Ном =  ЭлементыФормы.Список.ТекущаяСтрока.Ссылка;
    //Ном = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
    Запрос22.УстановитьПараметр("Ном", Ном);
    Выборка22 = Запрос22.Выполнить().Выбрать();
    МакетТД = Справочники.Номенклатура.ПолучитьМакет("Макет");
    Шапка = МакетТД.ПолучитьОбласть("Шапка");
    Шапка.Параметры.п1 = "Остаток";
    Шапка.Параметры.п2 = "Резерв";
    Шапка.Параметры.п3 = "Заказано";
    //ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
    Данные = МакетТД.ПолучитьОбласть("Данные");
    Данные.Параметры.п5 = Выборка23.Остаток;
    //Сообщить("Реззз");
    Данные.Параметры.п6 = Выборка12.Заказ;
    
    Данные.Параметры.п7 = Выборка22.Рез;
    
    ТабДок. Вывести (Шапка);
    ТабДок. Вывести (Данные);
    ТабДок. Показать ();     
    КонецЕсли;
    
    
    
    
    хотя вроде запросы простые совсем, везде один и тот же параметр передается, только некоторые работаю некоторые(предстваленные сдесь) нет, не могу понять........
  2. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Запрос перепишите нормально - зачем по наименованию-то искать? Ищите по ссылке. Дальше даже смотреть не стал
  3. TopicStarter Overlay
    Muggsy
    Offline

    Muggsy одно ЭС

    Регистрация:
    10 сен 2008
    Сообщения:
    243
    Симпатии:
    0
    Баллы:
    26
    попробовала так написать
    в консоли отчетов все три отчета проверила, параметру присваивала какую-нибудь номенклатуру - работает........ а так не работает
    что-то с передачей параметра наверное только вот что?
  4. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Итого: Посмотрите, как работает выборка из запроса. Странно, что у вас вообще это отработало.
    Изучите, что такое метод Следующий() у выборки.
  5. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Да как то вобще каряво написано.. зачем несколько запросов.. реши вложенным запросом....

    Потом по выборке...

    Результат = Запрос.Выполнить.Выбрать();
    Пока результат.Слудующий() Цикл
    парм = Результат.Цена;
    и т.п.

    КонецЦикла;

    А по поводу ном... Посмотри что ты получаешь из списка, скорее всего Наименование
    ... А если у тебя будет товар с одним наименованием но разными кодами как тогда?? Надо исключать такую ситуацию...
    если всетаки через наименование... попробуй сначало явно указать Ном = Справочники.Номенклатура.НайтиПоНаименованию("Ном");
    и его передавай в запрос
  6. TopicStarter Overlay
    Muggsy
    Offline

    Muggsy одно ЭС

    Регистрация:
    10 сен 2008
    Сообщения:
    243
    Симпатии:
    0
    Баллы:
    26
    с единицами измерения разобралась, взяла из из справочника напрямую.......
    а со вторым куском..........
    Код:
    Запрос.Текст = "ВЫБРАТЬ
    |	ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
    |ИЗ
    |	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    |ГДЕ
    |	ТоварыНаСкладахОстатки.Номенклатура.Код = &Ном";
    
    Ном =  ЭлементыФормы.Список.ТекущаяСтрока.Код;
    Запрос.УстановитьПараметр("Ном", Ном);
    Выборка23 = Запрос.Выполнить().Выбрать();
    Сообщить(Выборка23.Остаток);
    
    
    не сообщает остаток
  7. TopicStarter Overlay
    Muggsy
    Offline

    Muggsy одно ЭС

    Регистрация:
    10 сен 2008
    Сообщения:
    243
    Симпатии:
    0
    Баллы:
    26
    вот я сначала тоже подумала вложенным запросом, но поскольку еще не очень хорошо разбираюсь, решила сделать три запроса, чтоб просто и наглядно и без проблем, что не вышло.......
  8. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    И не сообщит))
    Выборка23 = Запрос.Выполнить().Выбрать();
    Пока выборка.Следующий() Цикл
    Сообщить(Выборка23.Остаток);
    КонецЦикла;

    Если Общие итоги.. то измени запрос на ОБЩИЕ и получи С выборки Итог.... или первую строку как удобней будет для тебя
  9. TopicStarter Overlay
    Muggsy
    Offline

    Muggsy одно ЭС

    Регистрация:
    10 сен 2008
    Сообщения:
    243
    Симпатии:
    0
    Баллы:
    26
    tirk
    хм а с итогами и вправду сработало :) спасибо
    хм о почему тогда
    Код:
    Запрос.Текст = "ВЫБРАТЬ
    |	ТоварыНаСкладахОстатки.Склад как склад,
    |	ТоварыНаСкладахОстатки.КоличествоОстаток как ост
    |ИЗ
    |	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    |ГДЕ
    |	ТоварыНаСкладахОстатки.Номенклатура = &Ном";
    Ном =  Строка(ЭлементыФормы.Список.ТекущаяСтрока.Наименование);
    Ном = Справочники.Номенклатура.НайтиПоНаименованию(Ном);
    Запрос.УстановитьПараметр("Ном", Ном);
    Выборка = Запрос.Выполнить().Выбрать();
    
    
    нормально отработало? (чисто научный интерес :unsure:
  10. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Если правильно понял тебя, то тут...
    Ты делаешь условие в запросе по ссылке объекта и передаешь ему ссылку...
    Все нормально... а вчем то должна была быть проблема....
    Вся загвозка была в том что ты хотел получить итоги по выборке не сформировав итогов в запросе и не осуществив Цикл для выборки
  11. TopicStarter Overlay
    Muggsy
    Offline

    Muggsy одно ЭС

    Регистрация:
    10 сен 2008
    Сообщения:
    243
    Симпатии:
    0
    Баллы:
    26
    тут я не получала итоги
    но Выборка.отс вернула мне остататок на складе...... или это из-за точго что склад еще был указан?
  12. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Если тебе надо было остаток номенклатуры тогда ее надо выбирать) А так тоьлко скалад.. должно было быть так:

    Запрос.Текст = "ВЫБРАТЬ
    | ТоварыНаСкладахОстатки.Склад как склад,
    | ТоварыНаСкладахОстатки.Номенклатура как Ном,
    | ТоварыНаСкладахОстатки.КоличествоОстаток как ост
    |ИЗ
    | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    |ГДЕ
    | ТоварыНаСкладахОстатки.Номенклатура = &Ном\";
    Результат
    Склад 10
    товар1 5
    товар2 5

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