Подсистема "COMExchange" для 1С:Предприятие-8.х (обычное приложение)

Опубликовал yuraos в раздел Программирование - Инструментарий

Подсистема включает в себя функционал, обеспечивающий взаимодействие 1С:Предприятия с любыми приложениями, поддерживающих технологию COM. Имеет развитые возможности для работы с библиотекой ADO. Предоставляет удобные средства для целей разработки и выполнения административных задач.

 

Больше хороших боянов, товарищи! Ура!!!
(из первомайского обращения к коллективу
фабрики музыкальных инструментов)
 

 

Тема взаимодействия 1С  с другими приложениями через COM  относится к разряду популярных и
активно обсуждается во многих публикациях, например:
http://infostart.ru/public/65045/
http://infostart.ru/public/69248/
http://infostart.ru/public/64883/
http://infostart.ru/public/62737/
http://infostart.ru/public/81333/
http://infostart.ru/public/170424/.

Материалы для данной работы получены в результате разработок, решавших практические задачи обмена данными между 1С и информационной
системой «ЭТРАН» РАО РЖД, а также с программными системами прочих поставщиков информации о движении грузов по железным дорогам.



История версий:

Версии:  8.1.1.4 (для 8.1) и 8.2.1.4 (для 8.2) от 01.03.2014:
    1) Набор прав SA для усиленного контроля "полного доступа" к базе,
       описанного в http://infostart.ru/public/225570/.
       Используется для контроля доступа к обработке "КонсольЗапросов1СADO"
    2) Автономная подсистема "Произвольные фоновые и регламентные задания" (бетта-версия).
    3) Дальнейшее развитие функционала обработки "КонсольЗапросов1СADO":
        версия консоли:  8.1.1.3  от 01.03.2014:
           1. Реорганизация структуры данных и алгоритмов обработки для обеспечения совместимости
               с управляемым приложением.
           2. Вынос функционала обработки выборки запроса из модуля формы "ОбработкаВыборки" в модуль объекта.
           3. Обработка выделенных строк таблицы результата запроса в форме "ОбработкаВыборки".
           4. Вывод времени выполнения и отображение статуса обработки строк в форме "ОбработкаВыборки".
           5. Контроль ссылочной целостности при непосредственном удалении объектов в форме "ОбработкаВыборки".
           6. Новые шаблоны заполнения для обработки выборки запроса -
               - "Обработка табличной части" и "Обработка движений регистратора".
           7. Сохранение результата запроса во внешнем файле (*.obj8).
           8. "Загрузка" в результат запроса объекта 1С (таблицы/дерева значений), сохраненого во внешнем файле (*.obj8).
           9. "Загрузка" в результат запроса списка помеченных на удаление объектов;
         10. "Загрузка" в результат запроса таблицы ссылок на список объектов, полученных при выполнении другого запроса;
         11. Запрос в режиме "Консоль кода" с показом результатов вычислений в табло значений (в "результате" запроса);
         12. Заполнение дерева запросов по переданному объекту "Запрос" -
               - используется подсистемой "ViewValues" для его "просмотра".
         13. Масса интерфейсных улутшений (в том числе список последних открытых файлов запросов).
         14. Интеграция с обработкой 1С:Администратор (http://infostart.ru/public/100967/), требуемая версия не ниже 5.6.

   Версия 8.1.1.3 от 22.04.013:
    1) Часть функционала из модуля объекта плана обмена "ОбменДаннымиCOM"  перенесена в новый общий модуль "COMУзел" 
        (для совместимости с видимостью контекстов в управляемом приложении) с сохранением обратной совместимости;
    2) В список стандартных настроек плана обмена добавлены настройки для работы с операционной системой через объект "WScript.Shell"
        
В форме автозаполнения добавлено заполнение стандартных узлов с кодами "WSH.Runи "WSH.Exec";
    3) Реализована возможность подключения-отключения к источнику данных на стороне сервера с инициализацией (передачей управления) 
       
со стороны клиента (для выполнения на стороне сервера некоторых действий: например, включения-выключения VPN-соединений);
   подробнее...

   Версия 8.1.1.2 от 08.03.013:
    1) Функционал выполнения запросов ADO:
        - поддержка работы с внешней компонентой GameWithFire.dll, подробнее...
    2) Консоль запросов: 
        - возможность держать открытым менеджер временных таблиц для повторного использования 
        временных таблиц созданных после интерактивного выполнения запроса (Рис.18). 
        - сервис выборочного удаления строк таблицы результата запроса 
        по произвольному условию (Рис.16, Рис.17).

 


 Возможности подсистемы:

  1. Обеспечение взаимодействия и обмен данными 1С:Предприятия с любыми приложениями, поддерживающими технологию COM;
  2. Развитые возможности для работы с библиотекой ADO:
  • а. Выполнение любых инструкций SQL: чтения, вставки, обновления, удаления, изменения структуры данных и т.п.;
  • b. Выполнение пакета инструкций (multi-batch-statement);
  • c. Возможность использования в запросах большинства опций ADO (Рис.11, Рис.12)
       согласно документации (см. ниже ссылки на Интернет-ресурсы);
  • d. Выполнение запросов с выгрузкой результата в таблицу значений
        (в том числе с выгрузкой результата выполнения каждой инструкции из multi-batch-statement в отдельную таблицу значений);
  • e. Выполнение запросов в цикле с подстановкой значений параметров из переданной таблицы значений,
        включая параметризованные запросы ADO;

     3.  Удобные средства для разработки и выполнения административных задач;

 

