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

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

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

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

261
Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 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% программного кода конфигурации открыто, то есть Вы можете изучить реализацию описанных приемов

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

 

 

261

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

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

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

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


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


Зачем? Для чего нужно такое, что бы по ночам загружать систему?
На каждый процесс необходимо свой смысл. Каков смысл, ускорять автомат, "многопоточностью"?
...восстановление последовательности под средством перепроведения документов?...
...У 8.ххх уже ненужно фактически проводить документ, что бы формировать движения документа, быстрее всего выполнить манипуляцию по нужному регистру, нежели обрабатывать 100 ненужных проверок, преобразований, которые программисты 1С так наравят запихнуть в Процедуру Обработки проведения :)
12. Evil Beaver 6402 21.10.15 13:17 Сейчас в теме
Не знаю, как кого, а меня пугают ситуации, как на картинке в начале... А ну как Старых напишет "ЗаменительРазработчика" на базе "Инструментов" и все, пиши-пропало)
CratosX; mike_grig; +2 Ответить
13. kolya_tlt 11 11.11.15 09:55 Сейчас в теме
Добрый день.
у вас были проекты по Многопоточному обмену данными? поделитесь опытом?
dinopopyys; +1 Ответить
14. tormozit 5638 11.11.15 10:45 Сейчас в теме
(13) Вроде бы в статье я им как раз поделился. Что еще интересует?
15. kolya_tlt 11 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 906 13.07.17 16:19 Сейчас в теме
Статья интересна, давненько читал, из-за обновления вновь присоединился

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

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

Буду рад за комментарии если они будут :)
21. Euroset1 10 19.01.18 21:14 Сейчас в теме
Теперь ясно, для чего нужна была куча воды "с картинками" про многопоточность. В конце статьи висит ссылка рекламная. Ради чего статья и затевалась похоже.
А так, зря потраченное время на чтение прописных истин.
22. Александр056 30.07.18 15:29 Сейчас в теме
1с сами пишут что платформа одно поточная, какая много поточность? все же скорее какие "финты ушами", которые полезны, но ребят, нет у нас много поточности, нету. Увы.
23. WKBAPKA 215 30.07.18 20:35 Сейчас в теме
(22) ну регламентные задания работают не в основном потоке приложения. где то на эту тему была статья... а саму эту статью не читал, много букф
24. its64 25.04.19 21:58 Сейчас в теме
авторы конфигурации Конвертация рассуждают о многопоточности и больших объемах данных!
это та самая конфига которая в одном потоке может перегрузить 40000 доков всего за несколько дней? а 5 летнюю базу всего за 3 года? улыбнуло) господа как вам удалось ее вштырить во все типовые? за что вы так не любите людей?
25. WKBAPKA 215 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 Сейчас в теме
Оставьте свое сообщение

См. также

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

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

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

10.09.2019    3203    ivanek    21       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

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

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

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

02.09.2019    5887    SeiOkami    35       

Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо

Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.

9000 рублей

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

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

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

02.09.2019    6447    user5300    29       

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

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

22.08.2019    5532    ildarovich    17       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.

29700 руб.

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

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

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

22.08.2019    5291    ids79    7       

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

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

25.07.2019    15192    4    AlbinaAAA    24       

С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо

Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.

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

Статья Программист Руководитель проекта Нет файла v8 Бесплатно (free) Математика и алгоритмы Рефакторинг и качество кода

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

22.07.2019    9405    Stepa86    33       

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

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

16.07.2019    9858    YPermitin    34       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

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

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

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

25.06.2019    24266    ids79    17       

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

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

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

24.06.2019    8267    RonX01    63       

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

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

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

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы

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

28.05.2019    4264    Oleg_nsk    93       

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

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

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

20.05.2019    12890    YPermitin    5       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

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

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

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

22.04.2019    5125    maks_20    9       

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

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

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

16.04.2019    10431    m-rv    16       

Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500/9500 рублей

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

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

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

15.04.2019    12288    vik070777    12       

Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.

29700 руб.

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

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

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

21.03.2019    15546    barelpro    82       

Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо

Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.

24700 руб.

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

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

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

10.11.2018    23907    ids79    40       

Онлайн-интенсив "Бизнес-процессы для подготовки к экзамену 1С:Специалист по платформе" 12 декабря 2019 г. Промо

На интенсиве будут рассмотрены все теоретические вопросы, связанные с устройством механизма бизнес-процессов – это необходимо для успешной сдачи экзамена 1С:Специалист по платформе. Также, в качестве практического примера, будет решена задача, аналогичная экзаменационной.

777 рублей

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

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

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

10.10.2018    6098    Viktor_Ermakov    6       

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

Статья Программист Нет файла v8 Бесплатно (free) Перенос данных из 1C8 в 1C8

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

10.09.2018    35154    zhichkin    18       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

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

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

23.08.2018    24726    Rain88    42       

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

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

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

25.06.2018    21635    olegtymko    47