Перейти к содержимому


псчезающие ед.изм. в "позиции счета"


Сообщений в теме: 12

#1 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 11 Февраль 2013 - 10:38

Такой момент.
В подтаблице "позиции счета" есть поле типа список "ед.изм.".
Существует вычисление, которое при выборе в поле "тип" из списка "прайс-лист" и при выборе из списка поля "наименование" позицию номенклатуры подставляет в поле "ед.изм." значение из поля "Номенклатура" "ед.изм." соответсвующее позиции номенклатуры.

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

Каким образом можно это исправить?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 11 Февраль 2013 - 10:48

Проверьте, не стоит ли какого-либо вычисления не отображение поля "ед.изм.". Если да - отключите его.

#3 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 11 Февраль 2013 - 15:55

Я не вижу такого вычисление.
Единственное, что работает с этим полем в этой таблице это вычисление, которое выполняется при изменении поля "наименование"

if ($line['Тип'] == "Прайс-лист")
  {
    if ($line['Позиция номенклатуры']['Категория'] == "Товар")
	  {
	    $sqlQuery = "SELECT `f1099` FROM `".DATA_TABLE."85` WHERE `f1096`='".$line['Позиция номенклатуры']['raw']."' AND `status`<>'2'";
	    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    $row = mysql_fetch_assoc($result);
	    $line['Цена'] = $row['f1099'];
	   
	    $sqlQuery = "SELECT `f1100` FROM `".DATA_TABLE."85` WHERE `f1096`='".$line['Позиция номенклатуры']['raw']."' AND `status`<>'2'";
	    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    $row = mysql_fetch_assoc($result);
	    $line['Наличие'] = $row['f1100'];
	  }
    else $line['Цена'] = $line['Позиция номенклатуры']['Стоимость работ'];
    $line['Описание'] = $line['Позиция номенклатуры']['Наименование'];
    $line['Ед. изм'] = $line['Позиция номенклатуры']['Ед. изм.'];

  }

Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 11 Февраль 2013 - 16:16

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

#5 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Февраль 2013 - 10:12

С техподдержкой пока выяснить решение не удалось. Параллельно здесь буду обсуждать...
Может быть проблема в условии выполнения вычисления? У меня стоит "сохранение в таблице", "отображение поля тип", "изменение поля позиция номенклатуры".
Такое происходит во всех остальных подчинённых таблицах в том числе.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Февраль 2013 - 11:10

Вы же писали выше что вычисление у вас только на изменение поля? Я ведь говорил что нужно отключить вычисления на отображение, если они есть и меняют при этом поле "ед.изм."

#7 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Февраль 2013 - 15:55

Я уже сам запутался.
Сейчас перестало отображаться поле тип и ввод номенклатуры. Ничего не делал такого сам...

В общем в "позиции счета" есть 3 вычисления: "сумма", "поле наименования", "данные номенклатуры".
"сумма" здесь вроде бы никак не участвует.

"поле наименование" срабатывает при "сохранение в таблице", "изменение поля тип", "отображение поля наименование"
Выключаю условие "отображение поля наименование" и происходит то же самое, что с "ед. изм" (исчезают после обновления страницы и сохранения в таблице)

if ($line['Тип'] == "Прайс-лист")
  {
    $sqlQuery = "SELECT * FROM `".FIELDS_TABLE."` WHERE `id`='1162'";
    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
    $row = mysql_fetch_assoc($result);
    $line['Наименование'] = get_control($row, $line, $line['Позиция номенклатуры']['Наименование']);
    //$line['Описание'] = '';
  }
else
  {
    $sqlQuery = "SELECT * FROM `".FIELDS_TABLE."` WHERE `id`='808'";
    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
    $row = mysql_fetch_assoc($result);
    $line['Наименование'] = get_control($row, $line, $line['Описание']);
    $line['Позиция номенклатуры'] = '';
  }

Вычисление "данные номенклатуры" стандартно выполняется при условии "изменения поля позиция номенклатуры"

if ($line['Тип'] == "Прайс-лист")
  {
    if ($line['Позиция номенклатуры']['Категория'] == "Товар")
	  {
	    $sqlQuery = "SELECT `f1099` FROM `".DATA_TABLE."85` WHERE `f1096`='".$line['Позиция номенклатуры']['raw']."' AND `status`<>'2'";
	    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    $row = mysql_fetch_assoc($result);
	    $line['Цена'] = $row['f1099'];
	  }
    else $line['Цена'] = $line['Позиция номенклатуры']['Стоимость работ'];
    $line['Описание'] = $line['Позиция номенклатуры']['Наименование'];
    $line['Ед. изм'] = $line['Позиция номенклатуры']['Ед. изм.'];

  }

Для того, чтобы выводились в таблице остатки на складе я добавил в вычисление "данные номенклатуры" следующий код:
$sqlQuery = "SELECT `f1100` FROM `".DATA_TABLE."85` WHERE `f1096`='".$line['Позиция номенклатуры']['raw']."' AND `status`<>'2'";
	    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    $row = mysql_fetch_assoc($result);
	    $line['Наличие'] = $row['f1100'];

Такая сейчас картина...
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Февраль 2013 - 16:12

Вы вообще вносили какие-то изменения в подтаблицу "Позиции счета"? Имею ввиду настройки самой таблицы, ее полей, вычислений? Если нет - зайдите на demo.clientbase.ru и проверьте, повторяется ли там эта ошибка. Если повторяется - напишите здесь или в заявке в техподдержку.

#9 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Февраль 2013 - 16:23

В Demo ед.изм. сохраняются как надо.
Изменение делал одно, вывод в таблице поля "Остаток", код написал выше.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#10 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Февраль 2013 - 16:32

$line['Ед. изм'] = $line['Позиция номенклатуры']['Ед. изм.'];

Это нормально, что в таблице "позиции счета" поле Ед. изм с одним набором единиц в списке, а в поле Ед. изм. таблицы Позиции номенклатуры список с другим набором единиц (из последнего берутся единицы при выборе из "прайс-листа")

Фактически это не правильно, должен быть один список с Ед.изм. из ОКЕИ. Может быть эта разница влияет как-то, т.к. список стандартный в позициях номенклатуры изменялся...
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Февраль 2013 - 16:57

А, ну вот собственно и разгадка. Списки не совпадают, именно поэтому после обновления страницы значение исчезает.

#12 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Февраль 2013 - 17:22

Так, хорошо.
Действительно в этом загвоздка.
Значит если я хочу добавить единицу измерения кв.м, то я добавляю её во все списки такого типа и в вычисления для определения кода ед.изм в документе (счет-фактура).
Верно?
Нельзя это поменять только в одном месте?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#13 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Февраль 2013 - 10:25

Да, так. Разместить в одном месте можно, если заменить список на таблицу-справочник, и тип поля (везде) на связь с этим справочником.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных