Приемы обработки больших данных в 1С

Публикация № 387232

Разработка - Обработки - Универсальные обработки

многопоточность обработка больших данных гибкость обработки данных надежность обработки данных мониторинг обработки данных оповещения обработки данных

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

Приемы обработки больших данных в 1С


В этой статье я расскажу об эффективных приемах организации обработок больших объемов данных на платформе 1С, накопленных за годы развития и использования продукта 2iS:Интеграция.

 

Автор статьи:  Старых Сергей (автор подсистемы Инструменты разработчика)
Редакция:  Харитонов Михаил  (автор конфигурации Конвертация данных)

Термины

  1. Набор объектов - множество объектов для обработки

  2. Диспетчер - регламентное задание обслуживающее процессы обработок

Примеры обработок больших данных

 

  1. Нормализация нормативно-справочной информации (объединение дублей)

    1. Объем данных зависит от количества ссылающихся на дубли объектов

    2. Может требовать выполнение одновременно в большом числе баз

  2. Вычисление производных от больших данных

    1. Перезаполнение регистров при изменении первичных данных

    2. Проведение большого количества документов

    3. Заполнение новых реквизитов в больших таблицах

  3. Частичная очистка данных

    1. Выявление бесполезных объектов

    2. Удаление объектов с контролем ссылок

    3. Свертка регистров

  4. Выгрузка, загрузка и конвертация больших данных

    1. Слияние (консолидация) баз, на начальном этапе требующая перекачать значительную часть данных всех баз в другую

    2. Обмен большими данными вследствие других обработок больших данных

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

  5. Исправление испорченных данных

Однопоточная производительность

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

 

Продолжение обработки с места прерывания

Чем дольше длится обработка, тем выше вероятность появления первой ошибки. В случае если обработка меняет условие попадания объектов в набор только в конце обработки набора объектов (например выгрузка или загрузка сообщения обмена данными), то в следующем сеансе ей приходится весь набор объектов обрабатывать заново и следовательно выполнять большое количество  бесполезных повторных вычислений. Чтобы избавиться от этих вычислений, нужно периодически запоминать текущую позицию в наборе и, в случае аварийного завершения обработки, продолжать с места последнего прерывания. Но обязательно нужно проверять, тот же самый ли набор объектов мы обрабатываем. Если набор объектов в этот раз уже другой, то нам нельзя использовать позицию предыдущего набора. Сопоставить 2 набора объектов можно вычислив  их хеши (значения хеш-функции).

 

Отсюда следует ограничение применимости приема только для воспроизводимых наборов объектов.
В 

Примеры воспроизводимых наборов объектов:

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

  • таблица значений

  • файл
    В 

Примеры не воспроизводимых наборов объектов:

  • результат запроса без упорядочивания по уникальному ключу

  • выборка изменений по узлу плана обмена

 

Чтобы вычислить хеш любого файла в 8.3 можно использовать объект ХешированиеДанных, а в 8.2 можно использовать COM-класс CAPICOM.HashedData . Чтобы получить файл из других типов наборов объектов, нужно:

  • Получить таблицу ключевых свойств объектов

  • Отсортировать таблицу по всем колонкам

  • Сериализовать таблицу в файл через XML


После вычисления хеша перед началом обработки сверяем его с тем, для которого хранится текущая позиция с прошлого сеанса обработки. Если они совпадают, то при возможности произвольного позиционирования сразу встаем на эту позицию, а при последовательном обходе объектов пропускаем все объекты набора до этой позиции.

 

Этот прием, например, очень эффективен при загрузке данных из большого файла.

Отключаем регламентные задания в СУБД

Выполнение регламентных заданий в СУБД может серьезно снижать производительность обработки из-за ожиданий на блокировках и очередях аппаратных ресурсов. Поэтому их лучше временно отключать, но желательно обеспечить их автоматическое включение после завершения обработки, в т.ч. аварийного.

Оптимизация записи объекта

Минимизация ожидания на блокировках данных

  • У регистров включаем разделение итогов и после больших многопоточных обработок пересчитываем итоги в периоды минимальной нагрузки

  • По возможности переводим конфигурацию на управляемые блокировки

  • Используем на платформе 8.3 версионный режим MS SQL (read_committed_snapshot)

    • Конфигурация должна быть в режиме управляемых блокировок

    • У баз созданных на 8.3 этот режим включен по умолчанию

    • У баз созданных на 8.2 и ниже, его нужно включать вручную

  • Для анализа ожиданий на блокировках данных используем

Запись в режиме загрузки

Если допустимо, то используем запись в режиме загрузки (Объект.ОбменДанными.Загрузка = Истина). В этом режиме:

  • Методически должен выполняться очень незначительный процент кода обработчиков и подписок событий записи и потому меньше вычислений

  • Платформа отключает ряд своих внутренних обработчиков и потому меньше вычислений. Например:

    • Проверка уникальности кодов и номеров объектов

Отключаем итоги регистров

При возможности временно отключаем итоги регистров. Например, РегистрыНакопления.ОстаткиТоваров.УстановитьИспользованиеИтогов(Ложь)

  • Оправдано для больших обработок изменения регистров

  • На этот период перестанут работать виртуальные таблицы таких регистров и поэтому в частности перестанут работать многие отчеты

  • Необходимо обеспечить после успешного и аварийного завершения включение итогов обратно (РегистрыНакопления.ОстаткиТоваров.УстановитьИспользованиеИтогов(Истина))

  • После включения итогов обратно они пересчитываются платформой, но могут стать некорректными из-за ошибок платформы, поэтому желательно сразу после включения делать полный пересчет (РегистрыНакопления.ОстаткиТоваров.ПересчитатьИтоги())

Отключаем авторегистрацию изменений

При возможности отключаем авторегистрацию изменений (Объект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь)

  • В этом режиме измененный объект не будет регистрироваться платформой на всех узлах планов обмена с включенной авторегистрацией

  • В распределенных базах допустимо, если обработка выполняется одновременно во всех базах и есть уверенность, что изменения объектов общих данных будут одинаковыми во всех базах

Отключаем RLS

