В процессе разработки интеграции с 1С часто возникает необходимость написать вычисления на языке 1С или языке запросов 1С, а также отладить их. Для написания таких вычислений удобно использовать готовые обработки 1С, рассмотрим их в этой статье.
Скачать архив с обработками можно по ссылке: Полезные обработки 1С.zip
Чтобы запустить обработку:
1. Запустите «1С Предприятие» в режиме «Обычное приложение». Для этого используйте дополнительный параметр запуска:
/RunModeOrdinaryApplication
2. В меню Файл выберите пункт Открыть и в открывшемся окне выберите нужный файл.
Обработка “Поиск объекта 1С по GUID”
Обработка позволяет:
- определить GUID любого объекта 1С (записи справочника, документа и пр.);
- по заданному GUID найти ссылку на объект 1С (запись справочника документа и пр.).
Чтобы определить GUID объекта 1С:
1. Запустите обработку «Поиск ссылки по GUID».
2. В поле Ссылка нажмите на кнопку T, выберите тип объекта.
3. Нажмите на кнопку и выберите объект 1С. Если необходимо выбрать другой объект, очистите значение по кнопке .
4. Нажмите на кнопку Показать GUID. В результате в поле GUID отобразится уникальный идентификатор объекта 1С.
Чтобы определить ссылку на объект 1С, введите уникальный идентификатор объекта в поле GUID и нажмите на кнопку Найти ссылку. Таким образом в поле Ссылка отобразится найденный объект из базы данных. Кнопка позволяет открыть карточку текущего объекта.
Обработка “Консоль запросов”
Обработка позволяет составить и выполнить запрос на языке запросов 1С. Используется для написания вычислений в событии коннектора «При выгрузке из 1С».
Рассмотрим, как выполняется обработка на примере запроса по получению юридического адреса контрагента:
1. Запустите обработку «Консоль запросов».
2. В основное окне обработки добавьте текст запроса:
ВЫБРАТЬ
КИ.Представление КАК Адрес
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КИ
ГДЕ
КИ.Объект = &Объект
И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
Запрос можно составить самостоятельно или с помощью конструктора запросов (пункт контекстного меню Конструктор запросов):
В тексте запроса, как правило, используются параметры. В нашем примере используется параметр &Объект, через который в запрос передается ссылка на запись справочника Контрагенты. Значения параметров задаются в левом нижнем окне обработки.
3. Чтобы выполнить запрос, нажмите кнопку Выполнить (F7). Результат выполнения запроса отобразится в правом нижнем окне.
Обработка “Выполнение произвольного кода”
Обработка позволяет быстро проверить вычисления на языке 1С, не создавая новую обработку в конфигурации 1С.
Чтобы проверить вычисление:
1. Запустите обработку «Выполнение произвольного кода».
2. В окне редактора напишите код вычислений:
3. Для выполнения кода нажмите на кнопку Выполнить.
Ниже рассмотрим примеры использования обработки «Выполнение произвольного кода».
Пример 1
Необходимо написать вычисления для события коннектора «При выгрузке из 1С» по получению юридического адреса контрагента. Текст события представляет собой xml-текст, в котором задаются вычисляемые реквизиты 1С. Подробнее см. в справке Коннектор к «1С:Предприятие 8» События и фильтры.
Ранее с помощью обработки «Консоль запросов» мы создали и отладили запрос:
ВЫБРАТЬ
КИ.Представление КАК Адрес
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КИ
ГДЕ
КИ.Объект = &Объект
И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
Теперь нужно написать вычисления на языке 1С, в которых нужно выполнить этот запрос и вернуть результат в виде строки.
Для отладки вычислений добавьте определение переменной Источник:
Источник = Справочники.Контрагенты.НайтиПоКоду("000000007");
И вывод результата:
Сообщить(Значение);
В событие «При выгрузке из 1С» эти строки переносить не нужно, т.к. переменная Источник в событии является предопределенной и будет заполняться автоматически.
В итоге событие «При выгрузке из 1С» будет выглядеть следующим образом:
<Свойства>
<Свойство>
<Код>60</Код>
<Наименование>Выч_ЮридическийАдрес</Наименование>
<Порядок>60</Порядок>
<Источник/>
<Приемник Имя="Выч_ЮридическийАдрес" Вид="Реквизит" Тип="Строка"/>
<ПриВыгрузке>Запрос = Новый Запрос("ВЫБРАТЬ
| КИ.Представление КАК Адрес
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КИ
|ГДЕ
| КИ.Объект = &Объект
| И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
| И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)");
Запрос.УстановитьПараметр("Объект", Источник);
Выборка = Запрос.Выполнить().Выбрать();
Значение = ?(Выборка.Следующий(), СокрЛП(Выборка.Адрес), "");
</ПриВыгрузке>
</Свойство>
</Свойства>
Пример 2
Необходимо на форму 1С добавить кнопку, при нажатии на которую будет запускаться сценарий DIRECTUM. В сценарий требуется передать один параметр. При завершении сценария получить результат его выполнения.
Для этого выполните отладку вычисления, в котором запускается сценарий DIRECTUM по кнопке из 1С:
Обработка «Регистрация изменений для обмена»
Обработка включена в большинство конфигураций 1С. С ее помощью можно просматривать или редактировать записи о регистрации объектов в плане обмена 1С, в том числе:
- просматривать список метаданных, участвующих в обмене;
- просматривать список объектов, для которых зарегистрированы изменения;
- добавлять и снимать регистрацию для объектов, а также использовать запросы для выбора данных;
- просматривать данные в формате XML.
Рассмотрим возможности обработки наглядно в 1С:
1. Запустите обработку «Регистрация изменений для обмена».
2. В верхнем поле выберите узел обмена, например, DIRECTUM.
В результате в нижней области отобразятся все объекты, включенные в План обмена. В колонке Авторегистрация – текущее состояние авторегистрации изменений и количество зарегистрированных в данный момент объектов.
К объектам можно применить действия:
Обработка «Выгрузка и загрузка данных XML»
Универсальная обработка позволяет выполнить полную или частичную выгрузку данных информационной базы в xml-файл. Обработку можно использовать для миграции данных из 1С.
Сценарии использования обработки:
- Выгрузка записей справочника из одной базы и загрузка в другую. Разработка в базах должна быть идентичной.
- Выгрузка записей справочника в качестве резервной копии. Если в процессе работы со справочником записи затерлись либо были удалены, то их можно восстановить из xml-файла.
- Выгрузка данных в xml-файл для последующей миграции этих данных в систему DIRECTUM с помощью заказной разработки.
Обработка может выгружать записи объектов:
- Константы;
- Справочники;
- Документы;
- Последовательности;
- ПланыВидовХарактеристик;
- ПланыСчетов;
- ПланыВидовРасчета;
- РегистрыСведений;
- РегистрыНакопления;
- РегистрыБухгалтерии;
- РегистрыРасчета;
- БизнесПроцессы;
- Задачи;
- ПланыОбмена.
Особенности обработки:
- Фильтр можно накладывать на любой из реквизитов справочника. Например, настроить фильтрацию по справочнику Внутренние документы по полю ВидДокумента = Договор.
- Вместе с основным справочником можно выгружать связанные записи других справочников. Например, настроить выгрузку, чтобы вместе с внутренними документами выгружались связанные записи справочника Корреспонденты.
Обработка «Массовая регистрация изменений для обмена»
Обработку удобно использовать при тестировании интеграции с 1С.
Обработка позволяет зарегистрировать в плане обмена нужное количество записей для указанного справочника:
1. Запустите обработку «Массовая регистрация изменений для обмена».
2. Выберите необходимый справочник и нажмите на кнопку Выполнить.
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 48
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине.
Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)):
НаКлиенте
Процедура Загрузки()
ПутьКБазе=” D:ВашаБаза1с77″ ;
Пользователь=
Cклонения по падежам 6
НаКлиенте
Процедура Команда1(Команда)
ФИО = ” Иванов Иван Иванович” ;
Падеж = 2;
Пол = 1;
Результат = СклонениеФИО(ФИО, Падеж, пол);
Сообщить(Результат);
КонецПроцедуры
НаСервере
Функция СклонениеФИО(ФИО, Падеж, пол)
Результат = ” ” ;
Google maps : вывод точек на карту и режим панорамы 8
В отличие от яндекс карт в GMaps можно использовать панорамы – за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Посмотреть все результаты поиска похожих
Способ может быть не самый лучший, но работает. Если мы знаем, в каких метаданных мы ищем, то все предельно просто:
Создаем уникальный идентификатор с имеющимся у нас текстом ГУИДа и пользуемся замечательной функцией “ПолучитьСсылку”.
ГУИД = Новый УникальныйИдентификатор(СтрокаГУИД); НайденнаяСсылка = <НашиМетаданные>.<НашаТаблица>.ПолучитьСсылку(ГУИД);
Если мы не знаем, к каким метаданным относится объект с нашим ГУИДом, то придется перебрать все метаданные и таблицы. Как правило задача эта довольно своеобразная, но если уж вам понадобилось искать объект по всей базе по ГУИДу, то элементарная база у вас есть, а написать алгоритм для обхода всех метаданных для вас труда не составит.
|
|||
Carnal2
02.11.06 – 13:06 |
если такое возможно.. |
||
asady
1 – 02.11.06 – 13:10 |
(0) СтрокаGUID = “a763cfbb-f94f-4c67-8e13-0e96a3a7f353”; НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID); СсылкаТовар = Справочники.Номенклатура.ПолучитьСсылку(НовыйGUID); |
||
Carnal2
2 – 02.11.06 – 13:17 |
(1) спасибо, попробую |
||
Carnal2
3 – 02.11.06 – 14:08 |
а можно по GUID определить тип объекта? |
||
asady
4 – 02.11.06 – 14:13 |
(3) а вот это уже проблематично. |
||
Carnal2
5 – 02.11.06 – 16:25 |
(1) не рабоает… |
||
Salvador Limones
6 – 02.11.06 – 16:26 |
(5) Гонишь, всё работает. |
||
Neco
7 – 02.11.06 – 18:00 |
Вот пример обработки: |
||
Defender aka LINN 8 – 02.11.06 – 18:05 |
(6) А как ты думаешь, (5) какую именно строку взял? 🙂 |
Здесь можно задать вопрос “Как сделать?” и получить кучу ответов, что тебе это делать не надо. Ymryn
Пример уникального идентификатора: 4bf85396-cc7a-11ea-9ef0-c86000245adb
// //Узнать уникальный идентификатор ГУИД = КонтрагентСсылка.УникальныйИдентификатор(); //Создаём уникальный идентификатор из строки СтрокаGUID = “4bf85396-cc7a-11ea-9ef0-c86000245adb”; НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID); //Можно не указывать СтрокаGUID. Программа сгенерирует сама НовыйGUID = Новый УникальныйИдентификатор(); |
// //Получить ссылку на на объект, зная его GUID СсылкаПП = Документы.ПлатежноеПоручениеВходящее.ПолучитьСсылку(НовыйGUID); //Создать документ и присвоить ему ГУИД СтрокаGUID = “4bf85396-cc7a-11ea-9ef0-c86000245adb”; Док = Документы.ПлатежноеПоручениеВходящее.СоздатьДокумент(); СсылкаДок = Документы.ПлатежноеПоручениеВходящее.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаGUID)); Док.УстановитьСсылкуНового(СсылкаДок); |
// //Получить ГУИД из COM-объекта V83COMConnector = Новый COMОбъект(“V83.COMConnector”); БД = V83COMConnector.Connect(ПараметрыПодключения); СтрокаГУИД = БД.XMLСтрока(Док.Ссылка); |
Вариант применения в заметке «Сделать из элемента справочника группу»