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


















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

 

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

 

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

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


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

Версии:  8.1.1.4 (для 8.1) и 8.2.1.4 (для 8.2) от 01.03.2014:
    1) Набор прав SA для усиленного контроля «полного доступа» к базе,
       описанного в //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С:Администратор (//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 в форме
обработки выборки данных консоли запросов, за удобный, гибкий инструмент, который много раз выручал меня в работе.

 

49 Comments

  1. yuraos

    Всем доброго времени суток!

    Представляю вашему вниманию мои скромные наработки по взаимодействию 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» и общие модули подситемы.

    Остальной функционал (кроме некоторых функций просмотра «табличных» объектов) будет работать в любой конфигурации.

    Reply
  2. German

    + за multi batch еще в консолях не было

    Как ведет себя опция Сохранять откомпилированную версию(«параметрезованный» запрос) в DB2?

    Reply
  3. dyak84

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

    Reply
  4. Kuzja_R

    (3) dyak84, сам бы протестировал и нам рассказал. =)

    Reply
  5. yuraos

    (2) German, чесно говоря не проверял, на подхвате нет сервера DB2.

    В функциях выполняющих запрос все сделано по документации:

    Если эта опция установлена, у объекта ADODB.Command свойству Prepared присваивается Истина.

    А в функции выполняющих запрос в цикле при повторном выполнении команды —

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

    Ну а там как провайдер данных на душу положет…

    В SQL Server Books Online, например, об этом можно прочитать:

    «что не все провайдеры данных поддерживают параметризованные запросы»

    Reply
  6. yuraos

    (3) dyak84, я пожалуй тебя поддержу…

    Например Excel через Jet.OLEDB меня малость неприятно удивил.

    Теперь я от провайдеров данных готов ожидать чего угодно.

    Соображения здравого смысла тут не работают.

    Логика бывает математической, женской и ПРИКЛАДНОЙ 🙂

    Reply
  7. yuraos

    Выкладываю подправленную версию консоли.

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

    Потом решил делать так только при очистке значения.

    Но что-то малость прокосячился …

    … это все наследие 1с-77:

    там вместо НЕ ЗначениеЗаполнено()[/I нечто с противоположным смыслом — [I]ПустоеЗначение()

    😉

    Reply
  8. yuraos

    Выкладываю подправленную версию консоли.

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

    Потом решил делать так только при очистке значения.

    Но что-то малость прокосячился …

    … это все наследие 1с-77:

    там вместо НЕ ЗначениеЗаполнено() нечто с противоположным смыслом — ПустоеЗначение()

    😉

    Reply
  9. yuraos

    Доброе всем время суток!

    Изменен комплект поставки.

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

    1. Включены исправления в консоли запросов из поста (8);

    2. Добавлен пример (сохраненный запрос),

    демонстрирующий прямой доступ к EXCEL через ADO

    + дополнительные возможности консоли;

    Reply
  10. bulpi

    Вот это работа !

    Недооцененная сообществом, по-моему.

    Reply
  11. yuraos

    (10) bulpi, ну общество я думаю пока находится в процессе оценивания…

    …как говорится жираф он большой 😉

    Reply
  12. karakozov

    Да! Работа конечно колоссальная.Автору зачет.Обязательно попробую реализовать обмен по средствам данного механизма.Плюс однозначно!

    Reply
  13. yuraos

    Доброе всем время суток!

    Изменен комплект поставки.

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

    1. Теперь в консоли запросов время выполнения запросов и время выгрузки

    показывается с точностью до миллисекунды.

    2. В план обмена «ОбменДаннымиCOM» добавлена новая платформа источника данных

    «ADO-подключение к таблице dBase ч/з OLEDB» для доступа через ADO к DBF-файлам

    и соответствующий ей стандартный узел плана обмена, создаваемый в форме автозаполнения.

    3. В план обмена «ОбменДаннымиCOM» также добавлена форма авторизации на сервере 1С

    для ввода имени, пароля Администратора сервера 1С, а также, при необходимости,

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

    Reply
  14. MiCe

    на счет Excel.

    Выгружать в новом формате (xlsx) легче через xml. не будет проблем с типами…

    сделайте unzip для любого ёкселевского фала — поймете структуру…

    кстати можно и украшать так же… да и загружать в прЫнципе….

    ============ так же и в ворд….

    Reply
  15. yuraos

    (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;»

    с близжайшим обновлением подправлю стандартные настройки.

    Сейчас придется подправить настройки в узле в ручную.

    После выхода обновления — можно будет заполнить настройки по умолчанию при «очистке» строки соединения в форме узла.

    Reply
  16. MiCe

    в строке провайдера ёкселя есть параметр imex… если он равен 1 — то все данные интерпретируются как тип строка…

    при загрузке полезно… не будет пропуска данных не соответствующих типу колонке…

    и еще…. в тексте запроса можно использовать именованные области…

    и еще ))) можно готовить шаблоны ёкселя…. потом создавать файлы на основе шаблона и выгружать в них….

    это даст украшательства…

    и еще раз напомню…. xlsx зазипованный xml…. намного более гибкий формат….

    доступ к ёкселю через адо слишком чувствителен к данным….

    Reply
  17. yuraos

    (16) MiCe,

    и еще….


    Нельзя объять необъятное.

    К.Прутков

    🙂

    к параметру imex я присматривался,

    но так и не стал его включать в строку соединения в стандартных настройках

    плана обмена «Обмен данными COM».

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

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

    Дело в том, что возвращать все колонки из экселя в строковом виде тоже не всегда удобно.

    Например, если полученную из экселя таблицу загружать потом в 1С-ном запросе во временную таблицу

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

    Значение поля Период в виде текста как-то совсем получается неудобным.

    Прямо в запросе 1С его к дате не преобразуешь

    (про функцию ВЫРАЗИТЬ() — я могу долго и нецензурно выражаться 🙂 )

    А при обработке в коде 1С при пребразованиии с помощью функции ДАТА()

    тоже могут возникнуть проблемы, так как текстовое представление даты не всегда соответстует принятому в 1С.

    Reply
  18. yuraos

    (17),

    и еще….

    🙂

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

    в плане обмена «Обмен данными COM» есть стандартные узлы,

    создаваемые в форме автозаполнения, как для старого формата так и для нового.

    такии образом:

    что кому нравится или что когда нравится…

    🙂

    Reply
  19. MiCe

    да…. как все таки не хватает нативного tsql…

    примеры провайдера

    у екселя есть сохранкние в формат «таблица xml 2003»

    у платформы 1с хороший движОк xml с сериализацией… наладить трансформ и всех делов….

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

    куча недореализаций…. нет обновлений… все дело в том что нужно четко сопоставлять типы данных… а с этим проблема…. и не забывайте — ексель не реляционная база данных… потому и куча условностей….

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

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

    оффтоп… 8=)

    Reply
  21. ArtemiFD

    Пока не смотрел, но судя по описанию работа действительно крутая. Я сейчас занимаюсь (в свободное время) разработкой подобных механизмов, но в более упрощенном виде.

    Reply
  22. yuraos

    Всем доброго времени суток!



    Обновлены файлы поставки.

    Основные изменения:

    1. Поддержка работы с ВК GameWithFire.dll

    (ускорение выгрузки результата запроса ADO в таблицу значений);

    2. План обмена «Обмен данными COM»:

    пользовательское событие ПередСоединением(Соединение,Connect) —

    позволяет переопределить строку соединения и модуль инициализации соединения

    (подробности в описании подсистемы);

    3. Дополнительные возможности в консоли запросов 1С + ADO

    (подробности в статье и описании консоли);

    Reply
  23. DoctorRoza

    (22) качаю, читаю, изучаю! В работе .. и в сельском хозяйстве 🙂 .. информация нужная!

    Reply
  24. sanches

    Спасибо, воспользуюсь

    Reply
  25. yuraos

    Доброе время суток!

    Изменены файлы поставки.

    В основном изменения коснулись обработки «Консоль запросов 1С + ADO»:

    текущая версия консоли: 8.1.1.2-a от 16.03.2013:

    1) Открытие дополнительных окон обработки результата запроса в модальном режиме в обработчиках

    событий выполнения запросов (добавлены соответствующие команды в меню вставки ключевых слов).

    2) Добавлена процедура КонсольРезультатОбновить(Индекс=0) для простого обновления результата запроса

    в форме консоли после его програмного выполнения в форме обработки выборки.

    3) Для события выполнения запроса ПослеЗапроса( ) добавлен аргумент СтандартнаяОбработка.

    4) Улучшен функционально исполняемый код, формируемый шаблонами авто-заполния модулей событий обработки выборки запроса.

    Добавлен флаг разрешения обработки («предохранитель») и возможность использования структуры заданных параметров какого-либо

    запроса в дереве списка, например, для заполнения свойств объекта перед записью.



    Также добавлен файл !ВеликаяОктябрьскаяРеволюция.selx с примерами запросов для коррекции записей регистров.

    Reply
  26. yuraos

    Доброе время суток!

    Изменены файлы поставки.

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

    1) План обмена «Обмен данными COM»:

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

    Теперь детальная техническая информация (которая может содержать пароли от серверов данных)

    выводится только для пользователей, прошедших «усиленную» проверку на «пролные права»,

    заключающуюся в следующем:

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

    Показать

    2) Консоль запросов 1С +ADO:

    Исправленные мелкие баги интерфейсного характера.

    3) Примеры запросов:

    добавлены примеры для очистки независимых регистров сведений,

    реализующих функционал обработок в некоторых публикациях:

    а. чистим_регистры_сведений_1.selx — функционал обработки из статьи http://infostart.ru/public/181420/

    б. чистим_регистры_сведений_2.selx — функционал обработки из статьи http://infostart.ru/public/181456/

    Reply
  27. ev_gen_

    Категорически приветствую.

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

    Хочу заметить, что я тоже иду в данном направлении и видимо есть успехи.

    Вот ссылка: 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

    Спасибо.

    Reply
  28. yuraos

    Доброе время суток!

    Изменены файлы поставки.

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

    Версия 8.1.1.3 от 22.04.013:


    1) Часть функционала из модуля объекта плана обмена «ОбменДаннымиCOM» перенесена в новый общий модуль «COMУзел»

    (для совместимости с видимостью контекстов в управляемом приложении) с сохранением обратной совместимости;

    2) В список стандартных настроек плана обмена добавлены настройки для работы с операционной системой через объект «WScript.Shell»

    В форме автозаполнения добавлено заполнение стандартных узлов с кодами «WSH.Run» и «WSH.Exec»;

    3) Реализована возможность подключения-отключения к источнику данных на стороне сервера с инициализацией (передачей управления)

    со стороны клиента (для выполнения на стороне сервера некоторых действий: например, включения-выключения VPN-соединений);

    Reply
  29. yuraos

    Всем доброго времени суток!



    Обновлены файлы поставки.

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

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

    Для исправления достаточно в общем модуле «COMОбмен» в строке № 706

    заменить ЧастиДаты.Дата на ЧастиДаты.ДатаВремя.

    Reply
  30. tormozit

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

    Путем частичного заимствования кода из нее в подсистеме «Инструменты разработчика» внедрена начальная поддержка ADO (консоль запросов и конструктор запроса). Подробнее здесь

    Reply
  31. pashtet99

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

    У меня есть функция которая считает количество дней между 2-мя датами

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

    Показать

    Проверял запрос через консоль запросов. Все работает нормально.

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

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

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

    Reply
  32. yuraos

    (31) pashtet99,

    Твоя функция возвращает не число дней между двумя датами,

    а некоторое значение типа «РезультатЗапроса»,

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

    Поскольку этот тип не поддерживается на клиенте.

    Reply
  33. yuraos

    (32)

    насколько я понял задачу,

    функция должна возвращать длительность в днях

    некоего «курса обучения» по ссылке из справочника.

    я бы функцию написал бы так:

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

    Показать

    Reply
  34. pashtet99

    (33)Вот я создаю некий курс обучения, указываю его название, стоимость и период обучения, и вот после того, как я указал период обучения, количество дней, в этом периоде, должно передаться в поле надписи Длительность обучения в днях

    Reply
  35. yuraos

    (31) pashtet99,

    ну … проще надо все делать — примерно так:

    Объект.ДлительностьОбучения = (Объект.ОкончаниеОбучения — Объект.НачалоОбучения) / (24*360);

    разность двух дат — это время в секундах

    Reply
  36. pashtet99

    А я делал так, оно не учитывает почему-то саму дату НачалоОбучения и КонецОбучения

    Reply
  37. yuraos

    (35)

    можно конечно и запросом посчитать,

    тогда в функцию надо передать даты:

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

    Показать

    Reply
  38. pashtet99

    (37) Это вроде бы и понятно, мне просто интересно как вызвать эту функцию, чтобы присвоить ее результат нужному полю?

    Reply
  39. yuraos

    (37)

    обрати внимание на директиву

    &НаСервереБезКонтекста

    — ее лучше использовать если тебе на сервере не нужен контекст(данные) формы,

    а только переданные через аргумент параметры.

    Reply
  40. pashtet99

    (39)Спасибо, разобрался))

    Reply
  41. yuraos

    (38) pashtet99,

    У тебя на ту надпись точно выведен реквизит ДлительностьОбучения ?

    Проверь путь к данным (мало ли что)…

    И я бы написал просто

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

    не через ссылку на объект текущей формы…хотя это должно быть все-равно.

    Reply
  42. yuraos

    Всем доброго времени суток!

    Обновлены файлы поставки.

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

    Версии: 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.

    Reply
  43. poyson

    Хороший инструмент. Спасибо!

    Reply
  44. romzat

    Добрый день! Судя по скриншотам к публикации вы использовали удаленное подключение к компьютеру, на котором установлен ЭТРАН. Не подскажите, какие настройки делали на обеих сторонах, чтобы это заработало (я имею ввиду регистрацию компоненты EtranASUGO в виде COM сервера и т.п.)

    Заранее спасибо.

    Reply
  45. yuraos

    (44) romzat,

    Давно уже это было!

    В той конторе уж год как не работаю.

    Ситуация там была такая:

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

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

    Это делали админы.

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

    При создании COM-объекта в этой ситуации приходилось в конструкторе объекта

    во втором аргументе указывать сетевой путь к ноуту с ЭТРАНОМ:

    ОбъектCOM = Новый COMОбъект(«EtranASUGO.EtranASUGO», «//СетевоеИмяКомпаГдеУстаовленЭтран»); 

    Reply
  46. yuraos

    (45)

    Если использовать для хранения настроек соединения узел плана обмена «ОбменДаннымиCOM»

    то настройки должны быть примерно как на скриншоте

    Reply
  47. dvim

    Про этран

    Он работает на машинах со специальным VPN

    потому разрабатывая архитектуру учтите — надо коннектится к машине «клиенту Этрана», для вас это будет сервер.

    Но Асуго — это мертвое дитя, сейчас уже пора бользоваться SOAP

    Reply
  48. yuraos

    Текущие допилы в тестировании

    Reply
  49. izidakg

    (48) а пароль?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *