Перейти к содержимому

Фоновое задание при проведении

Задача: Необходимо сделать запись, в регистр сведений, в рамках процедуры «ОбработкаПроведения», которая выполняется в рамках неявной транзакции. Запись должна быть произведена при любом исходе завершения транзакции.

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

Фоновое задание при проведении
Фоновое задание при проведении

Телеграм бот 1С

Телеграм бот 1С

Задача:
Создать телеграм бота и научится работать с ним в «1С:Предприятие 8», через long polling и webhooks, используя Telegram bot API.

02.04.2021 Обновлено:
— Добавлено видео «Интеграция 1С с Telegram за 12 минут», где показано как с помощью системы взаимодействия работать с телеграм ботом.

Подробнее »Телеграм бот 1С

Анализ данных и прогнозирование в 1С — Общая статистика

Общая статистика

Анализ данных и прогнозирование в 1С – Общая статистика

Цитаты из ИТС («Руководство разработчика» — «Глава 14. Анализ данных и прогнозирование»):
«Механизм анализа данных и прогнозирования позволяет реализовывать в прикладных решениях различные средства для выявления закономерностей, которые обычно скрываются за большими объемами информации».

Подробнее »Анализ данных и прогнозирование в 1С — Общая статистика

Книга «Не спеша, эффективно и правильно – путь разработки», автор Никита Зайцев

Рекомендую к прочтению книгу «Не спеша, эффективно и правильно – путь разработки», автор Никита Зайцев (a.k.a WildHare).

Никита Зайцев (a.k.a WildHare)

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация «Эксперт», несколько успешных проектов класса «сверхтяжелая». Успешные проекты ЦКТП. Четыре года работал в самой «1С», из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

«Коллеги, вашему вниманию предлагается почти финальный вариант моей книжки. В третьей части, она же практическое руководство, не хватает нескольких глав, и не факт, что у меня получится их дописать. К сожалению, проблемы со здоровьем. Но хочется, чтобы труд не пропал, поэтому весь текст отдается в открытый доступ. Можно публиковать где угодно, цитировать и так далее. Единственное условие – ничего в тексте не менять и указывать авторство. Автор текста – Никита Викторович Зайцев (также известный как WildHare).
Книжка повествует об эффективной разработке программного обеспечения. Можно сказать, что это дистиллят моей личной практики, наработанного опыта, знаний и умений. Издать ее уже скорее всего не получится, но не хотелось бы, чтобы пропало. Поэтому отдается в открытый доступ.
»

Интервью с автором: Никита Зайцев (a.k.a WildHare): «Я – универсальный солдат в мире 1С».

Дополнение:
В первой части, говорится о книге «Вальсируя с Медведями. Управление рисками в проектах по разработке программного обеспечения.», авторы Том ДеМарко и Тимоти Листер. Так же, рекомендую к прочтению, несколько цитат из книги:

Не беритесь за проект, если в нем нет рисков.
Риски и выгоды всегда ходят парой. Проект полон рисков потому, что ведет на нехоженый путь. Он расширяет ваши возможности, и его успешное осуществление доведет ваших конкурентов до безумия. Но главное – в том, что ваши собственные возможности распространятся настолько, что конкурентам будет нечем ответить. Это дает вам конкурентное преимущество и помогает создать собственный, заметный на рынке брэнд.

Риск:
1. Возможное в будущем событие, которое приведет к нежелательным результатам.
2. Сам нежелательный результат.

Первое – причина, а второе – результат, но не пытайтесь обманывать себя, рассчитывая справиться с обоими. Управление рисками как дисциплина целиком занята управлением причинными рисками. Это – те риски, которыми вы можете управлять (Однако оправданность управления рисками, в первую очередь, связана с результатами).

Риск – это проблема, которая еще не возникла, а проблема – это риск, который уже материализовался.
До своего проявления риск – просто абстракция. Это нечто, что может повлиять на ваш проект, а может и не повлиять. Существует вероятность, что игнорирование риска пройдет безнаказанным. Но даже в этом случае вы не избежите обвинения в том, что оказались плохим управленцем, не учтя риск.
Управление рисками – это процесс продумывания корректирующих действий прежде, чем возникнет проблема, пока она еще остается всего лишь абстракцией. Противоположностью управлению рисками является кризисное управление, попытка понять, что делать с проблемой после того, как она появилась.

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

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

