Облегчение совместной жизни с COM соединением. Выполнение произвольного кода в подключенной базе.

Публикация № 309179

Разработка - Практика программирования

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

Навеяно многочисленными вопросами по работе с COM объектами.

Когда я начинал  изучать  COM соединение в 1С, то на первых порах сломал немало копий и бубнов, пытаясь реализовать то одну, то другую задачу. Все время приходилось держать в уме –«все, что пришло из той базы, кроме простых типов, –это не объекты 1С.  Это объекты 1С, завернутые в оболочку COMObject». Это немного напрягало. Потом я открыл для себя модуль внешнего соединения и у меня случился «щелк» в мозгах, который поставил все на место.

Я прописал в этом модуле простецкую экспортную функцию и жить с COM стало намного проще и веселее.

Вот эта функция:

 

 

//--------------

Функция ИсполнитьВн(КодВыполнить, ВспомПараметр= "") Экспорт

      Ответ= "ОК";//Если ничего не нужно будет возвращать, то при отсутствии ошибок в коде  вернется просто ОК

           

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

      Попытка

           Выполнить(КодВыполнить);

      Исключение

           //если все таки ошибка, то вернем ее текст

           Ответ=ОписаниеОшибки();

      КонецПопытки;

      Возврат Ответ;

КонецФункции

//--------------


 

Думаю особо объяснять тут ничего не надо.

Из вызывающей базы через переменную-соединение вызываем эту функцию и передаем в нее код, который надо выполнить. В переданном коде переменной Ответ присваиваем значение, которое нам надо получить из подключенной базы.

Причем код может быть сколь угодно сложный, вплоть до выполнения запросов, вызова экспортных процедур объектов и т.д. Главное правильно написать текст(особенно надо помнить про кавычки внутри текста)

 

Второй параметр «ВспомПараметр» является вспомогательным( если кто не догадался Smile). В нем можно передавать какие-то значения, которые потом можно использовать в передаваемом же коде соответственно через переменную ВспомПараметр.

 Простой вопрос с получением значения перечисления(который задается чаще всего) решается предельно просто:

 

 

//--------------

ИсполнитьКод= "Ответ=Перечисления.КакоетоИмя.КакоетоЗначение";//код на исполнение

ОтветОттуда=Соединение.ИсполнитьВн(ИсполнитьКод);

//--------------


 

Если не напутали в буквах в Исполнить код, то в Ответ получим нужную ссылку на нужное значение перечисления.

Но я на всякий случай все таки проверяю.

 

 

//--------------

Если ТипЗнч(ОтветОттуда)=Тип("Строка") Тогда // значит была ошибка и вернулся ее текст

            Сообщить("Ошибка выполнения кода: "+ ОтветОттуда);

КонецЕсли;

//--------------


 

Причем самая вкусность в том, что переданный в ВспомПараметр COMObject, полученный ранее, на той стороне снова становится нормальным объектом 1С.

Например если мы получили по COM ссылку на элемент справочника, то в вызываемой базе он будет COMObject. Но если мы передадим его в параметр ВспомПараметр при вызове ИсполнитьВн(), то в передаваемом коде на той стороне переменную ВспомПараметр можно уже использовать как нормальный объект СправочникСсылка

 

Например:

 

//--------------

СсылкаCOM=Соединение.Справочники.Номенклатура.НайтиПоКоду("666");

//поменяем наименование

ИсполнитьКод= "Об=ВспомПараметр.ПолучитьОбъект();

|Об.Наименование= ""Изменено в базе COM"";

|Об.Записать();";

ОтветОттуда=Соединение.ИсполнитьВн(ИсполнитьКод,СсылкаCOM);

Сообщить("Результат выполнения : "+ ОтветОттуда+ "

|Новое наименование:"+ СсылкаCOM.Наименование )  ;

//--------------


 

Конечно наименование можно поменять и в вызывающей базе, не сильно напрягаясь. Но это просто пример использования.

 

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

Если нужно просто выполнить действия например над переданным ВспомПараметром и ничего возвращать не нужно, то про ответ забываем и он при удачном выполнении вернется со значением по умолчанию, т.е. «ОК».

Если вернулось не «ОК», значит была ошибка выполнения и надо разбираться.

 

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

 

 

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. nipil 24.10.14 16:35 Сейчас в теме
Класс!
Работает даже без "модуля внешнего соединения".
ИмяФайла = "\\Share\ВнешниеОбработки\COMAdd.epf";
	Попытка
	      Обработка = connection.ВнешниеОбработки.Создать(ИмяФайла); 
	Исключение
		Сообщить("Ошибка создания внешней обработки: "+ИмяФайла+Символы.ПС+ОписаниеОшибки());
	КонецПопытки;
.
.
ОтветОттуда=Обработка.ИсполнитьВн(ИсполнитьКод,СсылкаCOM);

Показать
mir1m; Tangram; Nik_novosib; teorver; anton.fly7; baton_pk; monkbest; PiccaHut001; lefthander; Жолтокнижниг; taishy; students; Yashazz; Dimab85@yandex.ru; +14 Ответить
6. Yashazz 3318 27.10.14 13:30 Сейчас в теме
Мдя, скоро и правда даже "Сообщить("Привет") станет на ИС откровением и сакральным знанием... Если уж на столь очевидные вещи находятся восторгающиеся...
Матчасть учите и ИТС читайте, будет вам щастье.

p.s. за советы "чуть-чуть изменить конфу" хочется минусовать, не глядя. Есть несколько способов добиться того же, что описано в статье, не меняя конфу никак (вот, хотя бы, в (1) приведено, но там нужны права на запуск внешних обработок). Но топорные решения - они да, самые простые...
alexscamp; Анатолий50; uri1978; spezc; Stim213; borda4ev; tormozit; asved.ru; +8 Ответить
11. Рэйв 122 29.10.14 13:26 Сейчас в теме
(6) Yashazz, не все подписаны на ИТС. И не для каждого это элементарные вещи. Хотя для более менее опытного спеца- конечно ерунда. Но ведь не все супер спецы, не так ли?
jobkostya1c8; +1 Ответить
12. Рэйв 122 29.10.14 13:29 Сейчас в теме
+(6)>>p.s. за советы "чуть-чуть изменить конфу" хочется минусовать, не глядя

:-) Сразу видно ярого апологета, молящегося на стандартные конфы. Это, сударь, скорее ваш недостаток, чем достоинство. Я всю карьеру работаю либо с сильно переписанными стандартными либо с вовсе уникальными конфами. И ничего криминального в изменении кода, в отличии от вас, совершенно не вижу.Увы.
TreeDogNight; uri1978; +2 2 Ответить
2. V_V_V 24.10.14 19:13 Сейчас в теме
Я ничего не путаю, в первой функции ошибок нет? Сдается мне она ВСЕГДА должна ответ "ОК" присылать. Может все же должно быть Ответ = Выполнить(КодВыполнить); ?
И почему проверка на Строку? А если я в ответ именно строковое значение хочу получить?
Сорри конечно, если я туплю...
3. nipil 24.10.14 19:23 Сейчас в теме
(2) V_V_V, У меня "ошибается" только с пустыми параметрами
.ИсполнитьВн();


Пример с "номенклатурой" работает.
4. jobkostya1c8 25.10.14 19:30 Сейчас в теме
Да, все долго мучились с COM-соединением. Интересная методика :) Попробую взять на вооружение.
5. script 221 25.10.14 23:17 Сейчас в теме
Спасибо. Я месяца 2 назад потратил 2 два дня только на разработку инфраструктуры для обмена через Com. Где же вы были раньше.
7. Danila-Master 104 28.10.14 06:54 Сейчас в теме
Методика, конечно, интересная.
Но увеличивает уязвимость базы.
Можно написать на VBScript программку, которая подключится к базе и вызовет такую функцию.
А в параметре КодВыполнить можно написать все что угодно. Например удалить все документы, или переименовать все записи какго-нибудь справочника рендомными значениями.
Вот же вирусяка то получится :)
kiruha; Darklight; help1Ckr; JesteR; Stim213; +5 Ответить
8. asved.ru 35 29.10.14 10:11 Сейчас в теме
(7) Danila-Master, то же самое можно сделать и без такой функции.
9. Stim213 386 29.10.14 11:48 Сейчас в теме
"С тех пор я обязательно вставляю эту функцию во все конфигурации, с которыми предстоит долгое общение или сопровождение. Очень облегчает жизнь впоследствии."

