Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Класс Версии (для получения версий из CVS) (число прочтений - 7308 )
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Класс Версии (для получения версий из CVS)
22. Января 2007 :: 12:15
Печать  
Имеет зависимость от класса Парсинг http://www.1cpp.ru/forum/YaBB.pl?num=1169468250
Текст класса:
Код
Выбрать все
Функция GetThis(Конт) Возврат Конт; КонецФункции

Процедура Конструктор();
КонецПроцедуры

Функция ПолучитьCVSКаталог(Каталог) Экспорт;
	Т=СоздатьОбъект("ТаблицаЗначений");
	Т.НоваяКолонка("ФайлКаталог");
	Т.НоваяКолонка("Имя");
	Т.НоваяКолонка("Версия");
	Т.НоваяКолонка("ДатаВремя");
	Т.НоваяКолонка("Признак");

	Парсинг=СоздатьОбъект("Парсинг");

	Текст=СоздатьОбъект("Текст");
	ИмяФайла=Каталог+"\CVS\Entries";
	Если ФС.СуществуетФайл(ИмяФайла)=0 Тогда
		Возврат -1;
	КонецЕсли;
	ИмяВременногоФайла="c:\temp.txt";
	ФС.КопироватьФайл(ИмяФайла,ИмяВременногоФайла,0);
	Текст.Открыть(ИмяВременногоФайла);

	Для Счетчик=1 По Текст.КоличествоСтрок() Цикл
		СтрочкаТекста=Текст.ПолучитьСтроку(Счетчик);
		СЗ=Парсинг.ЕдиничноОтпарсить(СтрочкаТекста,"/");
		Если СЗ.РазмерСписка()<>5 Тогда
			Продолжить;
		КонецЕсли;
		Т.НоваяСтрока();
		Т.ФайлКаталог=СЗ.ПолучитьЗначение(1);
		Т.Имя=СЗ.ПолучитьЗначение(2);
		Т.Версия=СЗ.ПолучитьЗначение(3);
		Т.ДатаВремя=СЗ.ПолучитьЗначение(4);
		Т.Признак=СЗ.ПолучитьЗначение(5);
	КонецЦикла;
Возврат Т;
КонецФункции

Функция ПутьККлассам() Экспорт;
 Сам=GetThis(Контекст);
 КаталогКлассов=Сам.ПолучитьПуть();
 Счетчик=СтрДлина(КаталогКлассов);
  Пока Счетчик>1 Цикл
  Если Сред(КаталогКлассов,Счетчик,1)="\" Тогда
   КаталогКлассов=Сред(КаталогКлассов,1,Счетчик);
   Прервать;
 КонецЕсли;
 Счетчик=Счетчик-1;
 КонецЦикла;
Возврат КаталогКлассов;
КонецФункции

Функция ПолучитьВерсию(ИмяКласса) Экспорт;
 //Предполагается имя класса оно же имя файла
 ИмяФайла=ИмяКласса+".txt";
 Т=ПолучитьCVSКаталог(ПутьККлассам());
 Т.ВыбратьСтроки();
 Пока Т.ПолучитьСтроку()=1 Цикл
  Если СокрЛП(Т.Имя)=СокрЛП(ИмяФайла) Тогда
   Возврат СокрЛП(Т.Версия);
  КонецЕсли;
 КонецЦикла;
  Возврат "Ошибка получения";
КонецФункции

 



Способ использования:
Код
Выбрать все
	Сообщить("Версия класса Парсинг = "+Версия.ПолучитьВерсию("Парсинг"));
 



Расширенный пример (НЕ БУДЕТ РАБОТАТЬ БЕЗ УДОВЛЕТВОРЕНИЯХ ВСЕХ ЗАВИСИМОСТЕЙ)

