Ошибка Автоинкремента в Форма вложенной сущности

Ответить
VladimirVa
Сообщения: 131
Зарегистрирован: 24 сен 2020, 14:57
Имя: Владимир
Откуда: Россия, Тюмень

Ошибка Автоинкремента в Форма вложенной сущности

Сообщение VladimirVa »

Во вложенной сущности есть поле автоинкремент Уникальное для каждой родительской записи, Раздельная нумерация для каждой родительской записи.
При добавлении из Форма вложенной сущности(В новом окне/Таблица) не отрабатывает Раздельная нумерация для каждой родительской записи, в форме всподставляется последнее значение+1 всех вложенных сущностей.
Катастрофически не хватает подстановки лидирующих нулей.
Аватара пользователя
support
Техническая поддержка
Сообщения: 8993
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Ошибка Автоинкремента в Форма вложенной сущности

Сообщение support »

К сожалению данное поле не поддерживается в форме вложенной сущности, так как по факту записи добавляются в базу только когда сохранятся основная форма.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Ошибка Автоинкремента в Форма вложенной сущности

Сообщение 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 поля Автоинкремент, только в квадратных скобках (считывает значение поля)
nruslan2
Сообщения: 2412
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: Ошибка Автоинкремента в Форма вложенной сущности

Сообщение nruslan2 »

по автоинкременту давно уже есть вот такая штука
viewtopic.php?p=21709#p21709
alex.rodr
Сообщения: 30
Зарегистрирован: 01 апр 2022, 10:32
Имя: Александр Родригес
Откуда: Россия, Санкт-Петербург

Re: Ошибка Автоинкремента в Форма вложенной сущности

Сообщение alex.rodr »

Не догоняю немного...

Поле "Автоинкремент" является заголовком в родительской сущности.

Проблема 1:
- Значение по умолчанию - 000001
- Шаг - 000001
Первая запись 000001.
Вторая - 2, Третья - 3,......и.т.д. без нулей

Проблема 2:
Почему-то при переходе в дочернюю запись - не отображается указанный префикс в заголовке

Вставил предложенный код.
Нумерация заработала.
Но осталась проблема 2 с префиксом в дочерней записи.
Мб как то допилить код и к черту эти дефолтные настройки поля.

Ну или создать 2 поля.
- Автоинкремент
- статический текст по шаблону (тут и указать и префикс и [id Автоинкремент])
Простая операция превращается в костыль(

Получается этот тип поля работает только если стандартная нумерация нужна....1,2,3,..
Аватара пользователя
support
Техническая поддержка
Сообщения: 8993
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Ошибка Автоинкремента в Форма вложенной сущности

Сообщение support »

Автоинкремент - это числовое поле. 000001 не допустимо.
Сформировать значения типа 000001 можно с помощью PHP кода и функции sprintf

Код: Выделить всё

sprintf("%'06d",'1');
В результате будет 6 замените на нужно количество нулей. Вместо 1 поставьте значения поля автоинкремент.
Аватара пользователя
Oleg
Сообщения: 468
Зарегистрирован: 26 окт 2018, 08:23
Имя: Олег Родионов
Откуда: Россия,Санкт-Петербург

Re: Ошибка Автоинкремента в Форма вложенной сущности

Сообщение Oleg »

можно так же воспользоваться "Префикс" "Суффикс"
Установка и настройка IP ATC Asterisk
alex.rodr
Сообщения: 30
Зарегистрирован: 01 апр 2022, 10:32
Имя: Александр Родригес
Откуда: Россия, Санкт-Петербург

Re: Ошибка Автоинкремента в Форма вложенной сущности

Сообщение alex.rodr »

support писал(а): 21 июн 2023, 11:11 Автоинкремент - это числовое поле. 000001 не допустимо.
Сформировать значения типа 000001 можно с помощью PHP кода и функции sprintf

Код: Выделить всё

sprintf("%'06d",'1');
В результате будет 6 замените на нужно количество нулей. Вместо 1 поставьте значения поля автоинкремент.
Понятно!
Предположим мы решили вопрос с нулями...

Как быть с отсутствующим префиксом при переходе в подчиненную сущность?
В заголовке отсутствует префикс.
Актоикремент с префиксом у меня является "Заголовком" в этой структуре.
alex.rodr
Сообщения: 30
Зарегистрирован: 01 апр 2022, 10:32
Имя: Александр Родригес
Откуда: Россия, Санкт-Петербург

Re: Ошибка Автоинкремента в Форма вложенной сущности

Сообщение alex.rodr »

Oleg писал(а): 21 июн 2023, 14:06 можно так же воспользоваться "Префикс" "Суффикс"
И как это поможет?)
Префикс и суффикс - это же не переменная.

По факту нужно, что б было ограничение для количества знаков в цифрах.

Предположим фиксированно есть 6 знаков.
Автоинкемент должен вписываться в эти 6 выделенных знаков с правой стороны.
т.е. не 1,2,3, а 000001,000002,000003,000004,...и.т.д.
Если в текущей нумерации отсутствует значение то 0!

Что будет когда запись дойдет хотя бы до 10,
если я буду использовать предложенный вами вариант и в суффикс и префикс вставлю нули? =)

Мб я чего то не знаю?
Расскажите.
Ответить