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


Вопросы по вычислению состояния полей

вычисление поля

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

#1 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 02 Май 2014 - 17:37

Здравствуйте, Возникло два вопроса, никак не могу разобраться как реализовать. Имеется таблица Заявки с некоторыми полями.

Вопрос первый:

В поле (текст) "Время закрытия" данной таблицы при создании заявки вставляется текущее дата-время через следующее вычисление:

$line['Время закрытия'] = date("d.m.Y H:i");


Данное вычисление выполняется при условии Изменение поля > Статус.У поля "Статус" (список) имеется два значения - Исполняемая (по умолчанию) и Завершённая.Поле "Статус" принадлежит той же таблице Заявки.
Как подкорректировать код вычисления, чтобы при создании или редактировании, заявки, поле "Время закрытия" оставалось пустым и заполнялось только призначении Завершённая поля "Статус".

Вопрос второй:

Как было уже сказано, поле "Статус" имеет два значения - Исполняемая (по умолчанию) и Завершённая. Необходимо как то реализовать возможность едино-разово переключить значение Исполняемая на Завершённая

#2 CbCoder

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

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

Отправлено 03 Май 2014 - 15:49

1. Добавляете в код условие:
if ($line['Статус']=="Завершённая") $line['Время закрытия'] = date("d.m.Y H:i");

2. Добавляете проверку на старое значение:
if ($event['changed']['111']['old']=="Завершённая") $line['Статус'] = "Завершённая"; // 111 заменяете на id поля Статус

Т.е. если предыдущее значение было "Завершённая", код вернет его назад.

#3 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 04 Май 2014 - 13:40

Просмотр сообщенияCbCoder (03 Май 2014 - 15:49) писал:

1. Добавляете в код условие:
if ($line['Статус']=="Завершённая") $line['Время закрытия'] = date("d.m.Y H:i");

2. Добавляете проверку на старое значение:
if ($event['changed']['111']['old']=="Завершённая") $line['Статус'] = "Завершённая"; // 111 заменяете на id поля Статус

Т.е. если предыдущее значение было "Завершённая", код вернет его назад.

Всё отлично работает, спасибо!

А если немного усложнить и ввести ещё одну таблицу в логику исполнения?:

1. Имеется таблица Заказчики, в ней создаются записи - Карточки Заказчиков. В Карточке Заказчика есть поле (список) "Связана по услуге", со значением Нет по умолчанию. Этому полю в процессе работы присваивается то или иное значение его списка, исключая значение Нет.

2. В таблице Заявки, записи Заявка поле "Статус" имеет два значения - Исполняемая (по умолчанию) и Завершённая. Уже реализовано едино-разовое переключение значения Исполняемая на Завершённая (ваш код выше).

3. В записи таблицы Заявки есть поле (текст) "Заказчик" по которому она связывается с записями из таблицы Заказчики


Необходимо:

чтобы при едино-разовом переключении значения поля "Статус" (запись Заявка, таблица Заявки) на Завершённая, значение поля "Связана по услуге" записи другой таблицы (запись Карточка Заказчика, таблица Заказчики) сбрасывалось на Нет.

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

что тут нужно будет дописать?:
if ($event['changed']['1680']['old']=="Завершённая") $line['Статус'] = "Завершённая";

Сообщение отредактировал All_ex74: 04 Май 2014 - 13:43


#4 CbCoder

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

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

Отправлено 05 Май 2014 - 09:13

Цитата

как это можно реализовать, ведь записи находятся в разных таблицах и связаны между собой только по полю "Заказчик"

То что они в разных таблицах, большого значения не имеет, если есть поле связи - все изменения в связанной записи можно произвести через него:

if ($line['Статус']=="Завершённая") $line['Заказчик']['Связана по услуге'] = "Нет";


#5 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 05 Май 2014 - 10:50

Просмотр сообщенияCbCoder (05 Май 2014 - 09:13) писал:

То что они в разных таблицах, большого значения не имеет, если есть поле связи - все изменения в связанной записи можно произвести через него:

if ($line['Статус']=="Завершённая") $line['Заказчик']['Связана по услуге'] = "Нет";

