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

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

Задачи пользователя - Универсальные обработки

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

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 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. Восстановление последовательности (документов) по одной комбинации значений измерений
  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. Обычно выполняется очень незначительный процент кода обработчиков событий записи и поэтому меньше вероятность ошибок прикладного кода
    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. Для статических наборов точно
    2. Для динамических наборов приблизительно, опираясь на размер набора на старте
    3. Показатели
      • Количество объектов Обработано/Всего/Пропущено/Осталось
      • Время Начало/Прошло/Всего приблизительно/Осталось приблизительно
      • Средняя длительность обработки объекта
    4. Необходимо выполнять это не чаще заданного порога, чтобы выполнение этих вспомогательных операций заняло незначительную часть общего времени выполнения обработки
      • Мы используем порог раз в 10 сек для локальных процессов
  4. При необходимости периодически собираем и регистрируем другие контрольные показатели. Примеры:
    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. Пауза обмена данными при приеме сообщений. Завершений загрузки сообщений обмена данными не происходило дольше порога
      • Серии неуспехов может не быть, т.к. ошибка может быть на стороне отправителя.
    5. Серия тревожных результатов
      • Свертка последних результатов показателя попала в тревожную зону

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

  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 2809 07.08.15 21:16 Сейчас в теме
2. support 4562 07.08.15 23:46 Сейчас в теме
Ну, вы выдали!
PowerBoy; jobkostya1c_ERP; ustinov_greendale; Сергей Осипенко; shalimski; Evil Beaver; roofless; artbear; shootnik; Taktic; necropunk; kuntashov; +12 Ответить
29. 2ncom 31 16.09.21 17:00 Сейчас в теме
(2)
Хорошая статья. Но для реального улучшения 1С при работе с большими данными наверняка, нужно направить фокус развития платформы не только в программирование, но и в способы решения и описания учетных задач непосредственно в базе. Например создать какой-то формульно-алгоритмический язык и часть учетных задач можно будет решить без программирования. Понятно, что платформа должна поддерживать такой язык и при этом быстро работать. Вот для пример, тот же учет НДС довольно просто описываемся через имена реквизитов документов
Нужно сложить реквизит сумма НДС20% всех документов счет-фактура выданный за нужный период – получим НДС к начислению.
Далее нужно сложить сумму НДС20% всех документов счет-фактура полученный за это же квартал – получим НДС к возмещению.
Разница этих двух величин будет НДС к уплате. Это упрощенно.
В реальности конечно нужно отследить различные ставки НДС, коды операций, счет-фактуры с авансов, вычислить НДС со списанных товаров и еще около 20 различных параметров и ситуаций. Но тем не менее это будет совершенно другой подход к решению подобной (не оперативной) учетной задачи, можно сказать человеческий подход с помощью формульно-алгоритмического описания этой задачи. Кто помнит, раньше были (а может быть и сейчас есть) такие языки как фортран (формульный транслятор), алгол (алгоритмический язык). Вот и здесь проситься что-то подобное.
Пробовал делать наброски синтаксиса языка формульно-алгоритмических вычислений – применительно к 1С , - вроде получается.
Работа с большими данными - интересная тема, да.

(2)
3. WKBAPKA 214 09.08.15 14:22 Сейчас в теме
4. ZLENKO 398 10.08.15 17:40 Сейчас в теме
В пункт "Минимизация ожидания на блокировках данных" можно еще добавить "Используем версионную СУБД (например, база MS SQL Server в режиме версионирования)".

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

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


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


Зачем? Для чего нужно такое, что бы по ночам загружать систему?
На каждый процесс необходимо свой смысл. Каков смысл, ускорять автомат, "многопоточностью"?
...восстановление последовательности под средством перепроведения документов?...
...У 8.ххх уже ненужно фактически проводить документ, что бы формировать движения документа, быстрее всего выполнить манипуляцию по нужному регистру, нежели обрабатывать 100 ненужных проверок, преобразований, которые программисты 1С так наравят запихнуть в Процедуру Обработки проведения :)
12. Evil Beaver 7824 21.10.15 13:17 Сейчас в теме
Не знаю, как кого, а меня пугают ситуации, как на картинке в начале... А ну как Старых напишет "ЗаменительРазработчика" на базе "Инструментов" и все, пиши-пропало)
CratosX; mike_grig; +2 Ответить
13. kolya_tlt 80 11.11.15 09:55 Сейчас в теме
Добрый день.
у вас были проекты по Многопоточному обмену данными? поделитесь опытом?
dinopopyys; +1 Ответить
14. tormozit 6797 11.11.15 10:45 Сейчас в теме
(13) Вроде бы в статье я им как раз поделился. Что еще интересует?
15. kolya_tlt 80 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 25 04.07.17 18:38 Сейчас в теме
20. DarkAn 1046 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 214 30.07.18 20:35 Сейчас в теме
(22) ну регламентные задания работают не в основном потоке приложения. где то на эту тему была статья... а саму эту статью не читал, много букф
24. its64 25.04.19 21:58 Сейчас в теме
авторы конфигурации Конвертация рассуждают о многопоточности и больших объемах данных!
это та самая конфига которая в одном потоке может перегрузить 40000 доков всего за несколько дней? а 5 летнюю базу всего за 3 года? улыбнуло) господа как вам удалось ее вштырить во все типовые? за что вы так не любите людей?
25. WKBAPKA 214 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 Сейчас в теме
Эх. Сдохли картинки.
GennadiyN; +1 Ответить
28. GennadiyN 24.05.21 10:25 Сейчас в теме
Можно попросить загрузить еще раз картинки?
Оставьте свое сообщение

См. также

Особенности работы с COM-соединением

Обмен между базами 1C Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Бесплатно (free)

О чём и зачем данная статья? Казалось бы, что написано об этом соединении очень много, да и технология устаревшая... И мне так раньше казалось! Однако, столкнувшись с необходимостью на двух проектах подряд работать с этой технологией, стало понятно, что описание трудных ситуаций или отсутствует, или есть только на форумах, что крайне неудобно! Поэтому особенности работы с COM соберу в одном месте, чтоб не искать в будущем.

22.02.2023    4087    biimmap    71    

57

Добавление своего нового объекта в синхронизацию данными через универсальный формат Enterprise Data

Обмен между базами 1C Платформа 1С v8.3 Бесплатно (free)

Добавление своего нового объекта в синхронизацию данными через универсальный формат Enterprise Data, не снимая (или снимая) конфигурацию с поддержки.

27.01.2023    1953    alexey_kurdyukov    5    

41

Ни в ЗУП ногой!? А мне нравится! Часть 4. Главное - правильный перенос данных!

Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Бесплатно (free)

Ни для кого не секрет, что ЗУП - одно из сложнейших решений в линейке 1С. Многие разработчики и аналитики не любят им заниматься. Тяжело представить, чтобы начинающий разработчик/аналитик стал по доброй воле работать в сфере управления персоналом и расчета заработной платы. В данной серии статьей будет рассказано, какие видятся плюсы в этом решении и как справляться с его минусами. Кратко расскажу, как встать на этот путь, приведу примеры выполненных задач.

30.05.2022    5094    biimmap    26    

54

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    2924    fishca    12    

32

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

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

31.08.2021    4920    dusha0020    8    

62

Описание формата 1С JDTO (JSON data transfer object)

Обмен между базами 1C Платформа 1С v8.3 Бесплатно (free)

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

16.07.2021    10701    zhichkin    32    

94

Добавление нового документа в формат обмена EnterpriseData (отправка)

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Для меня встала задача добавить новый документ, созданный в расширении, в формат обмена EnterpriseData, между БП - УНФ. Изначальный поиск решения не дал результата. Методом проб и ошибок у меня сформировалось свое решение, которым спешу поделиться, чтобы систематизировать информацию в текст и услышать плюсы, минусы подхода. Все доработки осуществляются в расширении, в котором и был создан новый документ.

21.04.2021    5392    con-men    7    

54

Чем воспользоваться для распознавания котиков в 1С?

Математика и алгоритмы Языки и среды Платформа 1С v8.3 Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    4649    comol    10    

29

Подборка программ для взаимодействия с ЕГАИС Промо

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

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    5082    SergeyN    13    

39

Правила обмена больше не нужны

Внешние источники данных Обмен между базами 1C WEB-интеграция Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    18891    Nikola23    40    

79

R.I.P. РИБ

Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

РИБ, спасибо и до свидания.

19.02.2021    13340    1c-intelligence    133    

69

Перенос данных из ЗУП 2.5 в ЗУП 3.1

Зарплата Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Бесплатно (free)

Довольно часто сталкиваюсь с тем, что у коллег возникает вопрос, как правильно выполнить перенос данных из ЗУП 2.5 в ЗУП 3.1. (Неужели еще кто-то до сих пор работает в ЗУП 2.5? Да, и очень много людей)

25.01.2021    17287    VAAngelov    83    

64

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Лайфхаки конвертации данных 2.1 (часть 2)

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

14.09.2020    29805    Shining_ninja    19    

115

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

Обмен между базами 1C Платформа 1С v8.3 1С:Конвертация данных Бесплатно (free)

Разработка правил обмена с использованием подключаемых обработок. В качестве примера рассмотрена реальная задача конвертации дерева значений.

15.06.2020    8885    Drivingblind    10    

69

Конвертация данных 2.1. Методика переноса остатков

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Бесплатно (free)

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

12.06.2020    21223    aximo    23    

93

Лайфхаки конвертации данных 2.1

Обмен между базами 1C Платформа 1С v8.3 1С:Конвертация данных Россия Бесплатно (free)

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

07.06.2020    24911    Shining_ninja    13    

145

Как мы РИБ на веб-сервисы переводили

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Решение проблем обмена РИБ с 10+ баз с помощью веб-сервисов и базы обмена.

13.05.2020    6942    RSConsulting    22    

29

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Механизм XDTO

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

12.05.2020    8385    totchaz    4    

55

Интеграция БИТ:СКУД с типовой конфигурацией

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Интеграция БИТ:СКУД с типовой конфигурацией, обновление БИТ:СКУД в составе конфигурации и отдельно. Обновление системы защиты.

26.04.2020    7659    RPGrigorev    0    

109

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

Обмен между базами 1C БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

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

04.03.2020    8779    partizand    7    

49

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

Математика и алгоритмы Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

18.02.2020    8280    randomus    20    

75

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Конвертация данных 2. Использование исходящих и входящих данных. Свойство "Получить из входящих данных"

Обмен между базами 1C Платформа 1С v8.3 1С:Конвертация данных Бесплатно (free)

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

17.02.2020    42238    Drivingblind    37    

122

Бесшовная интеграция через обмен по правилам - миссия выполнима

Обмен между базами 1C Платформа 1С v8.3 1С:Документооборот 1С:ERP Управление предприятием 2 Бесплатно (free)

При организации работы с договорами в ERP 2, с помощью бесшовной интеграции с Документооборотом, «типовой» методикой является создание договоров в ЕРП. После создания договора в ЕРП, пользователь «отправляет» договор в ДО по бесшовной интеграции. На практике, весьма часто пользователи хотят видеть обратную схему: вводить договоры в ДО и при этом получать их в ЕРП без «лишних телодвижений». Или даже вводить их независимо в обеих системах – так, чтобы потом «стыковать» по каким-то определенным правилам.

24.01.2020    9162    e-9    8    

36

Как сделать обмен данными через универсальный формат быстрее? Реализация многопоточного обмена данными

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

31.12.2019    11307    ids79    17    

47

30 задач. Странных и не очень

Математика и алгоритмы Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    38473    Infostart    63    

160

Заметки по Конвертации данных 3.0

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Написал небольшие заметки по конвертации данных 3.0.

18.11.2019    27789    John_d    20    

184

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Обсудим планы обмена. Способы регистрации объектов к обмену

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

16.11.2019    72472    aximo    47    

87

EnterpriseData: простой способ защиты данных в базе получателя при одностороннем обмене

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

04.10.2019    8775    handscenter    12    

28

Обмен данными. Консистентность vs Многопоточность

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    17766    m-rv    2    

44

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

Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

02.09.2019    57515    user5300    45    

172

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

Выгрузка и загрузка документов с движениями

Обмен между базами 1C Платформа 1С v8.3 1С:Конвертация данных Бесплатно (free)

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

02.09.2019    15078    human_new    21    

37

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

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

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

22.08.2019    18999    ildarovich    24    

181

Перенос дополнительных реквизитов в Конвертации данных 2.0

Обмен между базами 1C Платформа 1С v8.3 1С:Конвертация данных Россия Управленческий учет Бесплатно (free)

Пример написания правил обмена (КД 2.0) для переноса дополнительных реквизитов справочника "Номенклатура", в том числе перенос ПВХ с разными типами значений.

13.08.2019    20747    vikulinamari    11    

46

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

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

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

25.07.2019    188383    AlbinaAAA    50    

722

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

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

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

16.07.2019    71169    Infostart    34    

128