это очень облегчает жизнь тем, кто хочет произвести неправомерные действия с базой. Если я увижу такую ДЫРУ в какой-либо из сопровождаемых базах, я немедленно её закрою, а на того, кто её сделал поставлю вопрос о проф пригодности.

Автор никогда не задумывался, почему такую супермегаполезную функцию разработчики за десяток лет не запилили ни в одной типовой конфигурации?
10. Рэйв 122 29.10.14 13:23 Сейчас в теме
(9) Stim213, Тогда надо всю жизнь сидеть дома и не выходить на улицу. Вдруг машина собъет или кирпич на голову упадет?
Хотя и на квартиру может упасть самолет:-)
Чтобы знать что такая функция есть надо зайти в конфигуратор и посмотреть в модуль внешнего соединения. А уж нахождение в конфигураторе - вот это уязвимость так уязвимость!:-)
15. Stim213 386 29.10.14 14:13 Сейчас в теме
(10) "Чтобы знать что такая функция есть надо зайти в конфигуратор и посмотреть в модуль внешнего соединения. А уж нахождение в конфигураторе - вот это уязвимость так уязвимость"

Отвечаю: чтобы узнать про эту дыру не нужен доступ в конфигуратор. Достаточно доступа к бекапу, cf или просто болтливый программист.

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

И не стоит полагаться на интуицию или авось - будут ломать или нет. Лучше сразу делать так, чтобы не было никаких дыр, как бы удобно с ними ни было. Старайтесь как можно ответственнее относиться к своей работе, это признак высокого профессионализма.
13. bulpi 174 29.10.14 13:31 Сейчас в теме
(9)
Главная защита неуловимого Джо в том, что он на фиг никому не нужен. Помни об этом :)
Рэйв; molodoi1sneg; +2 Ответить
14. Stim213 386 29.10.14 13:58 Сейчас в теме
(13) да без разницы. правила информационной безопасности едины для всех. Плох тот программист, который не соблюдает эти правила в своих разработках, независимо от степени важности информационной базы.
Эти базы в дальнейшем могут быть опубликованы на веб, на их основе могут быть построены какие-то другие решения, это все требует должного уровня защищенности
Allexe8.1; +1 Ответить
19. PiccaHut001 29.10.14 15:25 Сейчас в теме
(14) Stim213, не устраивайте цирк, если у пользователя есть права доступа к данным, он сможет стянуть их и без этой чудной функции. У автора нормальное решение, правила ИБ каждая кормушкакорпорация устанавливает свои, очень сомневаюсь, что даже в ваших есть что-то про использование "выполнить" на стороне базы.
20. Stim213 386 29.10.14 16:07 Сейчас в теме
(19) PiccaHut001, это не цирк, а элементарное соблюдение прав доступа и безопасности информационной базы.
Пользователю не нужно права доступа, ему достаточно знать учетку внешнего пользователя( у которой права доступа только на обработку обмена) и иметь такую дыру, которая позволит ему получить любые данные с базы.

К чему все настройки уровня доступа, рлс, механизмы разделения данных и пр. , когда любой админ, не имеющюй доступа к данным, через такую дыру утащит все данные.
23. PiccaHut001 29.10.14 18:47 Сейчас в теме
(20) Stim213, чтобы стащить справочник контрагентов,
достаточно знать учетку внешнего пользователя( у которой права доступа только на обработку обмена)
у учётки внешнего пользователя должны быть права на этот справочник. Запускаете обмены под полными правами, а потом думаете об информационной безопасности. не смешно.
monkbest; +1 Ответить
24. Stim213 386 30.10.14 09:05 Сейчас в теме
(23) PiccaHut001, не говорите ерунды. У внешнего пользователя может не быть вообще никаких прав, кроме права обновлять конфу. Этакий служебный пользователь для обновления скриптами.