Код
Выбрать все
Процедура Сформировать()
    Версия=СоздатьОбъект("Версии");
	Сообщить("Версия класса ТЗ = "+Версия.ПолучитьВерсию("ТЗ"));
	Сообщить("Версия класса Парсинг = "+Версия.ПолучитьВерсию("Парсинг"));
	Сообщить("Версия класса Версии = "+Версия.ПолучитьВерсию("Версии"));

	Сообщить("Версия класса МодульДокумента = "+Версия.ПолучитьВерсию("МодульДокумента"));

	Сообщить("Версия класса BOM = "+Версия.ПолучитьВерсию("BOM"));

	Т=Версия.ПолучитьCVSКаталог(Версия.ПутьККлассам());
	ТЗ=СоздатьОбъект("ТЗ");
	ТЗ.Загрузить(Т);
	ТЗ.Сообщить();

КонецПроцедуры

 

  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #1 - 22. Января 2007 :: 12:40
Печать  
ИМХО класс нужно слегка поправить, т.к. не всегда имя класса совпадает с именем файла реализации класса, и тем более, не всегда расширения txt.

Через МетаИнфоклассес по имени класса можно легко получить имя файла.

В остальном вроде нормально, попробую включить в конфу классов 1С++.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #2 - 22. Января 2007 :: 16:49
Печать  
artbear писал(а) 22. Января 2007 :: 12:40:
ИМХО класс нужно слегка поправить, т.к. не всегда имя класса совпадает с именем файла реализации класса, и тем более, не всегда расширения txt.

Через МетаИнфоклассес по имени класса можно легко получить имя файла.

В остальном вроде нормально, попробую включить в конфу классов 1С++.


дай мне права коммитить в мои классы.
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #3 - 23. Января 2007 :: 05:35
Печать  
1. Не могу, я их не раздаю, это роль Федора.
Думаю, что тебя можно допустить к коммитам.

2. А что за 80 классов? можешь перечислить их роли?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #4 - 23. Января 2007 :: 07:08
Печать  
Код
Выбрать все
класс Парсинг=Парсинг.txt : Таблица
{
};

класс ТЗ=ТЗ.txt : ТаблицаЗначений
{
ВыгрузитьЕдиницуДанных(Число НомерСтрокиТЗ=0);
ЗагрузитьЕдиницуДанных(ТЗ ТЗЕдиницаДанных,Число НомерСтрокиТЗ=0);
};


класс ФИФО=ФИФО.txt
{
};

класс ЛИФО=ЛИФО.txt
{
};

класс Проводки=Проводки.txt : ТЗ
{
};

класс БухИтоги=БухИтоги.txt : ТЗ
{
};

класс ОПланСчетов=ОПланСчетов.txt
{
};

класс ФинансовыеРезультаты=ФинансовыеРезультаты.txt
{
};


класс Взаиморасчеты=Взаиморасчеты.txt
{
};





класс Класс=Класс.txt
{
};

класс СписокКлассов=СписокКлассов.txt : ТЗ
{
};

Класс Диагностика=Диагностика.txt : ТЗ
{
};

Класс Терапия=Терапия.txt : ТЗ
{
};

Класс КомПорт=КомПорт.txt
{
};

Класс Модем=Модем.txt : КомПорт
{
};

Класс Экка_Эра=Экка_Эра.txt : КомПорт
{
};

Класс Битовая=Битовая.txt
{
};

Класс Extprn=Extprn.txt
{
};

Класс Принтер=Принтер.txt : Extprn
{
};

Класс МатричнаяТаблица=МатричнаяТаблица.txt : Таблица
{
Показать(Строка Заголовок = "Таблица",Строка ИмяФайла="",Число Активизировать=1);
};

Класс Перенос=Перенос.txt
{
};

Класс Правило=Правило.txt : ТЗ
{
};

Класс Правила=Правила.txt : ТЗ
{
};

Класс Обмен=Обмен.txt
{
};

Класс ФайловаяСистема=Файловая.txt
{
};

Класс ФинАнализ=ФинАнализ.txt
{
};

// ============================= USERS ==================================

Класс ПроводкиДня=ПроводкиДня.txt
{
};

Класс ПравилоПереноса=ПравилоПереноса.txt
{
};

Класс СоответствияСчетов=СоответствияСчетов.txt
{
};

Класс Идент=Идент.txt : ТЗ
{
Функция Сумма(Идент Идент1="",Идент Идент2="",Идент Идент3="",Идент Идент4="",Идент Идент5="",Идент Идент6="",Идент Идент7="",Идент Идент8="",Идент Идент9="",Идент Идент10="");
};


Класс АСправочник=АСправочник.txt: ТЗ
{
};

Класс sql=sql.txt : ТЗ
{
};


Класс GFX=gfx.txt
{
};

Класс Компаунд=Компаунд.txt
{
};


класс ВиртуальныйДокумент = ВиртуальныйДокумент.txt : ТаблицаЗначений
{};

класс ВиртуальныйСправочник= ВиртуальныйСправочник.txt : ТаблицаЗначений
{};

класс Документ_ВыпускПродукции= Документ_ВыпускПродукции.txt : Документ.ВыпускПродукции
{};

класс Документ_МатериалыСписанныеВПроизводство= Документ_МатериалыСписанныеВПроизводство.txt  : Документ.МатериалыСписанныеВПроизводство
{};

класс Документ_НормыПрямыхЗатратНаПродукцию= Документ_НормыПрямыхЗатратНаПродукцию.txt  : Документ.НормыПрямыхЗатратНаПродукцию
{};

класс Документ_ЗатратыФактическиПонесенныеНаПроизводство= Документ_ЗатратыФактическиПонесенныеНаПроизводство.txt  : Документ.ЗатратыФактическиПонесенныеНаПроизводство
{};

класс Документ_ПланВыпуска= Документ_ПланВыпуска.txt  : Документ.ПланВыпуска
{};

класс Документ_СредниеПлановыеЦеныЗатрат= Документ_СредниеПлановыеЦеныЗатрат.txt  : Документ.СредниеПлановыеЦеныЗатрат
{};

класс Документ_СоответствиеЕксель= Документ_СоответствиеЕксель.txt  : ВиртуальныйДокумент
{};

класс Эксель= Эксель.txt
{};

класс Эксель_ФактИзготовления= Эксель_ФактИзготовления.txt : Эксель
{};

класс Справочник_ЕксельМесяцыВыпуска= Справочник_ЕксельМесяцыВыпуска.txt : ВиртуальныйСправочник
{};

класс Тестирование = Тестирование.txt
{};

класс РасчетСебестоимости = РасчетСебестоимости.txt
{};

класс Кеширование = Кеширование.txt
{};

класс ХТТаблица = ХТТаблица.txt :: Таблица
{
Процедура Показать(Строка Заголовок="",Строка ИмяФайла="",Число Активизировать="");
};


класс BOM = BOM.txt  : ТЗ
{
};

класс CLMRP = CLMRP.txt  : ТЗ
{
};

класс CPO = CPO.txt  : ТЗ
{
};

класс ISF = ISF.txt  : ТЗ
{
};

класс POS = POS.txt  : ТЗ
{
};
класс MPS = MPS.txt  : ТЗ
{
};

класс MRP = MRP.txt  : ТЗ
{
};

класс MRP2 = MRP2.txt  : ТЗ
{
};

класс CRP = CRP.txt  : ТЗ
{
};

класс ERP = ERP.txt  : ТЗ
{
};

Класс Синхронизация = Синхронизация.txt
{
};

Класс ПодключениеОЛЕ = ПодключениеОЛЕ.txt
{
};

Класс ФабрикаСобытий = ФабрикаСобытий.txt
{
};

Класс ХТТПСервер = ХТТПСервер.txt
{
};

Класс ХМЛПарсер = ХМЛПарсер.txt
{
};

Класс ВебСессия = ВебСессия.txt
{
};

Класс ВебПоток= ВебПоток.txt
{
};

Класс ХТМЛ= ХТМЛ.txt
{
};

Класс НаборПараметров= НаборПараметров.txt
{
};

Класс Классификатор= Классификатор.txt :: НаборПараметров
{
};

Класс Амбер= Амбер.txt :: ХТМЛ
{
};

Класс ИсточникГенератора= ИсточникГенератора.txt
{
};

Класс ГенераторОтчетности= ГенераторОтчетности.txt :: ИсточникГенератора
{
};

Класс FW= FW.txt  :: ХТМЛ
{
};

Класс Интеллект=Интеллект.txt
{
};


Класс ОбщиеНектар=ОбщиеНектар.txt
{
};

Класс ОлапЭксель=ОлапЭксель.txt
{
};


Класс Зарплата=ЗарплатаВГП.txt
{
};


Класс Отчеты=Отчеты.txt
{
ОткрытьОтчет(Строка ИмяОтчета,Контекст КонтекстФормы="");
};

Класс Алкоголь=АлкогольНектар.txt
{
};

Класс СистемаТоваров=СистемаТоваров.txt
{
};

Класс МодульДокумента=МодульДокумента.txt
{
};

Класс Почта=Почта.txt
{
};

Класс Версии=Версии.txt
{
};

 



Есть универсальные, есть неуниверсальные, есть просто заготовки для будущих реализаций. в общем каша еще та. дорабатывать и документировать.
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #5 - 23. Января 2007 :: 07:11
Печать  
artbear писал(а) 23. Января 2007 :: 05:35:
1. Не могу, я их не раздаю, это роль Федора.
Думаю, что тебя можно допустить к коммитам.

Это моя роль, но только после отмашки ведущего.
  
Наверх
www  
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #6 - 23. Января 2007 :: 07:19
Печать  
fez писал(а) 23. Января 2007 :: 07:11:
artbear писал(а) 23. Января 2007 :: 05:35:
1. Не могу, я их не раздаю, это роль Федора.
Думаю, что тебя можно допустить к коммитам.

Это моя роль, но только после отмашки ведущего.


И почему ты в госчиновники не пошел ? Подмигивание
Цитата:
(Думаю, что тебя можно допустить к коммитам.)


- это за отмашку не поканает ? Подмигивание
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #7 - 23. Января 2007 :: 07:31
Печать  
Да, я за допуск.
Только, Костя, давай неуниверсальные пока что не кидать.

Пока работаем только с универсальными классами.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #8 - 23. Января 2007 :: 07:39
Печать  
artbear писал(а) 23. Января 2007 :: 07:31:
Да, я за допуск.
Только, Костя, давай неуниверсальные пока что не кидать.

Пока работаем только с универсальными классами.


Под универсальными мы понимаем технические классы и
классы, которые не заточены под законодательство какой либо
отдельно взятой страны ? или под универсальными подразумеваюются только те,
которые будут работать не в отдельно взятой конфигурации, а в любой взятой ?
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #9 - 23. Января 2007 :: 07:42
Печать  
ИМХО в данном случае универсальные классы- это те,которые НЕ завязаны на конкретную конфу.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #10 - 23. Января 2007 :: 07:44
Печать  
Ну, и естественно, если какой-то класс завязан на законы какой-то страны, кроме России Улыбка , хотелось бы в доке четкого упоминания об этом!
ЗЫ все-таки подавляющее большинство здесь - это россияне Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Версии (для получения версий из CVS)
Ответ #11 - 23. Января 2007 :: 08:27
Печать  
Kostya писал(а) 23. Января 2007 :: 07:19:
Цитата:
(Думаю, что тебя можно допустить к коммитам.)


- это за отмашку не поканает ? Подмигивание

Да проканает, проканает. Ну не могу я разорваться. Выдал.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать