![]() |
Как получить дату и время создания документов,, введённые не вручную? Поставили задачу - получить дату и время создания документов. Те, что сделаны вручную - есть в журнале регистрации. А те, что созданы обработками загрузки - там нет. У меня есть пока что 2 варианта, как это сделать: 1. Найти каждую обработку и прописать в них запись в журнал регистрации. 2. Создать в базе таблицы из двух колонок(или трёх, не знаю, можно ли время отдельно вытащить. Id документа датавремя. Повесить на журнал триггер на insert, и писать в таблицу данные. Потом, где надо, вытаскивать время и дату. По ночам грузятся по несколько тысяч документов, добавлять их в журнал регистрации не хотелось-бы, а триггер не сильно притормозит? Есть-ли другие варианты? |
1. можно через [url]http://www.1cpp.ru/docum/icpp/html/Hooker.html[/url] 2. можно и так, по ночам тормозить не должно... |
Спасибо. Посмотрим.. |
[em]Есть-ли другие варианты?[/em] объявить [общий] реквизит[ы] для самих документов |
Да, общие реквизиты, дата и время. Тоже думал про них. А можно добавить строку, общий реквизит, и заполнять её в самой базе SQL? Тоже триггер нужен? Или может уже есть там хранимая процедура, в которой можно прописать заполнение этого реквизита? Вроде находил роцедуру выдачи номера документа... |
Пробую создать простейший триггер create trigger dbo.TestTrigger01 on Test_Trigger.dbo._1SJOURN for insert as if @@nestlevel > 1 return Select 1 При добавлении документа ничего не происходит, да и не должно. Но если убрать проверку if @@nestlevel > 1 return то 1С вылетает. Выяснилось, что @@nestlevel=3 Документ в базе не создаётся. Пробовал вставку в отдельную таблицу - результат тот же. Получается, но могу и ошибаться, триггер срабатывает в момент транзакции самой 1С. Поэтому вылетает.. |
(5) [url=http://www.forum.mista.ru/topic.php?id=387383]похожая тема...[/url] |
6 спасибо! SET NOCOUNT ON помог. Инсерт в другую таблицу работает и заполнение реквизита журнала тоже. Буду дальше копать, как заполнить именно нужную строку, а то непонятно, что сравниватьпри апдейте. create trigger dbo.TestTrigger01 on Test_Trigger.dbo._1SJOURN for insert as set nocount on Update _1SJOURN Set SP14='123' Where IdDoc=??? |
Нашёл. Работает. Спасибо. |
Когда же уже народ начнет читать книжки, прежде чем спрашивать на форуме? Из документации по скулю: [quote] Триггеры DML используют логические (концептуальные) таблицы deleted и inserted. По своей структуре они подобны таблице, на которой определен триггер, то есть таблице, к которой применяется действие пользователя. В таблицах deleted и inserted содержатся старые или новые значения строк, которые могут быть изменены действиями пользователя. Например, для запроса всех значений таблицы deleted можно использовать инструкцию: SELECT * FROM deleted Дополнительные сведения см. в разделе Использование таблиц inserted и deleted. [/quote] |
8-который не честный >Молодец! |
Текущее время: 04:00. Часовой пояс GMT +3. |