15.02.2007, 10:56 | #1 |
Участник
|
Как можно изменить системное поле createddate. Это поле входит в состав группы системных полей Administration. Заполнение этих полей в большинстве таблиц происходит при включении соответствующей опции (свойсва в таблице). Фикр\сируются автор и дата модификаций записий таблицы. Как реализовано все это. Наверняка есть некая таблица или связанные таблицы, где есть соответствие номера таблицы, RecId, и все эти системные поля.....Как называется эта таблица и как можно изменить системное поле, например, дату создания записи средствами Аксапты?
|
|
15.02.2007, 11:04 | #2 |
Участник
|
Зачем?
Это поле замечательно именно тем, что оно системное. Если вам нужно свое поле - создайте его. Цитата:
Сообщение от DiNai
Фикр\сируются автор и дата модификаций записий таблицы. Как реализовано все это. Наверняка есть некая таблица или связанные таблицы, где есть соответствие номера таблицы, RecId, и все эти системные поля.....Как называется эта таблица и как можно изменить системное поле, например, дату создания записи средствами Аксапты?
AOT - это визуальное представление псевдотаблиц UtilElements и UtilIdElements. Для работы с AOT существует семейство классов Dict* (ищите, обсуждалось) RecId управляется таблицей SystemSequences (ищите, обсуждалось) Еще раз: Системное поле изменять не надо. Если нужно поля с вашим поведением, то создайте свое поле. Если вы все-таки хотите изменять, то http://axforum.info/forums/showthread.php?t=16743 |
|
15.02.2007, 11:33 | #3 |
Участник
|
Спасибо за внимание к моему вопросу. Я совершенно ясно предствавляю с какой целью реализована система визирования данных о модификакиях записей таблиц, тем более что истоки ИС западные, а там, как известно, выполнил операцию-поставил подпись таким образом. Удобно. Можно смотреть кто и когда сделал последние изменения.
Но изменение значения поля задумано мной для некоторых записей совсем не с целью, просто записи по дате создания должны попадать в некий отчетный период. Я не очень пока не очень хорошо освоила X++. И поэтому еще один вопрос: как можно присвоить полю createddate новое значение строкой переменной. Здесь речь идет о приведении типорв данных и конечно, нужно помнить, что перед и после добавления изменений в поле даты нужно изменить свойство этого поля, чтобы соответственно, можно было вносить обновить его. Поэтому выше я и спрашивала как реализована физически запись системных полей? Достаточно ли будет изменить поле только в таблице или нужно все таки менять в общей таблице, где хранятся все записи с номерами таблиц и заполненными системными полями? |
|
15.02.2007, 11:44 | #4 |
Участник
|
Цитата:
2. в поле с типом дата нельзя присвоить значение строковой переменной. либо пользуйтесь функцией str2date, либо записайте константу как литерал типа дата. Например, 31\01\2007 (без кавычек и апострофов) |
|
15.02.2007, 12:06 | #5 |
Участник
|
Но добавление поля, которое потом и не понадобится больше-тоже не выход......должно же быть еще какое-то решение.....сбросить на время запрет на изменение значения поля....
Можно проще открыть эту таблицу в Enterprice manadger....но для этого нужен прямой доступ к БД и конечно же не в рабочем режиме, когда с таблицей работают другие пользователи.....я так делала...и почему-то некая таблица DictonaryTable в памяти осталась...хотя в 3 версии Аксапты я ее не нахожу..... Вообщем спасибо за советы...будем пробовать дольше....пока надо найти выход как сбросить запрет на изменени значения поля....иначе эта затея бессмысленна с приведением типов.... |
|
15.02.2007, 12:19 | #6 |
Участник
|
Цитата:
А сейчас вы замените правильную информацию в системном поле своею... Потом вы правильную не вернете. |
|
15.02.2007, 13:53 | #7 |
Участник
|
Такого результата и нужно добится для порядка 30 записей.....нет уж оно и страшно..особенно если это делает сам администратор ИС.....
да, кстати а дата и автор мождификации при изменении даты создания тоже по идее заменятся....вот это загвоздка...... |
|