Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема АктивизироватьОбъект в общем журнале "штатно" не работает (число прочтений - 1523 )
kos
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 127
Местоположение: Киев
Зарегистрирован: 03. Марта 2013
АктивизироватьОбъект в общем журнале "штатно" не работает
24. Июня 2014 :: 13:38
Печать  
стандартный метод 1С "АктивизироватьОбъект"
( не для случая подобра, а в "ПриОткрытии()" )
не хочет работать.

Код
Выбрать все
перем ТекДок;

процедура ПриЗакрытии() //сохраним на будущее
   СохранитьЗначение("ТекДок",ТекущийДокумент);//выбранный
конецпроцедуры

Процедура ПриОткрытии() // при следующем открытии
   ТекДок= ВосстановитьЗначение("ТекДок");
   ... дальше всякие методы типа "УстановитьОтбор(...)"
    Если (НачалоИнтервала()>ТекДок.ДатаДок)ИЛИ(КонецИнтервала()<ТекДок.ДатаДок) Тогда
        УстановитьИнтервал(НачКвартала(ТекДок.ДатаДок),ПолучитьДатуТА());
    КонецЕсли;
    АктивизироватьОбъект(ТекДок); // если использовался "УстановитьОтбор()" - не работает, иначе - всё ОК
  // при этом ошибок никаких не выдает - молча "проглатывает " и всё.
конецпроцедуры

процедура ПослеОткрытия()
   АктивизироватьОбъект(ТекДок); // здесь работает даже в случае установки отборов
конецпроцедуры  



проверено в общем журнале
в других - не проверял

с чем связано - не понимаю.

Кто может объяснить: как заставить работать этот метод в "ПриОткрытии()" ???
(в журнале ничего не перехватывается, никаких объектов 1С++ не создается)
С чем это может быть связано?

1с++ 3.2.4.1
formex 2.0.5.109

P.S. в этой теме так и не была объяснена причина.
http://www.1cpp.ru/forum/YaBB.pl?num=1170764312
В моем случае - даже ошибок никаких не выдает.
  
Наверх
 
IP записан
 
varelchik_f
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Местоположение: Киев
Зарегистрирован: 10. Апреля 2014
Пол: Мужской
Re: АктивизироватьОбъект в общем журнале "штатно" не работает
Ответ #1 - 25. Июня 2014 :: 11:30
Печать  
Гоните батенька.
У меня все прекрасно работает.

Код
Выбрать все
Процедура ПриОткрытииИЛИПереоткрытииЖурнала(Режим)
	ЖурналПоДоговору = 0;
	Если Режим="Открытие" Тогда
		// Позиционируемся на последнем документе
		ТекДок= глВосстановитьЗначение(ИмяФормы, "ТекДок", ПолучитьПустоеЗначение("Документ"));
		Форма.Заголовок("",1);
	ИначеЕсли Режим="Переоткрытие" Тогда
		ТекДок = ТекущийДокумент;
	КонецЕсли;

	Если ПустоеЗначение(Форма.Параметр)=0 Тогда
		Если ВРег(ТипЗначенияСтр(Форма.Параметр))="ДОКУМЕНТ" Тогда
			// НАДО ПОЗИЦИОНИРОВАТЬСЯ НА ЭТОМ ДОКУМЕНТЕ
			Док = Форма.Параметр.ТекущийДокумент();
			Если Док.Выбран()>0 Тогда
				ТекДок = Док;
				ПриОткрытииЖурналаСПозиционированиемНаДокументе(Док);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	Попытка
		АктивизироватьОбъект(ТекДок);
	Исключение
	КонецПопытки;
КонецПроцедуры

Процедура ПриПовторномОткрытии()
	ПриОткрытииИЛИПереоткрытииЖурнала("Переоткрытие");
КонецПроцедуры

Процедура ПриОткрытии()
	НоваяФорма=глВернутьПараметрЛюбойПоКоду("НовыйЖурнал"+ИмяПользователя());
	Если ПустоеЗначение(НоваяФорма)=0 Тогда
		Если ЭтоSQL=1 Тогда
			Ответ=Вопрос("Открыть Новый Журнал?","Да+Нет",50);
			Если Ответ="Да" Тогда
				Если ОткрытьФорму("Отчет",Контекст,КаталогИБ()+"ExtForms\ОбщийЖурнал.ert")=1 Тогда
					СтатусВозврата(0);
					Возврат;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	Если ЭтоSQL=1 Тогда
		Запрос=глСоединение();
		ТекстЗапроса = "
		|If not Exists (Select *
		|		   From sysobjects
		|		   Where id = object_id('docsidd') and objectproperty(id, 'IsUserTable') = 1
		|	    )
		|   Create table docsidd (iddoc varchar(9) primary key not null
		|,
		|							stat int
		|			    )";

		Если Запрос.ВыполнитьСкалярный(ТекстЗапроса) = 0 Тогда
			ЗаписьЖурналаРегистрации("Инициализация docsidd: ошибка инициализации", "Инициализация", "Инициализация таблиц SQL", , 5);
		КонецЕсли;
		Текст="
		|select
		|	d.stat ЕстьДокументы
		|from docsidd d (nolock)
		|WHERE
		|d.iddoc=?
		|";
		Если Запрос.Подготовить(Текст)=0 Тогда
			Сообщить(Запрос.GetLastError());
			Возврат;
		КонецЕсли;
		Запрос.ДобПараметр(1,14,9,0);
	Иначе
		ИмяБД = КаталогИБ()+"baza.db3";
		база = СоздатьОбъект("SQLiteBase");
		база.Открыть(ИмяБД);
		Запрос = база.НовыйЗапрос();
		Запрос.ВыполнитьЗапрос("PRAGMA journal_mode=WAL");
		Текст="
		|Create  table if not EXISTS
		|docsidd (
		|   iddoc char(9) primary key not null,
		|   stat int
		|)";
		Запрос.ВыполнитьЗапрос(Текст);
		Текст="
		|select
		|	stat
		|from docsidd
		|WHERE
		|iddoc=@ВыбДок
		|";
		Запрос.Подготовить(Текст);
	КонецЕсли;
	// Определение был ли быстрый отбор
	Право=глПрава(НазваниеНабораПрав());
	ПриОткрытииИЛИПереоткрытииЖурнала("Открытие");


	ПравоКнСоздатьПару = глПолучитьПраво("ВидимостьКнопкиСоздатьПаруПеремещение");
	ПравоКнВозврат = глПолучитьПраво("ВидимостьКнопкиВозвратВЖурнале");
	Если НазваниеНабораПрав() = "Администратор" Тогда
		ПравоКнСоздатьПару = 1;
	КонецЕсли;

	//КурсОбмена=Константа.ОсновнаяВалюта.КурсОбмена.Получить(ТекущаяДата());
	Если глПолучитьПраво("БлокироватьРасход")=0 Тогда
		Форма.кн1.Видимость(0);
		Форма.кн2.Видимость(0);
	КонецЕсли;
	// будем отслеживать только реальные изменения этих реквизитов
КонецПроцедуры

 

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