Страница 1 из 1
Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 11 фев 2023, 02:05
VladimirVa
Во вложенной сущности есть поле автоинкремент Уникальное для каждой родительской записи, Раздельная нумерация для каждой родительской записи.
При добавлении из Форма вложенной сущности(В новом окне/Таблица) не отрабатывает Раздельная нумерация для каждой родительской записи, в форме всподставляется последнее значение+1 всех вложенных сущностей.
Катастрофически не хватает подстановки лидирующих нулей.
Re: Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 11 фев 2023, 08:45
support
К сожалению данное поле не поддерживается в форме вложенной сущности, так как по факту записи добавляются в базу только когда сохранятся основная форма.
Re: Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 11 фев 2023, 09:03
Fait
VladimirVa писал(а): ↑11 фев 2023, 02:05
Во вложенной сущности есть поле автоинкремент Уникальное для каждой родительской записи, Раздельная нумерация для каждой родительской записи.
При добавлении из Форма вложенной сущности(В новом окне/Таблица) не отрабатывает Раздельная нумерация для каждой родительской записи, в форме всподставляется последнее значение+1 всех вложенных сущностей.
Катастрофически не хватает подстановки лидирующих нулей.
Это вовсе не ошибка.
Данную тему нужно в предложения занести
Вообще, подстановка нулей - вещь нужная.
Пока что есть два способа решить этот вопрос:
1) Вручную добавлять нули
2) Создать автоматизацию, срабатывающую при добавлении и изменении записи, которая будет сама расставлять нули.
В автоматизации вставь вот этот код:
Код: Выделить всё
$entity_id = 133; // ID сущности
$field_id = 3176; // ID поля Автоинкремент
$num_chars = 8; // Кол-во знаков, которое должно быть
$item_id = [id];
$val = [3176]; // ID поля Автоинкремент (значение)
$i = 0;
// Проверяем длину строки и, если она меньше заданной, то добавляем нули
if (strlen($val) < $num_chars) {
$kol = $num_chars - strlen($val);
while ($i < $kol) {
$out = $out.'0';
$i = $i + 1;
}
$out = $out.''.$val;
// Обновляем запись
$data = [
'field_'.$field_id => $out
];
items::update_by_id($entity_id,$item_id,$data);
}
В коде измени только 4 параметра, остальное не трогай:
$entity_id - ID сущности
$field_id - ID поля Автоинкремент
$num_chars - Кол-во знаков, которое должно быть в итоговой строке
$val - ID поля Автоинкремент, только в квадратных скобках (считывает значение поля)
Re: Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 11 фев 2023, 09:42
nruslan2
по автоинкременту давно уже есть вот такая штука
viewtopic.php?p=21709#p21709
Re: Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 21 июн 2023, 09:30
alex.rodr
Не догоняю немного...
Поле "Автоинкремент" является заголовком в родительской сущности.
Проблема 1:
- Значение по умолчанию - 000001
- Шаг - 000001
Первая запись 000001.
Вторая - 2, Третья - 3,......и.т.д. без нулей
Проблема 2:
Почему-то при переходе в дочернюю запись - не отображается указанный префикс в заголовке
Вставил предложенный код.
Нумерация заработала.
Но осталась проблема 2 с префиксом в дочерней записи.
Мб как то допилить код и к черту эти дефолтные настройки поля.
Ну или создать 2 поля.
- Автоинкремент
- статический текст по шаблону (тут и указать и префикс и [id Автоинкремент])
Простая операция превращается в костыль(
Получается этот тип поля работает только если стандартная нумерация нужна....1,2,3,..
Re: Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 21 июн 2023, 11:11
support
Автоинкремент - это числовое поле. 000001 не допустимо.
Сформировать значения типа 000001 можно с помощью PHP кода и функции sprintf
В результате будет
6 замените на нужно количество нулей. Вместо 1 поставьте значения поля автоинкремент.
Re: Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 21 июн 2023, 14:06
Oleg
можно так же воспользоваться "Префикс" "Суффикс"
Re: Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 22 июн 2023, 15:44
alex.rodr
support писал(а): ↑21 июн 2023, 11:11
Автоинкремент - это числовое поле. 000001 не допустимо.
Сформировать значения типа 000001 можно с помощью PHP кода и функции sprintf
В результате будет
6 замените на нужно количество нулей. Вместо 1 поставьте значения поля автоинкремент.
Понятно!
Предположим мы решили вопрос с нулями...
Как быть с отсутствующим префиксом при переходе в подчиненную сущность?
В заголовке отсутствует префикс.
Актоикремент с префиксом у меня является "Заголовком" в этой структуре.
Re: Ошибка Автоинкремента в Форма вложенной сущности
Добавлено: 22 июн 2023, 15:59
alex.rodr
Oleg писал(а): ↑21 июн 2023, 14:06
можно так же воспользоваться "Префикс" "Суффикс"
И как это поможет?)
Префикс и суффикс - это же не переменная.
По факту нужно, что б было ограничение для количества знаков в цифрах.
Предположим фиксированно есть 6 знаков.
Автоинкемент должен вписываться в эти 6 выделенных знаков с правой стороны.
т.е. не 1,2,3, а 000001,000002,000003,000004,...и.т.д.
Если в текущей нумерации отсутствует значение то 0!
Что будет когда запись дойдет хотя бы до 10,
если я буду использовать предложенный вами вариант и в суффикс и префикс вставлю нули? =)
Мб я чего то не знаю?
Расскажите.