Нужна помощь в обработке ценников

Тема в разделе "1C и всё что с ней связано", создана пользователем zxcd88, 1 авг 2009.

  1. zxcd88

    zxcd88 Гость

  2. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Изменить процедуру
    ДобавитьЦенник
     
  3. zxcd88

    zxcd88 Гость

    Дак я понимаю что её нужно изменить ))) Я в програмировании не очень силен просто. Все мои изменеия приводили к выводу двух одинаковых столбиков или вообще все выводилось в одну строчку. Напишите плиз как нужно его изменить. Я уже не знаю что делать просто.
     
  4. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Выделены изменения в процедурах
    Процедура ДобавитьЦенник(Таб, ПечФирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)

    //Столбик = ?(Столбик = 0,1,0); - эту строку убрать
    Ряд = ?(Столбик = 1, Ряд + 1, Ряд);


    Если Ряд > 2 Тогда // или сколько там рядов на странице
    Таб.НоваяСтраница();
    Ряд = 1;
    КонецЕсли;

    Если Столбик = 1 Тогда
    Таб.ВывестиСекцию("Товар|Ценник");
    Иначе
    Таб.ПрисоединитьСекцию("Товар|Ценник");
    КонецЕсли;

    КонецПроцедуры // ДобавитьЦенник()

    Процедура Сформировать(ТаблицаТоваров,ПечФирма)

    // Создание Таблицы для выходного отчета
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");

    Столбик = 0; КоличествоСтолбиков = 3; //или сколько нужно
    Ряд = 0;

    ТаблицаТоваров.ВыбратьСтроки();
    Пока ТаблицаТоваров.ПолучитьСтроку() = 1 Цикл
    Столбик = Столбик + 1;
    if Столбик > КоличествоСтолбиков then
    Столбик = 1;
    endif;

    ПечРозн = глФРМ(ТаблицаТоваров.Цена, ТаблицаТоваров.Валюта);
    ПечНаименование = ТаблицаТоваров.Товар;
    ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, Столбик, Ряд);
    глОживить(1);
    КонецЦикла;

    //Вызов выходного отчета в окно просмотра и редактирования.
    Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников");
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Товарные ценники","");

    КонецПроцедуры
     
  5. zxcd88

    zxcd88 Гость

    Всем спасибо за помащь!!!!! Все работает))))
     
  6. Sinyac

    Sinyac Гость

    Это все фигня
    во как надо:

    Перем ПечФирма;

    //******************************************************************************
    // ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)
    //
    // Параметры:
    // Таб - таблица, в которую выполняется вывод ценника
    // ПечНаименование - наименование ТМЦ
    // ПечЕдиница - единица измерения ТМЦ
    // ПечРозн - цена ТМЦ
    // Столбик - номер столбика.
    // Ряд - номер ряда
    //
    // Возвращаемое значение:
    // Нет.
    //
    // Описание:
    // Добавляет ценник в таблицу.
    //
    Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) Экспорт

    Столбик = ?(Столбик <= 3, Столбик , 0 );
    Ряд = ?(Столбик = 0, Ряд + 1, Ряд);

    Если Ряд > 4 Тогда
    Таб.НоваяСтраница();
    Ряд = 1;
    КонецЕсли;

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

    //******************************************************************************
    // Печать(Докум, Устройство=0, КолвоКопий=1)
    //
    // Параметры:
    // Докум - контекст выводимого документа (ПереоценкаРозница, ПоступлениеТМЦРозница),
    // Устройство - если 0, то вывод на экран, иначе - на принтер,
    // необязателен, по умолчанию - на экран,
    // КолвоКопий - количество копий, по умолчанию - 1.
    //
    // Возвращаемое значение:
    // Нет
    //
    // Описание:
    // Формирует таблицу с ценниками.
    //
    Процедура Печать(Докум, Устройство=0, КолвоКопий=1)

    ДокумВид = Докум.Вид();
    Если ДокумВид = "ПереоценкаРозница" Тогда
    ИдРознЦена = "ЦенаНовая";
    ИначеЕсли ДокумВид = "ПоступлениеТМЦРозница" Тогда
    ИдРознЦена = "РозничнаяЦена";
    ИначеЕсли ДокумВид = "ПеремещениеТМЦ" Тогда
    Если Докум.СкладПолучатель.РозничныйСклад = 1 Тогда
    ИдРознЦена = "Цена";
    Иначе
    Предупреждение("Нельзя печатать ценники при перемещении
    |ТМЦ на оптовый склад!", 60);
    Возврат;
    КонецЕсли;
    Иначе
    Возврат;
    КонецЕсли;

    // Создание Таблицы для выходного отчета
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");

    ПечФирма = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование);

    Столбик = 4;
    Ряд = 0;

    Докум.ВыбратьСтроки();
    Пока Докум.ПолучитьСтроку() = 1 Цикл
    Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
    Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
    Продолжить;
    КонецЕсли;
    КонецЕсли;
    ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
    ПечРозн = глФРМ(ВремЦена, глРубли); // печатаем по розничным ценам - поэтому глРубли
    ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "");
    ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд);
    глОживить(1);
    КонецЦикла;

    Если Устройство = 0 Тогда
    Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников");
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Товарные ценники","");
    Иначе
    Таб.ПараметрыСтраницы(,,,,,,,,,1,,);
    Таб.КоличествоЭкземпляров(КолвоКопий);
    Таб.Напечатать(0);
    КонецЕсли;

    КонецПроцедуры // Печать()

    //******************************************************************************
    // ПоКнопкеПечать()
    //
    // Параметры:
    // Нет
    //
    // Возвращаемое значение:
    // Нет
    //
    // Вызывается из формул элементов диалога:
    // Кнопка "Печать"
    //
    // Описание:
    //
    Процедура ПоКнопкеПечать()

    Если Док.Выбран() = 0 Тогда
    Предупреждение("Не выбран документ!", 60);
    Возврат;
    КонецЕсли;

    Печать(Док);

    КонецПроцедуры // ПоКнопкеПечать()

    //******************************************************************************
    // Предопределенная процедура
    //
    Процедура ПриОткрытии()

    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда

    Докум = Форма.Параметр.Получить("Контекст");
    Устройство = Форма.Параметр.Получить("Устройство");
    КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");

    Печать(Докум, Устройство, КолвоКопий);
    Статусвозврата(0);
    Возврат;
    КонецЕсли;

    КонецПроцедуры // ПриОткрытии()
     
  7. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    И где здесь ПРИНЦИПИАЛЬНЫЕ улучшения ?
     
Загрузка...

Поделиться этой страницей