Для облегчения интеграции с программными продуктами фирмы «1С» разработан формат обмена данными EnterpriseData. Формат основан на XML и является бизнес-ориентированным – описанные в нем структуры данных соответствуют бизнес-сущностям (документам и элементам справочников), представленным в программах «1С», например: акт выполненных работ, приходный кассовый ордер, контрагент, договор и т. п. Это делает формат интуитивно понятным и легким в использовании.
Формат EnterpriseData предназначен для обмена данными внутри компании (в том числе между разнородными и территориально удаленными информационными системами) и призван покрыть все сферы деятельности предприятия – финансы, производство, закупки и продажи, складские операции и т. п.
Описание формата
Версия 1.0.1 формата включает в себя описание 94 типов бизнес-сущностей из различных областей бизнеса (подробное описание формата можно найти здесь). Формат является расширяемым – фирма «1С» будет добавлять в него описание новых бизнес-сущностей и расширять существующие сущности новыми полями. Поддержка формата в продуктах фирмы «1С» обеспечивает совместимость снизу вверх – все программы сторонних производителей, обменивающихся данными в формате EnterpriseData с продуктами «1С», при выходе новых версий формата корректно продолжат работу.
Формат предназначен для обмена информацией между любыми информационными системами: он не зависит от особенностей собственного программного обеспечения или структур информационных баз, которые участвуют в обмене и не содержит в себе явных ограничений использования.
Обмен данными с программами «1С»
Предварительная настройка на стороне «1С»
Чтобы начать обмен данными в формате EnterpriseData между приложением «1С» и сторонним приложением, надо на стороне «1С» настроить синхронизацию данных. В ходе настройки указывается уникальный код приложения, с которым будет производиться обмен, а также по какому каналу будет происходить обмен данными. В настоящий момент доступны следующие опции:
веб-сервис,
файловый обмен через каталог,
файловый обмен через FTP.
Обмен через электронную почту
В случае обмена через веб-сервис стороннее приложение будет инициировать сеанс обмена данными путем вызова соответствующих веб-методов приложения «1С». В остальных случаях инициатором сеанса обмена будет приложение «1С».
Также на стороне «1С» настраивается, с какой периодичностью будет происходить синхронизация (для вариантов с файловым обменом через каталог и электронную почту):
по расписанию (с заданной периодичностью);
вручную; пользователь должен будет вручную запускать синхронизацию каждый раз, когда это ему потребуется.
Формат файлов обмена
В ходе синхронизации приложения «1С» и сторонние приложения обмениваются сообщениями – XML-файлами определенной структуры. Эти файлы состоят из двух секций – <Header> и <Body>. Секция <Header> содержит сообщение-квитанцию <Confirmation> (о ней ниже), а <Body> – информацию об измененных бизнес-сущностях в формате EnterpriseData.
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL.
Перечислим неоптимальности в настройке:
1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. После установки, SQL пытается использовать для связи протокол "Named Pipes", который не обеспечивает быстрый обмен данными. Советуем изменить протокол по умолчанию на "TCP/IP". Изменить протоколы для связи с SQL сервером можно запустив утилиту SQL Server Configuration Manager. Обратите внимание - интересующие нас протоколы расположены в группе SQL Server network configuration. Протоколы из группы SQL native client configuration 1С не использует. Важно! Если программа 1С запускается на том же сервере, на котором запущен SQL-сервер,используйте для связи протокол "Shared Memory". Этот протокол обеспечит максимальную пропускную способность.
2) Включенные опции базы данных "Auto сreate statistics", "Auto update statistics". Данные опции разрешают SQL собирать статистику распределения данных в таблицах, обновляя статистику автоматическим образом. Отключите обе опции, т.к. создание и обновление статистики создает дополнительную загрузку сервера. Создайте задание на создание и обновление статистики, запускающееся в нерабочее время - например ночью.
3) Значение Checksum для опции Recovery->Page Verify. Во многих случаях достаточный контроль ошибок в страницах дисковой памяти обеспечивает значение данной опции - TornPageDetection. В этом случае контроль ошибок в страницах дисковой памяти использует иной вариант, более простой и быстрый нежели при значении опции - Checksum. Значение опции None - хоть и обеспечивает максимальное быстродействие, лучше не использовать, т.к. контроль ошибок страниц дисковой памяти средствами SQL сервера вообще производиться не будет.
4) Включенная опция полнотекстового индекса. Для ИБ 1С данная опция не требуется. Отключите её.
Есть ли в 8.х аналог ИспользоватьСписокЭлементов?
В динамических списках документов, справочников и т.д. может быть программно установлен отбор по полю Ссылка с указанием в качестве вида сравнения вхождения в список значений. Это позволяет отображать в списке только определенные объекты.
Однако эта возможность может иметь только ограниченное применение, так как динамический список имеет достаточно большое количество универсальных возможностей (установка отбора пользователем, переходы по уровням в иерархических списках и т.д.) и совмещение в прикладных решениях этих механизмов с отбором по конкретным значениям ссылок достаточно сложно реализуется.
В большинстве случаев, если необходимо обеспечить отображение в списке специально отобранного перечня объектов, можно рекомендовать использовать другие возможности (например, выборку данных запросом и отображение в форме с помощью таблицы значений или табличного документа). При этом система обеспечивает возможность полноценного взаимодействия с такими формами других системных механизмов.
Для 7.7 используем метод ИспользоватьСписокЭлементов
Автор: Antoska
Для решения данной задачи я решил воспользоваться методом формы списка "ИспользоватьСписокЭлементов(<СписокЗначений>)", так как использование процедуры "ОбработкаПодбора()" требует наличия реквизита справочника для отбора, а это мне не очень подходит. Вот как я реализовал этот алгоритм (код из модуля формы списка справочника):
Функцией "СоответствуетУсловиямФильтра(ЭлементСправочника)" можно задавать любые условия фильтрации списка опираясь на передаваемый ей элемент справочника.
Скорость работы приемлема, но можно попробовать реализовать и через запрос...