При возможности выполняем запись без RLS. Запросы RLS могут служить причиной серьезных потерь производительности. Варианты их отключения:

  • Выполняем под пользователем с набором ролей, дающим пустые RLS на нужных таблицах

  • Используем привилегированный режим. Варианты:

    • Устанавливаем привилегированный режим (УстановитьПривилегированныйРежим(Истина))

    • Выполняем код обработки из привилегированного общего модуля

    • В свойствах документа устанавливаем флажки "Привилегированный режим при проведении" и "Привилегированный режим при отмене проведения"

Устанавливаем монопольный режим

При возможности устанавливаем монопольный режим. Чем меньше сеансов в базе, тем меньше вероятность взаимоблокировки и ожидания на блокировках данных.

  1. Устанавливаем блокировку начала сеансов

  2. Устанавливаем блокировку регламентных заданий

  3. Разрываем все сеансы и соединения

  4. Устанавливаем монопольный режим (УстановитьМонопольныйРежим(Истина))

  5. Снимаем блокировку начала сеансов

  6. Снимаем блокировку регламентных заданий

  7. Выполняем обработку

  8. После завершения сеанса обработки монопольный режим автоматически отключится

Очищаем программный код

В любой конфигурации может быть прикладной программный код, который обязательно выполняется при внесении изменений в БД:

  • RLS

  • инициализация модулей объектов

  • подписки и обработчики ПриЗаписи, ПередЗаписью, ПередУдалением

Он может выполнять много ненужных для обработки действий (даже в режиме ОбменДанным.Загрузка) и значительно увеличивать ее длительность. Понять это можно замером производительности отладчика. Если на время обработки базу можно заблокировать для пользователей, то можно временно очистить весь программный код и таким образом избежать выполнения лишних действий во время обработки.  Алгоритм очистки:

  1. Сохраняем конфигурацию в файл

  2. Выгружаем модули конфигурации

  3. Очищаем полностью модули конфигурации, объектов и менеджеров

  4. Очищаем тела всех методов общих модулей

    1. Чтобы обращения к ним из подписок не вызывали ошибки

  5. Очищаем все запросы в ограничениях доступа

  6. Загружаем модули конфигурации

  7. Обновляем конфигурацию БД

  8. Выполняем обработку

  9. Загружаем конфигурацию из файла

  10. Обновляем конфигурацию БД

Многопоточность

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

Порции объектов

Чтобы набор объектов можно было многопоточно обрабатывать, его нужно как то распределить между потоками. Поэтому разбиваем набор на столько частей (порций), сколько потоков задано на старте.

Обработка должна быть не чувствительна к порядку обработки порций (обработка любой порции не зависит от успеха обработки других)

  • Примеры нечувствительных к  порядку порций обработок:

    1. Выгрузка данных

    2. Загрузка данных

    3. Объединение дублей (замена дублей)

    4. Свертка регистра

    5. Восстановление последовательности (документов) по разным комбинациям значений измерений

    6. Универсальная обработка объектов

      • Проведение документов, не использующих результаты проведения других документов

      • Заполнение реквизитов

      • Пометка удаления

      • Удаление

  1. Примеры чувствительных к порядку порций обработок:

    1. Восстановление последовательности (документов) по одной комбинации значений измерений

    2. Проведение документов, использующих результаты проведения других документов

Подсистема

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

  • Карта порций – это таблица, описывающая комплект порций, на которые разбит весь набор данных для обработки

    1. Колонки:

      • Номер – условный номер порции

      • Ключ – произвольное примитивное значение, идентифицирующее набор данных порции

      • Захватчик – идентификация потока, захватившего порцию

      • Номер повтора – номер попытки обработки порции

    2. Привязка M объектов к N порциям. Распределение по порциям нужно делать как можно более равномерным, т.к. остальное время выполнения многопоточной обработки определяется  длительностью ее самого долгого потока. Но при этом следует учитывать возможные ожидания блокировки данных. Способы привязки:

      • Регистрация на служебных узлах плана обмена – для объектов БД эффективный и достаточно универсальный способ для любой конфигурации.

        • Ключ порции – сам узел плана обмена.

        • Накладные расходы = M * длительность регистрации объекта на узле (обычно в диапазоне [0.004;0.01]сек)

      • Файлы порций – привязка выполняется создателем файлов путем распределения объектов ним.

        • Ключ порции – имя файла.

      • Общий файл – считаем объекты с начала файла, счетчик сбрасываем каждые N объектов.

        • Ключ порции – значение счетчика.

        • Накладные расходы = (N-1) * длительность чтения объектной структуры файла

  • Функции:

    1. Построение карты порций - для набора объектов БД:

      • по результату запроса

      • по изменениям на узле плана обмена

      • по произвольному алгоритму

    2. Запись карты порций

    3. Захват порции – помечаем порцию в карте захваченной, чтобы больше никто ее не начал обрабатывать

    4. Регистрация обработки порции - помечаем порцию в карте обработанной

  • Диспетчер обеспечивает:

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

    2. Освобождение порций неуспешно завершившихся потоков

Адаптация кода обработки

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

  1. Если номер порции не передан диспетчером, то начальные действия (однопоточно)

    1. Очищаем старую карту порций

    2. Строим новую карту порций

    3. Записываем новую карту порций

    4. Захватываем порцию

  2. Обрабатываем порцию (многопоточно)

    1. Получаем и обрабатываем объекты порции по ее ключу

    2. После успешной обработки освобождаем порцию

  3. Финальные действия при регистрации обработки последней порции (однопоточно)

    1. При необходимости выполняем слияние результатов порций

    2. Очищаем привязки объектов к порциям

После регистрации обработки порции потоки не ждут друг друга, а завершаются,  сохранив при необходимости результат обработанной порции в БД или файл.

 

Многопоточный обмен данными

 

При переводе в многопоточный режим наиболее усложняется логика процессов передачи данных (обмена данными). На схеме ниже я попытался отразить ее основные моменты.

 

 

Ускорение

Насколько же многопоточный режим ускорит выполнение обработки?

Закон Амдала отвечает на этот вопрос достаточно скудно, т.к. не учитывает накладные расходы многопоточности. Для предложенного выше механизма нужна боле детальная формула.

В первом приближении выигрыш будет зависеть от

  • совокупной многопоточной производительности системы [Вычислительный узел клиента 1С (при наличии) - Вычислительный узел сервера 1С - Вычислительный узел сервера СУБД] в текущей ситуации. Для ее оценки можно использовать Многопоточное тестирование производительности сервера 1с - СУБД

  • накладных расходов на многопоточность (построение карты порций, слияние результатов и прочее)

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

  • Количества потоков, чем их больше, тем лучше до некоторого порога

Детально многопоточное ускорение обработки набора объектов можно выразить формулой

 

где

  • A - ускорение, отношение длительности выполнения однопоточной обработки к длительности выполнения многопоточной обработки

  • P - длительность нераспараллеливаемой части вычислений для набора объектов в целом, общей для обоих вариантов обработки

    • например, выполнение сложного запроса для получения ключей объектов набора

  • T - длительность вычислений на один объект в однопоточном режиме

  • M - количество объектов

  • G - длительность вычислений для набора объектов в целом, необходимых только для многопоточного варианта обработки

    • например, слияние результатов

  • N - количество потоков

  • E - длительность вычислений для порции объектов, необходимых только для многопоточного варианта обработки

    • например, сохранение результата порции

  • W - степень конкуренции (ожиданий, обусловленных многопоточным режимом), находится в диапазоне [0;1] и во многом зависит от N, основные типы ожиданий:

    • на блокировках данных между потоками

    • на очередях аппаратных ресурсов

  • R - длительность дополнительных вычислений по объекту в многопоточном режиме  (накладные расходы на многопоточность)

    • например, привязка и отвязка объекта от порции

Влияние накладных расходов по объекту на ускорение

При достаточно большом количестве объектов и отсутствии конкуренции между потоками формула ускорения превращается в

Таким образом оценив R и T, мы можем достаточно неплохо оценить ускорение для многих обработок. Чем меньше будут относительные накладные расходы (R по отношению к T), тем больше будет эффект от увеличения количества потоков.

Какие выводы можно сделать из графика:

  1. Однопоточный режим будет практически всегда быстрее многопоточного с количеством потоков (N) =1, что обусловлено выполнением дополнительных вычислений. Поэтому при N=1 его нужно отключать.

  2. Чем больше потоков, тем сильнее падает ускорение с увеличением накладных расходов

  3. Хорошо масштабируемым ускорение можно считать при накладных расходах до 10%

  4. После 30% многопоточность использовать уже не рационально

  5. При 50% 2-х поточный режим работает с той же скоростью что и однопоточный

 

Пример.

Допустим обработка выгрузки и загрузки данных тратит на объект 0.045 сек, а на распределение объекта 0.005 сек. Тогда R/T=0.1, т.е. при 2-х потоках ускорение составит примерно 1.7, а при 3-х потоках - 2.3.

Влияние конкуренции на ускорение

Степень конкуренции является наиболее трудно оцениваемым параметром, т.к. зависит от многих факторов, многие из которых косвенно зависят от количества потоков (N) и могут меняться в процессе обработки. Эти факторы делятся на 2 основных типа: ожидания на очередях аппаратных ресурсов и ожидания на блокировках данных.

 

Ожидания на блокировках данных возникают уже при 2-х потоках, если потоки вызывают блокировки пересекающихся диапазонов данных. Поэтому для ожиданий на блокировках данных зависимость W(N) относительно слабая, а больше зависимость от конкретных объектов данных.

 

Влияние аппаратных ресурсов на многопоточное ускорение достаточно слабое пока рост количества потоков не приведет к полной загрузке хотя бы одного из них. Тогда начнутся массовые ожидания потоками на очереди доступа к этому ресурсу (например процессору или диску). Какой это будет ресурс и на каком вычислительном узле, сильно зависит от специфики обработки. Таким образом для аппаратных ресурсов функция W(N) чаще всего растет резко, но при большом N.

 

При достаточно большом количестве объектов и отсутствии накладных расходов формула ускорения принимает вид

Т.е. превращается в чистый закон Амдала, где W по сути описывает долю нераспараллеливаемых вычислений в каждом потоке.

График похож на предыдущую зависимость, но здесь он более пологий.

 

Влияние количества потоков на ускорение

Теперь посмотрим как будет зависеть ускорение от количества потоков при достаточно большом количестве объектов и реалистичных W и R/T.

На этих графиках хорошо видно, что многопоточное ускорение при наличии даже небольших относительных накладных расходов на объект быстро замедляет рост с увеличением числа потоков. Поэтому не стоит без большой необходимости сразу включать много потоков обработке, даже если позволяют аппаратные ресурсы, т.к. эффективность использования этих ресурсов может быть низкой. В большинстве случаев лучше начать с 2-4 потоков, выполнить обработку с тестовым большим набором данных, увеличить количество потоков на 1, повторить тест. Если разница будет заметной (более 20%), то можно добавить еще один поток и повторить эксперимент. Если разница будет незаметной (менее 20%), то лучше остановиться на предыдущем значении.

Оценка степени конкуренции

Одним из способов оценки W является вычисление ее значения через известные значения остальных переменных формулы

Пример.

Если мы получили ускорение 2.7 для 10 потоков и относительных накладных расходах 0.1, то по этой формуле мы получим достаточно высокую степень конкуренции 0.2. Если при этом показатели очередей аппаратных ресурсов не зафиксировали значительных ожиданий, то скорее всего она обусловлена ожиданиями на блокировках данных.

Параметры многопоточности для каждой обработки

  • Минимальное количество объектов на порцию

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

    2. При количестве порций 1 многопоточный режим отключается

  • Количество потоков

    1. Используется при построении карты порций, чтобы ограничить максимальное количество порций в ней

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

    3. Фактическое количество потоков всегда меньше или равно количеству порций

Надежность

  • Транзакции и блокировки данных для изменяющих БД обработок

    1. Каждый объект обрабатываем в отдельной транзакции

    2. Исключительно блокируем объект перед чтением, чтобы избежать его считывания для записи в другом сеансе

    3. Особенно актуально для многопоточных обработок с возможностью пересечения потоков по изменяемым данным. Примеры

      • Замена ссылок

  • Выполняем в нерабочее (для пользователей) время

    1. Таким образом снижаем вероятность возникновения ошибок взаимоблокировок и превышения ожидания блокировок

  • Повтор обработки объекта при ошибке

    1. Эффективен только при определенных типах ошибок

      • Взаимоблокировки – высокая вероятность исправления

      • Превышения ожидания блокировки – низкая вероятность исправления

    2. Ограничиваем количество попыток и их общую длительность

  • Повтор обработки в целом при ошибке

    1. Обходим все остальные плавающие ошибки

  • При возможности используем запись объектов в режиме ОбменДанными.Загрузка

    1. Обычно выполняется очень незначительный процент кода обработчиков событий записи и поэтому меньше вероятность ошибок прикладного кода

    2. Платформа отключает ряд своих механизмов, но это не только приводит к обходу одних проблем, но и иногда к появлению других. Например для регистра бухгалтерии есть особенности, которые обязательно нужно учитывать в этом режиме.

  • При возможности выполняем полную очистку программного кода

    1. Выше мы уже рассмотрели этот прием в плане повышения производительности. Для многих больших многолетних систем проконтролировать все критерии качества написания прикладного программного кода очень трудоемко. В них например могут быть различные прикладные проверки перед записью объектов случайно или даже намеренно не заключенные в условие “Если Не ЭтотОбъект.ОбменДанными.Загрузка” и тому подобные. Устранение всех возможных ошибок прикладного кода может занять время, не соразмерное с выделяемым на поставленную задачу. Временная очистка программного кода позволяет нейтрализовать сразу все такие ошибки.

Гибкость

Пропуск ошибочных объектов для повторной обработки

Многие обработки не чувствительны к порядку обработки объектов. Поэтому в случае возникновения ошибки обработки любого объекта его можно отложить на следующий сеанс.

Такие обработки по способу передачи информации о пропущенных объектах между сеансами можно разделить на 2 типа:

  1. Естественная передача. Не требует дополнительных действий. Примеры:

    • Запрос с отбором по условию, изменяемому при обработке объекта

    • Выборка изменений по узлу со снятием регистрации после успешной обработки объекта

  2. Явная передача. Здесь требуется строгая и желательно компактная идентификация объектов. Примеры:

    • Выборка изменений по узлу с перерегистрацией пропускаемых объектов и снятием регистрации по номеру выбранного сообщения после обхода всех объектов

    • Обмен данными, пропущенные при загрузке объекты передаем на сторону выгрузки в виде ключей и там заново регистрируем для отправки

Управляем нагрузкой на оборудование

Думаю многие сталкивались с пиками нагрузки, вызванными неожиданным запуском сразу большого числа регламентных заданий, которые иногда даже приводят к зависанию менеджера кластера. Также те, кто работает с многопоточностью скорее всего знакомы с пиками нагрузки, вызванными сбоями в работе многопоточной логики. Чтобы ограничить такие пики можно ввести понятие несущего сеанса (в нашем продукте “процессор автозаданий”), т.е. такого сеанса, который служит ячейкой для размещения конкретной обработки. Оператор константой задает количество таких несущих сеансов для базы и таким образом ограничивает количество одновременно выполняющихся (потоков) обработок. Практика показывает, что количество несущих сеансов оптимально устанавливать  в пределах [N;2N], где N - среднее между количеством логических ядер на серверах 1С и СУБД. Но такое ограничение может быть не всегда удобно и в каких то сценариях, например для строгого соблюдения расписания, потребуются обычные (выделенные) сеансы. Поэтому оптимальным решением будет применять комбинированный режим:

  1. Для каждой обработки указываем режим запуска несущий/выделенный сеанс

    1. Для требовательных к расписанию обработок устанавливаем режим “выделенный сеанс” (регламентное задание), жертвуя управляемостью нагрузки

    2. Для остальных используем несущий сеанс, жертвуя строгостью соблюдения регламента запуска

  2. Диспетчер создает N регламентных заданий (несущих), которые будут захватывать и запускать из очереди задания-обработки с режимом “выделенный сеанс” в соответствии с их расписанием и многопоточностью

  3. Диспетчер завершает обработки в запрещенное регламентом время

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

Мониторинг

В случае нештатной ситуации с выполнением обработки ответственного спросят о причине, по которой она произошла. Чтобы облегчить задачу поиска этой причины полезно регистрировать ряд событий и состояний для каждой обработки

  1. Каждый сеанс обработки регистрируем в журнале выполнения вместе с

    1. Начало/Конец/Длительность

    2. Успешность

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

    4. Описание перехваченной ошибки. Чтобы перехватить ошибку, запускаем обработку внутри Попытка-Исключение.

    5. Описание ошибки, которую не удалось перехватить, или аварийное завершение. Это информацию должен собирать диспетчер через штатный журнал фоновых заданий.

  2. Ошибочные объекты регистрируем

    1. с подсчетом попыток обработки

    2. с датой и описанием первой и последней ошибок

    3. после успешной обработки перемещаем в отдельный журнал

  3. Длительные обработки на каждом этапе должны регулярно обновлять текущий прогресс в специальном регистре состояний

    1. Для статических наборов точно

    1. Для динамических наборов приблизительно, опираясь на размер набора на старте

    2. Показатели

      • Количество объектов Обработано/Всего/Пропущено/Осталось

      • Время Начало/Прошло/Всего приблизительно/Осталось приблизительно

      • Средняя длительность обработки объекта

    3. Необходимо выполнять это не чаще заданного порога, чтобы выполнение этих вспомогательных операций заняло незначительную часть общего времени выполнения обработки

      • Мы используем порог раз в 10 сек для локальных процессов

  1. При необходимости периодически собираем и регистрируем другие контрольные показатели. Примеры:

    1. Количество объектов на узле плана обмена

    2. Нагрузка на процессор на локальном компьютере

    3. Длина очереди диска на сервере СУБД

    4. Свободное место на системном диске локального компьютера

Автообрезание журналов

Мощная система мониторинга может вызывать активный рост таблиц журналов, поэтому ей необходим механизм их автообрезания

  1. В константе храним общую глубину по умолчанию в днях для всех обработок

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

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

Инструмент отображения мониторинга

Такой инструмент должен позволять видеть в одном месте все обработки со всей оперативной информацией и журналами.

Оповещения

По условию создания оповещения можно разбить на 2 типа: по событиям и по состояниям (интервалам времени).

По важности оповещения можно разбить на обычные (информационные) и тревожные. Тревожность означает значительную вероятность наличия проблемы, которая не исправится без вмешательства одного из оповещаемых.

Информационные оповещения

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

Оповещения по тревожным состояниям

Создавать оповещения по каждому тревожному событию (например ошибке) у часто выполняющихся обработок явно избыточно, т.к. тревожные события обычно повторяются и потому приемник оповещений быстро засорится и станет мало полезным. Поэтому эффективно объединять тревожные события в тревожные состояния - непрерывные интервалы времени, в течение которых выполняется какое то тревожное условие.

  1. Создаем оповещение когда?

    1. При регистрации тревожного состояния (тревожное условие изменило результат на Истина)

    2. В конце тревожного состояния (тревожное условие изменило результат на Ложь)

    3. В рабочее время каждые N часов агрегировано активные тревожные состояния

      1. Пустое оповещение все равно отправляем, чтобы оповещаемый точно знал, что проблем нет

  2. Виды тревожных состояний

    1. Серия неуспехов обработки в целом. Количество последних неуспешных целых сеансов достигло порога

      1. Фиксируем даты и описания первой и последней ошибок серии

    2. Серия ошибочных объектов. Имеется хотя бы один ошибочный объект, количество повторов обработки которого превысило порог

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

      2. Фиксируем информацию свернуто по типам объектов

    3. Долгий сеанс. Длительность текущего сеанса превысила порог

      1. Возможные причины

        1. Зависания

        2. Бесконечные циклы

      2. Фиксируем текущий прогресс и дату последней активности

    4. Пауза обмена данными при приеме сообщений. Завершений загрузки сообщений обмена данными не происходило дольше порога

      • Серии неуспехов может не быть, т.к. ошибка может быть на стороне отправителя.

    • Серия тревожных результатов

      • Свертка последних результатов показателя попала в тревожную зону

Отправка оповещений

  1. Отправляем кому?

    1. Тревожные оповещения отправляем администратору базы и ответственному за конкретную обработку

    2. Информационные и тревожные оповещения отправляем по списку получателей для конкретной обработки

  2. Отправляем каким сервисом?

    1. email - основное средство доставки оповещений

      1. бесплатный

      2. допускает относительно большую частоту и объем

        • отправляем все оповещения в подробном виде

    2. sms - для особо важных оповещений

      • платный

      • допускает относительно малую частоту и объем

        • отправляем только самые важные оповещения и в сокращенном виде

Метаданные однотипных обработок для разных баз

Если у Вас много баз, в которых нужно выполнять однотипные обработки (в частности регламентные задания) с общим вспомогательным кодом, то логично будет собрать все это в независимую подсистему. Примером такой подсистемы может служить БСП (Библиотека Стандартных Подсистем) от 1С. Далее, Вы неизбежно столкнетесь с проблемой актуализации этой подсистемы во всех базах. Чем больше конфигураций и баз, тем больше времени и затрат будет уходить на каждую актуализацию. И тем больше рисков, потерь и убытков для компании - владельца данной инфраструктуры.

 

Избавиться от этих проблем поможет вынесение подсистемы во внешнюю (управляющую) базу. Что это даст?

  1. Нет необходимости каждый раз обновлять подсистему внутри каждой базы

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

  3. Проще применять прием полной очистки программного кода

  4. Можно комбинировать настройки обработок с базами

    1. Обработки без ссылок на объекты во входных параметрах. Примеры:

      1. Проведение документов за период

      2. Удаление помеченных объектов

    2. Обработки со ссылками в параметрах на общие объекты для группы баз. Примеры:

      1. Объединение дублей в базах, получающих нормативно-справочную информацию из единого источника

  5. Можно организовывать наглядное последовательное (пакетное) выполнение обработок адресованных разным базам, например:

    1. Выгрузка данных из базы “Управление торговлей”

    2. Загрузка данных в базу “Бухгалтерия предприятия”

    3. Выгрузка данных из базы “Бухгалтерия предприятия”

    4. Загрузка данных в базу “Консолидация”
      В 

Наш продукт 2iS:Интеграция является примером такой управляющей базы с широкими сервисными возможностями, включающими множество предопределенных обработок и возможность удобной разработки собственных обработок.

Заключение

В том или ином виде, большинство из описанных приемов реализованы в продукте 2iS:Интеграция, в частности, в механизмах обмена данными, объединения дублей и универсальной обработки объектов. Все они используются в реальных рабочих процессах в крупных компаниях с большими объемами данных и позволяют фактически одному сотруднику обеспечивать эффективную работу всех обработок в большом количестве баз. Несмотря на наличие в конфигурации защищенного модуля, 99% программного кода конфигурации открыто, то есть Вы можете изучить реализацию описанных приемов

Полезные ссылки:

 

 

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 2138 07.08.15 21:16 Сейчас в теме
2. support 4472 07.08.15 23:46 Сейчас в теме
Ну, вы выдали!
PowerBoy; jobkostya1c8; ustinov_greendale; Сергей Осипенко; shalimski; Evil Beaver; roofless; artbear; shootnik; Taktic; necropunk; kuntashov; +12 Ответить
3. WKBAPKA 217 09.08.15 14:22 Сейчас в теме
4. ZLENKO 384 10.08.15 17:40 Сейчас в теме
В пункт "Минимизация ожидания на блокировках данных" можно еще добавить "Используем версионную СУБД (например, база MS SQL Server в режиме версионирования)".

В "Используем привилегированный режим" можно добавить "В свойствах документа устанавливаем галочки "Прив.режим при проведении" и "Прив.режим при отмене проведения""
artbear; tormozit; +2 Ответить
5. tormozit 5789 10.08.15 17:48 Сейчас в теме
При версионную СУБД или режим действительно в тему. Спасибо. Дополню.

