Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Как для нового документа присвоить номеру документа его id из  _1sjourn (число прочтений - 3129 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Как для нового документа присвоить номеру документа его id из  _1sjourn
03. Июня 2010 :: 06:34
Печать  
Как для нового документа присвоить номеру документа его id из  _1sjourn  (база sql )
Возможно ли это сделать.

Как вижу я использовать ПриЗакрытии()
Код
Выбрать все
Процедура ПриЗакрытии
   Если ДокументНовый_и_Был_Сохранен() = 1 Тогда
	Сделать_update_НомерДок_по_iddoc();
   КонецЕсли;
.......
КонецПроцедуры 



Есть ли другие решения ?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #1 - 03. Июня 2010 :: 06:44
Печать  
а как в таком случае будешь поступать?
Код
Выбрать все
Док = СоздатьОбъект("Документ.ПриходнаяНакладная");
Док.Новый();
Док.Записать();
 

  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #2 - 03. Июня 2010 :: 06:46
Печать  
trad писал(а) 03. Июня 2010 :: 06:44:
а как в таком случае будешь поступать?
Код
Выбрать все
Док = СоздатьОбъект("Документ.ПриходнаяНакладная");
Док.Новый();
Док.Записать();
 


не годиться.
пользователь может вообще передумать сохранять документ.
Т.е. вполне может закрыть форму нового документа без сохранения.
  
Наверх
 
IP записан
 
Noy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 07. Ноября 2009
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #3 - 03. Июня 2010 :: 07:34
Печать  
В интерактивной работе в Призакрытии()
Если ТекущийДокумент.Выбран()=0 тогда
Записать();
номерДок=ПолучитьАйДИ(ТекущйиДокумент());
Записать();
КонецЕсли;

А при программной записи - или во все обработки добавлять такой код или делать класс-наследник с подправленным методом Записать();

Кстати, почему делаешь это в ПриЗакрытии(), а не в ПриЗаписи()?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #4 - 03. Июня 2010 :: 07:42
Печать  
Noy писал(а) 03. Июня 2010 :: 07:34:
В интерактивной работе в Призакрытии()
Если ТекущийДокумент.Выбран()=0 тогда
Записать();
номерДок=ПолучитьАйДИ(ТекущйиДокумент());
Записать();
КонецЕсли;

А при программной записи - или во все обработки добавлять такой код или делать класс-наследник с подправленным методом Записать();

Кстати, почему делаешь это в ПриЗакрытии(), а не в ПриЗаписи()?

Так при Записи у нового документа еще нет IDDOC

Документы - новые создаются только пользователями из формы документа
  
Наверх
 
IP записан
 
Noy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 07. Ноября 2009
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #5 - 03. Июня 2010 :: 07:51
Печать  
Z1 писал(а) 03. Июня 2010 :: 07:42:
Так при Записи у нового документа еще нет IDDOC


вот такой код:
Код
Выбрать все
Процедура ПриЗаписи()
	Мета=СоздатьОбъект("MetaDataWork");
	Сообщить(Мета.ЗначениеВСтрокуБД(ТекущийДокумент()));
	Записать();
	Сообщить(Мета.ЗначениеВСтрокуБД(ТекущийДокумент())); 



Дает такой результат:
Код
Выбрать все
     0  
  HIV4  

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #6 - 03. Июня 2010 :: 07:54
Печать  
об #5 этом не подумал
(Noy) Твой вариант пожалуй лучше чем в (0)
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #7 - 03. Июня 2010 :: 07:59
Печать  
Бред конечно, но вроде работает

Код
Выбрать все
CREARE TRIGGER [dbo].[SetDocNum]
   ON  [dbo].[_1SJOURN]
   INSTEAD OF INSERT
AS
BEGIN
	SET NOCOUNT ON

	declare @IDJOURNAL as int
	declare @IDDOC as char(9)
	declare @IDDOCDEF as int
	declare @APPCODE as smallint
	declare @DATE_TIME_IDDOC as char(23)
	declare @DNPREFIX as char(18)
	declare @DOCNO as char(10)
	declare @CLOSED as tinyint
	declare @ISMARK as bit
	declare @ACTCNT as int
	declare @VERSTAMP as int
	declare @DS51229 as tinyint
	declare @DS52779 as tinyint


	Select
		@IDJOURNAL = IDJOURNAL,
		@IDDOC = IDDOC,
		@IDDOCDEF = IDDOCDEF,
		@APPCODE = APPCODE,
		@DATE_TIME_IDDOC = DATE_TIME_IDDOC,
		@DNPREFIX = DNPREFIX,
		@DOCNO = DOCNO,
		@CLOSED = CLOSED,
		@ISMARK = ISMARK,
		@ACTCNT = ACTCNT,
		@VERSTAMP = VERSTAMP,
		@DS51229 = DS51229,
		@DS52779 = DS52779
	from
		inserted

	INSERT INTO
		_1SJOURN (IDJOURNAL, IDDOC, IDDOCDEF, APPCODE, DATE_TIME_IDDOC,
					DNPREFIX, DOCNO, CLOSED, ISMARK, ACTCNT, VERSTAMP, DS51229, DS52779)
	VALUES (@IDJOURNAL, @IDDOC, @IDDOCDEF, @APPCODE, @DATE_TIME_IDDOC,
			@DNPREFIX, @IDDOC, @CLOSED, @ISMARK, @ACTCNT, @VERSTAMP, @DS51229, @DS52779)
END
 

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #8 - 03. Июня 2010 :: 08:12
Печать  
(chessman) Задача того не стоит чтобы из-за этого тригером нагружать _1sjourn
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #9 - 03. Июня 2010 :: 10:18
Печать  
Z1 писал(а) 03. Июня 2010 :: 06:46:
trad писал(а) 03. Июня 2010 :: 06:44:
а как в таком случае будешь поступать?
Код
Выбрать все
Док = СоздатьОбъект("Документ.ПриходнаяНакладная");
Док.Новый();
Док.Записать();
 


не годиться.
пользователь может вообще передумать сохранять документ.
Т.е. вполне может закрыть форму нового документа без сохранения.

я про программную (без формы) запись нового документа.
  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #10 - 03. Июня 2010 :: 10:21
Печать  
trad писал(а) 03. Июня 2010 :: 10:18:
Z1 писал(а) 03. Июня 2010 :: 06:46:
trad писал(а) 03. Июня 2010 :: 06:44:
а как в таком случае будешь поступать?
Код
Выбрать все
Док = СоздатьОбъект("Документ.ПриходнаяНакладная");
Док.Новый();
Док.Записать();
 


не годиться.
пользователь может вообще передумать сохранять документ.
Т.е. вполне может закрыть форму нового документа без сохранения.

я про программную (без формы) запись нового документа.

никак.
Новые контакты менеджеров с Клиентами ( по специфике конкретной бд) могут создаваться только итерактивно.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #11 - 03. Июня 2010 :: 10:27
Печать  
если не секрет, а зачем вообще понадобился iddoc в docno
  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как для нового документа присвоить номеру документа его id из  _1sjourn
Ответ #12 - 03. Июня 2010 :: 10:33
Печать  
trad писал(а) 03. Июня 2010 :: 10:27:
если не секрет, а зачем вообще понадобился iddoc в docno

да не секрет.
обеспечить уникальность номеров.
Сами номера документов в этих документах вообще не используются ( тоже специфика ).
сейчас из-за УРБД иногда из-за сбоев номера дублируется и 1с не может сохранить документ. Т.к. к номерам нет доступа то сами менеджеры исправить ситуацию не могут.
Добавилось несколько филиалов коллизий стало больше вот
и вопрос возник.
я и думаю стоит ли делать  sub либо подумать и сделать что либо иное ( например просто галку Контроль уникальности убрать)
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать