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


Доп. действие


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

#1 arsenal

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

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 08 Апрель 2011 - 13:51

В одной из тем я уже задавал этот вопрос. Попросили вынести в отдельную тему. Поэтому повторяюсь.

Имеем таблицу 1 (перечень документов), таблицу 2 (перечень накладных с которыми передаются эти документы заказчику)) и таблицу 3 (перечень документов к накладной), которая подчинена таблице 2.
Есть ли принципиальная возможность запрограммировать доп. действие в таблице 1 следующего вида:
В таблице 1 отмечаем галочками документы, которые необходимо передать заказчику. Нажимаем "Доп. действие". При этом в таблице 2 создается новая накладная, а в подчиненной ей таблице 3 создается перечень отмеченных документов. После этого автоматически переходим в таблицу 3 для добавления дополнительных данных.


Вы уже ответили, что возможно.
Можете дать пример кода или объяснить в каком направлении двигаться. Какой функцией определять отмеченные галочками документы? и т.д.

#2 CbCoder

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

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

Отправлено 08 Апрель 2011 - 14:28

Просмотр сообщенияarsenal (8.4.2011, 14:51) писал:

Можете дать пример кода или объяснить в каком направлении двигаться.
Готовый код мы не предоставляем, т.к. это платная услуга. В каком направлении - зависит от того какой у Вас опыт в создании вычислений. В принципе доп.действие существенно не отличается от других вычислений (в поле, таблице, отчетах и т.д.), поэтому для начала нужно просто хорошо изучить документацию. Если что-то непонятно - задавайте более конкретные вопросы.

Просмотр сообщенияarsenal (8.4.2011, 14:51) писал:

Какой функцией определять отмеченные галочками документы? и т.д.
Этого не требуется. Код доп.действия выполняется отдельно для каждой выделенной строки, id текущей строки передается через "переменную" {ID} (см. документацию).

#3 arsenal

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

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 08 Апрель 2011 - 15:08

Просмотр сообщенияРазработчик (8.4.2011, 14:28) писал:

Этого не требуется. Код доп.действия выполняется отдельно для каждой выделенной строки, id текущей строки передается через "переменную" {ID} (см. документацию).

В том то и дело, что мне нужно выделить сразу несколько документов и отправить их в другую таблицу. Как в этом случае будет работать код? Или выделять по отдельности каждый документ и каждый раз нажимать "Доп. действие"? А если я все же отмечу несколько документов и нажму кнопку, то выдаст ошибку?

#4 CbCoder

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

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

Отправлено 08 Апрель 2011 - 15:33

Просмотр сообщенияarsenal (8.4.2011, 16:08) писал:

В том то и дело, что мне нужно выделить сразу несколько документов и отправить их в другую таблицу. Как в этом случае будет работать код? Или выделять по отдельности каждый документ и каждый раз нажимать "Доп. действие"? А если я все же отмечу несколько документов и нажму кнопку, то выдаст ошибку?
Вы видимо меня не поняли. Код выполняется отдельно для каждой выделенной строки, в порядке их очередности. Можете хоть всю таблицу выделить, это не имеет значения. Код будет выполнен для всех выделенных строк, но отдельно для каждой.

#5 arsenal

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

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 08 Апрель 2011 - 16:00

Просмотр сообщенияРазработчик (8.4.2011, 15:33) писал:

Вы видимо меня не поняли. Код выполняется отдельно для каждой выделенной строки, в порядке их очередности. Можете хоть всю таблицу выделить, это не имеет значения. Код будет выполнен для всех выделенных строк, но отдельно для каждой.
Спасибо, то что нужно. Будем сочинять код.

#6 arsenal

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

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 15 Апрель 2011 - 11:23

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

#7 CbCoder

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

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

Отправлено 15 Апрель 2011 - 11:29

Сделайте в начале кода проверку на наличие накладной, если ее нет - создаете. Все элементарно.

#8 arsenal

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

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 15 Апрель 2011 - 11:40

Просмотр сообщенияРазработчик (15.4.2011, 11:29) писал:

Сделайте в начале кода проверку на наличие накладной, если ее нет - создаете. Все элементарно.
Это понятно.
Непонятно по какому признаку контролировать наличие накладной. Таблица "Накладные" подчинена таблице "Договора". К каждому договору может быть несколько накладных. В голову приходит только создать дополнительное поле и туда заносить отметку о создании данной накладной к данному договору.
Или можно придумать что-то другое?

#9 CbCoder

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

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

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

Механизмы могут разными, на ваш выбор. Можно к примеру передавать переменную между записями, вернее между исполнением кода доп.действия для разных записей:

$doc = data_table("Документы","id={ID}"); // текущая выделенная запись в договорах
if (!$nakl_id) {  // проверяем была ли уже создана накладная или нет (переменная передается из предыдущего исполнения кода)
  // если нет - создаем; одновременно появляется переменная $nakl_id с id созданной накладной
  $nakl['Поле1'] = ...;
  ..... другие поля
  $nakl_id = insert_query($nakl,"Накладная");
}
// добавляем запись в подтаблицу Накладной:
$pod['Накладная'] = $nakl_id; // связь с род.таблицей
... другие поля
insert_query($pod,"Подтаблица накладной");


#10 arsenal

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

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 15 Апрель 2011 - 12:02

Спасибо.
Такой вариант первым пришел в голову, но я думал что при каждом исполнении кода переменные теряются.

#11 CbCoder

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

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

Отправлено 15 Апрель 2011 - 12:12

PHP скрипт всегда выполняется как единое целое, поэтому исчезнуть до его завершения они не могут. Максимум потерять область видимости, но для этого есть директива global.





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

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