По флажкам в метаданных документов на время выполнения обработки. Это программно сделать сейчас практически нельзя, т.к. выгрузка/загрузка метаданных в/из xml пока очень сырая. Поэтому такое пригодится в очень редких случаях.
6. tormozit 5789 11.08.15 11:39 Сейчас в теме
Добавил раздел "Многопоточный обмен данными" со схемой.
7. MaxS 1923 20.08.15 07:57 Сейчас в теме
Здорово. Осталось найти такого идеального заказчика продукта, который морально, физически и материально готов поддержать все этапы оптимизации.
8. tormozit 5789 20.08.15 08:22 Сейчас в теме
(7) Подозреваю, что имеются ввиду неудобные приемы типа удаления программного кода. Конечно такие приемы в большинстве случаев недостижимы в реальных рабочих базах на достаточно длительное время. Однако каждый из них мы применяли, например очистку программного кода в копиях рабочих баз и при создании начального образа периферийной базы. Естественно для каждой ситуации нужно подбирать подходящие приемы.
9. DrZombi 115 20.08.15 11:58 Сейчас в теме
Что это?
Много буковок, прочитал все, осилил... Но зачем тут Фраза Обработка?
Причем тут вообще отключение того, другого... Давайте всех людей уберем и оставим одного.... Да при таком подходе вообще ненужно нечего и ни кого править :)


...
Статья зачётна, отформатирована... но писуарно бесполезна :)
radraker; Euroset1; +2 3 Ответить
10. tormozit 5789 20.08.15 12:17 Сейчас в теме
(9) Под обработкой в статье понимается обработка больших данных. "Отключение того, другого" - это некоторые из приемов, обещанные в анонсе к статье. При обработке больших данных участие человека (оператора) должно быть сведено к минимуму. Но кроме максимальной автоматизации обработки, важно обеспечить ее выполнение в имеющееся технологическое окно (например ночь между рабочими днями или серия выходных дней).
11. DrZombi 115 21.08.15 07:19 Сейчас в теме
(10)
например ночь между рабочими днями или серия выходных дней


Зачем? Для чего нужно такое, что бы по ночам загружать систему?
На каждый процесс необходимо свой смысл. Каков смысл, ускорять автомат, "многопоточностью"?
...восстановление последовательности под средством перепроведения документов?...
...У 8.ххх уже ненужно фактически проводить документ, что бы формировать движения документа, быстрее всего выполнить манипуляцию по нужному регистру, нежели обрабатывать 100 ненужных проверок, преобразований, которые программисты 1С так наравят запихнуть в Процедуру Обработки проведения :)
12. Evil Beaver 6695 21.10.15 13:17 Сейчас в теме
Не знаю, как кого, а меня пугают ситуации, как на картинке в начале... А ну как Старых напишет "ЗаменительРазработчика" на базе "Инструментов" и все, пиши-пропало)
CratosX; mike_grig; +2 Ответить
13. kolya_tlt 21 11.11.15 09:55 Сейчас в теме
Добрый день.
у вас были проекты по Многопоточному обмену данными? поделитесь опытом?
dinopopyys; +1 Ответить
14. tormozit 5789 11.11.15 10:45 Сейчас в теме
(13) Вроде бы в статье я им как раз поделился. Что еще интересует?
15. kolya_tlt 21 12.11.15 21:53 Сейчас в теме
(14) до самого подхода, что выгрузить данные из одного плана обмена порциями я додумался :) а вот до организации выгрузки порциями руки не дошли :( если поделитесь каким-то кодов или на пальцах расскажите "делал так, так и так" буду очень благодарен
16. n0ther 20.02.16 16:57 Сейчас в теме
Внезапная статья, но интересно. Спасибо
17. tank68 17 24.03.16 10:26 Сейчас в теме
18. alextalov 25.05.16 23:19 Сейчас в теме
Поздновато, но вставлю свои 5 копеек про многопоточность...

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

p.s. авторы, спасибо, отличная статья
support; tormozit; +2 Ответить
19. venvlad 24 04.07.17 18:38 Сейчас в теме
20. DarkAn 933 13.07.17 16:19 Сейчас в теме
Статья интересна, давненько читал, из-за обновления вновь присоединился

Если интересно, предлагаю ознакомиться с моей реализацией (http://infostart.ru/public/626117/).
Основные особенности относительно описанной Вами реализации это:
* Отсутствие необходимости разбивать Множество на порции;
* Передача данных между потоками осуществляется средствами БД, а не файлов, при этом ни каких дополнительных таблиц создавать не надо.

и бонус:
* возможность настроить зависимость одних объектов от других.

Буду рад за комментарии если они будут :)
21. Euroset1 11 19.01.18 21:14 Сейчас в теме
Теперь ясно, для чего нужна была куча воды "с картинками" про многопоточность. В конце статьи висит ссылка рекламная. Ради чего статья и затевалась похоже.
А так, зря потраченное время на чтение прописных истин.
22. Александр056 30.07.18 15:29 Сейчас в теме
1с сами пишут что платформа одно поточная, какая много поточность? все же скорее какие "финты ушами", которые полезны, но ребят, нет у нас много поточности, нету. Увы.
23. WKBAPKA 217 30.07.18 20:35 Сейчас в теме
(22) ну регламентные задания работают не в основном потоке приложения. где то на эту тему была статья... а саму эту статью не читал, много букф
24. its64 25.04.19 21:58 Сейчас в теме
авторы конфигурации Конвертация рассуждают о многопоточности и больших объемах данных!
это та самая конфига которая в одном потоке может перегрузить 40000 доков всего за несколько дней? а 5 летнюю базу всего за 3 года? улыбнуло) господа как вам удалось ее вштырить во все типовые? за что вы так не любите людей?
25. WKBAPKA 217 26.04.19 08:58 Сейчас в теме
(24) в БСП вроде как реализована многопоточность, есть целая процедура, которая вызывает выполняет метод в фоне, но толи руки кривые, толи звезды не так встали, не работает как надо. Замораживает UI-поток. А что бы добавить эффекту, разрабы поставили фиксированное время в секундах на выполнение задания. Если у меня задание выполняется чучуть дольше, все привет.
А регламентные задания все-же работают в отдельном потоке.
26. its64 27.04.19 08:23 Сейчас в теме
(25) многопоточность предполагает выполнение задачи не одном отдельном потоке а во многих отдельных потоках. столкнулся с переходом на связку розница <> УТ . 15000 доков в розницу загрузка заняла час или два . из розницы в ут эти доки ползут более 17 часов и конца не видно. из чего ставлю под сомнение работоспособность и надежность связки РТ УТ способом предложеным разработчиками с применением их "чудесной конвертации" основные принципы которой не менялись со времен 77. В результате авторы написали Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С и они же написали конвертацию в которой не применен ни один из рассказанных приемов.
27. DoReMi 27.05.19 12:31 Сейчас в теме
Оставьте свое сообщение

