Реализован механизм защиты от опасных действий. При выполнении потенциально опасного действия система выдает предупреждение, содержащее информацию о выполняемом действии и потенциальной опасности этого действия. К потенциально опасным действиям относятся:
Загрузка внешнего отчета, обработки или расширения конфигурации.
Загрузка или обновление конфигурации/расширения.
Доступ из внешнего отчета/обработки или расширения к следующим возможностям:
Исполнение команды операционной системы.
Управление пользователями.
Загрузка внешней компоненты.
Пользователь имеет возможность разрешить или отклонить потенциально опасное действие. Если действие разрешено, в ряде случаев может потребоваться повторно выполнить разрешенное действие.
Сообщение выглядит так:
Предупреждение безопасности
Открывается "" из файла " C:\.......epf". Рекомендуется обращать внимание на источник, из которого был получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей, или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным. Разрешить открывать данный файл. ДА, НЕТ
Решение:
В конфигураторе в свойствах пользователя ИБ убрать флажок "Защита от опасных действий".
Из документации: Отключение механизма защиты от опасных действий
В ряде случае необходимо отключить механизм защиты от опасных действий. Для этого можно воспользоваться следующими возможностями:
1. Выключить флажок Защита от опасных действий (ЗащитаОтОпасныхДействий) в свойствах конкретного пользователя. Это отключит защиту для этого пользователя.
2. Воспользоваться параметром ЗащитаОтОпасныхДействий методов Подключить() менеджеров внешних обработок (отчетов). В этом случае имеется возможность загрузить внешнюю обработку (отчет) без запросов пользователя.
3. Воспользоваться свойством ЗащитаОтОпасныхДействий объекта РасширениеКонфигурации перед вызовом метода Записать() этого объекта.
4. Воспользоваться параметром DisableUnsafeActionProtection файла conf.cfg. В этом случае механизм защиты от опасных действий будет отключаться для всех пользователей информационных баз, строки соединения которых удовлетворяют указанным маскам.
Отключение защиты от опасных действий выполняется по следующим правилам (в указанном порядке):
1. Защита считается отключенной, если у текущего пользователя сброшен флажок Защита от опасных действий.
2. Защита считается отключенной, если строка соединения с информационной базой удовлетворяет одному из шаблонов, указанных в параметре DisableUnsafeActionProtection файла conf.cfg.
3. Если внешняя обработка (отчет) подключается с явным образом отключенной защитой с помощью параметра ЗащитаОтОпасныхДействий.
4. Если защита явным образом отключена с помощью свойства расширения ЗащитаОтОпасныхДействий.
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. Запрос удобно использовать, когда требуется получить сложную выборку данных, сгруппированную и отсортированную необходимым образом. Классический пример применения запроса - получение сводки по состоянию регистра накопления на определенный момент времени. Так же, механизм запросов позволяет легко получать информацию в различных временных разрезах.
Текст запроса – это инструкция, в соответствии с которой должен быть выполнен запрос. В тексте запроса описывается:
таблицы информационной базы, используемые в качестве источников данных запроса;
поля таблиц, которые требуется обрабатывать в запросе;
правила группировки;
сортировки результатов;
и т. д.
Инструкция составляется на специальном языке – языке запросов и состоит из отдельных частей – секций, предложений, ключевых слов, функций, арифметических и логических операторов, комментариев, констант и параметров.
Язык запросов платформы 1С очень похож на синтаксис других SQL-языков, но имеются отличия. Основными преимуществами встроенного языка запросов являются: разыменование полей, наличие виртуальных таблиц, удобная работа с итогами, нетипизированные поля в запросах.
Рекомендации по написанию запросов к базе данных на языке запросов платформы 1С:
1) Текст запроса может содержать предопределенные данные конфигурации, такие как:
значения перечислений;
предопределенные данные:
справочников;
планов видов характеристик;
планов счетов;
планов видов расчетов;
пустые ссылки;
значения точек маршрута бизнес-процессов.
Также текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии. Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа ЗНАЧЕНИЕ. Данный литерал позволяет повысить удобочитаемость запроса и уменьшить количество параметров запроса.
Пример использования литерала ЗНАЧЕНИЕ:
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.Москва)
ГДЕ Город = ЗНАЧЕНИЕ(Справочник.Города.ПустаяСсылка)
ГДЕ ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)
ГДЕ ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
ГДЕ ТочкаМаршрута = ЗНАЧЕНИЕ(БизнесПроцесс.БизнесПроцесс1.ТочкаМаршрута.Действие1
2) Использование инструкции АВТОУПОРЯДОЧИВАНИЕ в запросе может сильно время выполнения запроса, поэтому, если сортировка не требуется, то лучше вообще ее не использовать. Во большинстве случаях лучше всего применять сортировку с помощью инструкции УПОРЯДОЧИТЬ ПО.
Автоупорядочивание работает по следующим принципам:
Если в запросе было указано предложение УПОРЯДОЧИТЬ ПО, то каждая ссылка на таблицу, находящаяся в этом предложении, будет заменена полями, по которым по умолчанию сортируется таблица (для справочников это код или наименование, для документов – дата документа). Если поле для упорядочивания ссылается на иерархический справочник, то будет применена иерархическая сортировка по этому справочнику.
Если в запросе отсутствует предложение УПОРЯДОЧИТЬ ПО, но есть предложение ИТОГИ, тогда результат запроса будет упорядочен по полям, присутствующим в предложении ИТОГИ после ключевого слова ПО, в той же последовательности и, в случае если итоги рассчитывались по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
Если в запросе отсутствуют предложения УПОРЯДОЧИТЬ ПО и ИТОГИ, но есть предложение СГРУППИРОВАТЬ ПО, тогда результат запроса будет упорядочен по полям, присутствующим в предложении, в той же последовательности и, в случае если группировка велась по полям – ссылкам, то по полям сортировки по умолчанию таблиц, на которые были ссылки.
В случае же, если в запросе отсутствуют предложения и УПОРЯДОЧИТЬ ПО, ИТОГИ и СГРУППИРОВАТЬ ПО, результат будет упорядочен по полям сортировки по умолчанию для таблиц, из которых выбираются данные, в порядке их появления в запросе.
В случае, если запрос содержит предложение ИТОГИ, каждый уровень итогов упорядочивается отдельно.
3) Что бы избежать повторного запроса к базе данных при выводе результата запроса пользователю (например, построение запроса или отображение результата запроса с помощью табличного документа) полезно использовать инструкцию ПРЕДСТАВЛЕНИЕССЫЛКИ, которая позволяет получать представление ссылочного значения. Пример:
Так же возможно использование инструкции ПРЕДСТАВЛЕНИЕ - предназначена для получения строкового представления значения произвольного типа. Отличие этих инструкций в том, что в первом случае, если инструкции передать ссылку, результатом будет строка, В остальных случаях результатом будет значение переданного параметра. Во втором случае, результатом инструкции всегда будет строка!
4) Если в запросе имеется поле с составным типом, то для таких полей возникает необходимость привести значения поля к какому-либо определенному типу с помощью инструкции ВЫРАЗИТЬ, что позволит убрать лишние таблицы из левого соединения с полем составного типа данных и ускорить выполнение запроса. Пример:
Имеется регистра накопления ОстаткиТоваров, у которого поле Регистратор имеет составной тип. В запросе выбираются Дата и Номер документов ПоступлениеТоваров, при этом при обращении к реквизитам документа через поле Регистратор не происходит множество левых соединений таблицы регистра накопления с таблицами документов-регистраторов.
Если приведение типа считается не осуществимым, то результатом приведения типа будет значение NULL.
5) Не стоит забывать про инструкцию РАЗРЕШЕННЫЕ, которая означает, что запрос выберет только те записи, на которые у текущего пользователя есть права. Если данное слово не указать, то в случае, когда запрос выберет записи, на которые у пользователя нет прав, запрос отработает с ошибкой.
6) В случае, если в запросе используется объединение, и в некоторых частях объединения присутствуют вложенные таблицы (документ с табличной частью), а в некоторых нет, возникает необходимость дополнения списка выборки полями – пустыми вложенными таблицами. Делается это при помощи ключевого слова ПУСТАЯТАБЛИЦА, после которого в скобках указываются псевдонимы полей, из которых будет состоять вложенная таблица. Пример:
7) Что бы в результат запроса не попали повторяющиеся строки, следует использовать инструкцию РАЗЛИЧНЫЕ, потому что так нагляднее и понятнее, а инструкция СГРУППИРОВАТЬ ПО применяется для группировки с помощью агрегатных функций. Ксати, при использовании агрегатных функций предложение СГРУППИРОВАТЬ ПО может быть и не указано совсем, при этом все результаты запроса будут сгруппированы в одну единственную строку. Пример:
8) Инструкция СГРУППИРОВАТЬ ПО позволяет обращаться к полям верхнего уровня, без группировки результатов по этим полям, если агрегатные функции применены к полям вложенной таблицы. Хотя в справке 1С написано, при группировке результатов запроса в списке полей выборки обязательно должны быть указаны агрегатные функции, а помимо агрегатных функций в списке полей выборки допускается указывать только поля, по которым осуществляется группировка. Пример:
9) Инструкция ЕСТЬNULL предназначена для замены значения NULL на другое значение, но не забываем, что второй параметр будет преобразован к типу первого в случае, если тип первого параметра является строкой или числом.
10) При обращении к главной таблице можно в условии обратиться к данным подчиненной таблицы. Такая возможность называется разыменование полей подчиненной таблицы.
Пример (поиск документов, содержащих в табличной части определенный товар):
Преимущество этого запроса перед запросом к подчиненной таблице Приходная.Товары в том, что если есть дубли в документах, результат запроса вернет только уникальные документы без использования ключевого слова РАЗЛИЧНЫЕ.
11) Интересный вариант оператора В - это проверка вхождения упорядоченного набора в множество таких наборов (Поле1, Поле2, ... , ПолеN) В (Поле1, Поле2, ... , ПолеN).
Пример:
12) При любой возможности используйте виртуальные таблицы запросов. При создании запроса система предоставляет в качестве источников данных некоторое количество виртуальных таблиц - это таблицы, которые так же являются результатом запроса, который система формирует в момент выполнения соответствующего участка кода.
Разработчик может самостоятельно получить те же самые данные, которые система предоставляет ему в качестве виртуальных таблиц, однако алгоритм получения этих данных не будет оптимизирован, так как:
Все виртуальные таблицы параметризованы, т. е. разработчику предоставляется возможность задать некоторые параметры, которые система будет использовать при формировании запроса создания виртуальной таблицы. В зависимости от того, какие параметры виртуальной таблицы указаны разработчиком, система может формировать РАЗЛИЧНЫЕ запросы для получения одной и той же виртуальной таблицы, причем они будут оптимизированы с точки зрения переданных параметров.
Не всегда разработчик имеет возможность получить доступ к тем данным, к которым имеет доступ система.
13) В клиент-серверном варианте работы функция ПОДСТРОКА() реализуется при помощи функции SUBSTRING() соответствующего оператора SQL, передаваемого серверу баз данных SQL Server, который вычисляет тип результата функции SUBSTRING() по сложным правилам в зависимости от типа и значений ее параметров, а так же в зависимости от контекста, в котором она используется. В большинстве случаев эти правила не оказывают влияния на выполнение запроса, но бывают случаи, когда для выполнения запроса существенна максимальная длина строки результата, вычисленная SQL Server. Важно иметь в виду, что в некоторых контекстах использования функции ПОДСТРОКА() максимальная длина ее результата может оказаться равной максимальной длине строки ограниченной длины, которая в SQL Server равна 4000 символам. Это может привести к неожиданному аварийному завершению выполнения запроса:
Microsoft OLE DB Provider for SQL Server: Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes.
HRESULT=80040E14, SQLSTATE=42000, native=8618
Чтобы избежать такой ошибки, не рекомендуют использовать функцию ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ().
14) С осторожностью используйте ИЛИ в конструкции ГДЕ, так как использование условия с ИЛИ может значительно "утяжелить" запрос. Решить проблему можно конструкцией ОБЪЕДИНИТЬ ВСЕ. Пример:
15) Условие НЕ В в конструкции ГДЕ увеличивает время исполнения запроса, так как это своего рода НЕ (ИЛИ1 ИЛИ2 ... ИЛИn), поэтому для больших таблиц старайтесь использовать ЛЕВОЕ СОЕДИНЕНИЕ с условием ЕСТЬ NULL. Пример:
16) При использовании Временных таблиц нужно индексировать поля условий и соединений в этих таблицах, НО, при использовании индексов запрос может выполняться еще медленнее. Поэтому необходимо анализировать каждый запрос с применением индекса и без, замерять скорость выполнения запроса и принимать окончательное решение.
Если вы помещаете во временную таблицу данные, которые изначально индексированы по некоторым полям, то во временной таблице индекса по этим полям уже не будет.
17) Если вы не используете Менеджер временных таблиц, то явно удалять временную таблицу не требуется, она будет удалена после завершения выполнения пакетного запроса, иначе следует удалить временную таблицу одним из способов: командой УНИЧТОЖИТЬ в запросе, вызвать метод МенеджерВременныхТаблиц.Закрыть().
Передать информацию о контрагентах из УП в БП. Данные передаются в одностороннем порядке, идентификация производится по уникальному идентификатору.Настройка правил конвертации выполняется с помощью специальной конфигурации Конвертация данных, редакция 3.0 (далее – КД 3.0).
Выполняемые действия
Этап 1. Подготовка к настройке правил.
Для настройки правил конвертации в конфигурации КД 3.0 должны содержаться сведения о структуре информационных баз, между которыми производится синхронизация данных, а также о структуре формата Enterprise Data.
Шаг 1. Выгрузка структуры информационных баз УП и БП.
Для выгрузки информации о структуре информационной базы используется обработкаMD83Exp.epf, входящая в комплект поставки конфигурации КД 3.0.
Для каждой информационной базы (УП и БП) необходимо выполнить следующие действия:
Открыть информационную базу в режиме “Предприятие”.
Указать имя файла, в который следует сохранить структуру информационной базы.
Проверить настройки в форме обработки (все флаги должны быть сняты).
Нажать кнопку Выгрузить.
Шаг 2. Экспорт xml-схемы формата обмена
Для выгрузки схемы формата обмена используются стандартные возможности платформы.
Необходимо выполнить следующие действия:
Открыть одну из информационных баз (либо УП либо БП) в режиме “Конфигуратор”.
В дереве метаданных найти XDTO пакеты с именами ExchangeMessage иEnterpriseData_1_0_beta.
Установить курсор на пакет XDTO, нажать правую кнопку мыши и в контекстном меню выбрать пункт Экспорт XML-схемы. Указать путь и имя файла для экспорта. Выполнить это действие для каждого из двух пакетов, сохранив XML-схемы в два разных файла.
Шаг 3. Загрузка структуры информационных баз в конфигурацию КД 3.0
Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”. Перечисленные ниже действия следует выполнить для каждой из конфигураций, для которых настраиваются правила конвертации (УП и БП).
Перейти в раздел Конфигурации, и выбрать команду Загрузка структуры конфигурации.
Указать путь к файлу со структурой информационной базы (см. Этап 1, Шаг 1).
Указать способ загрузки & в новую версию конфигурации.
Нажать кнопку Выполнить загрузку, дождаться окончания загрузки.
Шаг 4. Загрузка структуры формата обмена в конфигурацию КД 3.0
Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”.
Перейти в раздел Формат данных, и выбрать команду Загрузка структуры формата.
Указать файлы со структурой формата (см. Этап 1, Шаг 2). Необходимо указать сразу оба файла, используя множественный выбор.
Проверить имя основного пакета XDTO – должен совпадать с пространством имен пакета XDTO EnterpriseData_1_0_beta (см. в конфигураторе УП или БП).
Указать способ загрузки & в новую версию формата.
Нажать кнопку Выполнить загрузку, дождаться окончания загрузки.
Этап 2. Создание конвертаций
Для решения описанной задачи необходимо создать две конвертации:
УП (для выгрузки данных из УП в формат обмена)
БП (для загрузки данных из формата обмена в БП)
Создание конвертаций производится в разделе Конвертации, команда Конвертации. Для новой конвертации необходимо указать наименование, конфигурацию и формат обмена. Например, конвертация для конфигурации УП:
Наименование & “УП2.0.7”.
Конфигурация & “УправлениеПредприятием”.
Поддерживаемые версии формата & одна строка, в которой выбрана единственная позиция справочника Версии формата.
Далее для каждой из двух конвертаций требуется настроить правила:
правила обработки данных,
правила конвертации объектов,
правила конвертации предопределенных данных.
Для перехода к комплекту правил конкретной конвертации необходимо перейти в разделКонвертации, выбрать команду Настройка правил конвертации и выбрать в списке конкретную конвертацию, для которой будут настраиваться правила. В результате будет открыта форма Настройка правил обмена, в которой собраны все правила для конкретной конвертации.
Этап 3. Создание правил конвертации объектов
Шаг 1. Правило конвертации для выгрузки контрагентов из УП
Открыть настройку правил обмена для конвертации УП.
Перейти на закладку Правила конвертации объектов.
Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
В открывшейся форме нажать Автосопоставление. Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”
Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств
Вручную добавить правило конвертации свойства для ОКПО (свойство конфигурации & “КодПоОКПО”, свойство формата & “ОКПО”).
Позже потребуется вернуться к правилам конвертации свойств, чтобы заполнить правило конвертации свойства для свойства “ЮридическоеФизическоеЛицо”, которое является перечислением.
Нажать кнопку Записать и закрыть.
Шаг 2. Правило конвертации для загрузки контрагентов в БП
Открыть настройку правил обмена для конвертации БП.
Перейти на закладку Правила конвертации объектов.
Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
В открывшейся форме нажать Автосопоставление. Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”.
Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств.
Вручную добавить правило конвертации свойства для ОКПО (свойство конфигурации & “КодПоОКПО”, свойство формата & “ОКПО”).
Позже потребуется вернуться к правилам конвертации свойств, чтобы заполнить правило конвертации свойства для свойства “ЮридическоеФизическоеЛицо”, которое является перечислением.
Перейти на закладку ПередЗаписьюПолученныхДанных и написать алгоритм для заполнения страны регистрации нового контрагента. Алгоритм содержит следующий текст: «ПолученныеДанные.СтранаРегистрации = Справочники.СтраныМира.Россия;».
Нажать кнопку Записать и закрыть.
Этап 4. Создание правил конвертации предопределенных данных
Порядок действий одинаков для обоих конвертаций.
Открыть настройку правил обмена для конвертации (УП или БП)
Перейти на закладку Правила конвертации предопределенных данных
Создать новое правило конвертации и заполнить его свойства:
Объект конфигурации: “ПеречислениеСсылка.ЮридическоеФизическоеЛицо”
Объект формата: “ЮридическоеФизическоеЛицо”
Область применения: для отправки и получения
В табличном поле заполнить соответствия значений перечисления конфигурации и формата: “ФизическоеЛицо” & “ФизическоеЛицо” и “ЮридическоеЛицо” & “ЮридическоеЛицо”
Нажать кнопку Записать и закрыть
Указать новое правило в правиле конвертации свойства “ЮридическоеФизическоеЛицо” справочника Контрагенты
Перейти на закладку Правила конвертации объектов
Найти правило конвертации справочника Контрагенты, открыть форму правила
Перейти на закладку Правила конвертации свойств и найти правило для свойства “ЮридическоеФизическоеЛицо”
Открыть форму правила конвертации свойства и указать в нем правило конвертации объекта & “Перечисление_ЮридическоеФизическоеЛицо”.
Сохранить внесенные изменения
Этап 5. Создание правил обработки данных
Порядок действий одинаков для обоих конвертаций.
Открыть настройку правил обмена для конвертации (УП или БП)
Перейти на закладку Правила конвертации объектов
Найти правило конвертации справочника Контрагенты, открыть форму правила
Нажать кнопку Создать на основании & Правило обработки данных
В созданном правиле обработки данных проверить заполнившиеся автоматически свойства:
Идентификатор правила & указать такой же как для правила обработки данных (“Справочник_Контрагенты_Отправка” либо “Справочник_Контрагенты_Получение”)
Область применения & такая же как для правила обработки данных
Объект выборки:
для конвертации УП & “СправочникСсылка.Контрагенты”
для конвертации БП & “Справочник.Контрагенты”
Правило конвертации объекта & ссылка на правило конвертации объекта.
Нажать кнопку Записать и закрыть.
Этап 6. Получение модулей менеджера обмена данными
Модуль менеджера обмена данными необходим для обмена данными между конфигурациями в соответствии с настроенными в КД 3.0правилами.
Порядок действий одинаков для обеих конвертаций:
Открыть информационную базу УП или БП в режиме “Конфигуратор”. Найти в дереве метаданных общий модуль МенеджерОбменаЧерезУниверсальныйФормат и открыть его для редактирования. Модуль должен быть пустым.
Открыть информационную базу КД 3.0 в режиме “Предприятие”.
Перейти в раздел Конвертации и выбрать команду Выгрузка модуля.
В открывшейся форме указать соответствующую конвертацию и нажать кнопку Выгрузить. Модуль будет скопирован в буфер обмена.
Перейти в конфигуратор информационной базы УП или БП и вставить содержимое буфера обмена в общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
Сохранить конфигурацию.
Выгрузка модуля в буфер обмена также может производиться из формы настройки правил обмена по кнопке Сохранить модуль менеджера обмена.
Для того чтобы по настроенным правилам выполнялся обмен данными, необходимо в обеих информационных базах в режиме “Предприятие” настроить синхронизацию данных через универсальный формат.
В 1С:Зарплата и управление персоналом 8 начисления делятся на Основные и Дополнительные. И когда появляется потребность зарегистрировать новое начисление возникает вопрос: А в какой список включать это начисление?
Обычно все начисления добавляют в основные или вообще как получится - Поэтому постоянно приходится сталкиваться с тем, что разовые доплаты находятся в основных начислениях, а доплаты, которые зависят от времени засовывают в дополнительные и пытаются считать вручную.
Хотя неправильное отнесение начисления к тому или иному виду во многих случаях не является критичным (хотя бывает и наоборот), все же лучше следовать правилам, определенным в конфигурации.
Принцип здесь простой: все начисления, которые имеют протяженность во времени, а также те, которые зависят от времени (отработанного и неотработанного) должны быть включены в Основные начисления.
Остальные начисления, можно включать в Дополнительные.
Инструкция создания одностороннего обмена данными между конфигурациями "Источник" и "Приемник" с нуля:
1 Скачиваем последнюю версию конфигурации "Конвертация данных". Сейчас на сайте ИТС перестали почему-то публиковать полные дистрибутивы, поэтому находим где-нибудь изначальный релиз и накатываем обновления с сайта.
2 В процессе установки обновлений у вас в папке с шаблонами конфигураций (смотрите её расположение в настройках окна запуска 1С) появится папка Conversion с вложенными папками версий конвертации данных. Заходите в последнюю версию на которую обновились и берите оттуда следующие файлы:
MD80Exp.epf, MD81Exp.epf, MD82Exp.epf, V8Exchan.epf, V8Exchan81.epf, V8Exchan82.epf.
3 Отдельно обращаю ваше внимание. Для успеха операции крайне важно использовать эти файлы из той версии конфигурации "Конвертация данных" в которой вы создаете правила обмена.
4 Следующий этап: выгрузка метаданных Источника и Приемника в xml файлы. Для этого предназначена обработка MD**Exp.epf. Галки выгружать регистры и прочее снимаете. Используйте нужную в зависимости от платформы. Опять же, повторюсь, - из одного и того же комплекта конвертации данных. Иначе ничего не получится.
5 Теперь открывайте базу "Конвертация данных".
6 Заходите в "Справочники"-"Конфигурации". Добавить новый элемент. В качестве файла загрузки указываете выгруженные метаданные. Выбираете "Загрузить в новую конфигурацию". Таким образом создаете две конфигурации с именами, например, Источник и Приемник.
7 Теперь заходите в "Справочники"->"Конвертации". Добавить новый элемент. Указываете в качестве конфигураций источника и приемника наши созданные конфигурации.
8 Конвертация данных предложит вам создать правила конвертации объектов и выгрузки автоматически. Соглашайтесь. Тут я подробностей писать не буду. Об этом в интернете много уже есть.
9 Теперь выгрузите созданный файл правил обмена на диск.
10 И, наконец, крайне важно для выгрузки и загрузки данных по созданным нами правилам обмена использовать не встроенный универсальный обмен в формате XML из самих конфигураций, а использовать наши V8Exchan**.epf, упомянутые выше.
Итак, главное правило: MD**Exp.epf и V8Exchan**.epf должны быть из одного комплекта, прилагающегося к версии Конвертация данных. Причем той же версии, в которой создавались правила обмена. И никаких встроенных обработок для универсального обмена в формате XML, только V8Exchan**.epf.
Сортировать(<Колонки>, <ОбъектСравнения>) Параметры:
<Колонки> (обязательный)
Тип: Строка.
Список имен колонок, разделенных запятыми, по которым производится сортировка таблицы. После каждого имени колонки через пробел может быть указано направление сортировки. Направление определяется: "Убыв" ("Desc") - упорядочивать по убыванию; "Возр" ("Asc") - упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Порядок указания имен колонок таблицы определяет порядок сортировки. Это означает, что сначала таблица сортируется по колонке, указанной первой. Затем группы строк с одинаковым значением в этой колонке сортируются по колонке, которая указана второй, и так далее.
<ОбъектСравнения> (необязательный)
Тип: СравнениеЗначений.
Объект для сравнения элементов. Если объект сравнения не задан, сравнение выполняется по следующим правилам:
элементы, чьи типы не совпадают, сравниваются по коду типа;
элементы простых типов сравниваются по значению;
элементы остальных типов сравниваются по строковому представлению.
Описание:
Сортирует табличную часть в соответствии с указанными правилами сортировки.
Когда программно создаете таблицу значений на основании каких-либо данных, то приходится создавать колонки этой ТЗ и назвать колонки наименованиями этих же данных.
Если в строке наименования для колонки присутствуют недопустимые символы, то вылетит ошибка Ошибка при вызове метода контекста (Добавить) или ТЗ.Колонки.Добавить(ИмяКолонки); по причине: Неверное имя колонки, данная функция поможет избавиться от всех недопустимых символов в названии колонки:
ЭлементыФормы (Controls) . Добавить (Add) - Добавляет элемент управления на форму. Синтаксис: Параметры: <Тип> (обязательный)
Тип: Тип. Тип добавляемого элемента управления:
Индикатор; ПолеКалендаря; Кнопка; КоманднаяПанель; Надпись; Панель; Переключатель; ПолеТабличногоДокумента; ПолеHTMLДокумента; ПолеТекстовогоДокумента; ПолеВвода; ПолеВыбора; ПолеСписка; ПолеКартинки; ПолосаРегулирования; Разделитель; РамкаГруппы; ТабличноеПоле; Флажок; ПолеГрафическойСхемы; ПолеГеографическойСхемы. <Имя> (обязательный)
Тип: Строка. Имя создаваемого элемента управления. Имя должно быть указано в соответсвии с правилами написания имен системы 1С:Предприятие 8. В противном случае выполнение метода вызовет исключение. <Видимость> (необязательный)
Тип: Булево. Определяет, создавать новый элемент управления формы видимым или нет. Истина - элемент создается видимым.
Значение по умолчанию: Истина <ПоместитьНа> (необязательный)
Тип: Панель; ПолеТабличногоДокумента. Определяет, какой панели формы или какому табличному документу принадлежит создаваемый элемент. Если указана панель, то добавляемый элемент размещается на текущей странице панели. Если не указан, создаваемый элемент будет принадлежать непосредственно форме.
Один из наиболее актуальных сегодня вопросов создания, поддержки и развития информационных систем организаций — задача интеграции их отдельных подсистем и компонентов. Платформа «1С:Предприятие 8» обладает значительным спектром функций и механизмов взаимодействия с внешними программами и оборудованием на основе общепризнанных открытых стандартов и протоколов.
Довольно большую группу среди них составляют средства обмена данными, которые мы и рассмотрим в этой статье.
Для начала нужно сказать о довольно простых, но в то же время эффективных и часто используемых на практике возможностях.
* Работа с текстовыми документами. Встроенный язык платформы позволяет разработчику создавать, динамически формировать и записывать текстовые документы, в том числе на основе готовых шаблонов. Обмен данными с использованием текстовых документов может быть одним из самых простых способов взаимодействия с другими информационными системами.
* Последовательное чтение текстовых файлов. Дело в том, что такие файлы могут быть очень большого объема, поэтому существуют специальные программные объекты, позволяющие читать и записывать их быстро (с использованием оптимизированных алгоритмов).
* XML. Платформа позволяет организовывать интеграцию с прикладными системами с использованием XML-документов, являющихся на сегодня общепринятым средством представления данных. Поддержка XML выполнена на уровне встроенного языка.
* DBF-файлы. Механизм работы с базами данных формата DBF предназначен для обеспечения возможности манипулирования ими непосредственно из языка системы через объект xBase. Можно как работать с существующими базами данных, так и создавать новые базы данных произвольной конфигурации.
* Работа с файловой системой. Доступ к функциям работы с файловой системой реализован на уровне встроенного языка. Эта возможность может быть использована при организации взаимодействия с другими информационными системами через общие каталоги.
Базовые средства обмена данными
Платформа также содержит набор специализированных средств обмена данными для создания распределенных информационных систем на основе программ «1С:Предприятия» и решений других поставщиков.
Они реализуются благодаря использованию ряда средств платформы, которые разработчик может применять как по отдельности, так и в различных комбинациях, в зависимости от конкретной решаемой задачи. Такой подход позволяет обеспечить гибкость механизмов обмена и их настраиваемость на решение как можно большего круга задач. В состав средств платформы, используемых для построения схем обмена данными, входят:
* объекты «обмена»,
* средства сериализации,
* средства документов.
При помощи этих средств могут быть реализованы две основные технологии собственно обмена данными:
* универсальный механизм обмена данными;
* механизм управления распределенными информационными базами.
Планы обмена содержат информацию об узлах, которые могут участвовать в обмене данными, определяют состав информации и указывают, следует ли задействовать механизм распределенной информационной базы при обмене. В качестве узлов могут выступать информационные базы «1С:Предприятия» или других систем. Для каждого узла можно задать код, наименование и необходимый перечень реквизитов, описывающих узел. Узел может иметь также несколько подчиненных табличных частей для хранения информации, связанной с этим узлом, несколько форм для отображения информации, содержащейся в плане обмена, и т. д.. В плане обмена указывается также состав данных, которыми предполагается вести обмен. Для каждого из объектов прикладного решения, которые могут участвовать в обмене, можно задать режим автоматической регистрации их изменений. Программно разработчик всегда может выполнять регистрацию на уровне встроенного языка.
В одном прикладном решении может существовать несколько планов обмена, каждый из которых может описывать свой порядок обмена данными. Например, если выполняется обмен данными с удаленными складами и удаленными офисами, то, скорее всего, будет существовать два плана обмена (один — для обмена со складами, другой — для офисов), поскольку состав данных, которыми производится обмен со складами, будет значительно уже, чем состав данных, предназначенных для обмена с офисами.
С помощью объектов «план обмена» реализованы два важных внутренних механизма платформы.
* Служба регистрации изменений. Позволяет получать информацию о том, какие элементы данных были изменены и в какой узел обмена их необходимо передать. Для каждого элемента данных, указанного в плане обмена, ведется своя таблица регистрации изменений. Они имеют разную структуру в зависимости от того, для каких элементов данных регистрируются изменения, но все-таки структуры таблиц подобны. Каждая запись указывает на некоторый элемент данных, некоторый узел и содержит номер сообщения, в котором это изменение передано в первый раз.
* Инфраструктура сообщений. Перенос данных между узлами распределенной информационной базы выполняется с помощью сообщений, которые поддерживаются инфраструктурой сообщений. Каждое сообщение относится к определенному плану обмена, имеет определенный узел-отправитель, узел-получатель и целочисленный номер.
XML-сериализация — это процесс преобразования данных «1С:Предприятия» в последовательность данных формата XML и наоборот.
Средства чтения и записи XML-документов позволяют работать с данными формата XML на «базовом» уровне, без привязки к объектам «1С:Предприятия». В частности, они дают возможность открывать XML-документы для чтения, читать из них данные, создавать новые XML-документы и записывать в них данные. Все это активно используется при реализации различных схем обмена данными.
Универсальный механизм обмена данными
Универсальный механизм обмена данными предназначен для создания территориально распределенных систем на основе как «1С:Предприятия», так и решений других поставщиков. Однако этот механизм позволяет переносить только данные, перенос конфигурации и административной информации «1С:Предприятия» при его помощи невозможен. В качестве формата обмена используются XML-документы, при этом при обмене данными между информационными базами «1С:Предприятия» не накладывается ограничений на идентичность конфигурации и структуры конкретных объектов. В то же время в одной конфигурации может быть создано несколько независимых схем обмена с различными информационными системами. Важно также и то, что при организации схемы обмена не накладывается ограничений на структуру распределенной системы. Может быть организована как классическая структура типа «звезда», так и более сложные многоуровневые структуры типа «снежинка» и др.
Разработчику прикладного решения предоставляется возможность гибкого управления составом обмена с точки зрения как структуры передаваемых данных, так и состава передаваемой информации в конкретные узлы обмена. Объект базы данных первоначально создается в одном из узлов обмена, при этом состав передаваемой информации может регулироваться в зависимости от содержимого данных и не зависит от места первоначального ввода информациии.
Механизм управления распределенными информационными базами
Механизм управления распределенными информационными базами (УРИБ) играет ключевую роль в создании территориально распределенных систем на основе идентичных конфигураций «1С:Предприятия 8» (распределенная система должна иметь древовидную структуру, в которой существует корневой узел и определено отношение «главный—подчиненный» для каждой пары связанных узлов). Данная технология обеспечивает регистрацию изменений в базах данных, инфраструктуру сообщений и обмен информацией в формате XML. Централизованное управление конфигурацией системы осуществляется с помощью визуальных средств или программным образом. С ее помощью выполняется не только обмен данными, но и перенос программной конфигурации.
УРИБ реализует следующие основные возможности:
* интерактивное создание распределенной системы и выполнение обмена данными без дополнительного программирования;
* обеспечение идентичности конфигураций информационных баз, входящих в состав распределенной системы;
* подключение новых и отключение существующих узлов;
* создание начального образа информационной базы для нового узла;
* различные способы разрешения коллизий при одновременном изменении данных в разных узлах распределенной системы;
* в рамках одной распределенной информационной базы может быть создано несколько схем обмена;
* распределенная информационная база может содержать схемы обмена с другими информационными системами, в том числе с информационными базами «1С:Предприятия», не являющимися распределенными информационными базами;
* задание условий на передачу и прием изменений на уровне отдельных элементов данных;
* восстановление обмена данными в таких случаях, как восстановление информационных баз из резервных копий и т. д.;
* сжатие сообщений обмена в формате .ZIP и автоматическую распаковку сообщений обмена при приеме.
Различные способы управления обменом данными
Отличительная особенность механизма УРИБ заключается в том, что во всех узлах должны быть одинаковые конфигурации и между двумя связанными узлами должны быть установлены отношения главный—подчиненный. Благодаря этому процесс обмена можно формализовать и создавать распределенные информационные базы даже без программирования, так как система «знает», как обмениваться информацией. В отличие от этого, при использовании универсального механизма обмена данными в узлах может быть что угодно и взаимодействовать они могут как угодно, поэтому обязательно нужно писать код, описывающий правила такого взаимодействия. Таким образом, механизм УРИБ — это быстро и просто, но по определенным правилам, а универсальный механизм обмена данными — это «как угодно» и поэтому сложнее и требует написания всего кода вручную.
В целом же прикладное решение может содержать произвольное количество планов обмена как с использованием механизма УРИБ, так и без его использования. Например, одна и та же информационная база может входить в состав различных распределенных систем. Например, по одному плану обмена (с использованием УРИБ) она будет «общаться» с филиалами, а по другому плану обмена (с применением универсального механизма обмена данными) она может работать с корпоративной информационной системой (не «1С:Предприятие»), поставляя туда данные о работе филиалов для создания консолидированной отчетности по всему холдингу в целом.
Таким образом, программные средства и механизмы «1С:Предприятия» позволяют создавать различные по структуре однородные и неоднородные распределенные информационные системы.
В языке запросов 1С:Предприятия функция ПОДСТРОКА() в формате ПОДСТРОКА(<Исходная строка>, <Начало>, <Длина>) может применяться к данным строкового типа и позволяет выделить фрагмент <Исходной строки>, начинающийся с символа номер <Начало> (символы в строке нумеруются с 1) и длиной <Длина> символов. Результат вычисления функции ПОДСТРОКА() имеет строковый тип переменной длины, причем длина будет считаться неограниченной, если <Исходная строка> имеет неограниченную длину и параметр <Длина> не является константой или превышает 1024.
Вычисление функции ПОДСТРОКА() на SQL сервере:
В клиент-серверном варианте работы функция ПОДСТРОКА() реализуется при помощи функции SUBSTRING() соответствующего оператора SQL, передаваемого серверу баз данных SQL Server, который вычисляет тип результата функции SUBSTRING() по сложным правилам в зависимости от типа и значений ее параметров, а так же в зависимости от контекста, в котором она используется.
В большинстве случаев эти правила не оказывают влияния на выполнение запроса 1С:Предприятия, однако есть случаи, когда для исполнения запроса существенна максимальная длина строки результата, вычисленная SQL Server. Важно иметь в виду, что в некоторых контекстах использования функции ПОДСТРОКА() максимальная длина ее результата может оказаться равной максимальной длине строки ограниченной длины, которая в SQL Server равна 4000 символам. Это может привести к неожиданному аварийному завершению выполнения запроса.
Например, запрос:
завершается аварийно с сообщением Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes.
HRESULT=80040E14, SQLSTATE=42000, native=8618
Это происходит потому, что вычисленная Microsoft SQL Server максимальная длина строки, которая является результатом выражения:
равна 4000 символов. Поэтому длина записи, состоящей из двух таких полей превышает 8000 байт, разрешенные для выполнения операции сортировки.
В связи с описанной особенностью исполнения функции SUBSTRING() на SQL Server использование функции ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины не рекомендуется. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ(). В частности, приведенный пример можно переписать в виде:
Вычисление периодов в формате ГГММДД. Вычисление дат по формуле Дата + ГГММДД.
Примечание: Даты передаем в виде 'ДД.ММ.ГГГГ', периоды - "ГГ-ММ-ДД".
Пользуйтесь. arithmometr