|
Еще вопрос про печать этикеток | ☑ | ||
---|---|---|---|---|
0
Rumpil
19.09.11
✎
12:15
|
В обработке Печать этикеток, когда заполняешь табличную часть товарами в колонку количество у всех товаров садится 1, при этом можно изменить количество копий только групповым методом с помощью соответствующего поля. Мне нужно следующее, чтобы количество копий для каждого товара было равно его текущему остатку на складе. Если вам не сложно тыкните хотя бы в какую часть нижеприведенного кода мне лезть ? Я предполагаю что нужно будет написать еще один запрос, получающий остатки и объединить его с остальными ?
Если ПечататьЦену И Не ЗначениеЗаполнено(ТипЦены) Тогда Сообщить ("Не указан тип цен!"); Возврат; КонецЕсли; ЗапросШтрихкоды = Новый Запрос; ЗапросШтрихкоды.УстановитьПараметр("ТипШтрихкода", ТипШтрихкода); Если ЗначениеЗаполнено(ЭлементыФормы.Номенклатура.Значение) Тогда ЗапросШтрихкоды.УстановитьПараметр("Владелец", ЭлементыФормы.Номенклатура.Значение); КонецЕсли; ЗапросШтрихкоды.УстановитьПараметр("ЕдиницаПоКлассификатору", Единица); ЗапросШтрихкоды.УстановитьПараметр("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка()); ЗапросШтрихкоды.УстановитьПараметр("Качество", Качество); ЗапросШтрихкоды.УстановитьПараметр("ТипШтрихкода", ТипШтрихкода); ЗапросШтрихкоды.УстановитьПараметр("ТипыШтрихкода", ЭлементыФормы.ТипШтрихкода.СписокВыбора); ЗапросШтрихкоды.УстановитьПараметр("ЭтоГруппа", Истина); ЗапросШтрихкоды.УстановитьПараметр("Дата", ТекущаяДата()); ЗапросШтрихкоды.УстановитьПараметр("Валюта", Валюта); Если НЕ ВВалютахЦен Тогда Если НЕ ЗначениеЗаполнено(Валюта)Тогда Предупреждение("Не указана валюта для заполнения цен!"); Возврат; КонецЕсли; КурсВалюты = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ТекущаяДата(), Новый Структура("Валюта", Валюта)); Если КурсВалюты.Курс = 0 тогда Предупреждение("Курс валюты отчета """ + Валюта.Наименование+""" на дату " + строка(ТекущаяДата())+" не определен или нулевой. Формирование этикеток невозможно."); Возврат; КонецЕсли; Если КурсВалюты.Кратность = 0 тогда Предупреждение("Кратность курса валюты отчета """ + Валюта.Наименование+""" на дату " + строка(ТекущаяДата())+" не определена или нулевая. Формирование этикеток невозможно."); Возврат; КонецЕсли; ЗапросШтрихкоды.УстановитьПараметр("КурсВалюты", КурсВалюты.Курс); КонецЕсли; Если ТипЦены.Рассчитывается Тогда ТипЦенБазовый = ТипЦены.БазовыйТипЦен; ПорядокОкругления = ТипЦены.ПорядокОкругления; ОкруглятьВБольшуюСторону = ТипЦены.ОкруглятьВБольшуюСторону; ПроцентСкидкиНаценки = ТипЦены.ПроцентСкидкиНаценки; ЗапросШтрихкоды.УстановитьПараметр("ТипЦены", ТипЦенБазовый); ЗапросШтрихкоды.УстановитьПараметр("ТипЦенРасчетный", ТипЦены); Иначе ЗапросШтрихкоды.УстановитьПараметр("ТипЦены", ТипЦены); КонецЕсли; Текст = "ВЫБРАТЬ | Штрихкоды.ТипШтрихкода, | Штрихкоды.Штрихкод,"; Текст = Текст + " | Штрихкоды.Владелец КАК Номенклатура, | Штрихкоды.ЕдиницаИзмерения, | Штрихкоды.ХарактеристикаНоменклатуры КАК Характеристика, | Штрихкоды.СерияНоменклатуры КАК Серия, | Штрихкоды.Качество, | ВЫБОР КОГДА Цены.Цена ЕСТЬ NULL | ИЛИ Цены.Цена = 0 ТОГДА 0 | ИНАЧЕ | Цены.Цена | КОНЕЦ КАК Цена, | Цены.ЕдиницаИзмерения КАК ЦеныЕдиница, | Цены.Валюта КАК Валюта, | Цены.ТипЦен КАК ТипЦен,"; Если ТипЦены.Рассчитывается Тогда Текст = Текст + " | Цены.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,"; КонецЕсли; Текст = Текст + " | 1 КАК Количество |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды | ЛЕВОЕ СОЕДИНЕНИЕ | (ВЫБРАТЬ | Рег.Номенклатура.Ссылка КАК Номенклатура, | Рег.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | Рег.ТипЦен.Ссылка КАК ТипЦен, | Рег.Цена КАК Цена, | Рег.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Рег.Валюта КАК Валюта"; Если ТипЦены.Рассчитывается Тогда Текст = Текст + ", | ВЫБОР КОГДА ВложенныйЗапрос.ПроцентСкидкиНаценки = 0 | ИЛИ ВложенныйЗапрос.ПроцентСкидкиНаценки ЕСТЬ NULL | ТОГДА | 0 | ИНАЧЕ | ВложенныйЗапрос.ПроцентСкидкиНаценки | КОНЕЦ КАК ПроцентСкидкиНаценки |"; КонецЕсли; Текст = Текст + " | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = (&ТипЦены)) КАК Рег"; Если ТипЦены.Рассчитывается Тогда Текст = Текст + " | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки, | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры | ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних | | ГДЕ | ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦенРасчетный) КАК ВложенныйЗапрос | ПО Рег.Номенклатура = ВложенныйЗапрос.Номенклатура И Рег.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры |"; КонецЕсли; Текст = Текст + " | ) КАК Цены | ПО(Штрихкоды.Владелец = Цены.Номенклатура) | И (Штрихкоды.ХарактеристикаНоменклатуры = Цены.ХарактеристикаНоменклатуры) | |ГДЕ | Штрихкоды.Владелец.ЭтоГруппа <> &ЭтоГруппа"; Если ЗначениеЗаполнено(ТипШтрихкода) Тогда Текст = Текст+" И | Штрихкоды.ТипШтрихкода = &ТипШтрихкода"; Иначе Текст = Текст+" И | Штрихкоды.ТипШтрихкода В (&ТипыШтрихкода)"; КонецЕсли; Если ТолькоВнутренние Тогда Текст = Текст + " И | ПОДСТРОКА(Штрихкоды.Штрихкод, 1, 1) = ""2"""; КонецЕсли; Если ЗначениеЗаполнено(ЭлементыФормы.Номенклатура.Значение) Тогда Текст = Текст+" И | Штрихкоды.Владелец "; Если ПолеВидаСравненияНоменклатура = ВидСравнения.Равно Тогда Текст = Текст+"="; ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеРавно Тогда Текст = Текст+"<>"; ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.ВСписке Тогда Текст = Текст+"В"; ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеВСписке Тогда Текст = Текст+"НЕ В"; ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.ВИерархии Тогда Текст = Текст+"В ИЕРАРХИИ"; ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеВИерархии Тогда Текст = Текст+"НЕ В ИЕРАРХИИ"; КонецЕсли; Текст = Текст+" (&Владелец)"; КонецЕсли; Если ЗначениеЗаполнено(Единица) Тогда Текст = Текст+" И | Штрихкоды.ЕдиницаИзмерения.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору"; КонецЕсли; Если Характеристики Тогда Текст = Текст+" И | Штрихкоды.ХарактеристикаНоменклатуры"; Если Не ХарактеристикиЗаполненные Тогда Текст = Текст+" = "; Иначе Текст = Текст+" <> "; КонецЕсли; Текст = Текст+"ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)"; КонецЕсли; Если Серии Тогда Текст = Текст+" И | Штрихкоды.СерияНоменклатуры"; Если Не СерииЗаполненные Тогда Текст = Текст+" = "; Иначе Текст = Текст+" <> "; КонецЕсли; Текст = Текст+"&ПустаяСерия"; КонецЕсли; Если ЗначениеЗаполнено(Качество) Тогда Текст = Текст+" И | Штрихкоды.Качество = &Качество"; КонецЕсли; Текст = Текст+" |УПОРЯДОЧИТЬ ПО | Владелец |АВТОУПОРЯДОЧИВАНИЕ"; ЗапросШтрихкоды.Текст = Текст; Товары = ЗапросШтрихкоды.Выполнить().Выгрузить(); Если ЗначениеЗаполнено(ТипЦены) Тогда Если ТипЦены.Рассчитывается Тогда ВалютаРасчетная = ТипЦены.ВалютаЦены; КонецЕсли; КонецЕсли; Курс = Неопределено; Кратность = Неопределено; Для Каждого СтрокаТовара ИЗ Товары Цикл Если ЗначениеЗаполнено(ТипЦены) Тогда Если ЗначениеЗаполнено(СтрокаТовара.Цена) Тогда Если ТипЦены.Рассчитывается Тогда ВалютаТекущая = СтрокаТовара.Валюта; ПолученнаяЦена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(СтрокаТовара.Цена, ВалютаТекущая, ВалютаРасчетная, Курс, Кратность, ТекущаяДата()); ПроцентСкидкиНаценки = ? (НЕ ЗначениеЗаполнено(СтрокаТовара.ПроцентСкидкиНаценки), ПроцентСкидкиНаценки, СтрокаТовара.ПроцентСкидкиНаценки); ПолученнаяЦена = ПолученнаяЦена * (1 + ПроцентСкидкиНаценки / 100); Иначе ПолученнаяЦена = СтрокаТовара.Цена; КонецЕсли; ПолученнаяЦена = Ценообразование.ОкруглитьЦену(ПолученнаяЦена, ТипЦены.ПорядокОкругления, ТипЦены.ОкруглятьВБольшуюСторону); СтрокаТовара.Цена = ПолученнаяЦена; Если ТипЦены.Рассчитывается Тогда СтрокаТовара.Валюта = ВалютаРасчетная; КонецЕсли; Если НЕ ВВалютахЦен И Валюта <> СтрокаТовара.Валюта Тогда ПолученнаяЦена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(СтрокаТовара.Цена, СтрокаТовара.Валюта, Валюта, 0, 1, ТекущаяДата()); СтрокаТовара.Цена = ПолученнаяЦена; СтрокаТовара.Валюта = Валюта; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Товары.ЗаполнитьЗначения(КоличествоКопий, "Количество"); Если Товары.Количество() = 0 тогда Предупреждение("По выбранным условиям отбора не найдено ни одного товара со штрихкодом."); КонецЕсли; |
|||
1
Rumpil
19.09.11
✎
12:27
|
апну ка
|
|||
2
Stim213
19.09.11
✎
12:28
|
| 1 КАК Количество
ни о чем не говорит? |
|||
3
Rumpil
19.09.11
✎
12:52
|
Понял, что значение "1" прописывается этом запросе. Мне теперь нужно написать запрос, кот. получает остатки и прицепить его в этим запросам ?
|
|||
4
Alex S D
19.09.11
✎
12:57
|
Ну да.. тут собственно 1 запрос, к нему и цепляй левый соединением
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |