Цена (склад получатель)
24.09.12, 21:54
Оратор
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0
Делаю внешнюю печ форму документа Внутр перемещение, мне необходимо получить в печ форму цену склада получателя, как правильно это сделать?
ЗапросПоТоварам = Новый Запрос; ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросПоТоварам.Текст = "ВЫБРАТЬ | Номенклатура, | ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар, | Номенклатура.Код КАК Код, | Номенклатура.Артикул КАК Артикул, | Количество, | ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Цена, | НомерСтроки, | 1 КАК ID |ИЗ | (ВЫБРАТЬ | Номенклатура КАК Номенклатура, | ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ЦенаВРознице КАК Цена, | СУММА(Количество) КАК Количество, | МИНИМУМ(НомерСтроки) КАК НомерСтроки | ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваров | ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокумент | СГРУППИРОВАТЬ ПО | Номенклатура, | ЕдиницаИзмерения, | ЦенаВРознице | ) КАК ВложенныйЗапросПоТоварам | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Номенклатура, | ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар, | Номенклатура.Код КАК Код, | Номенклатура.Артикул КАК Артикул, | Количество, | ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Цена, | НомерСтроки, | 2 КАК ID |ИЗ | (ВЫБРАТЬ | Номенклатура КАК Номенклатура, | ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Цена КАК Цена, | СУММА(Количество) КАК Количество, | МИНИМУМ(НомерСтроки) КАК НомерСтроки | ИЗ | Документ.ПеремещениеТоваров.ТоварыНаКомиссии КАК ПеремещениеТоваров | ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокумент | СГРУППИРОВАТЬ ПО | Номенклатура, | ЕдиницаИзмерения, | Цена | ) КАК ВложенныйЗапросПоТоварам | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Номенклатура, | ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)), | Номенклатура.Код КАК Код, | Номенклатура.Артикул КАК Артикул, | Количество, | Номенклатура.БазоваяЕдиницаИзмерения, | 0, | НомерСтроки, | 3 | |ИЗ | Документ.ПеремещениеТоваров.ВозвратнаяТара КАК ПеремещениеТоваров | |ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокумент | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Номенклатура, | ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)), | Номенклатура.Код КАК Код, | Номенклатура.Артикул КАК Артикул, | Количество, | ЕдиницаИзмерения, | 0, | НомерСтроки, | 4 | |ИЗ | Документ.ПеремещениеТоваров.БланкиСтрогогоУчета КАК ПеремещениеТоваров | |ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокумент | |УПОРЯДОЧИТЬ ПО | ID, | НомерСтроки"; ВыборкаСтрокТовары = ЗапросПоТоварам.Выполнить().Выбрать();
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3 1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1 1С 7.7 Торговля+Склад
24.09.12, 22:30
Оратор
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0
Цитата(logist @ 24.09.12, 23:06)
В чем собственно проблема? к чему приведен данный запрос? Конфигурация?
Проблема в создании правильного запроса, что б тип цены брался из склада получателя, соотвественно цена. Запрос приведен как исходник, вот что
уже из него получается (часть), конф УПП
перед запросом параметр добавил такой
ЗапросПоТоварам.УстановитьПараметр("ТипЦенПолучатель", СсылкаНаОбъект.СкладПолучатель.ТипЦенРозничнойТорговли.Ссылка);
и сам запрос:
|ВЫБРАТЬ | ПеремещениеТоваров.Номенклатура, | ВЫРАЗИТЬ(ПеремещениеТоваров.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)), | ПеремещениеТоваров.Номенклатура.Код, | ПеремещениеТоваров.Номенклатура.Артикул, | ПеремещениеТоваров.Количество, | ПеремещениеТоваров.ЕдиницаИзмерения, | 0, | ПеремещениеТоваров.НомерСтроки, | 4, | ЦеныНоменклатуры.Цена КАК ЦенаРозн, | ЦеныНоменклатуры.Номенклатура |ИЗ | Документ.ПеремещениеТоваров.БланкиСтрогогоУчета КАК ПеремещениеТоваров | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ПеремещениеТоваров.Номенклатура = ЦеныНоменклатуры.Номенклатура |ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокумент | И ЦеныНоменклатуры.ТипЦен.Ссылка = &ТипЦенПолучатель | |УПОРЯДОЧИТЬ ПО | ID, | ВложенныйЗапросПоТоварам.НомерСтроки";
Собственно задача заключается в получении цены склада получателя в печ форму, ну а потом умножить на кол-вл и получить сумму думаю смогу
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3 1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1 1С 7.7 Торговля+Склад
25.09.12, 1:24
Оратор
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0
Если делаю подобный запрос не в цикле то все нормально, получаю нужную цену, а вот если хочу в цикле выборкипервого запроса добавляю свой запрос, ничего не получается, а делаю вот такой вот запрос
Пока ВыборкаСтрокТовары.Следующий() Цикл Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда Сообщить(НСтр("ru='В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.';uk='В одному з рядків не заповнене значення номенклатури - рядок під час друку буде пропущений.'"), СтатусСообщения.Важное); Продолжить; КонецЕсли; ОбластьНомера.Параметры.НомерСтроки = НС; ТабДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда Если Колонка = "Артикул" Тогда ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул; Иначе ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код; КонецЕсли; ТабДокумент.Присоединить(ОбластьКодов); КонецЕсли; ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары); ЗапросПоЦенам = Новый Запрос; ЗапросПоЦенам.УстановитьПараметр("ТекущийДокументЦена", СсылкаНаОбъект); ЗапросПоЦенам.УстановитьПараметр("ТоварЦена", ВыборкаСтрокТовары.Товар); ЗапросПоЦенам.Текст = "ВЫБРАТЬ | ЦеныНоменклатуры.Цена КАК ЦенаРозн |ИЗ | Документ.ПеремещениеТоваров КАК ПеремещениеТоваров | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ПеремещениеТоваров.СкладПолучатель.ТипЦенРозничнойТорговли.Ссылка = ЦеныНоменклатуры.ТипЦен.Ссылка |ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокументЦена | И ЦеныНоменклатуры.Номенклатура.Ссылка = &ТоварЦена"; РезультатЗапроса = ЗапросПоЦенам.Выполнить(); Сообщить (РезультатЗапроса.ЦенаРозн); //ОбластьЦены.Параметры.Цена = РезультатЗапроса.ЦенаРозн; ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар); ТабДокумент.Присоединить(ОбластьДанных); // Если ЕстьЦена Тогда ТабДокумент.Присоединить(ОбластьЦены); ТабДокумент.Присоединить(ОбластьСуммы); // КонецЕсли; НС = НС + 1; КонецЦикла;
В цикле получается получать цену но ровно столько раз сколько у меня строк в документе, попытался условием сделать, но почему то оно не выполняется
ЗапросПоЦенам = Новый Запрос; ЗапросПоЦенам.УстановитьПараметр("ТекущийДокументЦена", СсылкаНаОбъект); ЗапросПоЦенам.УстановитьПараметр("ТоварЦена", ВыборкаСтрокТовары.Товар); ЗапросПоЦенам.Текст = "ВЫБРАТЬ | ЦеныНоменклатуры.Цена КАК ЦенаРозн, | ПеремещениеТоваров.Товары.( | Номенклатура | ) КАК Ном |ИЗ | Документ.ПеремещениеТоваров КАК ПеремещениеТоваров | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ПеремещениеТоваров.СкладПолучатель.ТипЦенРозничнойТорговли.Ссылка = ЦеныНоменклатуры.ТипЦен.Ссылка | И ПеремещениеТоваров.Товары.Номенклатура.Ссылка = ЦеныНоменклатуры.Номенклатура.Ссылка |ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокументЦена"; РезультатЗапроса = ЗапросПоЦенам.Выполнить().Выбрать(); Пока РезультатЗапроса.Следующий() Цикл Если ВыборкаСтрокТовары.Товар = РезультатЗапроса.Ном Тогда Сообщить (РезультатЗапроса.ЦенаРозн); КонецЕсли; КонецЦикла;
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3 1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1 1С 7.7 Торговля+Склад
28.09.12, 12:56
Завсегдатай
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0
Попробуйте вместо
Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
использовать
Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
Ну и соответсвенно подровнять запрос...
Второй момент:
Реквизит ТипЦенРозничнойТорговли в складе-получателе - заполнен?
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!