Автор Тема: заміна ID на імя  (Прочитано 164 раз)

0 Пользователей и 1 Гость просматривают эту тему.

sergius200803

  • я бачив мертвий піксель
  • Младший Пользователь
  • **
  • Сообщений: 36
  • Репутация: 1
  • Пол: Мужской
заміна ID на імя
« : Мая 08, 2019, 09:16:25 »
Доброго дня. Є потреба створювати рахунок форма замовлення загальний. Тобто, набивати один рахунок форму замовлення від різних постачальників, в новій версії Укр Складу з'явилась (стала активною)можливість вибору колонок, дуже дякую, в яку тепер можна додати ID постачальника потім відсортувати її по цьому ж ID і при перегляді отримуємо чудовий список (перед цим його відредагувавши додаванням поля[DataRep."LAST_POST_ID"]), але цей документ передається далі в руки людині яка не має уявлення кому який ID присвоєний. Так от як можна зробити щоб в друкованій формі замість ID було імя постачальника. Дуже дякую за програму.

admin

  • Админ
  • Помогающий
  • *****
  • Сообщений: 6566
  • Репутация: 1074
  • Пол: Мужской
    • УкрБланк, УкрСклад, УкрЗарплата, Унидок
Re: заміна ID на імя
« Ответ #1 : Мая 16, 2019, 12:28:17 »
Доброго дня. Є потреба створювати рахунок форма замовлення загальний. Тобто, набивати один рахунок форму замовлення від різних постачальників, в новій версії Укр Складу з'явилась (стала активною)можливість вибору колонок, дуже дякую, в яку тепер можна додати 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">]]

Файл печатной формы прикрепили


sergius200803

  • я бачив мертвий піксель
  • Младший Пользователь
  • **
  • Сообщений: 36
  • Репутация: 1
  • Пол: Мужской
Re: заміна ID на імя
« Ответ #2 : Мая 16, 2019, 17:22:47 »
Дякую. Обов'язково спробую. Але боюсь в мене квола IT-хромосома :)

admin

  • Админ
  • Помогающий
  • *****
  • Сообщений: 6566
  • Репутация: 1074
  • Пол: Мужской
    • УкрБланк, УкрСклад, УкрЗарплата, Унидок
Re: заміна ID на імя
« Ответ #3 : Мая 17, 2019, 10:53:55 »
Дякую. Обов'язково спробую. Але боюсь в мене квола IT-хромосома :)

:) для этого прикрепили пример готовой накладной, должны разобраться, если что не понятно, всегда спрашивайте.

sergius200803

  • я бачив мертвий піксель
  • Младший Пользователь
  • **
  • Сообщений: 36
  • Репутация: 1
  • Пол: Мужской
Re: заміна ID на імя
« Ответ #4 : Мая 23, 2019, 10:06:55 »
Дякую. Обов'язково спробую. Але боюсь в мене квола IT-хромосома :)

:) для этого прикрепили пример готовой накладной, должны разобраться, если что не понятно, всегда спрашивайте.

підтягнув ваш файл через  "Дизайнер/Завантажити з файлу як новий",  відривається редактор https://ibb.co/r0tDz4Y тисну на перегляд і https://ibb.co/tQWKMHV

admin

  • Админ
  • Помогающий
  • *****
  • Сообщений: 6566
  • Репутация: 1074
  • Пол: Мужской
    • УкрБланк, УкрСклад, УкрЗарплата, Унидок
Re: заміна ID на імя
« Ответ #5 : Мая 23, 2019, 12:07:56 »
Этот шаблон сделали для Расходной, а в вашем документе нет этих переменных, просто удалите поля на которые будет ругаться + в Коде:
  //стандартый код накладной                                                             
  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

  • я бачив мертвий піксель
  • Младший Пользователь
  • **
  • Сообщений: 36
  • Репутация: 1
  • Пол: Мужской
Re: заміна ID на імя
« Ответ #6 : Мая 23, 2019, 17:11:41 »
Велике дякую. Розібрався. Тут є прикол, якщо відкривати документ з "архіву документів" подвійним кліком, то буде помилка, а якщо перш клікнути на "редагувати" а потім "продивитись" то все відображається як треба. Дякую. Гарного вам настрою.

admin

  • Админ
  • Помогающий
  • *****
  • Сообщений: 6566
  • Репутация: 1074
  • Пол: Мужской
    • УкрБланк, УкрСклад, УкрЗарплата, Унидок
Re: заміна ID на імя
« Ответ #7 : Мая 23, 2019, 17:20:42 »
Велике дякую. Розібрався. Тут є прикол, якщо відкривати документ з "архіву документів" подвійним кліком, то буде помилка, а якщо перш клікнути на "редагувати" а потім "продивитись" то все відображається як треба. Дякую. Гарного вам настрою.

Все верно, выше же писали:

Пока <DataRep."LAST_POST_ID"> это просто поле БД, к сожалению вы с Архива документов не сможете просмотреть документ, пока в программе не добавим переменную "ID поставщика"

В след. версии уже будет переменная [Товар.Поставщик.Номер]