Дополнение:
📻 Старт второго сезона подкаста «Радио 1С Энтерпрайз» Радио 1С Энтерпрайз

Внедрение «Библиотеки стандартных подсистем»

Внедрение «Библиотеки стандартных подсистем»

При работе с конфигурациями, созданными «с нуля», часто возникает необходимость внедрение «Библиотеки стандартных подсистем», либо полностью, либо частично. Рассмотрим, как это сделать, на примере задачи интеграции подсистемы «Работа с файлами» из «Библиотеки стандартных подсистем», для возможности сохранения файлов, для документа «Заказ».

Версия платформы 8.3.16.1224, версия БСП 3.1.2.352. В качестве приемника, выступит демонстрационная конфигурация «Управляемое приложение» (1.0.30.5, файловый вариант). Скачать демонстрационную базу и «Библиотеку стандартных подсистем» можно по адресу https://releases.1c.ru (при условии наличия доступа к сайту).
Подробнее »Внедрение «Библиотеки стандартных подсистем»

Комплект для специалиста по разработке

Обновление 21.04.2020:
Акция: антикризисные льготные поставки «1С:Предприятия 8» для разработчиков.
Для обладателей любого из сертификатов: «1С:Специалист» по платформе «1С:Предприятие», «1С:Эксперт по технологическим вопросам», «1С:Эксплуататор крупных информационных систем» – после регистрации на сайте «1С для разработчиков» (developer.1c.ru) с 20.04.2020 доступно приобретение следующих продуктов:

1C:Предприятие 8. Комплект специалиста по разработке и внедрению.

Комплект для специалиста по разработке - Изображение с сайта http://edu.1c.ru/box/
Изображение с сайта http://edu.1c.ru/box/

Наконец-то, купил для себя «1С:Предприятие 8. Комплект для специалиста по разработке и внедрению», который в текущий момент ценен лишь входящим в его состав, ключом «HASP HL Pro ORGL8».
Подробнее »Комплект для специалиста по разработке

Удобный анализ кода 1С

Удобный анализ кода 1С. Небольшой совет, как улучшить удобство анализа кода в конфигураторе 1С. Для этого необходимо открыть пункт меню «Сервис — Параметры», далее перейти на вкладку «Модули — Редактирование» и для позиции «Текущий идентификатор» выбрать цвет, например «Золотой (Gold)»:

Текущий идентификатор
Текущий идентификатор

После этого, в коде конфигурации, при клике на выбранном слове, оно будет выделено везде где встречается, что на мой взгляд, облегчает работу с кодом конфигурации 1С:
Результат настройки "Текущий идентификатор"
Результат настройки «Текущий идентификатор»

Дополнительно к выше сказанному, данная настройка помогает анализировать большие тексты запроса, например так:
Анализ запроса
Анализ запроса

Ошибка загрузки компоненты extbase

После установки учебной версии платформы 1С (8.3.14.1630), при попытке запуска «тонкого клиента», столкнулся с проблемой «Ошибка загрузки компоненты extbase»:

Ошибка загрузки компоненты extbase
Ошибка загрузки компоненты extbase

При этом, конфигуратор и «толстый клиент» запускались без проблем. Решение указанной проблемы, нашел опытным путем. Причиной ошибки, оказалось отсутствие необходимого dll файла, а именно extbaset.dll.
Подробнее »Ошибка загрузки компоненты extbase

Global Russian Virtual Group Microsoft SQL Server

Global Russian Virtual Group Microsoft SQL Server

Youtube канал «russianVC».

Рекомендую к просмотру youtube канал «russianVC», много крайне полезной информации по работе и оптимизации Microsoft SQL Server, в удобном видео формате.

В особенности, полезным для разработчиков 1С, буду следующие видеоматериалы:

Описание: Вне зависимости от характеристик сервера, система никогда не будет работать с достаточной производительностью в случае, если база данных плохо проиндексирована. Но что является хорошей и правильной индексацией? Специалисты, работающие с базами данных, часто употребляют такие термины как «Схема индексации» и «Оптимизация» придавая излишнюю сложность вопросу. Однако для оптимальной индексации данных достаточно лишь понимать как SQL Server работает с индексами изнутри. Базовые принципы не меняются и могут быть применены в любой системе.

Наглядная и доступная информация по работе Microsoft SQL Server.

