Подсистема "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 не будет опубликован. Обязательные поля помечены *