См. также

Подсистема "Инструменты разработчика" v5.33 Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Интегрированный набор инструментов разработчика: - консоль кода - консоль запросов - консоль построителя отчетов - консоль компоновки данных - консоль заданий - конструктор запроса - справочник алгоритмов - исследователь объектов - интерфейсная панель - настройка журнала регистрации - анализ журнала регистрации - настройка техножурнала - анализ техножурнала - подбор и обработка объектов - редактор объекта БД - редактор констант - редактор параметров сеанса - редактор изменений по плану обмена - редактор пользователей - редактор предопределенных - редактор хранилищ настроек - динамический список - поиск дублей и замена ссылок - контекстная подсказка - синтакс-помощник - поиск битых ссылок - поиск ссылок на объект - структура хранения БД - удаление объектов с контролем ссылок - и прочее

23.09.2007    474804    4340    tormozit    2649    

Механизм XDTO

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Попытка понять механизм XDTO и его неочевидные аспекты. Научиться выполнять обмены между различными конфигурациями без оглядки на реализацию в типовых.

12.05.2020    2524    0    totchaz    3    

Механизмы проведения документов при обмене по универсальному формату

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    2815    0    partizand    6    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

18.02.2020    3619    0    randomus    18    

"2iS:Интеграция" - Центр управления обменом данными. Сервисная шина предприятия (ESB). Промо

Системная интеграция v8 1cv8.cf Платные (руб)

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

25000 руб.

10.08.2012    91747    39    120    

Конвертация Данных. Нюансы использования конструкции "НеЗамещатьОбъект = Истина" в обработчике события "ПриЗагрузке"

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

У конвертации данных есть «особенности», которые «пьют кровь» программистов. Эта статья про очередную обнаруженную «особенность».

10.09.2019    7427    0    ivanek    21    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    21104    0    YPermitin    24    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

02.09.2019    8716    0    SeiOkami    35    

Excel vs 1С: битва с неожиданным исходом Промо

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    33487    0    bolefirenko    116    

Обмен данными через Web Сервисы

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

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

02.09.2019    16539    0    user5300    41    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    10431    0    ildarovich    19    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    11659    0    ids79    7    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    17557    0    m-rv    17    

Новости для пользователей

Универсальные обработки v8 1cv8.cf Бесплатно (free)

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

05.08.2019    11131    20    sapervodichka    17    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    34577    4    AlbinaAAA    25    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    14444    0    Stepa86    33    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    30247    0    ids79    40    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    19648    0    YPermitin    34    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    41545    0    ids79    17    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

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

24.06.2019    12705    0    RonX01    65    

Повышаем эффективность разработки правил обмена Промо

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    25933    0    olegtymko    47    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    6680    0    Oleg_nsk    96    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    22123    0    YPermitin    7    

Полезные приемы при работе с Конвертацией данных 2.1. Логирование, интерактивное управление, дозаполнение и постпроведение документов

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Некоторые полезные приемы для КД 2.1, которые могут пригодиться как при доработке типовых правил, так и самописных.

22.04.2019    8061    0    maks_20    9    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники Промо

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    20930    0    V.Stavinsky    11    

Работа с ComОбъектом 1С 8.2; 8.3

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Определение типов и значений через COM соединение между конфигурациями.

15.04.2019    18075    0    vik070777    12    

RabbitMQ + Конвертация Данных 3.0

Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

21.03.2019    22390    0    barelpro    82    

Взаимодействие между базами 1С через COM Промо

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассмотрено много особенностей взаимодействия между базами 1С по COM технологии

10.08.2015    142151    0    tormozit    65    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    11609    0    _ASZ_    33    

Заметки КД 2.1: Как передать файл, динамически создаваемый в источнике, в справочник присоединенных файлов приемника

Перенос данных из 1C8 в 1C8 v8 КД Россия Бесплатно (free)

В БП 3.0 есть документ "Книга Продаж Для Передачи В ЭлектронномВиде" из которого выгружается XML файл. Задача: Нужно из БП 3.0 посредством правил обмена, вместе с документом книга продаж сформировать и перенести XML файл в базу приемник. В приемнике файл будет храниться в справочнике "Книга Продаж Присоединенные Файлы".

10.10.2018    8636    0    Viktor_Ermakov    6    

Планы обмена 1С

Перенос данных из 1C8 в 1C8 Интеграция v8 Бесплатно (free)

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

10.09.2018    49271    0    zhichkin    27    

Использование инструментов разработчика для отладки обменов КД 2.0 Промо

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Пара трюков, благодаря которым жить становится намного проще...

05.05.2017    26182    0    unichkin    3    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    34491    0    Rain88    46    

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

Перенос данных из 1C8 в 1C8 v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

hsИнтегратор : Простое в использовании решение, работает в качестве клиента и сервиса (в мобильном приложении – только клиента). Не обязательно требует внесения изменений в конфигурации интегрируемых баз данных. Маленький трафик обмена между клиентом и сервером, быстрая реакция на запросы со стороны клиента. Единый сервис для обмена данными различной структуры, механизмы для обеспечения безопасности.

25.06.2018    11075    12    hobi    8    

Обмен через универсальный формат. Пример нестандартной конвертации данных

Обмен через XML Перенос данных из 1C8 в 1C8 v8 УТ11 Россия Бесплатно (free)

В статье описан небольшой пример обмена данными через EnterpriseData без снятия конфигурации с поддержки. Тестовая площадка: Управление торговлей, редакция 11 (11.4.3.126), версия платформы 8.3.11

18.06.2018    31817    0    artkor    12    

"2iS:Администратор" - центр управления инфраструктурой 1С Промо

Сервисные утилиты Архивирование (backup) Журнал регистрации v8 1cv8.cf Платные (руб)

Без изменения конфигураций инфобаз Вы получаете: - Из единой точки регистрацию и обслуживание баз, серверов 1С и СУБД - Мониторинг и контроль любых заданий - Контроль за аппаратными ресурсами и анализ производительности - Централизованные контроль за версиями и авто обновления конфигураций - Отчеты по работе SQL и многое другое... Как следствие: - Снижение затрат на ИТ-поддержку - Снижение влияния “человеческого фактора” - Улучшение качества обслуживания - Увеличение производительности Ваших систем При покупке бесплатно установим программу и в режиме демонстрации настроим любую одну из заявленных функций.

20000 руб.

05.03.2016    39693    8    25    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть ІІ: Документы

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Продолжение статьи об универсальном обмене между идентичными конфигурации через REST интерфейс OData (https://infostart.ru/public/829356/). В части второй разберем особенности обмена документами.

19.05.2018    10315    0    V.Stavinsky    5    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    18099    0    ildarovich    19    

Настройка обмена через универсальный формат между СВОЕЙ КОНФИГУРАЦИЕЙ и ТИПОВОЙ, не снимая типовую с поддержки (+ фишка БСП)

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Возникла необходимость настроить синхронизацию между своей отраслевой конфигурацией и Бухгалтерией 3.0, основным условием было - НЕ снимать Бухгалтерию с поддержки. Предлагаю краткую инструкцию + одну "фишку" БСП, которая по умолчанию не отображается.

25.12.2017    26077    0    tmn72.1C    18    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    43722    0    ildarovich    116    

Введение в CI для 1С

Математика и алгоритмы v8 Россия Бесплатно (free)

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

21.11.2017    22454    0    real_MaxA    22    

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена)

Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML v8 КД Бесплатно (free)

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    175598    0    MaxS    270    

Обмен между базами 1С 8.3. Доработка типового плана обмена (синхронизации) между конфигурациями 1С на примере обмена 1С: Зарплата и управление персоналом 3 и 1С: Бухгалтерия предприятия 3

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Для чего нужно изучить данную статью и когда эти знания могут пригодиться? В первую очередь приведенная ниже информация потребуется программистам 1С, когда перед ними встанет задача доработать типовой обмен между конфигурациями, который настроен через синхронизацию данных, т.е. по плану обмена. Что же такое «План обмена»? План обмена в 1С – это объект, который входит в состав метаданных конфигурации и служит для синхронизации данных между информационными базами.

09.11.2017    64755    0    user858846    36    

Обработка, делающая все хорошо Промо

Универсальные обработки v8 1cv8.cf Бесплатно (free)

Обработка, делающая все хорошо. Кроме шуток.

25.12.2015    24566    14    GROOVY    57    

Конвертация данных. Удобная навигация (Открыть алгоритм или запрос) v0.5

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Россия Бесплатно (free)

Цель: выявить (зафиксировать) и реализовать удобную навигацию в КД, например: -Открытие алгоритмов в правилах конвертации объектов и правилах выгрузки данных.

27.10.2017    11056    0    Trise    6    

1С: Конвертация данных 2. Разработка с "нуля" на простых примерах разработки

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

1. Вступление 2. Что понадобится: конфигурация 1С: Конвертация данных 2. и обработки из пакета. Для примера задач возьмем конфигурации 1С: Управление торговлей 11 и 1С: БП 3.*. 3. Нам понадобятся Обработки для выгрузки структуры метаданных и обмена. 4. Выгрузка структуры метаданных конфигурации 1С: Управление торговлей 11.3 и 1С: Бухгалтерия предприятия 3.0.* 5. Загрузка структур метаданных конфигураций в базу конвертации. 6. Создание правил конвертации в 1С на конкретном примере задачи. 7. Подводим итоги: Выгрузка и загрузка данных с помощью разработанных правил обмена данными.

26.10.2017    78142    0    somel    22    

Основные концепции Конвертации данных (КД) для новичков

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

В КД очень важно понять основные принципы работы. Вроде и самой КД сто лет в обед, и понаписано уже не счесть, но все как-то не так, как мне бы хотелось. Постепенно крепло желание написать эдакое послание самому себе, начинающему изучать КД, да никак руки не доходили. Последней каплей стала очередная попавшаяся на глаза "неправильная" статья, и я решил - ничего страшного, пусть будет еще одна статья, зато гештальт закрою :) Даже если я излишне самонадеян, авось кому-то она все же поможет. Скриншотов не будет, будет только унылый текст. Но я бы в свое время за него многое отдал. Чтобы не перегружать статью, в ней не освещаются особенности вроде правил регистрации, особенностей КД 3.0 и т.п.

17.10.2017    26922    0    herfis    26    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    281014    0    Evil Beaver    173    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

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

12.10.2017    17036    0    for_sale    58    

Настройка автоматического обмена между конфигурациями Управление торговлей 10.3 и Управление торговлей 11. 3 при помощи механизмов планов обмена и правил обмена

Перенос данных из 1C8 в 1C8 v8 УТ10 УТ11 Россия Бесплатно (free)

В статье описывается методика настройки автоматического обмена между конфигурациями УТ 10 -УТ 11 3 при помощи механизмов планов обмена и правил обмена

25.09.2017    17604    0    The Ded    28    

Что такое конвертация данных 1С (статья написана исключительно для новичков)

Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

О том, что "Конвертация данных" - мощный инструмент и прочую терминологию, вы прочтёте в любом источнике. Я хочу поделиться кратким пояснением как пользоваться данной конфигурацией. Речь пойдет о версии 2.1.

07.08.2017    35555    0    perepetulichka    38    

Пишем игру Минер. Обработка событий ActiveX в 1С

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    14219    0    user621724_Dimav1979    12