0
Отвечен

выбор строки Н-У для разноски

Роман Шивалов 6 лет назад в Прочее обновлен Гашков Николай (Эксперт) 6 лет назад 9

Здравствуйте.

Сдельную оплату заносим в программу с помощью таблиц разноски в течении месяца два раза (аванс и разница между суммой за месяц и авансом). При этом расчетчикам надо, чтобы в ЛС за месяц была одна строка данного вида оплаты с суммой.

Сами данные загружаем из файлов.

При разноске появляется меню для выбора:

- только в пустые и новые строки

- с добавлением к суммам в ЛС

Мы выбираем, конечно, второе.

Однако, у части ЛС при разноске создаётся таки дополнительная строка.

Как можно это поправить?


Image 1652


Image 1651




Script

Ответ

Ответ

Пример функции для поиска нужной строки вида:

UserDefineCodeWithSumm(tn,extCode)
{
  //читаем ЛС
  if(LSRead(atoi(tn),0)!=1)
  {
    AmbaMessageBox("Не удалось прочитать ЛС и ТН="+to_string(tn),"Ошибка!!",MB_OK|MB_ICONERROR,0);
    return -1.;
  }   
  int rowkod[ROWMAX];
  int cntRow=poiskosnkod(Extern_To_Intern(atoi(extCode)),rowkod,0,0);
  //цикл по строкам вида
  for (int i = 0; i < cntRow; i++ )
  {
    double code = GetCode(rowkod[i]);
    double summ=0.;
    sumvid("=",code,0,summ);//сумма в текущем месяце
    //ищем только строки с суммами
    if(nabs(summ)<0.001)
     continue;
    //возвращаем точный внешний код первой "подходящей" строки
    return Intern_To_ExternE(code);
  }
  return -1.;
}

Таблица:


Функция расчета:

#return UserDefineCodeWithSumm(C_FIO,104);

Использовать в таблице так:

  • Принимаете данные из таблицы
  • нажимаете alt+f4 -> столбец "точный код вида" должен заполниться...
На рассмотрении

Добрый день.

А код подразделения, код совместительства и шифр затрат вы как заполняете?  Тоже из файла принимаете?

Однако, у части ЛС при разноске создаётся таки дополнительная строка.

Логично выложить сохраненку с таким ЛС...


З.ы. Можно вычислять точный код вида самостоятельно ( перед разноской)

ZPL_zplinfo_net(20180927_150829).cab

Я не против вычисления, просто не знаю как это должно выглядеть (что где прописывать), не делал еще такого

Всё, что загружается из файла, указано в таблице. Что пустое - не загружается. Т.е. всё, кроме совместительства, загружается.

На какой вид разносили сумму, в каком месяце? 

Нужна еще таблица с данными, которую разносили, чтобы воспроизвести ситуацию "задвоения"

Таблица с данными это файл, из которого загрузили в таблицу разноски? test.dbf

Если таблица это в таблица разноски, то я не знаю как её добавить.

Вид 3 (внешний код), месяц 8.

Нужна сама таблица разноски( в которую уже приняли данные из test.dbf)...

не умею переносить таблицы...
но я думаю хватит вычисления точного кода

Ответ

Пример функции для поиска нужной строки вида:

UserDefineCodeWithSumm(tn,extCode)
{
  //читаем ЛС
  if(LSRead(atoi(tn),0)!=1)
  {
    AmbaMessageBox("Не удалось прочитать ЛС и ТН="+to_string(tn),"Ошибка!!",MB_OK|MB_ICONERROR,0);
    return -1.;
  }   
  int rowkod[ROWMAX];
  int cntRow=poiskosnkod(Extern_To_Intern(atoi(extCode)),rowkod,0,0);
  //цикл по строкам вида
  for (int i = 0; i < cntRow; i++ )
  {
    double code = GetCode(rowkod[i]);
    double summ=0.;
    sumvid("=",code,0,summ);//сумма в текущем месяце
    //ищем только строки с суммами
    if(nabs(summ)<0.001)
     continue;
    //возвращаем точный внешний код первой "подходящей" строки
    return Intern_To_ExternE(code);
  }
  return -1.;
}

Таблица:


Функция расчета:

#return UserDefineCodeWithSumm(C_FIO,104);

Использовать в таблице так:

  • Принимаете данные из таблицы
  • нажимаете alt+f4 -> столбец "точный код вида" должен заполниться...

Спасибо

Про функцию расчета позабыл, один раз всего делал, да и без вызова пользовательской функции

Думаю, этого должно хватить для наших целей

Сервис поддержки клиентов работает на платформе UserEcho