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

Не нашел реквизитов Номер и Дата у документа реализация, поэтому решил выводить запросом.
Например запрос Номера:

Процедура ОтборРеализация()

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РеализацияТоваровУслуг.Номер
        |ИЗ
        |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |    РеализацияТоваровУслуг.Номер = &Номер";
    
    Запрос.УстановитьПараметр("Номер", Номер);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
        
        ЭлементыФормы.ПолеРеализацияТоваровУслуг.Значение = ВыборкаДетальныеЗаписи.Номер
        
    КонецЦикла;
    
КонецПроцедуры

И тут столкнулся с проблемой.
Если в запросе фигурирует и – или Дата – то в поле ничего не отражается.
Что я делаю не так?
Научите, пожалуйста.
kum12neon
Vzonder @ Сегодня, 17:57 необходимо зарегистрироваться для просмотра ссылки ,
ВАУ...
Батенька, да вам бы не мешало немного подучится. Например Гилева посмотреть (Spec8.ru).

// Получаем ссылку на документ
РеализацияОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Номер);
// Заганяем ссылку документа на форму
ЭлементыФормы.ПолеРеализацияТоваровУслуг.Значение = РеализацияОбъект;
// Ну и другие элементы документа (кроме табличных - они в цикле)
ЭлементыФормы.ПолеВидОперации.Значение = РеализацияОбъект.ВидОперации;
ЭлементыФормы.ПолеГрузополучатель.Значение = РеализацияОбъект.Грузополучатель;

и т.д.

Кстати - и "Номер" и "Дата" являются встроенными реквизитами и они дополнительно не добавляются, они там есть изначально во всех объектах.
Vzonder
kum12neon @ Вчера, 0:21 необходимо зарегистрироваться для просмотра ссылки ,

Огромное пасибо.

Все получилось.
Реализовал так:
Процедура ОтборРеализация()    

    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РеализацияТоваровУслуг.Номер
        |ИЗ
        |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |    РеализацияТоваровУслуг.Номер = &Номер";
    
    Запрос.УстановитьПараметр("Номер", Номер);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл              
        НомерДок = ВыборкаДетальныеЗаписи.Номер                 
    КонецЦикла;    
    
         ДатаРеализ = Дата;              
    
    РеализацияОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, ДатаРеализ);
    РеквизитПолеРеализацияТоваровУслуг = РеализацияОбъект;
    ЭлементыФормы.ПолеДатаРеализации.Значение = РеализацияОбъект.Дата;
    

КонецПроцедуры


Процедура Кнопка1Нажатие(Элемент)
    
         ДатаРеализ = Дата;
        
      РеализацияОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, ДатаРеализ);
             Если НЕ РеализацияОбъект.Пустая() Тогда
     РеализацияОбъект.ПолучитьОбъект().ПолучитьФорму("ФормаДокумента_AnytosЛогистикаПечать").Открыть();

КонецЕсли;
    
КонецПроцедуры


Посмотрите, пожалуйста, учитывая мой нулевой уровень, предполагаю, что мог криво написать.


Идея такая, если в полях корректно отражается номер реализации, то нажатием кнопки, вызывается форма документа РеализацияТоваровУслуг ФормаДокумента_AnytosЛогистикаПечат (специально облегченныя).
В форме ФормаДокумента_AnytosЛогистикаПечать в процедуре ПриОткрытии
    Дата = ТекущаяДата();
    Записать();
    УниверсальныеМеханизмы.ОткрытьФормуВыбораПечатныхФормОбъекта(ЭтотОбъект, ЭтаФорма);
    Закрыть();

Т.е. меняется Дата реализации на текущую и Выводится форма выбора печатных форм.





logist
Не понимаю, зачем вы запросом (или по другому) получаете реализацию, если уже знаете ее номер. Кстати это неправильный подход, т.к. если у вас нумерация в пределах года (или другой периодичности), то толку от поиска по номеру.
Логично запросом искать реализацию по ссылке через документ основание, тогда будет найдена точно нужная реализация.
Запрос = Новый Запрос("ВЫБРАТЬ
|    РеализацияТоваровУслуг.Номер,
|    РеализацияТоваровУслуг.Дата
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
|    РеализацияТоваровУслуг.Сделка = &Сделка");
Запрос.УстановитьПараметр("Сделка", СсылкаНаЗаказ);
Результат = Запрос.Выполнить().Выгрузить()[0];

ЗдесьБудетДата = Результат.Дата;
ЗдесьБудеНомер = Результат.Номер;

А судя по последнему посту вообще не понятно накой получать номер и дату реализации если надо открыть ее форму. Достаточно будет сделать так:
Запрос = Новый Запрос("ВЫБРАТЬ
                      |    РеализацияТоваровУслуг.Ссылка
                      |ИЗ
                      |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                      |ГДЕ
                      |    РеализацияТоваровУслуг.Сделка = &Сделка");
Запрос.УстановитьПараметр("Сделка", СсылкаНаЗаказ);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
    ФормаД = Выборка.Ссылка.ПолучитьФорму("ФормаДокумента_AnytosЛогистикаПечать");
    ФормаД.Открыть();
КонецЕсли;
candrey
Полностью согласен с logist .

Запрос тут ненужен. Создаешь реквизит. Накручиваешь простое условие на него и Все)))

Выводишь на форму этот реквизит.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.