Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема еще раз автоматическое открытие периода в ОУ (число прочтений - 3008 )
novichek
Экс-Участник


еще раз автоматическое открытие периода в ОУ
01. Декабря 2009 :: 06:15
Печать  
Обычно для этого делают запуск по расписаню конфы в монопольном режиме и "УстановитьТАна"...
Если ручками (в интерактивном режиме) то тоже запускаем монопольно и ...

Но вот интересно, если стоит УРБД, то н.р. в одной заходим монопольно, открываем период и создаем документ-пустышку в новом периоде. Выполняем обмен.. и вуаля во второй базе (даже если она в этот момент была открыта в режиме предприятия) период открыт, безо всяких пересчетов...

Так вот, хотелось бы услышать Ваши размышления, как это дело можно использовать и применить для программного открытия периода в полностью автоматическом режиме простым выполнением кода в "ПриНачалеРаботыСистемы".
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: еще раз автоматическое открытие периода в ОУ
Ответ #1 - 01. Декабря 2009 :: 06:28
Печать  
делаю так в ПриНачалеРаботыСистемы:
Код
Выбрать все
//Автоматический перенос точки актуальности
//Если РабочаяДата()>ПолучитьДатуТА() Тогда
лРабочаяДата = рс.ВыполнитьСкалярный("select getdate()");
Если лРабочаяДата>ПолучитьДатуТА() Тогда
	ОткрыватьПериод=1;
	Если НазваниеНабораПрав()="Администратор" Тогда
		Если Вопрос("Рабочая дата больше даты Точки Актуальности.
					|Перенести Точку Актуальности на рабочую дату?","Да+Нет")="Нет" Тогда
			ОткрыватьПериод=0;
		КонецЕсли;
	КонецЕсли;
	Если ОткрыватьПериод=1 Тогда
		Параметры=СоздатьОбъект("СписокЗначений");
		Если глЗагрузитьGhost()=1 Тогда
			Параметры.Установить("GhostService",глGhost);
		КонецЕсли;
		Док=СоздатьОбъект("Документ");
		Док.ОбратныйПорядок(1);
		Док.УстановитьФильтр(1,0,0,2,1,1);
		Если Док.ВыбратьДокументы(лРабочаяДата,лРабочаяДата)=1 Тогда
			Параметры.Установить("ТочкаУстановки",Док.ТекущийДокумент());
		Иначе
			Параметры.Установить("ТочкаУстановки",лРабочаяДата);
		КонецЕсли;
		ОткрытьФорму("Обработка",Параметры,КаталогИБ()+"ExtForms\Установка ТА.ert");
	КонецЕсли;
КонецЕсли; 


Установка ТА.ert можно скачать тут http://dev.citykirov.ru/
  

1&&2&&3
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: еще раз автоматическое открытие периода в ОУ
Ответ #2 - 01. Декабря 2009 :: 06:53
Печать  
trad, спасибо огромное Очень довольный (как раз собраемся эту базу переводить на SQL), а может, если не затруднит, объяснишь, в чем суть феномена открытия периода, в случае с УРБД, описанном выше?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: еще раз автоматическое открытие периода в ОУ
Ответ #3 - 01. Декабря 2009 :: 07:09
Печать  
Суть открытия периода в ОУ заключается в:
Попытке установки эксклюзивной блокировки на _1ssystem
И при ее успешности посчитать и добавить записи в rgXXX для нового периода для регистров остатков.
И делать это можно в разделенном режиме.

Что собственно и происходит в Установка ТА.ert и видимо при накате обновления в УРБД.
Почему в 77 нет штатного способа открытия периода в разделенном режиме - загадка.
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать