• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы zxcd88
  • Дата начала
V

vbs

Изменить процедуру
ДобавитьЦенник
 
Z

zxcd88

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

vbs

Выделены изменения в процедурах
Процедура ДобавитьЦенник(Таб, ПечФирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)

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


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

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

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

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

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

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

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

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

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

КонецПроцедуры
 
Z

zxcd88

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

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);
Возврат;
КонецЕсли;

КонецПроцедуры // ПриОткрытии()
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!