четверг, 30 октября 2008 г.

Примерчик работы с WMI через ADO

Встала у меня задачка надо синхронизировать содежимое ActiveDirectory и справочников 1С.

Ниже кратенький и вполне достойный пример, опроса WMI на предмет активных аккаунтов (сиречь пользователей).

P.S. А после дело синхронизации становиться легким и простым как два байта переслать. :)

  1. objConnection = ПолучитьCOMОбъект("","ADODB.Connection");
  2. objConnection.Open("Provider=ADsDSOObject");
  3. objCommand = ПолучитьCOMОбъект("","ADODB.Command");
  4. objCommand.ActiveConnection = objConnection;
  5. objCommand.CommandText =
  6. "<GC://OU=XXX,dc=YYY,dc=loc>;objectCategory=User);displayName,sAMAccountName,
  7. telephoneNumber,userAccountControl,objectGuid,distinguishedName,mail;subtree";
  8. objRecordSet = objCommand.Execute();
  9. Пока НЕ(objRecordset.EOF) Цикл
  10.  Логин = objRecordset.Fields("sAMAccountName").Value;
  11.  Почта = objRecordset.Fields("mail").Value;
  12.  Имя   = objRecordset.Fields("displayName").Value;
  13.  
  14.  Если ПустаяСтрока(Имя) Тогда
  15.   objRecordset.MoveNext();
  16.   Продолжить;   
  17.  КонецЕсли;

четверг, 16 октября 2008 г.

1C: Комплект универсальных отчетов

КонсольАнализаЖурналаРегистрации81
КонсольЗаданий
КонсольЗапросов
КонсольКластераСерверов
НастройкаТехнологическогоЖурнала

вторник, 14 октября 2008 г.

1C 8.1: Регламентные задания, маленькие хитрости

При некоторой заскорузлости описания в учебнике 1С. Документация мне так и не дала мне ответа, почему я сделал все как написано, но задание так и не запускается. Моя проблема оказалась в том, что регламентное задание запускается как внешнее соединение и в этом режиме все обращения к визуальным элементам считаются "ошибка выполнения" при этом консоль сервера не дает ответа, что случилось с запускаемым заданием. Ответ на этот вопрос дала универсальная обработка с диска ИТС "КонсольСервера", с помошью которой можно не только просматривать статистику работы запущенных задач (имхо по крайней мере, сообщение о том, что выполнение задачи было прервано на строке Х и произошла ошибка Ч, было для меня большущим подспорьем). Кроме того, ошибка может быть даже и не в процедуре регламентного задания, а в какой либо другой и увидеть это без обработки крайне сложно.

В общем подитожу:

1. Модули помеченные галочкой внешние соединение, должны содержать только те процедуры и функции которые необходимы для функционирования регламентной процедуры.

2. Обязательно иметь под руками обработку "Консоль сервера", чтобы иметь возможность контролировать ход выполнения заданий.

3. Помнить, что в случае клиент-сервера, планировщиком выступит сервер приложений, а для случая файл-сервера должен функционировать отдельное приложение, которое должно заниматься опросом:

Процедура ОбработкаЗаданий() 
    ВыполнитьОбработкуЗаданий();
КонецПроцедуры

ПодключитьОбработчикОжидания("ОбработкаЗаданий", 3);

* This source code was highlighted with Source Code Highlighter.

 

После запуска данной обработки, при открытии ее формы, выполняется подключение в качестве обработчика ожидания процедуры "ОбработкаЗаданий", которая будет вызываться каждые 3 секунды и, в свою очередь, вызывать метод "ВыполнитьОбработкуЗаданий()". Данный метод проверяет, пришло ли время выполнять задания согласно их расписанию. Если да - то он запускает эти задания на выполнение. Открытие созданной обработки по запуску регламентных заданий не рекомендуется осуществлять в том же соединении, где выполняется основная работа с информационной базой. Для подобной задачи лучше использовать отдельное соединение с той же базой. Более подробно данный вопрос освещен, например, в книге М.Радченко "1С:Предприятие 8.1. Практическое пособие разработчика. Примеры и типовые приемы", глава 12, стр.288.

вторник, 23 сентября 2008 г.

CodePlex запускает поддержку TortoiseSVN

Technorati Теги: ,,,

Оригинал статьи здесь

CodePlex теперь предлагает услуги сервера поддерживающего SvnBridge, который позволит использовать TortoiseSVN использовать для работы с Team Foundation Server. Поддержка SubVersion была одной из запрошенной пользователями фич, и поэтому хостинг SvnBridge, позволит пользователям использовать их любимые клиенты Subversion для работы с любимы проектами.

Subversion один из популярных репозитарией проектов в сообществе open source. TortoiseSVN - клиентский модуль для Subversion (так же как Team Explorer клиент для Team Foundation Server) широко распространен среди разработчиков open source. Мы хотим чтобы пользователи TortoiseSVN включились в сообщество CodePlex, и поэтому мы разработали SvnBridge, чтобы позволить TortoiseSVN работать с Team Foundation Server.

image

Наша первая версия SvnBridge требует инсталляции специального клиентского программного обеспечения, что подразумевает, что пользователи TortoiseSVN вначале инсталлируют и запустят SvnBridge прежде чем начать взаимодействовать с репозитарем CodePlex. Наличие стартовавшего SvnBridge в начале каждой сессии работы есть главный и самый раздражающий минус нашей поддержки TortoiseSVN.

Но сегодня мы с радостью сообщаем, что отныне TortoiseSVN может работать с CodePlex напрямую.

воскресенье, 21 сентября 2008 г.

C# Visual Inheritance

Мое огорчение не знает границ. Оказывается разработчики ограничили наследование не только в WPF, но и в С#. Если мы наследуем форму от базового класса, то большинство свойств таких компонентов как StatusStripPanel и ToolStripPanel становятся рид-онли.

Как показали раскопки на форумах МСДН и прочая блоги приближенных к особе матушке микрософт. Ограничение на фукнциональность унаследованных обьектов сделано специально, чтобы избежать некой прорвы ошибок которые при этом возникали.... Хотя при этом, если добавлять нужную функциональность через код то все работает.

P.S. Пути Майкрософт неисповедимы. В томже любимом и родном борладне еще даным давно визуальное наследование работало нормально.Будем надеяться, что спецы из майкрософта все таки справяться с этой задачкой.

понедельник, 8 сентября 2008 г.

WPF наследование

Technorati Теги: ,

Натолкнулся на не очень приятный момент. Оказывается WPF поддерживает наследование классов, только в том, случае если класс предок написан без использования XAML-разметки.

В случае мой затеи, это был большой облом..... Особенно когда мне понадобилось сделать в приложении десяток форм с почти одинаковой функциональностью,оказалось, что классическое наследование в силу выше приведенных причин не пройдет, а придеться использовать механизм стилей.

P.S. Как более детально разберусь, с этими ужасными и страшными стилям, напишу очередной пост. :)

суббота, 6 сентября 2008 г.

В полку community прибавление

Technorati Теги: ,,

Еще один сайтик  Visual Studio Gallery