Тестирование 1С:Профессионал по технологическим вопросам

Тестирование 1С:Профессионал по технологическим вопросам

Основными источниками информации, для подготовки являются:

Курсы:

Сайты для подготовки к «Тестирование 1С:Профессионал по технологическим вопросам»:

Обновление от 10.12.2018:

Разработка мобильных приложений 1С

Часть 0: Разработка мобильных приложений 1С – Быстрый старт!
Часть 1: Разработка мобильных приложений 1С — Аутентификация пользователя.
Часть 3: Разработка мобильных приложений 1С — Обмен данными.

В этой небольшой статье, которая является началом цикла «Разработка мобильных приложений 1С», покажу, как можно быстро создать 1С мобильное приложение «Привет мир», на основе мобильной платформы 1С.

Для тестирования готового мобильного приложения 1С, будет использоваться реальное устройство на основе операционной системы Android, с использованием мобильной платформы для разработчиков и возможности отладки по протоколу HTTP.
Подробнее »Разработка мобильных приложений 1С

Начисление амортизации в рамках срока полезного использования

Начисление амортизации в рамках срока полезного использования.

Делюсь реализацией задачи о начислении амортизации основного средства в пределах периода срока полезного использования. Необходимо доработать типовой функционал конфигурации «Управление производственным предприятием», редакция 1.3, для того чтобы, при проведении документа «Амортизация ОС», анализировался срок полезного использования основного средства и производилось начисление амортизации в рамках срока полезного использования. Так как, иногда возникали ситуации, когда срок полезного использования завершен, а начисление производилось в последующие месяцы и обычно это были не большие суммы.
Схематично ситуацию можно представить следующим образом:

Начисление амортизации в рамках срока полезного использования
Начисление амортизации в рамках срока полезного использования

Доработка реализована для управленческого, бухгалтерского и налогового учета, основных средств, использующих линейных метод начисления.
При анализе кода проведения документа «Амортизация ОС», основные расчеты суммы начисления амортизации, производятся в общем модуле «УправлениеВнеоборотнымиАктивами», в соответствующих функциях: «РасчетАмортизацииУпр», «РасчетАмортизацииБухРегл» и «РасчетАмортизацииНалогРегл». Указанные функции по своей структуре схожи и имеют в своем составе основной запрос и последующий расчет начисления суммы амортизации.
Подробнее »Начисление амортизации в рамках срока полезного использования

1С СКД: Суммирование значений на различных уровнях группировок

1С СКД: Суммирование значений на различных уровнях группировок

В данной небольшой заметке хочу показать, как можно произвести суммирование значений на различных уровнях группировки, в отчете с использованием системы компоновки данными.
Как показано на изображении, только на уровне группировки «Группы номенклатуры», рассчитывается ресурс «Заказать», в нем отображается, сколько нужно заказать по текущей группе номенклатуры исходя из определенных условий:

1С СКД: Суммирование значений на различных уровнях группировок
1С СКД: Суммирование значений на различных уровнях группировок

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

Соответственно, теперь необходимо рассчитать итоги, по выше находящимся группировкам («Склады», «ТипыСкладов») и общий итог.

Для этого используется функция ВычислитьВыражениеСГруппировкойМассив:

ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ (EVALEXPRESSIONWITHGROUPARRAY)
Синтаксис:
ВычислитьВыражениеСГруппировкойМассив(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>)
Описание:
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет преобразовано в НаборДанных.Контрагент.
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функцияВычислитьМассивСГруппировкойМассив(), генерирует выводимое выражение таким образом, чтобы выводимая информация была упорядочена. Например, для пользовательского поля с выражением:

ВычислитьВыражениеСГруппировкойМассив(«Сумма(СуммаОборот)», «Контрагент»)
Компоновщик макета сгенерирует для вывода следующее выражение:

СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений(«Представление(Сумма(НаборДанных.СуммаОборот)),Сумма(НаборДанных.СуммаОборот)»,»НаборДанных.Контрагент»),»2″)))