В состав подсистемы входят:

1) общий модуль "COMОбменПривелигированный" - пустой, зарезервирован для регламентных серверных процедур; 

2) общие модули "COMОбменСервер" и "COMОбменКлиент" - содержит серверные и клиентские варианты функций следующего назначения:

  • a. Выполнение запросов 1С в различных режимах;
  • b. Выполнение запросов через ADO к внешним источникам данных в различных режимах;
  • c. Выполнение запросов в цикле со значениями параметров из таблицы значений,
        включая параметризованные запросы ADO с «пред-подготовкой» команды при первом исполнении;

3) общий модуль "COMОбмен" -  содержит процедуры и функции сервисного и общего назначения, в том числе:

  • a. Открытие файла по имени с помощью узла плана обмена "ОбменДаннымиCOM" в ассоциированном приложении;
  • b. Функции синхронизации данных через регистр сведений "ОбменДаннымиCOMСоответствиеОбъектов";
  • c. Общие функции для работы с ADO:
    • - Значения перечислений ADO;
    • - Соответствие типов 1С и ADO;
    • - Установка параметров запросов ADO;
    • - Выгрузка результатов запросов ADO в таблицу значений;

4) План обмена "ОбменДаннымиCOM" (Рис.1), выполняет следующие функции:

  • a. Служит для хранения данных, необходимых для связи (подключения/отключения) с источником данных через COM (Рис.4):
    • - Идентификатор приложения, имя сервера приложения, учётные данные для доступа к данным (логин, пароль);
    • - Тип источника данных, возможные значения:
      • Файл с данными;
      • Файловая база данных (каталог с файлами данных);
      • Клиент-серверная база данных;
      • Произвольный ресурс интернета;
    • - Модули подключения к источнику данных и отключения от источника данных через COM
        (исполняются в контексте модуля объекта плана обмена);
  • b. Через экспортные методы объекта плана обмена обеспечиваются следующие базовые функционалы:
    • - Подключение, отключение к источнику данных через COM;
    • - Синхронизация объектов в базе 1С с данными из внешних источников;
        В данном функционале механизм регистрации изменений и транспортный механизм системы универсального обмена данными
        не задействованы.
      Имеется практическая возможность для реализации на основе этих механизмов нестандартных обменов с
        внешними источниками данных,
      использующих прямой доступ к базам данных через ADO (в том числе запросы для записи данных
        и вызов хранимых процедур)
      .
  • c. Содержит вспомогательные данные, используемые при заполнении настроек и выборе узла плана обмена из списка:
    • - Внутренний числовой код платформы источника данных. Соответствует виду приложения для доступа к данным.
        Выбирается из списка стандартных настроек (Рис.5).
        Некоторые платформы из этого списка:
      • 1С:Предприятие-7.7, 1С:Предприятие-8.0 (и остальные версии) через OLE и COM;
      • MS Word, MS Excel через COM;
      • Различные СУБД через ADO: MS SQL-Server, MySQL, PostgreSQL, IBM DB2, Oracle, FoxPro и т.д.
      • Произвольный COM-объект (доступны для изменения любые настройки соединения)
    • - Вид узла (конфигурации) источника данных - ссылка из справочника "ВидыУзловCOM".
        Используется для произвольной классификации источников данных по их внутренней конфигурации.
        Например, для 1С:Предприятие это может быть имя прикладного решения ТИС-9.2, УТ-10.3, УПП-1.3 и т.д.;
  • d. Предоставляет средства для автоматического заполнения настроек источников данных:
    • - Выбор типа платформы источника данных в форме узла плана обмена из широкого списка стандартных настроек;
    • - Начальное заполнения плана обмена "ОбменДаннымиCOM" и справочника "ВидыУзловCOM" стандартными
        ("предопределёнными") значениями в форме автоматического заполнения (Рис.2); 

5)  Справочник "ВидыУзловCOM", служит для произвольной классификации источников данных по конфигурации базы данных.
     Используется для построения списка узлов плана обмена "ОбменДаннымиCOM" c иерархией по видам узлов (Рис.3).
     Этот список открывается для подбора источника данных запроса ADO в обработке "КонсольЗапросов1СADO".

6)  Обработка "КонсольЗапросов1СADO", доработанная версия стандартной обработки "КонсольЗапросов" (Рис.10).
     Удобный инструмент для разработки и администрирования.
     В этой консоли сделано много улучшений и дополнительных возможностей, в том числе:
          - Выполнение запросов к внешним источникам данных через ADO (Рис.11);
          - Использование событий выполнения запросов для организации сложных действий, например, выполнения «составных» запросов (Рис.14);
          - Использование событий обработки результатов запросов для обработки данных по произвольному алгоритму (Рис.15);

7)  Регистр сведений "ОбменДаннымиCOMСоответствиеОбъектов", используется для хранения соответствий ссылок на объекты из текущей базы 1С и
     уникальных кодов,  идентифицирующих объекты во внешних источниках данных, соответствующих узлам плана обмена "ОбменДаннымиCOM" .

 

Работа с библиотекой ADO:

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

1. Справочная информация (учебник) по библиотеке ADO (Microsoft ActiveX Data Object):
http://www.w3schools.com/ado/

2.Информация по строке соединения с различными источниками данных ADO:
http://www.connectionstrings.com/

3.Статьи о использовании библиотеки ADO:
http://www.script-coding.com/ADO.html
http://www.sql.ru/articles/mssql/2005/122703ado.shtml

 

Документация:

По объектам подсистемы составлено подробное описание, включающее подробности, не описанные в настоящей статье.
О некоторых из них также можно прочитать в следующих публикациях:
1. Подсистема "COMExchange": прямой доступ к EXCEL через ADO.
2. Подсистема "COMExchange": «прямые» запросы к базе 1С через ADO или как простые элементы сделать “предопределёнными”.
3. Подсистема "COMExchange": ускорение выгрузки запросов ADO или «игра с огнём».
4. Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: грузим курс «бакса» ЦБРФ из файла *.dbf или *.xlsx.
5. Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: корректируем регистры или «Берём банк, кассу, экспроприируем экспроприаторов».
6. Управление VPN-соединением из 1С на стороне клиента и на стороне сервера.
7. Подсистема "COMExchange": консоль запросов в режиме «Консоль кода».

 

Комплект поставки:

Подсистема поставляется вместе с подсистемой «ViewValues»,
так как она используется некоторыми функциями просмотра табличных объектов в консоли запросов (Рис.13).

Архив комплекта поставки COMExchange-8x.rar содержит: 
   1. файлы конфигураций подсистемы для следующих релизов платформ 1С: 8.1.14, 8.2.13, 8.2.14;
   2. файл ..\Samples\*.*  (сохраненные запросы, файлы с данными) - примеры
демонстрирующие возможности подсистемы;

 

Особенности установки:

После установки рекомендуется выполнить начальное заполнение объектов подсистемы стандартными значениями
в форме автоматического заполнения (Рис.2).

 

Благодарности:

Хочу выразить признательность неизвестному программисту 1С, оставивший авторский комментарий //Vitkovsky в форме
обработки выборки данных консоли запросов, за удобный, гибкий инструмент, который много раз выручал меня в работе.

 

Файлы

Наименование Файл Версия Размер Кол. Скачив.
COMExchange-8x.rar
.rar 4,55Mb
22.03.14
341
.rar 4,55Mb 341 Скачать

См. также

Лучшие комментарии

14. MiCe 24.02.2013 06:02
на счет Excel.
Выгружать в новом формате (xlsx) легче через xml. не будет проблем с типами...
сделайте unzip для любого ёкселевского фала - поймете структуру...
кстати можно и украшать так же... да и загружать в прЫнципе....
============ так же и в ворд....
Ответили: (15)
+ 1 [ yuraos; ]
# Ответить
10. bulpi (файл скачал) 24.01.2013 15:47
Вот это работа !
Недооцененная сообществом, по-моему.
Ответили: (11)
+ 1 [ yuraos; ]
# Ответить
30. tormozit (файл скачал) 29.07.2013 02:33
Огромное спасибо автору подсистемы! Хорошее оформление кода и описание помогли быстро разобраться.

Путем частичного заимствования кода из нее в подсистеме "Инструменты разработчика" внедрена начальная поддержка ADO (консоль запросов и конструктор запроса). Подробнее здесь
+ 1 [ yuraos; ]
# Ответить

Комментарии

1. yuraos 19.01.2013 16:28
Всем доброго времени суток!
Представляю вашему вниманию мои скромные наработки по взаимодействию 1С со внешними миром через COM.

Несколько замечаний:
1) Предлагаемые список стандартных настроек источников данных ADO широк, но
функции выполняющие запросы через ADO реально проверялись со следующими источниками данных:
для MS SQL Server ч/з OLEDB (для баз с разной архитектурой, в том числе для 1С-7.7-sql и 1С-8.х-sql);
для FoxPro ч/з OLEDB (для баз 1С-7.7-dbf);
для MS EXEL ч/з Excel-Jet.OLEDB и Excel-Ace.OLEDB;
В последнем случае возникли определенные ньюансы, например для параметрических запросов
с символами подстановки параметра '?' провайдер для всех параметров запроса
устанавливает одинаковые имена - "?".
В связи с этим предприняты определенные меры,
которые, как я надеюсь, больше не превидут к неожиданностям при работе с другими СУБД.

2) Консоль запросов в комлекте с подсистемой достаточно универсальна и может использоваться независимо.
Для выполнения запросов через ADO требуется план обмена "Обмен данными COM" и общие модули подситемы.
Остальной функционал (кроме некоторых функций просмотра "табличных" объектов) будет работать в любой конфигурации.
# Ответить
2. German 19.01.2013 21:33
+ за multi batch еще в консолях не было
Как ведет себя опция Сохранять откомпилированную версию("параметрезованный" запрос) в DB2?
Ответили: (5)
# Ответить
3. dyak84 19.01.2013 22:45
Уважаемые пользователи сайта кто использовал даную подсистему кроме автора отпишитесь как работает, все ли так гладко как говорит автор. Спасибо за внимание жду ответа.
Ответили: (4) (6)
# Ответить
4. Kuzja_R 20.01.2013 02:38
(3) dyak84, сам бы протестировал и нам рассказал. =)
# Ответить
5. yuraos 20.01.2013 09:33
(2) German, чесно говоря не проверял, на подхвате нет сервера DB2.

В функциях выполняющих запрос все сделано по документации:
Если эта опция установлена, у объекта ADODB.Command свойству Prepared присваивается Истина.

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

Ну а там как провайдер данных на душу положет...
В SQL Server Books Online, например, об этом можно прочитать:
"что не все провайдеры данных поддерживают параметризованные запросы"
# Ответить
6. yuraos 20.01.2013 09:39
(3) dyak84, я пожалуй тебя поддержу...
Например Excel через Jet.OLEDB меня малость неприятно удивил.

Теперь я от провайдеров данных готов ожидать чего угодно.
Соображения здравого смысла тут не работают.

Логика бывает математической, женской и ПРИКЛАДНОЙ :)
# Ответить
7. yuraos 20.01.2013 09:58
Выкладываю подправленную версию консоли.

Изначально я при любой смене источника данных очищал настройки типа ADO у параметров запроса.
Потом решил делать так только при очистке значения.

Но что-то малость прокосячился ...
... это все наследие 1с-77:
там вместо НЕ ЗначениеЗаполнено()[/I нечто с противоположным смыслом - [I]ПустоеЗначение()
;)
# Ответить
8. yuraos 20.01.2013 09:59
Выкладываю подправленную версию консоли.

Изначально я при любой смене источника данных очищал настройки типа ADO у параметров запроса.
Потом решил делать так только при очистке значения.

Но что-то малость прокосячился ...
... это все наследие 1с-77:
там вместо НЕ ЗначениеЗаполнено() нечто с противоположным смыслом - ПустоеЗначение()
;)
Ответили: (9)
# Ответить
9. yuraos 22.01.2013 05:47
Доброе всем время суток!
Изменен комплект поставки.
Текущие изменения:
1. Включены исправления в консоли запросов из поста (8);
2. Добавлен пример (сохраненный запрос),
демонстрирующий прямой доступ к EXCEL через ADO
+ дополнительные возможности консоли;
# Ответить
10. bulpi (файл скачал) 24.01.2013 15:47
Вот это работа !
Недооцененная сообществом, по-моему.
Ответили: (11)
+ 1 [ yuraos; ]
# Ответить
11. yuraos 24.01.2013 16:26
(10) bulpi, ну общество я думаю пока находится в процессе оценивания...
...как говорится жираф он большой ;)
# Ответить
12. karakozov (файл скачал) 28.01.2013 11:50
Да! Работа конечно колоссальная.Автору зачет.Обязательно попробую реализовать обмен по средствам данного механизма.Плюс однозначно!
# Ответить
13. yuraos 06.02.2013 21:13
Доброе всем время суток!
Изменен комплект поставки.
Текущие изменения:
1. Теперь в консоли запросов время выполнения запросов и время выгрузки
показывается с точностью до миллисекунды.
2. В план обмена "ОбменДаннымиCOM" добавлена новая платформа источника данных
"ADO-подключение к таблице dBase ч/з OLEDB" для доступа через ADO к DBF-файлам
и соответствующий ей стандартный узел плана обмена, создаваемый в форме автозаполнения.
3. В план обмена "ОбменДаннымиCOM" также добавлена форма авторизации на сервере 1С
для ввода имени, пароля Администратора сервера 1С, а также, при необходимости,
для уточнения сетевого протокола и номера порта для связи с сервером.
# Ответить
14. MiCe 24.02.2013 06:02
на счет Excel.
Выгружать в новом формате (xlsx) легче через xml. не будет проблем с типами...
сделайте unzip для любого ёкселевского фала - поймете структуру...
кстати можно и украшать так же... да и загружать в прЫнципе....
============ так же и в ворд....
Ответили: (15)
+ 1 [ yuraos; ]
# Ответить
15. yuraos 24.02.2013 10:18
(14) MiCe, фэнкс!
дасс, пропустилс по невнимательности в строке соединения
для стандартных настроек "ADO-подключение к файлу XLS ч/з ACE.OLEDB-12.0",
используемых для "предопределенного" узла "ExcelAce" неприметное словечко "Xml".

Как раз из-за этого Excel-2012 и отказывался узнавать
созданный провайдером при выгрузке данных файл с расширением *.xlsx.
Поскольку фактический формат созданного файла другой - "бинарная" рабочая книга *.xlsb.

Более правильной для расширения файла *.xlsx будет строка соединения
Provider=Microsoft.ACE.OLEDB.12.0; Data Source="!Путь!"; Extended Properties="Excel 12.0 Xml; HDR=Yes;"

с близжайшим обновлением подправлю стандартные настройки.
Сейчас придется подправить настройки в узле в ручную.
После выхода обновления - можно будет заполнить настройки по умолчанию при "очистке" строки соединения в форме узла.
# Ответить
16. MiCe 24.02.2013 14:20
в строке провайдера ёкселя есть параметр imex... если он равен 1 - то все данные интерпретируются как тип строка...
при загрузке полезно... не будет пропуска данных не соответствующих типу колонке...
и еще.... в тексте запроса можно использовать именованные области...
и еще ))) можно готовить шаблоны ёкселя.... потом создавать файлы на основе шаблона и выгружать в них....
это даст украшательства...
и еще раз напомню.... xlsx зазипованный xml.... намного более гибкий формат....
доступ к ёкселю через адо слишком чувствителен к данным....
Ответили: (17)
# Ответить
17. yuraos 24.02.2013 16:56
(16) MiCe,
и еще....

Нельзя объять необъятное.
К.Прутков

:)

к параметру imex я присматривался,
но так и не стал его включать в строку соединения в стандартных настройках
плана обмена "Обмен данными COM".

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

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

Значение поля Период в виде текста как-то совсем получается неудобным.
Прямо в запросе 1С его к дате не преобразуешь
(про функцию ВЫРАЗИТЬ() - я могу долго и нецензурно выражаться :) )

А при обработке в коде 1С при пребразованиии с помощью функции ДАТА()
тоже могут возникнуть проблемы, так как текстовое представление даты не всегда соответстует принятому в 1С.
Ответили: (18)
# Ответить
18. yuraos 24.02.2013 17:05
(17),
и еще....
:)

я не агитирую использовать только старый формат книг эксель *.xls или только новый *.xlsx.

в плане обмена "Обмен данными COM" есть стандартные узлы,
создаваемые в форме автозаполнения, как для старого формата так и для нового.

такии образом:
что кому нравится или что когда нравится...
:)
# Ответить
19. MiCe 24.02.2013 17:33
да.... как все таки не хватает нативного tsql...
примеры провайдера
у екселя есть сохранкние в формат "таблица xml 2003"
у платформы 1с хороший движОк xml с сериализацией... наладить трансформ и всех делов....
на новых платформах 1с пытается сделать что то наподобие линкед сервер.... но как всегда через ж....
куча недореализаций.... нет обновлений... все дело в том что нужно четко сопоставлять типы данных... а с этим проблема.... и не забывайте - ексель не реляционная база данных... потому и куча условностей....
# Ответить
20. MiCe 25.02.2013 15:28
Нельзя объять необъятное. К.Прутков

А приходится. Жисть.

оффтоп... 8=)
# Ответить
21. ArtemiFD 08.03.2013 10:34
Пока не смотрел, но судя по описанию работа действительно крутая. Я сейчас занимаюсь (в свободное время) разработкой подобных механизмов, но в более упрощенном виде.
# Ответить
22. yuraos 11.03.2013 07:08
Всем доброго времени суток!
---
Обновлены файлы поставки.
Основные изменения:
1. Поддержка работы с ВК GameWithFire.dll
(ускорение выгрузки результата запроса ADO в таблицу значений);
2. План обмена "Обмен данными COM":
пользовательское событие ПередСоединением(Соединение,Connect) -
позволяет переопределить строку соединения и модуль инициализации соединения
(подробности в описании подсистемы);
3. Дополнительные возможности в консоли запросов 1С + ADO
(подробности в статье и описании консоли);
Ответили: (23)
# Ответить
23. DoctorRoza (файл скачал) 15.03.2013 09:49
(22) yuraos, качаю, читаю, изучаю! В работе .. и в сельском хозяйстве :) .. информация нужная!
+ 1 [ yuraos; ]
# Ответить
24. sanches (файл скачал) 15.03.2013 21:28
Спасибо, воспользуюсь
# Ответить
25. yuraos 31.03.2013 18:44
Доброе время суток!
Изменены файлы поставки.

В основном изменения коснулись обработки "Консоль запросов 1С + ADO":
текущая версия консоли: 8.1.1.2-a от 16.03.2013:
1) Открытие дополнительных окон обработки результата запроса в модальном режиме в обработчиках
событий выполнения запросов (добавлены соответствующие команды в меню вставки ключевых слов).
2) Добавлена процедура КонсольРезультатОбновить(Индекс=0) для простого обновления результата запроса
в форме консоли после его програмного выполнения в форме обработки выборки.
3) Для события выполнения запроса ПослеЗапроса( ) добавлен аргумент СтандартнаяОбработка.
4) Улучшен функционально исполняемый код, формируемый шаблонами авто-заполния модулей событий обработки выборки запроса.
Добавлен флаг разрешения обработки ("предохранитель") и возможность использования структуры заданных параметров какого-либо
запроса в дереве списка, например, для заполнения свойств объекта перед записью.
---
Также добавлен файл !ВеликаяОктябрьскаяРеволюция.selx с примерами запросов для коррекции записей регистров.
# Ответить
26. yuraos 14.04.2013 10:18
Доброе время суток!
Изменены файлы поставки.

Текущие измнения:

1) План обмена "Обмен данными COM":
Поправлен вывод сообщений при неудачном соединении с источником данных ADO.
Теперь детальная техническая информация (которая может содержать пароли от серверов данных)
выводится только для пользователей, прошедших "усиленную" проверку на "пролные права",
заключающуюся в следующем:
// усиленная проверка полного доступа к базе
Функция ДоступПолный_Проверить() Экспорт
	ДоступПолный	= ПравоДоступа("Администрирование",Метаданные,) 
					И ПравоДоступа("ОбновлениеКонфигурацииБазыДанных",Метаданные,) 
					И ПравоДоступа("МонопольныйРежим",Метаданные,)
					И ПравоДоступа("ИнтерактивноеОткрытиеВнешнихОбработок",Метаданные,)
					;
	Если Метаданные.Роли.Найти("ПолныеПрава") <> Неопределено Тогда
		ДоступПолный = ДоступПолный И РольДоступна("ПолныеПрава");
	КонецЕсли;
	Возврат ДоступПолный;
КонецФункции
...Показать Скрыть

2) Консоль запросов 1С +ADO:
Исправленные мелкие баги интерфейсного характера.
3) Примеры запросов:
добавлены примеры для очистки независимых регистров сведений,
реализующих функционал обработок в некоторых публикациях:
а. чистим_регистры_сведений_1.selx - функционал обработки из статьи http://infostart.ru/public/181420/
б. чистим_регистры_сведений_2.selx - функционал обработки из статьи http://infostart.ru/public/181456/
# Ответить
27. ev_gen_ 24.04.2013 18:16
Категорически приветствую.

Должен заметить очень интересная тема- многое понравилось и сейчас анализирую Вашу публикацию.

Хочу заметить, что я тоже иду в данном направлении и видимо есть успехи.
Вот ссылка: http://infostart.ru/public/183242/
По поводу моей публикации
Важно:
Вопросы интеграции не являются ключевыми, но они там раскрыты.
Возможно Вам они будут интересны.
По ссылке ниже можно увидеть подробное описание
https://github.com/Rugut/UPP/blob/master/v82.all/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5.txt

Спасибо.
# Ответить
28. yuraos 29.04.2013 06:54
Доброе время суток!
Изменены файлы поставки.

Текущие измнения:
Версия 8.1.1.3 от 22.04.013:

1) Часть функционала из модуля объекта плана обмена "ОбменДаннымиCOM" перенесена в новый общий модуль "COMУзел"
(для совместимости с видимостью контекстов в управляемом приложении) с сохранением обратной совместимости;
2) В список стандартных настроек плана обмена добавлены настройки для работы с операционной системой через объект "WScript.Shell"
В форме автозаполнения добавлено заполнение стандартных узлов с кодами "WSH.Run" и "WSH.Exec";
3) Реализована возможность подключения-отключения к источнику данных на стороне сервера с инициализацией (передачей управления)
со стороны клиента (для выполнения на стороне сервера некоторых действий: например, включения-выключения VPN-соединений);
# Ответить
29. yuraos 20.05.2013 07:26
Всем доброго времени суток!
---
Обновлены файлы поставки.

Текущие изменения:

Подправлено преобразование типа ADO "adDate" в тип 1С.

Для исправления достаточно в общем модуле "COMОбмен" в строке № 706
заменить ЧастиДаты.Дата на ЧастиДаты.ДатаВремя.
# Ответить
30. tormozit (файл скачал) 29.07.2013 02:33
Огромное спасибо автору подсистемы! Хорошее оформление кода и описание помогли быстро разобраться.