да и вообще не важно, какие права у внешнего пользователя. Будь это хоть самый распоследний менеджер с самым минимальным набором прав - через эту дыру он получит доступ к любым данным
25. PiccaHut001 30.10.14 10:41 Сейчас в теме
(24) Stim213,
вообще не важно, какие права у внешнего пользователя
не совсем Вас понял. Есть пользователь, под которым запускается код в выполнить. Если выполнить запускается НЕ в привилегированном режиме и у пользователя нет прав на справочник, как он его может прочитать? Тем-более кудо слить? Может действительно я отстал от жизни
26. Stim213 386 30.10.14 10:58 Сейчас в теме
(25) PiccaHut001,
"Если выполнить запускается НЕ в привилегированном режиме и у пользователя нет прав на справочник, как он его может прочитать? "
Привилигированный режим устанавливается программно, доступен при внешнем соединении.
27. monkbest 108 30.10.14 12:29 Сейчас в теме
(9) Stim213, в чем дыра?
подключения производятся под пользователем 1С
если у него есть права стирать документы, то тут и без дыры их можно постирать, если нет, то выполняй любой кусок кода, не выполняй - ничего не получится

Единственно, что сейчас появился привилегированный режим, который чихать на права хотел, и которой включается кодом, вот про него во внешнем соединении не знаю ничего
28. Stim213 386 30.10.14 13:48 Сейчас в теме
(27) monkbest, "вот про него во внешнем соединении не знаю ничего"
ну раз не знаете, зачем писать?
29. monkbest 108 30.10.14 14:23 Сейчас в теме
(28) Stim213, вообще зря они этот режим ввели. Это для тех, кому права правильно настраивать лень. В 7.7 была такая дыра, если нет прав, но можно запустить внешнюю обработку, ты царь и бог в базе:)

а разве нельзя написать:
Соединение.УстановитьПривилегированныйРежим(ИСТИНА)

кажись можно, а значит "выполнить" и не дыра вовсе, дыра - возможность соединения
52. ezhik_2000 39 14.11.14 12:39 Сейчас в теме
(29) monkbest, "вообще зря они этот режим ввели. Это для тех, кому права правильно настраивать лень." - Тут дело не в лени а в новых возможностях. Например для пользователя нет прав на чтение регистра сведений, но при выполнении алгоритма данные оттуда нужно тянуть
16. Stim213 386 29.10.14 14:14 Сейчас в теме
+ в типовых и так полно дыр, не стоит их плодить еще больше
http://infostart.ru/public/182849/
17. lefthander 29.10.14 14:32 Сейчас в теме
Интересная идея. Спасибо, возьму на вооружение, у меня куча отчетов по COM тянет данные из примерно 30 различных баз.
18. spezc 661 29.10.14 14:57 Сейчас в теме
жесть... вот вам доступно и всерьез
21. acsent 1151 29.10.14 16:36 Сейчас в теме
Вообще то это ошибка
CWE-676 по классификации «2011 CWE/SANS Top 25 Most Dangerous Software Errors»
alexscamp; Stim213; +2 Ответить
22. JesteR 142 29.10.14 17:35 Сейчас в теме
Передай туда такой код:

Для каждого ТекРегистр ИЗ Метаданные.РегистрыСведений Цикл
НЗ = РегистрыСведений[ТекРегистр].СоздатьНаборЗаписей();
НЗ.Записать();
КонецЦикла;


или

Выборка = Справочники.Контрагенты.Выбрать();
//даллее код отправки на мыло.



30. monkbest 108 30.10.14 14:51 Сейчас в теме
Спор про безопасность считаю закрытым. т.к. без всяких "Выполнить", можно написать код:
	База = Новый COMObject("V83.COMConnector"); 
