Доброго дня. Є потреба створювати рахунок форма замовлення загальний. Тобто, набивати один рахунок форму замовлення від різних постачальників, в новій версії Укр Складу з'явилась (стала активною)можливість вибору колонок, дуже дякую, в яку тепер можна додати ID постачальника потім відсортувати її по цьому ж ID і при перегляді отримуємо чудовий список (перед цим його відредагувавши додаванням поля[DataRep."LAST_POST_ID"]), але цей документ передається далі в руки людині яка не має уявлення кому який ID присвоєний. Так от як можна зробити щоб в друкованій формі замість ID було імя постачальника. Дуже дякую за програму.
Цитата: sergius200803 від Травень 08, 2019, 09:16:25
Доброго дня. Є потреба створювати рахунок форма замовлення загальний. Тобто, набивати один рахунок форму замовлення від різних постачальників, в новій версії Укр Складу з'явилась (стала активною)можливість вибору колонок, дуже дякую, в яку тепер можна додати ID постачальника потім відсортувати її по цьому ж ID і при перегляді отримуємо чудовий список (перед цим його відредагувавши додаванням поля[DataRep."LAST_POST_ID"]), але цей документ передається далі в руки людині яка не має уявлення кому який ID присвоєний. Так от як можна зробити щоб в друкованій формі замість ID було імя постачальника. Дуже дякую за програму.
Пока <DataRep."LAST_POST_ID"> это просто поле БД, к сожалению вы с Архива документов не сможете просмотреть документ, пока в программе не добавим переменную "ID поставщика", делать отдельную выборку к базе по каждому товару тоже нагрузка на базу, да и вообще не очень метод. Ниже, пример решения. Включаем для накладной Двойной проход, меню Отчет : Свойства : Два прохода. Далее в Коде добавляем делаем след:
TStringList slProizv;
String sProizvSelect;
// событие перед печатью заголовка
void Band1OnBeforePrint(TfrxComponent Sender)
{
// если не последний проход
if(Engine.FinalPass == false)
{
//заполняем SQL выборку
if(Band1.DataSet.RecNo != 0)
sProizvSelect = sProizvSelect + ",";
sProizvSelect = sProizvSelect + IntToStr(<DataRep."LAST_POST_ID">);
}
}
// событие перед печатью строки
void Band2OnBeforePrint(TfrxComponent Sender)
{
// если последний проход
if(Engine.FinalPass == true)
{
FIBQuery1.SQL.Text = "SELECT c.num, c.fio FROM client c WHERE num IN (" + sProizvSelect + ")";
FIBQuery1.Open();
slProizv.Clear();
//делаем выборку названий Производительней и заполняем массив
while(!FIBQuery1.Eof)
{
slProizv.Add(FIBQuery1.FieldByName("num").AsString + "=" + FIBQuery1.FieldByName("fio").AsString);
FIBQuery1.Next();
}
FIBQuery1.Close();
}
}
void RepOnStartReport(TfrxComponent Sender)
{
//создаем массив
slProizv = TStringList.Create();
}
void RepOnStopReport(TfrxComponent Sender)
{
//удаляем массив
slProizv.Free();
}
{
//очищаем переменную выборки
sProizvSelect = "";
//стандартый код накладной
if(<Товарно-транспортные> > 0)
Pole2.Visible = true;
else
Pole2.Visible = false;
if(<Скидка.Цифрами> != 0)
Pole1.Visible = true;
else
Pole1.Visible = false;
if(<Сумма.Акциз> > 0)
Child2.Visible = true;
else
Child2.Visible = false;
}
Далее в отчете показываем поставщика переменной: [slProizv.Values[<DataRep."LAST_POST_ID">]]
Файл печатной формы прикрепили
Дякую. Обов'язково спробую. Але боюсь в мене квола IT-хромосома :)
Цитата: sergius200803 від Травень 16, 2019, 17:22:47
Дякую. Обов'язково спробую. Але боюсь в мене квола IT-хромосома :)
:) для этого прикрепили пример готовой накладной, должны разобраться, если что не понятно, всегда спрашивайте.
Цитата: admin від Травень 17, 2019, 10:53:55
Цитата: sergius200803 від Травень 16, 2019, 17:22:47
Дякую. Обов'язково спробую. Але боюсь в мене квола IT-хромосома :)
:) для этого прикрепили пример готовой накладной, должны разобраться, если что не понятно, всегда спрашивайте.
підтягнув ваш файл через "Дизайнер/Завантажити з файлу як новий", відривається редактор https://ibb.co/r0tDz4Y (https://ibb.co/r0tDz4Y) тисну на перегляд і https://ibb.co/tQWKMHV
Этот шаблон сделали для Расходной, а в вашем документе нет этих переменных, просто удалите поля на которые будет ругаться + в Коде:
//стандартый код накладной
if(<Товарно-транспортные> > 0)
Pole2.Visible = true;
else
Pole2.Visible = false;
if(<Скидка.Цифрами> != 0)
Pole1.Visible = true;
else
Pole1.Visible = false;
if(<Сумма.Акциз> > 0)
Child2.Visible = true;
else
Child2.Visible = false;
Велике дякую. Розібрався. Тут є прикол, якщо відкривати документ з "архіву документів" подвійним кліком, то буде помилка, а якщо перш клікнути на "редагувати" а потім "продивитись" то все відображається як треба. Дякую. Гарного вам настрою.
Цитата: sergius200803 від Травень 23, 2019, 17:11:41
Велике дякую. Розібрався. Тут є прикол, якщо відкривати документ з "архіву документів" подвійним кліком, то буде помилка, а якщо перш клікнути на "редагувати" а потім "продивитись" то все відображається як треба. Дякую. Гарного вам настрою.
Все верно, выше же писали:
Цитата: admin від Травень 16, 2019, 12:28:17
Пока <DataRep."LAST_POST_ID"> это просто поле БД, к сожалению вы с Архива документов не сможете просмотреть документ, пока в программе не добавим переменную "ID поставщика"
В след. версии уже будет переменная [Товар.Поставщик.Номер]