Как всё просто оказывается! Я такое нагромоздил:

if ($line['Статус'] == "Завершённая")
{
$zvka = data_table("Заявки","id=$ID");
$zkzch = data_table("Заказчики","`status`<>'2' AND `Связана по услуге`=".$zvka['ID']);

{
    $zkzch['Связана по услуге'] = "Нет";
    $zkzch['ID'] = update_query($zkzch, "Заказчики");
}
}

и конечно же работало не так как хотелось бы, сбрасывалась на "Нет" вся таблица "Заказчики" скопом)

#6 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 05 Май 2014 - 11:44

Всё бы хорошо, но вот есть задачка, никак не пойму как реализовать взаимные зависимости полей. Уже весь ваш форум наизусть знаю):

В вышеупомянутой таблице Заказчики (запись Карточка Заказчика) есть поля (список): "Связана по услуге" и "Состояние"
Необходимо создать вычисление взаимозависимости этих полей от значений их списков. А именно:

если поле "Связана по услуге" равно значению Нет (значение по умолчанию) то у поля "Состояние" может быть только (непереключаемое) значение Свободна, а
если у поля "Связана по услуге" любое-другое (исключающее Нет) значение то у поля "Состояние" может быть только (непереключаемое) значение Связана

Как я понимаю вычисление нужно вставлять в поле "Связана по услуге" Сейчас у поля имеется только такое вычисление:

if ($line['Связана по услуге']=="Нет") $line['Состояние'] = "Свободна";

Сообщение отредактировал All_ex74: 07 Май 2014 - 18:38


#7 CbCoder

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

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

Отправлено 06 Май 2014 - 08:46

Все верно, осталось добавить только действие на иначе (else):

if ($line['Связана по услуге']=="Нет") $line['Карточка'] = "Свободна"; else $line['Карточка'] = "Связана";


#8 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 07 Май 2014 - 10:14

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

Назрела пара вопросов:

1. Следующая конструкция иногда даёт сбои (не всегда копируются данные):

В вышеупомянутой таблице Заказчики, в записи, у поля (список): "Состояние" два значения - Связана и Свободна (по умолчанию), так же имеется поле (связь) "Связана по услуге" со значением по умолчанию Нет.

Данное вычисление запускается на изменение поля "Состояние" в Связана и создаёт запись в таблице (№ 130) Заявки, копируя в неё поля из таблицы Заказчики


if ($line['Состояние'] == "Связана")
{
$zkzch = data_table("Заказчики","id=$ID");
$zvka = data_table("Заявки","`status`&lt;&gt;'2' AND `Тип услуги`=".$zkzch['ID']);
{
	$zvka['Город'] = $zkzch['Город']; // оба поля вида связь со списком Справочники &amp;gt; Города
	$zvka['Заказчик'] = $zkzch['ФИО']; // ФИО - текстовое поле таблицы Заказчики, Заказчик - поле (связь) таблицы Заявки, привязка к таблице Заказчики
	$zvka['Тип услуги'] = $zkzch['Связана по услуге']; // оба поля вида связь со списком Справочники &amp;gt; Виды услуг
	$zvka['ID'] = insert_query($zvka, "Заявки");

	data_update(130, array("f1750" =&gt; $line['ID']), "f1720='",$line['Связана по услуге'],"'");
}
}


...вопрос собственно в чём - как можно это описать компактнее и чтобы отрабатывалось без ошибок (иногда поля не копируются)?

2. Вопрос по таблице Заявки :

Имеем: таблица Заявки с полями в записях - "Город", "Заказчик" и "Тип услуги" (поля со связью, значения копируются из таблицы Заказчики при создании записи).
Ещё есть поле "Исполнитель" (связь с таблицей Исполнители) и "Статус" (список с тремя значениями: В ожидании, Исполняемая и Завершённая), собственно о них и пойдет речь...
..при создании записи в таблице Заявки значение поля "Исполнитель" по умолчанию - Нет, а поля "Статус" - В ожидании. Нужна следующая логика:

если полю "Исполнитель" присвоено значение Нет (значение по умолчанию при создании записи) то у поля "Статус" только значение В ожидании,
если полю "Исполнитель" присвоено любое-другое (исключающее Нет) значение то у поля "Статус" только значение: Исполняемая
НО если полю "Исполнитель" СНОВА (второй раз) было присвоено значение Нет то полю "Состояние" присвоиться уже окончательное и непереключаемое значение Завершённая

пока на поле "Статус" "висит" это вычисление


if ($line['Статус']=="В ожидании") $line['Исполнитель'] = "";
if ($event['changed']['1680']['old']=="Завершённая") $line['Статус'] = "Завершённая";
if ($line['Статус']=="Завершённая") $line['Заказчик']['Связана по услуге'] = "Нет";


...помогите реализовать данную конструкцию.

Сообщение отредактировал All_ex74: 07 Май 2014 - 18:37


#9 CbCoder

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

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

Отправлено 07 Май 2014 - 11:20

Во-первых, это слегка устаревший способ вычислений - data_table("Текущая таблица","id=$ID") уже года 2 как не используется, все данные текущей строки лежат в готовом массиве $line. Т.е. запрос "$zkzch = data_table("Заказчики","id=$ID"); " лишний, его можно смело удалить, а вместо $zkzch использовать $line.

Во-вторых, непонятно зачем вы делаете запрос "$zvka = data_table("Заявки","`status`<>'2' AND `Тип услуги`=".$zkzch['ID']);". Если для проверки наличия уже существующей заявки (чтобы повторно не добавить), то где собственно условие? Похоже, вы его случайно пропустили. Необходим добавить "if (!$zvka)" после запроса.

В-третьих, мне также не совсем ясен смысл последнего запроса data_update(130, ....). Что он выполняет?

В-четвертых (только сейчас заметил), "&lt;" и "&gt;" в теле запросов - это на форум так вставилось, или в коде вычисления также? Если да, то не мудрено что вызовет ошибку - это опечатка. "&lt;" замените на "<", а "&gt;" на ">".

#10 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 07 Май 2014 - 13:38

Просмотр сообщенияCbCoder (07 Май 2014 - 11:20) писал:

Во-первых, это слегка устаревший способ вычислений - data_table("Текущая таблица","id=$ID") уже года 2 как не используется, все данные текущей строки лежат в готовом массиве $line. Т.е. запрос "$zkzch = data_table("Заказчики","id=$ID"); " лишний, его можно смело удалить, а вместо $zkzch использовать $line.

Во-вторых, непонятно зачем вы делаете запрос "$zvka = data_table("Заявки","`status`<>'2' AND `Тип услуги`=".$zkzch['ID']);". Если для проверки наличия уже существующей заявки (чтобы повторно не добавить), то где собственно условие? Похоже, вы его случайно пропустили. Необходим добавить "if (!$zvka)" после запроса.

В-третьих, мне также не совсем ясен смысл последнего запроса data_update(130, ....). Что он выполняет?

В-четвертых (только сейчас заметил), "&amp;lt;" и "&amp;gt;" в теле запросов - это на форум так вставилось, или в коде вычисления также? Если да, то не мудрено что вызовет ошибку - это опечатка. "&amp;lt;" замените на "<", а "&amp;gt;" на ">".


Вот тупанул так тупанул) скопипастил последовательности...
Да, ошибки в создании и копировании пропали, но все же: (см.код)

if ($line['Состояние'] == "Связана")
{
$zkzch = data_table("Заказчики","id=$ID");
$zvka = data_table("Заявки","`status`<>'2' AND `Тип услуги`=".$zkzch['ID']);
if (!$zvka) //да пропустил, но почему то все равно добавляются записи с одинаковыми значениями...
{
    $zvka['Тип услуги'] = $zkzch['Связана по услуге'];
    $zvka['Город'] = $zkzch['Город'];
    $zvka['Заказчик'] = $zkzch['ФИО'];
    $zvka['ID'] = insert_query($zvka, "Заявки");

    data_update(130, array("f1750" => $line['ID']), "f1720='",$line['Связана по услуге'],"'"); 
     //130 - таблица Заказчики, f1750 - поле (связь) Заказчики... без этого вычисления не копируется поле ФИО в Заказчик, таблицы Заявки...
}
}


Сообщение отредактировал All_ex74: 07 Май 2014 - 13:49


#11 CbCoder

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

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

Отправлено 07 Май 2014 - 14:09

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

Распишете подробнее, какими полями (связи, разумеется) связаны между собой Заказчики и Заявки.

#12 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 07 Май 2014 - 18:33

Просмотр сообщенияCbCoder (07 Май 2014 - 14:09) писал:

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

Распишете подробнее, какими полями (связи, разумеется) связаны между собой Заказчики и Заявки.


))) рассмешили) Согласен с вами... Постараюсь донести смысл графически:

?зображение

Вычисление №1(поле Связана по услуге, связь с таб. Виды Услуг)
Устанавливает полю "Состояние" значение Свободна...


if ($line['Связана по услуге']=="Нет") $line['Состояние'] = "Свободна";
else $line['Состояние'] = "Связана";



Вычисление №2 (поле Состояние, список, таб. Заказчики)
Собственно, из за чего сыр-бор).. Исправил, убрав лишнее. Но перестали копироваться Город в Город, Связана по услуге в Тип услуги - при создании записи в таблице Заявки


if ($line['Состояние'] == "Связана") //поле Состояние, ранее было имя Карточка. Поменял везде в коде и описании...
{
		$zvka['Город'] = $line['Город']; //в обоих таблицах поле с одним имененем и связью с таб. Города... Перестало копироваться!
		$zvka['Заказчик'] = $line['ID'];
		$zvka['Тип услуги'] = $line['Связана по услуге']; //поля со связью с таб. Виды услуг... Перестало копироваться!
		insert_query($zvka,"Заявки", "id=$ID" );
}



Вычисление №3 (поле Закрыта, время, таб. Заявки)
Присваивает полю текущее время закрытия...


if ($line['Статус']=="Завершённая") $line['Закрыта'] = date("d.m.Y H:i");



Вычисление №4 (поле Статус, список, таб. Заявки)
Устанавливает полю "Связана" по услуге Карточки Заказчика (таб. Заказчики) значение Нет...


if ($event['changed']['1680']['old']=="Завершённая") $line['Статус'] = "Завершённая";
if ($line['Статус']=="Завершённая") $line['Заказчик']['Связана по услуге'] = "Нет";


Сообщение отредактировал All_ex74: 08 Май 2014 - 08:09


#13 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 08 Май 2014 - 14:44

Цитата

Согласен с вами... Постараюсь донести смысл графически
Зачёт, если бы все так заказчики излагали свои желания. Эх, мечта:). К слову в какой программе или (дополнении браузера) делали подобные графити?

#14 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 08 Май 2014 - 14:52

Просмотр сообщенияwondertalik (08 Май 2014 - 14:44) писал:


Зачёт, если бы все так заказчики излагали свои желания. Эх, мечта:)/>. К слову в какой программе или (дополнении браузера) делали подобные графити?

Да ничего сложного, за 15 минут оформил. Программа называется Snagit...

#15 CbCoder

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

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

Отправлено 08 Май 2014 - 15:40

Такая подробность была излишней, я просил лишь поле связи указать (зря видимо написал "подробнее", буду осторожен в дальнейшем)

Тем более, что перечитав ваше первое сообщение по данной задаче, сам уже сообразил где что (прошу прощения, лень сразу внимательно читать иногда).

В общем, итог такой (с моими комментариями, где что заменил):

if ($line['Состояние'] == "Связана")
{
	$zkzch = data_table("Заказчики","id=$ID");
	$zvka = data_table("Заявки","`status`<>'2' AND `Заказчик`=".$zkzch['ID']); // здесь должно быть поле Заказчик, а не Тип услуги, т.к. именно оно связывает Заявку с Заказчиком
	if (!$zvka)
	{
		$zvka['Тип услуги'] = $zkzch['Связана по услуге'];
		$zvka['Город'] = $zkzch['Город'];
		$zvka['Заказчик'] = $zkzch['ID']; // в поле связи копируем ID связанной записи, а не текст из связанного поля. Соответственно запрос "data_update(130, ..." уже не нужен
		$zvka['ID'] = insert_query($zvka, "Заявки");
	}
}