Параметры:
<Выражение>
Тип: Строка. Выражение, которое нужно вычислить. Строка, например, Сумма(СуммаОборот).
<ВыражениеПолейГруппировки>
Тип: Строка. Выражения полей группировки – выражения полей группировки, перечисленные через запятую. Например, Контрагент, Партия.
<ОтборЗаписей>
Тип: Строка. Выражение, описывающее отбор, применяемый к детальным записям. В выражении не поддерживается использование агрегатных функций. Например,ПометкаУдаления = Ложь.
<ОтборГруппировок>
Тип: Строка. Выражение, описывающее отбор, применяемый к групповым записям. Например, Сумма(СуммаОборот) > &Параметр1.
Пример:

Максимум(ВычислитьВыражениеСГруппировкойМассив («Сумма(СуммаОборот)», «Контрагент»));

Подробное описание синтаксиса функции можно найти по адресу http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Теперь для расчета, продублируем поле «Заказать», с различными значениями «Рассчитывать по…», используя следующие выражения, обратите внимание, что в каждом выше стоящем уровне используются значения уровней ниже стоящих группировок.

В итоге получаем следующую конструкцию:

1С СКД: Суммирование значений на различных уровнях группировок
1С СКД: Суммирование значений на различных уровнях группировок

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

Программное добавление полей и ресурсов в СКД

Программное добавление полей и ресурсов в СКД

В данном примере будет показано, как осуществить программное добавление полей и ресурсов в СКД отчет, а так же, как передать таблицу значений в качества источника данных. Для примера реализации программного добавления полей в систему компоновки данных, будет использоваться таблица значений с неизвестным количеством колонок, которые нужно вывести в отчет СКД.
Для начала необходимо создать внешний отчет, в модуле объекта которого добавить процедуру ПриКомпоновкеРезультата:

1С программное добавление полей и ресурсов в СКД - СозданиеОтчета
1С программное добавление полей и ресурсов в СКД — СозданиеОтчета

В указанную процедуру добавим следующий код, в комментариях, описаны основные действия, сначала создается таблица значений со случайным количеством колонок, далее колонки, поля, ресурсы, программно добавляются в систему компоновки данными и передаются как внешний набор данных:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	//Структура внешних данных, для передачи в СКД
	ВнешниеНаборыДанных = Новый Структура; 
	
	тзДанные = Новый ТаблицаЗначений;
	
	тзДанные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
	тзДанные.Колонки.Добавить("УникальноеНаименование", Новый ОписаниеТипов("Строка"));
	
	//С помощью генератора случайных чисел определяем количество колонок
	ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел();
	
	СлучайноеЧисло = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 10);
	
	//Формируем колонки
	Для Индекс = 1 По СлучайноеЧисло Цикл
		тзДанные.Колонки.Добавить("Колонка" + Индекс, Новый ОписаниеТипов("Число"));
	КонецЦикла; 
	
	//Заполняем таблицу значений данными
	Для Индекс = 1 По 10 Цикл
		
		СтрокаТз = тзДанные.Добавить();
		
		СтрокаТз.Наименование			= "Начальная группировка";
		СтрокаТз.УникальноеНаименование = Новый УникальныйИдентификатор;
		
		Для Счетчик = 1 По СлучайноеЧисло Цикл
			
			ИмяКолонки = "Колонка" + Счетчик;
			СтрокаТз[ИмяКолонки] = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 10); 
			
		КонецЦикла; 
		
	КонецЦикла; 
	
	//Сохраняем таблицу значений в наборе внешних данных
	ВнешниеНаборыДанных.Вставить("тзДанные", тзДанные);
		
	//Получаем схему из макета
	СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	//Из схемы возьмем настройки
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	
	//Программно добавляем поля и ресурсы
	Для Индекс = 1 По СлучайноеЧисло Цикл
		
		Поле = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
		
		Поле.Заголовок		= "Колонка" + Индекс;
		Поле.ПутьКДанным	= "Колонка" + Индекс;
		Поле.Поле			= "Колонка" + Индекс;
		Поле.ТипЗначения	= Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)); 
		
		ПолеРесурса = СхемаКомпоновкиДанных.ПоляИтога.Добавить(); 
		
		ПолеРесурса.Выражение	= "СУММА(Колонка" +  Индекс + ")"; 
		ПолеРесурса.ПутьКДанным	= "Колонка" + Индекс; 
	
		ПолеРесурса.Группировки.Добавить("Наименование"); 
		ПолеРесурса.Группировки.Добавить("УникальноеНаименование"); 
		ПолеРесурса.Группировки.Добавить("ОбщийИтог"); 
		
	КонецЦикла;
	
	//Добавляем в выбранные поля
	Для Индекс = 1 По СлучайноеЧисло Цикл
		
		ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
		
		ВыбранноеПоле.Заголовок		= "Колонка" + Индекс;
		ВыбранноеПоле.Использование	= Истина; 
		ВыбранноеПоле.Поле			= Новый ПолеКомпоновкиДанных("Колонка" + Индекс); 
		
	КонецЦикла;
	
	//Помещаем в переменную данные о расшифровке данных
	ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
	
	//Формируем макет, с помощью компоновщика макета
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	
	//Передаем в макет компоновки схему, настройки и данные расшифровки
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
	
	//Выполним компоновку с помощью процессора компоновки
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	//Передаем внешний набор данных
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
	
	//Очищаем поле табличного документа
	ДокументРезультат.Очистить();
	
	//Выводим результат в табличный документ
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

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

