Версия для печати темы (https://pro1c.org.ua/index.php?s=c57991c27f4f5c9c36b87e5d81303693&showtopic=52723)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Ссылка на Документ основание

Автор: jojojoba2 26.06.19, 16:00

Добрый день!

В 8.3 УПП в документе РеализацияТоваровИУслуг необходимо скопировать данные из табличной части ТОВАРЫ документа основания Заказ Покупателя. Написал запрос но не знаю как в запросе сослатся на данные каторые есть в документе основании (на товары каторые есть в табличной части Заказ Покупателя).

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

            ДобавленКомплект                         = Истина;
        КонецЦикла;
КонецЕсли;


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



 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 9
 

Автор: takefive 26.06.19, 16:44

jojojoba2 @ Сегодня, 16:00 * ,
нужно делать отбор в секции ГДЕ

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

Автор: jojojoba2 27.06.19, 8:28

takefive @ Вчера, 17:44 * ,
Почему то выдает ошибку

Ошибка при выполнении обработчика - 'ОбработкаЗаполнения'
по причине:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(5086)}: Ошибка при вызове метода контекста (Выполнить)

по причине:
{(12, 19)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
Товары.Ссылка <<?>>= &Ссылка

Автор: pablo 27.06.19, 8:38

В Вашем модуле доступен реквизит объекта с именем ЗаказПокупателя и типом неограниченная строка. исправьте имя параметра в описании процедуры и в ее тексте.

Автор: jojojoba2 27.06.19, 9:42

pablo @ Сегодня, 9:38 * ,


Спасибо!
Получилось!

Выкладываю код.


Процедура СкопироватьТовары2(ТабличнаяЧасть,ДокументОснование) 

ДокументОснование = Сделка;
ДатаОстатков = ОбщегоНазначения.ПолучитьДатуОстатков(ЭтотОбъект);

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Запрос.УстановитьПараметр("ПустойСклад", Справочники.Склады.ПустаяСсылка());
Запрос.УстановитьПараметр("ДатаОстатков", ДатаОстатков);

Запрос.Текст ="ВЫБРАТЬ
|    Товары.НомерСтроки,
|    Товары.Номенклатура,
|    Товары.Количество,
|    Товары.ЕдиницаИзмерения,
|    Товары.Коэффициент,
|    Товары.Цена,
|    Товары.ПроцентСкидкиНаценки,
|    Товары.Сумма
|ИЗ
|    Документ.ЗаказПокупателя.Товары КАК Товары
|ГДЕ
|    Товары.Ссылка = &ДокументОснование";

РезультатЗапроса = Запрос.Выполнить();



ДобавленКомплект = Ложь;
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл


НоваяСтрока = Товары.Добавить();
НоваяСтрока.Номенклатура = Выборка.НомерСтроки;
НоваяСтрока.Номенклатура = Выборка.Номенклатура;
НоваяСтрока.Количество = Выборка.Количество;    
НоваяСтрока.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
НоваяСтрока.Коэффициент = Выборка.Коэффициент;
НоваяСтрока.Цена = Выборка.Цена;
НоваяСтрока.ПроцентСкидкиНаценки = Выборка.ПроцентСкидкиНаценки;    
НоваяСтрока.Сумма = Выборка.Сумма;

КонецЦикла;

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


Всем спасибо!


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 9
 

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua