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


Одно доп. действие на несколько записей


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

#1 SpectralEye

    Участник

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

Отправлено 08 Февраль 2016 - 11:08

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

Есть таблицы "Заявки, "Счета". В "Заявках" есть связь с таблицей "Счета" с автонумерацией при добавлении записи. Из вот этой темы:

http://clientbase.ru...58&st=0&p=28060

я хочу взять код добавления новой записи в таблицу "Счета" и проставление ID этой записи в Заявке. Вопрос в следующем: если я отмечу несколько записей в списке Заявок и выберу доп. действие "Создать счет", то скорее всего, каждой записи будет назначен новый счет. Нужно сделать так, чтобы всем отмеченным записям доп. действие проставило всего 1 новый ID счета.

Я предполагаю, что это можно сделать каким-то образом через global переменную или сессию, но тогда как отслеживать её состояние, чтобы эта переменная обновлялась? Либо, наверное, есть какой-то массив с отмеченными записями.

#2 CbCoder

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

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

Отправлено 08 Февраль 2016 - 11:56

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

#3 SpectralEye

    Участник

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

Отправлено 08 Февраль 2016 - 15:45

Просмотр сообщенияCbCoder (08 Февраль 2016 - 11:56) писал:

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

Принцип понятен. Непонятно следующее: переменная $nakl_id сохраняется с момента выполнения доп. действия с первой записью, а потом она остаётся или исчезает после выполнения доп. действия с последней записью? Если второй случай, тогда ничего не надо изобретать и можно не контролировать эту переменную, а просто использовать её при каждом нажатии кнопки "Доп. действие".

#4 CbCoder

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

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

Отправлено 08 Февраль 2016 - 17:24

А ссылка на тему где? Форум существует с 2009 года, с тех пор очень много могло изменится, причем кардинально. Например, я не вижу объявления переменной $nakl_id глобальной. Если код старый, он может и не работать, хотя сам алгоритм актуален. Лучше искать в наиболее свежих темах.

#5 SpectralEye

    Участник

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

Отправлено 09 Февраль 2016 - 09:16

Просмотр сообщенияCbCoder (08 Февраль 2016 - 17:24) писал:

А ссылка на тему где? Форум существует с 2009 года, с тех пор очень много могло изменится, причем кардинально. Например, я не вижу объявления переменной $nakl_id глобальной. Если код старый, он может и не работать, хотя сам алгоритм актуален. Лучше искать в наиболее свежих темах.
Вот та самая тема, действительно, 2011 год: http://clientbase.ru...582&st=0&p=6499

Поискал по разным словосочетаниям, я больше на эту тему полезного ничего не нашёл. Алгоритм и объявление переменной глобальной я понимаю, но как мне отследить изменение этой глобальной переменной? Если я выделю несколько записей, то, теоретически, при выполнении доп. действия с последней записью я должен сбросить переменную с номером счета, чтобы в следующий раз, при новой порции заявок создать новую накладную. Или я что-то неправильно говорю?

#6 CbCoder

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

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

Отправлено 09 Февраль 2016 - 09:27

Да, неправильно говорите. Любые переменные уничтожаются после работы скрипта, так что в конце сбрасывать ничего не надо, само пропадет. Создание же переменной в коде выше проверяется. По идее все что вам нужно - это добавить глобализацию $nakl_id, в 2011 году видимо еще не было ограничения области видимости в вычислениях, сейчас оно точно есть.

#7 SpectralEye

    Участник

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

Отправлено 09 Февраль 2016 - 09:39

Просмотр сообщенияCbCoder (09 Февраль 2016 - 09:27) писал:

Да, неправильно говорите. Любые переменные уничтожаются после работы скрипта, так что в конце сбрасывать ничего не надо, само пропадет. Создание же переменной в коде выше проверяется. По идее все что вам нужно - это добавить глобализацию $nakl_id, в 2011 году видимо еще не было ограничения области видимости в вычислениях, сейчас оно точно есть.
Да, спасибо, я как раз сейчас это попробовал, и всё получилось. Спасибо!





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

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