Или еще проще, с использованием $line (т.е. без излишнего запроса "$zkzch = data_table("Заказчики","id=$ID")"):

if ($line['Состояние'] == "Связана")
{
	$zvka = data_table("Заявки","`status`<>'2' AND `Заказчик`=".$line['ID']);
	if (!$zvka)
	{
		$zvka['Тип услуги'] = $line['Связана по услуге']['ID']; // в переменной $line поля связи разворачиваются, поэтому записано в 2 уровня
		$zvka['Город'] = $line['Город']['ID']; // аналогично
		$zvka['Заказчик'] = $line['ID'];
		$zvka['ID'] = insert_query($zvka, "Заявки");
	}
}


#16 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 08 Май 2014 - 16:22

Воспользовался вторым вариантом, все работает. Взял на заметку. Спасибо большое.
По второму вопросу подскажете?..

2. Вопрос по таблице Заявки :

Имеем: таблица Заявки с полями в записях - "Город", "Заказчик" и "Тип услуги" (поля со связью, значения копируются из таблицы Заказчики при создании записи - решено).
Ещё есть поле "Исполнитель" (связь с таблицей Исполнители) и "Статус" (список с тремя значениями: В ожидании, Исполняемая и Завершённая), собственно о них и пойдет речь...
..при создании записи в таблице Заявки значение поля "Исполнитель" по умолчанию - пусто, а поля "Статус" - В ожидании. Нужна следующая логика:

если полю "Исполнитель" присвоено значение пусто (значение по умолчанию при создании записи) то у поля "Статус" только значение В ожидании,
если полю "Исполнитель" присвоено любое-другое (исключающее пусто) значение то у поля "Статус" только значение: Исполняемая
НО если полю "Исполнитель" СНОВА (второй раз) было присвоено значение пусто то полю "Состояние" присвоиться уже окончательное и непереключаемое значение Завершённая

Сейчас на поле Статус висит это вычисление, но не отрабатывает правильно:


if ($line['Статус']=="В ожидании") $line['Исполнитель'] = "";
if ($event['changed']['1680']['old']=="Завершённая") $line['Статус'] = "Завершённая";
if ($line['Статус']=="Завершённая") $line['Заказчик']['Связана по услуге'] = "Нет";


...помогите реализовать данную конструкцию.

Сообщение отредактировал All_ex74: 08 Май 2014 - 17:08


#17 CbCoder

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

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

Отправлено 08 Май 2014 - 17:13

Первые 2 строки реализуются простым если-иначе (if-else), как в предыдущем аналогичном примере. Но насчет третьего условия (чтобы вот именно второй раз присваивалось) затрудняюсь дать ответ.

#18 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 09 Май 2014 - 10:49

Просмотр сообщенияAll_ex74 (08 Май 2014 - 16:22) писал:

Воспользовался вторым вариантом, все работает. Взял на заметку. Спасибо большое.
По второму вопросу подскажете?..

2. Вопрос по таблице Заявки :

Имеем: таблица Заявки с полями в записях - "Город", "Заказчик" и "Тип услуги" (поля со связью, значения копируются из таблицы Заказчики при создании записи - решено).
Ещё есть поле "Исполнитель" (связь с таблицей Исполнители) и "Статус" (список с тремя значениями: В ожидании, Исполняемая и Завершённая), собственно о них и пойдет речь...
..при создании записи в таблице Заявки значение поля "Исполнитель" по умолчанию - пусто, а поля "Статус" - В ожидании. Нужна следующая логика:

если полю "Исполнитель" присвоено значение пусто (значение по умолчанию при создании записи) то у поля "Статус" только значение В ожидании,
если полю "Исполнитель" присвоено любое-другое (исключающее пусто) значение то у поля "Статус" только значение: Исполняемая
НО если полю "Исполнитель" СНОВА (второй раз) было присвоено значение пусто то полю "Состояние" присвоиться уже окончательное и непереключаемое значение Завершённая