Соединение = База.Connect("Srvr=""apps2:1741"";Ref=""zup30"";Usr=""Тест"";Pwd=""******"";"); 
Соединение.УстановитьПривилегированныйРежим(Истина);
Соединение.УстановитьПривилегированныйРежим(Ложь);
Соединение = Неопределено;


код отработал на ура, печалька
31. Stim213 386 30.10.14 17:01 Сейчас в теме
(30) monkbest, вы дурачитесь или серьезно?
ваш код ошибки не не выдаст, но и привилегированного режима для соединения не создаст.
учите матчасть.
32. PiccaHut001 30.10.14 18:59 Сейчас в теме
(31) Stim213,
Привилигированный режим устанавливается программно, доступен при внешнем соединении.

ваш код ошибки не не выдаст, но и привилегированного режима для соединения не создаст.
так и скажите, что для включения привилегированного режима нужно выполнять команду на сервере. Возвращаясь к нашим баранам, если модуль с нашим "выполнить" галочками отметить как клиент/внешнее соединение, то никакой "дыры" в безопасности не появлятся.
35. Stim213 386 31.10.14 09:50 Сейчас в теме
(32)
"так и скажите, что для включения привилегированного режима нужно выполнять команду на сервере. Возвращаясь к нашим баранам, если модуль с нашим "выполнить" галочками отметить как клиент/внешнее соединение, то никакой "дыры" в безопасности не появлятся."

я так не говорил и не говорю.
Установка привилегированного режима вполне себе выполнится как на сервере, так и при внешнем соединении.
Оставляйте только галочку "внешнее соединение" - и установка привилегированного режима будет возможна.
Режим не установится только в том случае, если база клиент-серверная, а установка выполняется на клиенте.
33. monkbest 108 31.10.14 08:35 Сейчас в теме
(31) Stim213, я серьезно
ошибки он уже не выдал, я это проверил
реальный доступ к запретным данным получить еще не пробовал, этот эксперимент - сложнее, на него нужно время.

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

Если, как Вы утверждаете метод УстановитьПривилегированныйРежим ничего не включает, то нафига его сделали доступным у ком объекта?
36. Stim213 386 31.10.14 10:03 Сейчас в теме
(33) monkbest, этот метод доступен, когда вызывается как бы "внутри" базы, встроенным языком 1С.
Когда вы пишите Соединение.МойОбщийМодульВнешнегоСоединения.ВыполнитьУстановкуПривилегированногоРежима() - режим для подключения установится. Выполнения кода в данном случае выполняется в 1С.
Когда вы пишите Соединение.УстановитьПривилегированныйРежим(Истина) - привилег режим не установится, потому установка режима выполняется не в 1С, а той программой, которая установила соединение - vb скрипт, к примеру, и код выполняется dll'кой в процессе, вызвавшем COMConneсtor.

Такое ограничение разработчиками сделано специально, чтобы защитить информационную базу от неправомерных действий сторонних приложений.
37. monkbest 108 31.10.14 13:36 Сейчас в теме
(36) Stim213, понятно, спасибо.

Хотя я бы на месте платформы выдал ошибку в моем коде, а то метод отработал, но ничего не сделал, в плане безопасности правильно, но некрасиво.
34. monkbest 108 31.10.14 09:11 Сейчас в теме
(31) Stim213, эксперимент закончен
кусок кода упал с ошибко на отсутствие прав
у пользователя справочник сотрудники был доступен только на чтение

База = Новый COMObject("V83.COMConnector"); 
	Соединение = База.Connect("File=""C:\Documents and Settings\*****\My Documents\зуп30"";Ref=""zup30"";Usr=""test"";Pwd=""******"";"); 
	
	Соединение.УстановитьПривилегированныйРежим(Истина);
	
	эл = Соединение.справочники.Сотрудники.СоздатьЭлемент();
	эл.ОбменДанными.Загрузка = Истина;
	эл.Наименование = "проба";
	эл.Код = "99999";
	эл.Записать();
	
	Соединение.УстановитьПривилегированныйРежим(Ложь);
	Соединение = Неопределено;
