8.х Параметры запроса

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем 3dvol, 2 дек 2010.

  1. TopicStarter Overlay
    3dvol
    Offline

    3dvol

    Регистрация:
    22 авг 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Добрый день!
    Подскажите как это можно реализовать.
    Имеется документ РасходнаяНакладная. Из него вызывается форма выбора справочника Партии.
    Текст модуля формы выбора:
    Код:
    ЯчейкаОстаток = ОформлениеСтроки.Ячейки.Остаток;
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |	ОстаткиТМЦОстатки.ТМЦ,
    |	ОстаткиТМЦОстатки.Склад,
    |	ОстаткиТМЦОстатки.Партия,
    |	СУММА(ОстаткиТМЦОстатки.КоличествоОстаток) КАК КолОстаток
    |ИЗ
    |	РегистрНакопления.ОстаткиТМЦ.Остатки(&Момент, ) КАК ОстаткиТМЦОстатки
    |ГДЕ
    |	ОстаткиТМЦОстатки.ТМЦ = &ТМЦ
    |	И ОстаткиТМЦОстатки.Склад = &Склад
    |	И ОстаткиТМЦОстатки.Партия = &Партия
    |
    |СГРУППИРОВАТЬ ПО
    |	ОстаткиТМЦОстатки.ТМЦ,
    |	ОстаткиТМЦОстатки.Склад,
    |	ОстаткиТМЦОстатки.Партия";
    Запрос.УстановитьПараметр("ТМЦ",ДанныеСтроки.Владелец);
    Запрос.УстановитьПараметр("Партия",ДанныеСтроки.Приходная);
    Запрос.УстановитьПараметр("Склад",?????);
    Запрос.УстановитьПараметр("Момент",?????);
    Данные = Запрос.Выполнить().Выбрать();
    Данные.Следующий();
    ЯчейкаОстаток.УстановитьТекст(Данные.КолОстаток);
    
    
    Параметры Склад и Момент необходимо брать из документа РасходнаяНакладная, где Склад - реквизит документа, а момент - момент времени.
  2. Пеппи
    Offline

    Пеппи Опытный в 1С

    Регистрация:
    26 мар 2009
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    Еслиб вы еще конфигурацию указали, у меня такого справочника как партии нет.
  3. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    А так разве не работает:
    Код:
    Запрос.УстановитьПараметр("Склад", Склад);
    Запрос.УстановитьПараметр("Момент", МоментВремени());
    
    

    А-а не досмотрел, запрос вызывается в форме выбора.
    Покажите вызов формы выбора в документе.
  4. TopicStarter Overlay
    3dvol
    Offline

    3dvol

    Регистрация:
    22 авг 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Конфигурация не типовая - учебная. Создана с нуля.

    Если проще - то нужно из модуля подчиненной формы получить данные формы - владельца.

    Вызов формы выбора в документе:
    Код:
    Процедура ТоварыПартииНачалоВыбора(Элемент, СтандартнаяОбработка)
    //Создание формы для выбора партии
    СтандартнаяОбработка = Ложь;
    СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;
    Если СтрокаТЧ.ТМЦ.Пустая() Тогда
    Предупреждение("Необходимо выбрать товар");
    Иначе
    ФормаВыбора = Справочники.Партии.ПолучитьФормуВыбора("ФормаВыбораПартии",Элемент);
    ФормаВыбора.ПараметрОтборПоВладельцу = СтрокаТЧ.ТМЦ;
    ФормаВыбора.ОткрытьМодально();
    КонецЕсли;
    КонецПроцедуры
    
  5. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Добавьте в форму выбора справочника реквизит (например, "ДокументОбъект") с типом "ДокументОбъект.РасходнаяНакладная" и передавайте в него текущий объект документа:
    Код:
    Процедура ТоварыПартииНачалоВыбора(Элемент, СтандартнаяОбработка)
    //Создание формы для выбора партии
    СтандартнаяОбработка = Ложь;
    СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;
    Если СтрокаТЧ.ТМЦ.Пустая() Тогда
    Предупреждение("Необходимо выбрать товар");
    Иначе
    ФормаВыбора = Справочники.Партии.ПолучитьФормуВыбора("ФормаВыбораПартии",Элемент);
    ФормаВыбора.ПараметрОтборПоВладельцу = СтрокаТЧ.ТМЦ;
    ФормаВыбора.ДокументОбъект = ЭтотОбъект;
    ФормаВыбора.ОткрытьМодально();
    КонецЕсли;
    КонецПроцедуры
    
    P.S. Хотя правильней, наверно, не объект, а ссылку передавать.
  6. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Тип реквизита формы справочника (например, ПараметрДокумент) "ДокументСсылка.РасходнаяНакладная".

    Код:
    ФормаВыбора.ПараметрДокумент = Ссылка;
    
  7. TopicStarter Overlay
    3dvol
    Offline

    3dvol

    Регистрация:
    22 авг 2010
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Requin, спасибо все получилось.

    И еще вопрос: Как в сделать что-бы при открытии формы выбора отбирались партии с датой меньше чем момент времени документа?
  8. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Как-то так:
    Код:
    ФормаВыбора.СправочникСписок.Отбор.ДатаПартии.Значение = Дата;
    ФормаВыбора.СправочникСписок.Отбор.ДатаПартии.ВидСравнения = ВидСравнения.МеньшеИлиРавно;
    ФормаВыбора.СправочникСписок.Отбор.ДатаПартии.Использование = Истина;
    

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