Сейчас на поле Статус висит это вычисление, но не отрабатывает правильно:


if ($line['Статус']=="В ожидании") $line['Исполнитель'] = "";
if ($event['changed']['1680']['old']=="Завершённая") $line['Статус'] = "Завершённая";
if ($line['Статус']=="Завершённая") $line['Заказчик']['Связана по услуге'] = "Нет";


...помогите реализовать данную конструкцию.

Просмотр сообщенияCbCoder (08 Май 2014 - 17:13) писал:

Первые 2 строки реализуются простым если-иначе (if-else), как в предыдущем аналогичном примере. Но насчет третьего условия (чтобы вот именно второй раз присваивалось) затрудняюсь дать ответ.

С праздником Вас. С Днем Победы!
Программисты создали конструкцию по условиям, пытаюсь подружить её с переменными:


$flag = false; // флаг присваивания первый раз

if (($line['Исполнитель']['ID']=="") && $flag) // если значение "пусто" присвоено не первый раз
	$line['Статус'] = "Завершённая";

else if ($line['Исполнитель']['ID']=="") // если значение "пусто" присвоено первый раз
{
	$line['Статус'] = "В ожидании";
	$flag = true;
}
else // если присвоено НЕ "пусто"
	$line['Статус'] = "Исполняемая";


Вешаю данное вычисление на поле Исполнитель (на изменение). Всё работает, но только не присваивается Завершённая, вроде всё верно...

Сообщение отредактировал All_ex74: 12 Май 2014 - 13:28


#19 CbCoder

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

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

Отправлено 10 Май 2014 - 14:06

Что-то намудрили ваши программисты, тут такой флаг не поможет. Можно проверять предыдущее значение ($event['changed']['1680']['old']), если оно было не пустым - значит это повторное присвоение пустой строки, а не начальное, соответственно статус ставится "завершенная".

#20 All_ex74

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

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 10 Май 2014 - 15:06

Просмотр сообщенияCbCoder (10 Май 2014 - 14:06) писал:

Что-то намудрили ваши программисты, тут такой флаг не поможет. Можно проверять предыдущее значение ($event['changed']['1680']['old']), если оно было не пустым - значит это повторное присвоение пустой строки, а не начальное, соответственно статус ставится "завершенная".

Согласен с Вами. Поэтому и не отрабатывает правильно. Вопрос выше снят - пересмотрел логику и счёл излишней.

Обнаружил ещё один косяк:

1. Таблица Заказчики: поля - Связана по услуге
2. Таблица Заявки: поля - Статус
3. Таблица Исполнители: - Карточка

В таблице Заявки есть ещё поле Заказчики (связь с таб. Заказчики) и поле Исполнители (связь с таб. Исполнители) через которые проводится действия с полями Связана по услуге и Карточка. Вычисление:


if ($line['Статус']=="Исполняемая") $line['Исполнитель']['Карточка'] = "Связана";
if ($line['Статус']=="Завершённая") $line['Заказчик']['Связана по услуге'] = "";
if ($line['Статус']=="Завершённая") $line['Исполнитель']['Карточка'] = "Свободна";


Всё работает пока по одной записи в т. Заказчики, т. Заявки и т. Исполнители, но как только пытаюсь добавить несколько записей, отработка вычисления проходит на всех записях сразу. Т.е. когда в одной из записей т. Заявки полю Статус присваиваем Завершённая, то поля Связана по услуге всех записей в т. Заказчики принимают значение "" и поля Карточка всех записей в т. Исполнители принимают значение Свободна...

Такое ощущение, что действие происходит не по ID, а по имени полей...

...так тоже пробовал


if ($line['Статус']=="Исполняемая") $line['Исполнитель']['Карточка'] = "Связана";
if ($line['Статус']=="Завершённая")
{
	  $line['Заказчик']['Связана по услуге'] = "";
	  $line['Исполнитель']['Карточка'] = "Свободна";
}


итог один и тот же!..

Сообщение отредактировал All_ex74: 11 Май 2014 - 10:47






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

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