Показать
38. ManyakRus 394 31.10.14 17:13 Сейчас в теме
я так и не понял зачем такой бред:
ИсполнитьКод= "Ответ=Перечисления.КакоетоИмя.КакоетоЗначение";//код на исполнение
ОтветОттуда=Соединение.ИсполнитьВн(ИсполнитьКод);
:(

когда можно сразу написать:
ОтветОттуда= Соединение.Перечисления.КакоетоИмя.КакоетоЗначение;

и остальное всё тоже бред :(
39. Рэйв 122 01.11.14 07:35 Сейчас в теме
(38)
А ты попробуй получить значение перечисления скажем в реквизите и сопоставить его со значением в вызывающей базе. Сразу станет интереснее.
46. Stim213 386 05.11.14 08:56 Сейчас в теме
(39) Рэйв,
"А ты попробуй получить значение перечисления скажем в реквизите и сопоставить его со значением в вызывающей базе. Сразу станет интереснее."

Это не повод делать дыру в базе.
Используйте строковое представление перечисления XMLСтрока(), или системный реквизит Порядок перечисления.

Поверьте, лучше подучить матчасть и писать хоть и больше кода, но безопаснее и правильнее.
53. Рэйв 122 15.11.14 08:56 Сейчас в теме
(46) Stim213, Я уже выше говорил про параною и разное отношение к ней.
Я наверное програмер уже старой закваски.Слегка разпиз@яйской-)) Так что как я выше и говорил - понять друг друга можем, но убедить нет:-)
40. Рэйв 122 01.11.14 07:37 Сейчас в теме
Мое скромное имхо, господа, - ваш заруб за безопасность вечен и принципиально не разрешаем:-)
41. webester 32 02.11.14 09:31 Сейчас в теме
(40)stim123, сказал все правильно, что там неразрешаемого?
42. Рэйв 122 03.11.14 05:03 Сейчас в теме
(41)Просто кто-то не очень подвержен паранои и готов немного поступиться безопасностью ради удобства, а кто-то нет:-)
43. uri1978 128 03.11.14 13:04 Сейчас в теме
По безопасности, зря накинулись на автора статьи.
Почему решили, что команда "Выполнить" работает под полными правами?
Если у пользователя, под которым подключаются по COM есть доступ к данным, то не важно - есть функция в Модуле Внешнего Подключения, нет такой функции - удалить или прочитать данные можно. Например ,никто не запрещает через Соединение очистить регистры.
По безопасности - выстраивайте ПРАВИЛЬНЫЕ права у пользователя который к COM подключается и спите спокойно.
45. Stim213 386 05.11.14 08:53 Сейчас в теме
(43) uri1978,
"Если у пользователя, под которым подключаются по COM есть доступ к данным"
еще раз, для тех, кто в танке - у пользователя может не быть доступ к данным. С такой дырой любой менеджер, даже с самыми минимальными правами - обладает неограниченным доступом к данным.
Любой админ, любой пользователь - кто угодно!
monkbest; +1 Ответить
47. uri1978 128 05.11.14 10:39 Сейчас в теме
(45) Stim213,
В МодулеВнешнегоПриложения не происходит контроль прав?
48. Stim213 386 05.11.14 11:14 Сейчас в теме
(47) uri1978, происходит, разумеется. Но его прекрасно можно отключить установкой привилегированного режима.
49. uri1978 128 05.11.14 11:20 Сейчас в теме
(48) Stim213,
Т.е. в команде Выполнить - можно "УстановитьПривилегированныйРежим(Истина)" и всё прокатит? Тогда это дыра, согласен.
50. Stim213 386 05.11.14 12:51 Сейчас в теме
(49) uri1978, конешн прокатит. Это прокатывает с обработкой универсального обмена XML, я об этом уже писал
http://infostart.ru/public/182849/
51. uri1978 128 05.11.14 12:59 Сейчас в теме
(50) Stim213,
Век - живи век - учись. Пошел почитаю вашу статью про обмен.
44. Bacemo 03.11.14 21:30 Сейчас в теме
такое встетил впервые. поразбираюсь автору +
54. tormozit 5912 15.11.14 09:41 Сейчас в теме
Описанная здесь идея лежит в основе нашего тиражного продукта 2iS:Интеграция http://www.2is.ru/ . Это конфигурация на 1С, в которой ты регистрируешь нужные базы 1С. Далее, используя виды автозаданий (предопределенные внешние обработки или добавленные свои внешние обработки или даже просто алгоритмы), выполняешь автозадания по расписанию или вручную или через шлюз веб-сервисов. Предопределенных видов автозаданий уже довольно много (мониторинг, обмен, управление пользователями, загрузка и обновление конфигурации, выгрузка базы и т.д.). Также реализована подсистема портал отчетности, которая позволяет разрабатывать и формировать отчеты в Интеграции для подключенных к ней баз. Все это без изменения конфигурации подключаемых к Интеграции баз.
55. Рэйв 122 15.11.14 09:48 Сейчас в теме
(54) tormozit, И не стыдно тебе? :-) Вроде уважаемый инфостартер...
А рекламу тут у меня постишь не спросясь.
Не хорошо.