После необходимо создать основную схему компоновки данных, как показано на изображении:

1С программное добавление полей и ресурсов в СКД - ВнешнийНаборДанных
1С программное добавление полей и ресурсов в СКД — ВнешнийНаборДанных

С простой настройкой группировки:
1С программное добавление полей и ресурсов в СКД - НастройкаГруппировки
1С программное добавление полей и ресурсов в СКД — НастройкаГруппировки

Сохранить внешний отчет и запустить в режиме 1С:Предприятие, несколько раз сформировать отчет, благодаря генератору случайных чисел, количество колонок практически всегда будет разным:
1С программное добавление полей и ресурсов в СКД - Итог
1С программное добавление полей и ресурсов в СКД — Итог

Тем самым было продемонстрировано, как программно добавить поле в систему компоновки данных.

Скачать рассмотренный в статье пример: ПрограммноеДобавлениеПолей

Интеграция 1С и Active Directory

Интеграция 1С и Active Directory

Изредка, в работе программистов и системных администраторов, возникают ситуации и задачи, когда необходимо произвести интеграцию 1С и Active Directory. В данном примере будет показано как с помощью технологии LDAP (англ. Lightweight Directory Access Protocol — «облегчённый протокол доступа к каталогам») и средств интеграции 1С, получить данные из Active Directory. Интеграция 1С и Active Directory может использоваться не только для получения данных, но и для создания объектов в структуре соответствующего домена.
В процессе создания алгоритма интеграции 1С и Active Directory, будет весьма полезна программа «Active Directory Explorer», создателем который является известный программист и писатель Марк Русси́нович. Данная программа позволит вам просмотреть дерево объектов выбранного вами домена, а если в начале запуска программы, сразу нажать кнопку «ОК», то домена по умолчанию, для текущего компьютера.

Active Directory Explorer Интеграция 1С и Active Directory
Интеграция 1С и Active Directory

Далее приведен код процедуры, с помощью которого можно получить список групп домена, в определенном организационном блоке (OU):

&НаКлиенте
Процедура ПолучитьГруппыДомена()
	
	КомандаАДО    = Новый COMОбъект("ADODB.Command");
	СоединениеАДО = Новый COMОбъект("ADODB.Connection");
	
	СоединениеАДО.Provider = "ADSDSOObject";
	Попытка
		СоединениеАДО.Open("Active Directory Provider");	
	Исключение
		Сообщить("Ошибка при открытии Active Directory Provider: " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	КомандаАДО.ActiveConnection = СоединениеАДО;
	
	//Получаем имя домена к которому принадлежит данный компьютер 
	Попытка
		RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE");
	Исключение
		Сообщить("Ошибка ПолучитьCOMОбъект(LDAP://RootDSE): " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	ТекущийДомен = RootDSE.Get("defaultNamingContext");
	Сообщить("ТекущийДомен: " + ТекущийДомен);
	
	//Подключаемся к текущему домену
	Попытка
		ОбъектТекущегоДомена = ПолучитьCOMОбъект("LDAP://" + ТекущийДомен);	
	Исключение
		Сообщить("Ошибка ПолучитьCOMОбъект "+"LDAP://" + ТекущийДомен+": " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	ИмяДомена = ОбъектТекущегоДомена.dc;
	Сообщить("ИмяДомена: " + ИмяДомена);
	
	//Формируем команду получения групп из блока Groups
	КомандаАДО.CommandText = "<LDAP://OU=Groups," + ТекущийДомен + ">" + ";(&(objectClass=top)(objectClass=organizationalUnit));name;onelevel";
	КомандаАДО.Properties("Page Size").Value     = 100;
	КомандаАДО.Properties("Timeout").Value       = 30;
	КомандаАДО.Properties("Cache Results").Value = Ложь;
	
	Попытка
		ВыборкаАДО = КомандаАДО.Execute();	
	Исключение
		Сообщить("Ошибка Execute(): " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	//Выводим список групп
	Пока НЕ ВыборкаАДО.EOF Цикл
		
		Сообщить("Группа домена: " + ВыборкаАДО.Fields("name").Value);
		
		ВыборкаАДО.MoveNext();
		
	КонецЦикла;
	
	//Обязательно закрываем соединения и объекты
	ВыборкаАДО.Close();
	СоединениеАДО.Close();
	
КонецПроцедуры

Теперь получаем данные пользователей, которые включены в выбранную группу домена:

&НаКлиенте
Процедура ПолучитьПользователейГруппы()
	
	КомандаАДО    = Новый COMОбъект("ADODB.Command");
	СоединениеАДО = Новый COMОбъект("ADODB.Connection");
	
	СоединениеАДО.Provider = "ADSDSOObject";
	Попытка
		СоединениеАДО.Open("Active Directory Provider");	
	Исключение
		Сообщить("Ошибка при открытии Active Directory Provider: " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	КомандаАДО.ActiveConnection = СоединениеАДО;
	
	Попытка
		RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE");
	Исключение
		Сообщить("Ошибка ПолучитьCOMОбъект(LDAP://RootDSE): " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	ТекущийДомен = RootDSE.Get("defaultNamingContext");
	Сообщить("ТекущийДомен: " + ТекущийДомен);
	
	Попытка
		ОбъектТекущегоДомена = ПолучитьCOMОбъект("LDAP://" + ТекущийДомен);	
	Исключение
		Сообщить("Ошибка ПолучитьCOMОбъект "+"LDAP://" + Объект.ТекущийДомен+": " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	ИмяДомена = ОбъектТекущегоДомена.dc;
	Сообщить("ИмяДомена: " + ИмяДомена);
	
	
	КомандаАДО.CommandText = "<LDAP://OU=" + ГруппыДомена + ",OU=Groups," + Объект.ТекущийДомен + ">" + ";(&(objectCategory=person)(objectClass=user));sAMAccountName,userAccountControl,displayName,department,mail,telephoneNumber;onelevel";
	КомандаАДО.Properties("Page Size").Value     = 100;
	КомандаАДО.Properties("Timeout").Value       = 30;
	КомандаАДО.Properties("Cache Results").Value = Ложь;
	
	Попытка
		ВыборкаАДО = КомандаАДО.Execute();	
	Исключение
		Сообщить("Ошибка Execute(): " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	Пока НЕ ВыборкаАДО.EOF Цикл
		
		ПользовательДомена = Новый Структура;
		
		Если ВыборкаАДО.Fields("userAccountControl").Value = 514 ИЛИ
			ВыборкаАДО.Fields("userAccountControl").Value = 546 ИЛИ
			ВыборкаАДО.Fields("userAccountControl").Value = 66050 Тогда
			 
			Сообщить("Заблокирован");
		Иначе
			Сообщить("НеЗаблокирован");
		КонецЕсли;
		
		Сообщить("ИмяПользователя " + СокрЛП(ВыборкаАДО.Fields("displayName").Value));
		Сообщить("ИмяАккаунта "     + СокрЛП(ВыборкаАДО.Fields("sAMAccountName").Value));
		Сообщить("Подразделение "   + СокрЛП(ВыборкаАДО.Fields("department").Value));
		Сообщить("Почта "           + СокрЛП(ВыборкаАДО.Fields("mail").Value));
		Сообщить("Телефон "         + СокрЛП(ВыборкаАДО.Fields("telephoneNumber").Value));
		
		ВыборкаАДО.MoveNext();
		
	КонецЦикла;
	
	ВыборкаАДО.Close();
	СоединениеАДО.Close();
	
КонецПроцедуры

По этому примеру можно создавать более сложные примеры интеграции 1С и Active Directory, более подробные сведения, вы можете получить по следующим адресам:
ADSI LDAP Provider
Использование протокола LDAP в скриптах