Имя: Пароль:
1C
1С v8
Вывод Розничной цены из регистра сведений..
0 ГоловуСломала
 
16.12.19
06:24
Всем Доброго времени суток. Есть печатная форма, внешняя, печать из документа ПоступлениеТоваров, но вывести надо цену Розничную.
Делаю через Запрос:

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

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

И вот тут какая-то лажа... Если в документе только одна строка, то цену выводит правильно, а если например 2, то у всех номенклатурных позиций только одна цена
(я так поняла та которая позже всего установлена), т.е связки между номенклатурой и ценой видимо нет.
Не очень сильна в этом, но хотелось бы разобраться))) Помогите Товарищи!!!
1 shadow_sw
 
16.12.19
06:26
а зачем перебирать строки документа, когда надо перебирать результат запроса?
2 ГоловуСломала
 
16.12.19
06:32
Ну...Я так пыталась связать номенклатуру и цену
3 ГоловуСломала
 
16.12.19
06:32
Подскажите как будет правильно?
4 shadow_sw
 
16.12.19
06:39
Пока выборка.следующий() Цикл
//Здесь вывод всех параметров ценника
           ОбластьЦенника.Параметры.Цена2 = Выборка.Цена;
5 Krabb
 
16.12.19
06:42
(0)
Вот это:
ЗаполнитьЗначенияСвойств(ОбластьЦенника.Параметры,Выборка);
ОбластьЦенника.Параметры.Цена2 = Выборка.Цена;

Нужно писать вот в этом цикле:
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
6 shadow_sw
 
16.12.19
06:46
какая конфигурация? может не нужен запрос?
7 ГоловуСломала
 
16.12.19
06:46
Выборка = Запрос.Выполнить().Выбрать();
               Пока Выборка.Следующий() Цикл
               ЗаполнитьЗначенияСвойств(ОбластьЦенника.Параметры,Выборка);
                           ОбластьЦенника.Параметры.Цена2 = Выборка.Цена;
                           КонецЦикла;


Так?, Все равно выводит только одну цену
8 ГоловуСломала
 
16.12.19
06:47
Розница 2.2
9 hhhh
 
16.12.19
06:52
(7) забыла вывод ценника в таб. документ
10 ГоловуСломала
 
16.12.19
06:55
Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати) Экспорт
    
    ТабДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет ("Макет");
    
            

ОбластьЦенника  = Макет.ПолучитьОбласть("Строка|Столбец1");
ТекСтолбец = 0;
ТекСтрока  = 0;


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

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

                ТекСтолбец = ТекСтолбец + 1;

                Если ТекСтолбец = 3 Тогда
                    ТекСтрока  = ТекСтрока + 1;
                    ТекСтолбец = 0;
                КонецЕсли;

                Если ТекСтрока = 10 Тогда
                    ТекСтрока = 0;
                    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                КонецЕсли;              
                 

      
      
Возврат ТабДокумент;

КонецФункции//СформироватьПечатнуюФорму
11 ГоловуСломала
 
16.12.19
06:56
Но так совсем перестала работать... Теперь на номенклатуру ругается..
12 ГоловуСломала
 
16.12.19
06:56
Говорит что такого параметра у меня нет..
13 hhhh
 
16.12.19
07:01
(11) вы издеваетесь? еще раз

вывод ценника

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

нужно внутри цикла

Пока Выборка.Следующий() Цикл
14 ГоловуСломала
 
16.12.19
07:07
hhhh Спасибо Вам огромное!!!!!!
15 ГоловуСломала
 
16.12.19
07:07
И совсем не хотела издеваться!!!!!!!
16 ГоловуСломала
 
16.12.19
07:07
Все получилось!!!! Спасибо огромное ВСЕМ!!!!
Закон Брукера: Даже маленькая практика стоит большой теории.