56. Рэйв 122 15.11.14 09:52 Сейчас в теме
(54)Оставлю, пуст будет тебе укором.
57. tormozit 5912 15.11.14 10:00 Сейчас в теме
Кому то реклама, а кому то ссылка на много готового кода...
58. Рэйв 122 15.11.14 10:02 Сейчас в теме
(57)А ты не оправдывайся, чувачок. Иди на своей странице код свой нужный и готовый приводи коли такой умный.....
59. dyak84 09.01.15 13:33 Сейчас в теме
Автор спасибо за идею. Буду разбиратся. Так держать
60. Chloe 28.06.15 13:07 Сейчас в теме
не очень понятно как запрос передать в ИсполнитьКод.....
61. Рэйв 122 29.06.15 08:28 Сейчас в теме
(60) Chloe,
Можно разными способами.
Самый простой и удобный передать текст запроса через вспом. параметр и там его использовать:

//----------
ТекстЗапрос="Выбрать * Из Справочник.Номенклатура";
КодТам="Запрос=Новый Запрос; Запрос.Текст=ВспомПараметр;Ответ=Запрос.Выполнить().Выгрузить()";

Результат=Соединение.ИсполнитьВн(КодТам,ТекстЗапрос);
Оставьте свое сообщение

См. также

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    36785    unichkin    46    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    21889    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    20464    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    15255    kuzyara    33    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    29292    tormozit    100    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    16240    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    7864    Sibars    19    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    30122    Yashazz    46    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    77191    tormozit    131    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    43515    rpgshnik    63    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    45191    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    26109    YPermitin    24    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    47477    tormozit    40    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    24814    YPermitin    80    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    30037    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    71723    ids79    49    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    43773    tormozit    74    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    31446    avalakh    22    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    21491    json    13    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    53056    ids79    11    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    15843    m-rv    2    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    33719    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    25105    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    19268    SeiOkami    50    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    19833    m-rv    17    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

02.07.2019    41466    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    48739    ids79    25    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    23914    dmurk    144    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    29927    m-rv    21    

Регистры накопления. Виртуальные таблицы. Часть №2: "Остатки" и "Остатки и обороты"

Практика программирования v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальными таблицами регистров накопления "Остатки" и "Остатки и обороты". Анализ SQL-запрос при работе с виртуальными таблицами

22.05.2019    21921    YPermitin    7    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

16.05.2019    40350    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    28369    Eret1k    23    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    27988    itriot11    34    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    34148    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    26502    ellavs    88    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    30348    YPermitin    53    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    75433    Serginio    108    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    35903    Смешной 1С    27    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    20921    Vladimir Litvinenko    27    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    33662    ids79    40    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    36767    ids79    9    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    28855    grumagargler    28    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    25731    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    39494    ids79    72    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    35833    ids79    40    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

Практика программирования v8 Бесплатно (free)

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

04.09.2017    51764    m-rv    61    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    43894    Unk92    21