Путем частичного заимствования кода из нее в подсистеме "Инструменты разработчика" внедрена начальная поддержка ADO (консоль запросов и конструктор запроса). Подробнее здесь
+ 1 [ yuraos; ]
# Ответить
31. pashtet99 18.01.2014 14:45
Всем здравствуйте. Оговорюсь сразу, в 1с я новичок и поэтому возникает множество вопросов. Один из них заключается в следующем:
У меня есть функция которая считает количество дней между 2-мя датами

&НаСервере
Функция РасчетДень()
   	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	УчебныеКурсы.НачалоОбучения,
		|	УчебныеКурсы.КонецОбучения,
		|	РАЗНОСТЬДАТ(УчебныеКурсы.НачалоОбучения, УчебныеКурсы.КонецОбучения, ДЕНЬ) КАК День	
		|ИЗ
		|	Справочник.УчебныеКурсы КАК УчебныеКурсы";
	Результат = Запрос.Выполнить();
	Возврат Результат;
КонецФункции
...Показать Скрыть


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

ЭтаФорма.Объект.ДлительностьОбучения = РасчетДень();


Но ничего не происходит. Хотелось бы узнать, как правильно вызвать эту функцию, чтобы в этом поле отображался корректный результат. Надеюсь на Вас, гуру 1с))
Ответили: (32) (35)

Прикрепленные файлы:

Снимок.PNG
# Ответить
32. yuraos 18.01.2014 15:05
(31) pashtet99,
Твоя функция возвращает не число дней между двумя датами,
а некоторое значение типа "РезультатЗапроса",
при передаче которого с сервера на "управляемый" клиент должна возникнуть ошибка.
Поскольку этот тип не поддерживается на клиенте.
Ответили: (33)
# Ответить
33. yuraos 18.01.2014 15:08
(32)
насколько я понял задачу,
функция должна возвращать длительность в днях
некоего "курса обучения" по ссылке из справочника.
я бы функцию написал бы так:
&НаСервереБезКонтекста
Функция РасчетДень(КурсСсылка)
   Запрос = Новый Запрос;
   Запрос.Текст = 
      "ВЫБРАТЬ
      |   РАЗНОСТЬДАТ(УчебныеКурсы.НачалоОбучения, УчебныеКурсы.КонецОбучения, ДЕНЬ) КАК ДниКурса   
      |ИЗ
      |   Справочник.УчебныеКурсы КАК УчебныеКурсы
      |ГДЕ УчебныеКурсы.Ссылка = &КурсСсылка";
   Запрос.Параметры.Вставить("КурсСсылка",КурсСсылка);
   Выборка = Запрос.Выполнить().Выбрать();
   Если Выборка.Следующий() Тогда
       Возврат Выборка.ДниКурса;
   Иначе
       Возврат 0;
   КонецЕсли;
КонецФункции
...Показать Скрыть
Ответили: (34)
# Ответить
34. pashtet99 18.01.2014 15:13
(33)Вот я создаю некий курс обучения, указываю его название, стоимость и период обучения, и вот после того, как я указал период обучения, количество дней, в этом периоде, должно передаться в поле надписи Длительность обучения в днях
# Ответить
35. yuraos 18.01.2014 15:19
(31) pashtet99,
ну ... проще надо все делать - примерно так:
Объект.ДлительностьОбучения = (Объект.ОкончаниеОбучения - Объект.НачалоОбучения) / (24*360);

разность двух дат - это время в секундах
Ответили: (37)
# Ответить
36. pashtet99 18.01.2014 15:20
А я делал так, оно не учитывает почему-то саму дату НачалоОбучения и КонецОбучения
# Ответить
37. yuraos 18.01.2014 15:22
(35)
можно конечно и запросом посчитать,
тогда в функцию надо передать даты:
&НаСервереБезКонтекста
Функция РасчетДень(НачалоОбучения, КонецОбучения)
   Запрос = Новый Запрос;
   Запрос.Текст = 
      "ВЫБРАТЬ
      |   РАЗНОСТЬДАТ(&НачалоОбучения, &КонецОбучения, ДЕНЬ) КАК ДниКурса   
      |";
   Запрос.Параметры.Вставить("НачалоОбучения",НачалоОбучения);
   Запрос.Параметры.Вставить("КонецОбучения",КонецОбучения);
   Выборка = Запрос.Выполнить().Выбрать();
   Если Выборка.Следующий() Тогда
       Возврат Выборка.ДниКурса;
   Иначе
       Возврат 0;
   КонецЕсли;
КонецФункции
...Показать Скрыть
Ответили: (38) (39)
# Ответить
38. pashtet99 18.01.2014 15:24
(37) Это вроде бы и понятно, мне просто интересно как вызвать эту функцию, чтобы присвоить ее результат нужному полю?
Ответили: (41)
# Ответить
39. yuraos 18.01.2014 15:26
(37)
обрати внимание на директиву
&НаСервереБезКонтекста -
- ее лучше использовать если тебе на сервере не нужен контекст(данные) формы,
а только переданные через аргумент параметры.
Ответили: (40)
# Ответить
40. pashtet99 18.01.2014 15:28
(39)Спасибо, разобрался))
# Ответить
41. yuraos 18.01.2014 15:32
(38) pashtet99,
У тебя на ту надпись точно выведен реквизит ДлительностьОбучения ?
Проверь путь к данным (мало ли что)...
И я бы написал просто
Объект.ДлительностьОбучения = РасчетДень();

не через ссылку на объект текущей формы...хотя это должно быть все-равно.
# Ответить
42. yuraos 23.03.2014 10:31
Всем доброго времени суток!
Обновлены файлы поставки.
Текущие изменения:
Версии: 8.1.1.4 (для 8.1) и 8.2.1.4 (для 8.2) от 01.03.2014:
1) Набор прав SA для усиленного контроля "полного доступа" к базе,
описанного в http://infostart.ru/public/225570/.
Используется для контроля доступа к обработке "КонсольЗапросов1СADO"
2) Автономная подсистема "Произвольные фоновые и регламентные задания" (бетта-версия).
3) Дальнейшее развитие функционала обработки "КонсольЗапросов1СADO":
версия консоли: 8.1.1.3 от 01.03.2014:
1. Реорганизация структуры данных и алгоритмов обработки для обеспечения совместимости с управляемым приложением.
2. Вынос функционала обработки выборки запроса из модуля формы "ОбработкаВыборки" в модуль объекта.
3. Обработка выделенных строк таблицы результата запроса в форме "ОбработкаВыборки".
4. Вывод времени выполнения и отображение статуса обработки строк в форме "ОбработкаВыборки".
5. Контроль ссылочной целостности при непосредственном удалении объектов в форме "ОбработкаВыборки".
6. Новые шаблоны заполнения для обработки выборки запроса -
- "Обработка табличной части" и "Обработка движений регистратора".
7. Сохранение результата запроса во внешнем файле (*.obj8).
8. "Загрузка" в результат запроса объекта 1С (таблицы/дерева значений), сохраненного во внешнем файле (*.obj8).
9. "Загрузка" в результат запроса списка помеченных на удаление объектов;
10. "Загрузка" в результат запроса таблицы ссылок на список объектов, полученных при выполнении другого запроса;
11. Запрос в режиме "Консоль кода" с показом результатов вычислений в табло значений (в "результате" запроса);
12. Заполнение дерева запросов по переданному объекту "Запрос" - используется подсистемой "ViewValues" для его "просмотра".
13. Масса интерфейсных улучшений (в том числе список последних открытых файлов запросов).
14. Интеграция с обработкой 1С:Администратор (http://infostart.ru/public/100967/), требуемая версия не ниже 5.6.
# Ответить
43. poyson 07.05.2014 09:23
Хороший инструмент. Спасибо!
# Ответить
44. romzat (файл скачал) 10.12.2014 02:27
Добрый день! Судя по скриншотам к публикации вы использовали удаленное подключение к компьютеру, на котором установлен ЭТРАН. Не подскажите, какие настройки делали на обеих сторонах, чтобы это заработало (я имею ввиду регистрацию компоненты EtranASUGO в виде COM сервера и т.п.)
Заранее спасибо.
Ответили: (45)
# Ответить
45. yuraos 11.12.2014 19:49
(44) romzat,
Давно уже это было!
В той конторе уж год как не работаю.

Ситуация там была такая:
Сам ЭТРАН был установлен на одном ноуте, постоянно находившемся сети.

Установкой и регистрацией ЭТРАНА на том ноуте я не занимался.
Это делали админы.

Я организовал доступ из 1С через COM к ЭТРАНУ на том ноуте.

При создании COM-объекта в этой ситуации приходилось в конструкторе объекта
во втором аргументе указывать сетевой путь к ноуту с ЭТРАНОМ:
ОбъектCOM = Новый COMОбъект("EtranASUGO.EtranASUGO", "//СетевоеИмяКомпаГдеУстаовленЭтран"); 
Ответили: (46)
# Ответить
46. yuraos 11.12.2014 19:51
(45)
Если использовать для хранения настроек соединения узел плана обмена "ОбменДаннымиCOM"
то настройки должны быть примерно как на скриншоте

Прикрепленные файлы:

Безымянный.jpg
# Ответить
47. dvim 04.02.2016 15:20
Про этран
Он работает на машинах со специальным VPN
потому разрабатывая архитектуру учтите - надо коннектится к машине "клиенту Этрана", для вас это будет сервер.
Но Асуго - это мертвое дитя, сейчас уже пора бользоваться SOAP
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл






IE 2016