Как вывести на печать нужное количество ценников
По теме из базы знаний
- Печать этикеток со штрих-кодом, кодом товара и двумя типами цен: Розничная и Оптовая
- Печать этикеток со штрих-кодами для БП 2.0
- Печать наклеек с штрих кодом из документа "Заказ поставщика"
- Печать ценников номенклатуры с несколькими видами цен для 1С: Розница
- Печать трех цен в ценнике (или на этикетке)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну вот.
---------------------------------------
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Товар = Докум.Количество-1;
Для Сч = 1 По Товар Цикл
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли);
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
КонецЦикла;
-----------------------------
В принцепе на печать выходит нужное количество, только с начало по одному наименованию каждого товара, а потом нормально как и должно быть. Поэто пришлось добавлять " Докум.Количество-1". Буду признательно, если подскажите, как сделать.
---------------------------------------
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Товар = Докум.Количество-1;
Для Сч = 1 По Товар Цикл
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли);
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
КонецЦикла;
-----------------------------
В принцепе на печать выходит нужное количество, только с начало по одному наименованию каждого товара, а потом нормально как и должно быть. Поэто пришлось добавлять " Докум.Количество-1". Буду признательно, если подскажите, как сделать.
Выкладываю всю обработку. А может опять чего пропущу.
----------------------------
Перем ПечФирма;
Перем СтрокНаСтранице;
//******************************************************************************
Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) Экспорт
Столбик = ?(Столбик = 0, 1, ?(Столбик = 1, 2, ?(Столбик = 2, 3, 0)));
Ряд = ?(Столбик = 0, Ряд +1, Ряд);
Если Ряд > СтрокНаСтранице Тогда
Таб.НоваяСтраница();
Ряд = 1;
КонецЕсли;
Если Столбик =0 Тогда
Таб.ВывестиСекцию("Товар|Ценник");
Иначе
Таб.ПрисоединитьСекцию("Товар|Ценник");
КонецЕсли;
КонецПроцедуры // ДобавитьЦенник()
//******************************************************************************
Процедура Печать(Докум, Устройство=0, КолвоКопий=1)
ДокумВид = Докум.Вид();
Если ДокумВид = "ПереоценкаРозница" Тогда
ИдРознЦена = "ЦенаНовая";
ИначеЕсли ДокумВид = "ПоступлениеТМЦРозница" Тогда
ИдРознЦена = "РозничнаяЦена";
ИначеЕсли ДокумВид = "ПеремещениеТМЦ" Тогда
Если Докум.СкладПолучатель.РозничныйСклад = 1 Тогда
ИдРознЦена = "Цена";
Иначе
Предупреждение("Нельзя печатать ценники при перемещении
|ТМЦ на оптовый склад!", 60);
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
// Создание Таблицы для выходного отчета
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
ПечФирма = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование);
Столбик = 3;
Ряд = 0;
СтрокНаСтранице = 5;
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
//Оксана ----------------------------------------------------------------------------
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Товар = Докум.Количество-1;
Для Сч = 1 По Товар Цикл
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
КонецЦикла;
//Оксана --------------------------------------------------------------------------------
Если Устройство = 0 Тогда
Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников");
Таб.ТолькоПросмотр(1);
Таб.Показать("Товарные ценники","");
Иначе
Таб.ПараметрыСтраницы(,,,,,,,,,1,,);
Таб.КоличествоЭкземпляров(КолвоКопий);
Таб.Напечатать(0);
КонецЕсли;
КонецПроцедуры // Печать()
//******************************************************************************
Процедура ПоКнопкеПечать()
Если Док.Выбран() = 0 Тогда
Предупреждение("Не выбран документ!", 60);
Возврат;
КонецЕсли;
Печать(Док);
КонецПроцедуры // ПоКнопкеПечать()
//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
Докум = Форма.Параметр.Получить("Контекст");
Устройство = Форма.Параметр.Получить("Устройство");
КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");
Печать(Докум, Устройство, КолвоКопий);
Статусвозврата(0);
Возврат;
КонецЕсли;
КонецПроцедуры // ПриОткрытии()
----------------------------
Перем ПечФирма;
Перем СтрокНаСтранице;
//******************************************************************************
Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) Экспорт
Столбик = ?(Столбик = 0, 1, ?(Столбик = 1, 2, ?(Столбик = 2, 3, 0)));
Ряд = ?(Столбик = 0, Ряд +1, Ряд);
Если Ряд > СтрокНаСтранице Тогда
Таб.НоваяСтраница();
Ряд = 1;
КонецЕсли;
Если Столбик =0 Тогда
Таб.ВывестиСекцию("Товар|Ценник");
Иначе
Таб.ПрисоединитьСекцию("Товар|Ценник");
КонецЕсли;
КонецПроцедуры // ДобавитьЦенник()
//******************************************************************************
Процедура Печать(Докум, Устройство=0, КолвоКопий=1)
ДокумВид = Докум.Вид();
Если ДокумВид = "ПереоценкаРозница" Тогда
ИдРознЦена = "ЦенаНовая";
ИначеЕсли ДокумВид = "ПоступлениеТМЦРозница" Тогда
ИдРознЦена = "РозничнаяЦена";
ИначеЕсли ДокумВид = "ПеремещениеТМЦ" Тогда
Если Докум.СкладПолучатель.РозничныйСклад = 1 Тогда
ИдРознЦена = "Цена";
Иначе
Предупреждение("Нельзя печатать ценники при перемещении
|ТМЦ на оптовый склад!", 60);
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
// Создание Таблицы для выходного отчета
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
ПечФирма = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование);
Столбик = 3;
Ряд = 0;
СтрокНаСтранице = 5;
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
//Оксана ----------------------------------------------------------------------------
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Товар = Докум.Количество-1;
Для Сч = 1 По Товар Цикл
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
КонецЦикла;
//Оксана --------------------------------------------------------------------------------
Если Устройство = 0 Тогда
Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников");
Таб.ТолькоПросмотр(1);
Таб.Показать("Товарные ценники","");
Иначе
Таб.ПараметрыСтраницы(,,,,,,,,,1,,);
Таб.КоличествоЭкземпляров(КолвоКопий);
Таб.Напечатать(0);
КонецЕсли;
КонецПроцедуры // Печать()
//******************************************************************************
Процедура ПоКнопкеПечать()
Если Док.Выбран() = 0 Тогда
Предупреждение("Не выбран документ!", 60);
Возврат;
КонецЕсли;
Печать(Док);
КонецПроцедуры // ПоКнопкеПечать()
//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
Докум = Форма.Параметр.Получить("Контекст");
Устройство = Форма.Параметр.Получить("Устройство");
КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");
Печать(Докум, Устройство, КолвоКопий);
Статусвозврата(0);
Возврат;
КонецЕсли;
КонецПроцедуры // ПриОткрытии()
Все правильно у тебя два цикла по строкам, убери этот фрагмент
и будет счастье
Код |
---|
Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл
Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
глОживить(1);
КонецЦикла;
Показать полностью |
и будет счастье
Печатать то количество ценников, которое указано в документе.
Каков вопрос - таков ответ.
Что именно не получается?
Или вопрос на самом деле звучит так: надо напечатать ценники - я не знаю как - помогите забесплатно христа ради? ;-)
Каков вопрос - таков ответ.
Что именно не получается?
Или вопрос на самом деле звучит так: надо напечатать ценники - я не знаю как - помогите забесплатно христа ради? ;-)
А что тут непонятно? Например, в накладной 5 видов сумок с разным количеством, по приходу. На печать выводится 5 ценников (5 видов), а нужно, чтобы выводилось по количеству. Вообще-то, я уже сделала, но как-то коряво получилось. Сначало печатает по 1 экземпляру, а потом нужное количество.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот