Проблемы интеграции данных различных информационных баз

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

Разработка - Математика и алгоритмы

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

Проблемы интеграции данных различных информационных баз

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

Целью статьи является попытка понять, с какими проблемами мы столкнемся при использовании модульной системы, в которой разные модули будут находиться в разных информационных базах или при интеграции с существующими учетными системами. В интернете существуют работы  на эту тему, например в  википедии http://ru.wikipedia.org/wiki/Интеграция_данных. Если сравнить данную статью с википедией, то мы рассматриваем интеграцию данных распространением.

Проанализировав свой опыт и материалы, которые удалось найти в интернете, мы разделили проблемы на следующие классы:

  • Ссылочная целостность данных;
  • Коллизия изменений;
  • Корректность данных;
  • Последовательность ввода данных;
  • Структурное различие схем данных.

Ссылочная целостность данных

Под ссылочной целостностью понимается необходимое качество реляционной базы данных, заключающееся в отсутствии в любом её отношении внешних ключей, ссылающихся на несуществующие кортежи (http://ru.wikipedia.org/wiki/Ссылочная_целостность). Ссылочная целостность поддерживается в базах данных «правильной» логикой, то есть программный код не содержит алгоритмов, приводящих к отсутствию ссылочной целостности и механизмов транзакций.

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

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

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

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

Коллизия изменений

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

Изменение одних и тех же данных в пределах одной информационной базы поддерживается платформой механизмом объектных блокировок (пессимистическая и оптимистическая блокировка, механизм описан здесь http://1cexpo.ru/informacziya/27-blokirovki-dannyx-v-1spredpriyatii-8.html), причем только для ссылочных данных (справочник, документ и т.п.). В различных информационных базах установка такого рода блокировок кажется очень трудоемкой. В результате в двух системах может быть изменен один объект. Какие объекты «подвержены» изменениям можно выявить на этапе внедрения, в основном это объекты, которые изменяют разные отделы. Например, платежные документы загружает Казначейство, а разноску денег по заказам делает менеджер (довольно реальный пример для УТ 11). При этом загрузка платежных документов может выполняться в базу бухгалтерии. Платежный документ может быть загружен в информационную базу несколько раз или в загруженном документе бухгалтером будут произведены изменения, потому что ему там что-то не понравилось. В результате документ меняется в двух информационных базах примерно в одно время. Это может привести к возникновению коллизий изменений и потери каких-либо из них.

Из интуитивных соображений понятно, что чем меньше время, когда в информационных базах находятся разные версии объектов, тем больше вероятность получить коллизию изменений. Тем самым уменьшая время обмена данными можно уменьшить вероятность появления коллизий. Другой возможный путь, редактировать каждый объект, только в одной информационной базе. Например, платежные документы загружаются в БП, далее казначей подтверждает, что все документы корректны (флаг в документе или ещё, какой-либо признак), после чего редактирование данных выполняется только в УТ 11. Последний способ создает неудобство казначею, при необходимости что-либо поменять в документе, после подтверждения, ему необходим доступ в другую информационную базу.

Выводы: Проблема актуальна. Найденные решения либо не решают проблему на 100%, либо неудобны пользователям.

Корректность данных

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

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

Для информационных баз с разной конфигурацией, проблема становится по-настоящему актуальной. Корректность заполнения может привести к невозможности отразить данные одной информационной базы в другой без изменения логики процессов. Например, в одной конфигурации измерение регистра сведений с признаком «Запрет незаполненных значений», а в другой нет. Для переноса данных потребуется заполнить то измерение каким-нибудь служебным значением. Разработка такой логики обмена может оказаться нетривиальной задачей из-за особенностей базы приемника.

Выводы: Проблема актуальна. В общем случае решение не найдено.

Последовательность ввода данных

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

Рассмотрим проблему на примере обмена Управление торговлей, ред. 11 (УТ) и Бухгалтерия предприятия (БП).  В конфигурации УТ в платежных документах поле договор может не заполняться, но в документах БП поле обязательно к заполнению. В результате, для заполнения договора в документе сделаны правила обмена, в которых поиск договора выполняется при загрузке по некоторым полям (Контрагент, Организация и т.д.).  При этом в УТ существует возможность ввести договора, при этом синхронизация договоров с договорами бухгалтерии выполняется по уникальным идентификаторам. Предположим, пользователь завел договор с клиентом и оформил приходный кассовый ордер. В ПКО договор отсутствует. Так как последовательность, в которой ПКО и договор попадут в бухгалтерию, нам неизвестна, то существует вероятность, что ПКО попадет раньше. В результате при загрузке ПКО будет создан новый договор, а после добавится договор, заведенный в УТ. Таким образом, можно получить «замусоривание» справочника договоров.

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

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

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

Структурное различие схем данных

Независимо разрабатываемые базы данных могут иметь несовместимую структуру (http://ru.wikipedia.org/wiki/Интеграция_данных).

  • Различие в типах данных – например, код справочника в одной информационной базе может быть строкой, а в другой – числом. Если это только код, то можно вообще его не передавать и, проблема решена. Возможно, существуют другие примеры, где так легко их не обойти;
  • Различие в единицах измерения – например, в одной БД указана величина в сантиметрах, в другой — в дюймах. Проблема также решается достаточно легко, вводом в правила сопоставления коэффициента пересчета;
  • Различие во множестве допустимых значений – например, статусы объекта в одной базе (Не согласован, Подтвержден, Отгружен, Принят), а в другой (Не согласован, Отправлен, Выполнен);
  • Различие «домен-отношение» - например, в одной базе значение строка, а в другой справочник. Проблему можно решить, если удастся автоматически заполнять необходимые поля в справочнике;
  • Различие «домен — группа доменов» - примером проблемы может быть контактная информация, где в одной системе адрес хранится строкой, а в другой разбит «по частям» (дом, улица и т.д). Не всегда возможно написать универсальный алгоритм разделения одного поля на несколько;
  • Различие «данные-схема» - метаданные одной базы данных не соответствуют метаданным другой базы данных. Например, в одной БД «инженер» — значение атрибута «должность» отношения «работник», в другой «инженеры» — отношение, содержащее некоторых работников, в то время как «бухгалтеры» - отношение, содержащее других. Так как схемы баз данных могут не иметь отражения между собой, то такое различие может оказаться непреодолимым. Например, одна база данных содержит регистр сведений Штрихкоды с измерением «Штрихкод» и ресурсом «Номенклатура», а другая с измерением «Номенклатура», а ресурсом «Штрихкод». В результате в первой базе не может быть одинаковых штрихкодов, а во второй – номенклатура не может иметь больше одного штрихкод.

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

Заключение

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

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

Решать проблемы интеграции мы предполагаем разрабатывая «модули интеграции». Данные модули будут дорабатывать типовые конфигурации под требования, предъявляемые нашими модулями.

20

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

Комментарии
Избранное Подписка Сортировка: Древо
1. sikuda 580 27.06.13 10:34 Сейчас в теме
Очень бы хотелось увидеть в 1С на уровне бизнес логики соблюдение http://ru.wikipedia.org/wiki/ACID
2. Georgich88 27.06.13 12:31 Сейчас в теме
В статье приведен нижний (технический) уровень возможных проблем, без привязки к методу интеграции.
Однако, одна из важных проблем при интеграции различных систем - это выбор метода или комбинации методов интеграции - вертикальная, горизонтальная (ESB), Spaghetti-интеграция
3. pahich 574 27.06.13 15:40 Сейчас в теме
Решать проблемы интеграции мы предполагаем разрабатывая «модули интеграции». Данные модули будут дорабатывать типовые конфигурации под требования, предъявляемые нашими модулями.


А можно как то подробнее об этих модулях интеграции? Это будут спец. программы, которые будут менять метаданные типовых конфигураций? Но тогда получается, что надо в эти программы закладывать или информацию обо всех типовых конфигурациях (что в них дорабатывать) или ИИ?
5. frying 20 27.06.13 16:04 Сейчас в теме
(3) pahich,
Да, это будут поставки, которые, вполне возможно, будут менять и метаданные и код типовых конфгураций. Для каждой конфигурации они будут разрабатываться отдельно. Надеемся, что менять их они будут не сильно.
Пока это все теория, первая попытка сделать модуль интеграции для УТ 11 и модуля CRM будет думаю ещё нескоро.

Между собой модули должны работать без каких-либо модулей интеграции. Для этого они будут проектироваться согласованно.
6. Chernik 28.06.13 02:57 Сейчас в теме
(5)
Между собой модули должны работать без каких-либо модулей интеграции. Для этого они будут проектироваться согласованно.

С чем связано такое ограничение? Почему, разрабатывая механизмы интеграции, вы не хотите задействовать их при интеграции функциональных модулей?
10. frying 20 28.06.13 09:31 Сейчас в теме
(6) Chernik,
Это не ограничение. Предполагаем, что "свои" модули мы будет делать так, что отдельные модули интеграции нам не понадобятся. Если не удастся вернемся к идее с модулями интеграции, но очень не хотелось бы. Представьте, если у нас будет хотя бы пять модулей, то между ними будет уже 5 * (5-1) / 2 = 10 связей.
13. Chernik 28.06.13 10:24 Сейчас в теме
(10)
т.е. "свои" модули будут "согласованно"-"монолитными" в части интеграции данных? А как быть с модулями сторонних разработчиков? Да и как-то слабо вяжется этот подход с вашей же концепцией модульности ( привлечение сторонних разработчиков с целью продажи их модулей. ...попытка выработать подход к построению модульного приложения на платформе 1С и пр.)
Уж очень быстро проект скукоживается от "супер" и "мега" до "и так сойдет".
14. frying 20 28.06.13 10:41 Сейчас в теме
(13) Chernik,
Будем требовать соблюдения правил всеми разработчиками, которые разрабатывают модули. Между модулями будут работать два служебных модуля "Шина процессов" и "Шина данных", которые обеспечивают интеграцию как в одной конфигурации, так и в нескольких.

PS: Сами требования ещё не разрабатывались. Пока у нас не будет хотя бы одного модуля, что-то определенное, а не общее ответить не смогу.
4. Asmody 27.06.13 16:02 Сейчас в теме
Альтернативным способ, который позволил бы поддерживать ссылочную целостность является последовательный обмен сообщениями по каждой транзакции отдельно, то есть в одном сообщении содержаться только данные измененные в рамках одной транзакции. К сожалению, платформа не предоставляет возможности, определения в какой транзакции произошли изменения.

Возможно, решением будет использование внешней очереди сообщений, например, RabbitMQ? Да и другие вопросы можно "повесить" на "общую шину". Протокол сериализации понятен — XDTO. Не хватит XDTO, есть ProtoBuf
11. frying 20 28.06.13 09:35 Сейчас в теме
(4) Asmody,
В этом пункте я хотел описать другую проблему. В каждый момент времени мы в одной базе данных можем получить согласованные данные, что не нарушит логику работы. В двух базах, данные какое-то время могут быть несогласованными, что может привести к некорректной работе алгоритмов. Потом очень трудно будет понять, например, почему в базе результат проведения документа оказался неправильным, а при его повторном проведении все встает на свои места.
7. Chernik 28.06.13 03:35 Сейчас в теме
Относительно проблем корректности данных Вы пишете:
...Например, в одной конфигурации измерение регистра сведений с признаком «Запрет незаполненных значений», а в другой нет. Для переноса данных потребуется заполнить то измерение каким-нибудь служебным значением. Разработка такой логики обмена может оказаться нетривиальной задачей из-за особенностей базы приемника...Выводы: Проблема актуальна. В общем случае решение не найдено.

А вы предполагаете осуществлять интеграцию данных путем прямого соответствия всего и вся? Вам не кажется, что общем случае решение не может быть найдено и придется разрабатывать правила конвертации в каждом конкретном случае.
Применительно к примеру с реквизитом «Запрет незаполненных значений» - т.е. вы бы хотели "впендюрить" конфигурации №2 некие данные которые ей и даром не нужны и которая не знает что с ними делать? А зачем? И, на минуточку, при этом вы считаете что это проблема. Простите, для кого?
Возможно, я чего-то не понял, объясните в чем я не прав?
12. frying 20 28.06.13 09:38 Сейчас в теме
(7) Chernik,
Нет, конечно. Здесь рассмотрели только техническую сторону не касаясь прикладной логики. Решение, как и что синхронизировать, будет приниматься на основе всей доступной информации: технической, прикладной логики, реальной жизни, опыта и т.д..
Другие вопросы, сечас рассмотреть не можем, так как у нас ещё ни одного модуля нет.
8. ivanov660 1627 28.06.13 09:11 Сейчас в теме
В статье полно "воды" - куча общих фраз, начали с проблемы и окончили проблемой. Очень не понравились частые вставки "к сожалению", "не удалось решить", "решений не найдено" и т.д. - наводит депрессию.
9. Chernik 28.06.13 09:20 Сейчас в теме
(8) ivanov660, цель статьи четко озвучена - очертить круг проблем.
Оставьте свое сообщение

См. также

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

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

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

02.09.2019    3880    SeiOkami    35       

Кодогенерация и метагенерация в 1С 24

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

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

26.08.2019    3950    kirovsbis    28       

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

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

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

22.08.2019    4270    ildarovich    16       

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

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

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

22.08.2019    3292    ids79    7       

Запрос SQL для нахождения самого большого простого числа меньше заданного 6

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

Данный запрос MS SQL демонстрирует некоторые возможности MS SQL Server, о которых часто неизвестно большинству программистов 1С. В тексте постараюсь объяснить интерес данного запроса (или скрипта).

16.08.2019    1192    alex_bitti    18       

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

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

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

25.07.2019    10218    4    AlbinaAAA    22       

Как проводятся документы в типовых конфигурациях от 1С 135

Статья Программист Нет файла v8::ОУ ERP2 УТ11 Россия УУ Windows Бесплатно (free) Математика и алгоритмы Практика программирования Разработка

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    14812    skv_79    32       

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

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

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

22.07.2019    6872    Stepa86    23       

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

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

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

16.07.2019    6564    YPermitin    29       

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

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

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

25.06.2019    17171    ids79    16       

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

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

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

24.06.2019    7091    RonX01    63       

Почему вообще работает мой запрос? или Ещё раз о планах запросов 45

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

Другие статьи на эту тему объясняют, что такое план выполнения запроса, но не рассказывают о том, как его получить. Эта заметка призвана заполнить этот пробел. Её цель - популяризировать общедоступные инструменты получения плана запроса среди разработчиков, которые ещё не начали их использовать.

10.06.2019    5494    DataReducer    12       

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

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

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

28.05.2019    3588    Oleg_nsk    93       

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

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

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

20.05.2019    9745    YPermitin    4       

Выдержки из книги Чистый код 24

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

Недавно я прочитал книгу "Чистый код" Роберта Мартина (Robert Cecil Martin). В ней описываются принципы организации и форматирование исходного кода программы так, чтобы в дальнейшем было легко поддерживать такой код. Эта книга является библией для многих программистов, но вот в среде программистов 1С, к сожалению, не очень распространено чтение подобной фундаментальной литературы. Книга более 400 страниц и так много порой лениво читать, да и времени всегда не хватает. По этому я решил выделить в виде цитирования по разделам самые важные моменты. А также снабдил текст своими примерами кода.

16.05.2019    5550    FreeArcher    82       

Что такое алгоритм? 5

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

Как ответить на этот вопрос и не попасть пальцем в небо.

25.02.2019    2881    mkalimulin    272       

Криптовалюты, а также иные взгляды на природу денег в терминах 1С 6

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

Это отчасти полемическая статья. Я задумал написать ее как ответ на другую хорошую статью о криптовалютах. Хотелось поспорить с некоторыми утверждениями автора, а ещё больше с некоторыми комментариями. А чтобы текст был более понятным для местной аудитории, я решил использовать, где только возможно, терминологию и практику 1С.

28.01.2019    3568    mkalimulin    89       

Как писать код? Технологии древних цивилизаций, или все новое - это хорошо забытое старое 70

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

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

23.01.2019    8573    starik-2005    43       

Многоязычное программирование: создание систем с использованием нескольких языков 17

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

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

09.01.2019    5555    kalyaka    33       

Размышления о хороших практиках, навеянные одной статьей 12

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

Прочитал статью "Ректальное программирование: основы для практикующих 1С-программистов". Статья очень хорошая и своевременная. Но у меня возникло некоторое сомнение. А достаточно ли автор любит и понимает предмет, о котором пишет? Насколько богат его опыт ректального программирования и занимался ли он им вообще? Как человек обладающий многолетним опытом РП, я решил представить вам необходимые дополнения к статье.

21.12.2018    4398    mkalimulin    61       

Ректальное программирование: основы для практикующих 1С-программистов 294

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

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

19.12.2018    30492    for_sale    340       

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

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

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

10.11.2018    20699    ids79    40       

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

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

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

23.08.2018    21070    Rain88    42       

Учебный курс. Повышение качества разработки. Ошибки программы 96

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Лекции № 3,4,5. Эти лекции посвящены ошибкам программ, их классификации и способам исправления

10.07.2018    15731    Артано    90       

Що там у них в Java 19

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

Развенчание мифа о тяжёлой жизни не 1С программистов на примере создания веб сервиса редактирования таблички с использованием framework spring в Java.

24.05.2018    9155    van_za    62       

Учебный курс. Повышение качества разработки. Вводная лекция, часть 2 49

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Лекция №2. Эта лекция посвящена абстракциям, их свойствами и практическому применению в рамках классических парадигм программирования.

24.05.2018    10649    Артано    36       

Учебный курс. Повышение качества разработки. Вводная лекция 116

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста.

10.05.2018    15522    Артано    51       

Правила программирования и автоматизации 73

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

Изложил свой опыт программирования, больше десяти лет.

21.02.2018    16203    Dzenn    127       

Творим Историю вместе 55

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

Расширяем границы, выходим за рамки, ставим новые цели - все, как вы любите.

17.01.2018    14843    1c-intelligence    108       

Использование git при разработке на 1С 122

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

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

27.12.2017    25842    real_MaxA    57       

Об уровне абстракции и сложности системы 14

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

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

21.12.2017    9635    m-rv    15       

Двоичное дерево, двоичное дерево поиска, двоичная куча, B-дерево 34

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

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

24.11.2017    12361    Irwin    4       

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

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

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

21.11.2017    18786    real_MaxA    22       

Как работает серверный вызов в 1С 456

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

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    42774    pahich    75       

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

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

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

12.10.2017    14432    for_sale    58       

Некоторые особенности разработки ММО-игр на платформе 1С:Предприятие 25

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

Добрый день, уважаемые коллеги! На первый взгляд может показаться, что статья посвящена довольно необычным вещам, но поверьте мне, эти вещи всем нам вполне привычны, просто мы их обычно видим под другим углом зрения. Поговорим о том, что такое MMO. Многие из вас уже знают, что это такое, потому что существует такая игра, как World of Tanks, а те, кто в нее напрямую не играл, безусловно, о ней слышали. Игра World of Tanks является классическим MMO. MMO расшифровывается как Массивная Многопользовательская Online-игра. С технологической точки зрения это – нагрузки, нагрузки и еще раз нагрузки.

08.09.2017    9365    Inkasor    21       

Групповая разработка конфигураций в крупном холдинге 68

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

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

15.08.2017    17018    stas_ganiev    15       

Применение нейронных сетей и генетических алгоритмов в прикладных решениях на платформе 1С 170

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

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

03.07.2017    31821    comol    63       

Автоматизация процесса 1С-разработки 91

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

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

07.06.2017    22517    ekaruk    9       

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

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

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

29.05.2017    12386    user621724_Dimav1979    11       

Как я доступ на kb.1c.ru получал 90

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

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    22030    ikekoval    33       

Маленькая хитрость СКД - выводим строки X раз 26

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

Здесь я расскажу, как вывести в отчет СКД произвольное количество одинаковых строк.

17.12.2016    15351    alexandersh    16       

"Распределение в запросе" или "избавляемся от перебора" 182

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

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    27754    alexandersh    45       

Некоторые принципы оптимизации запросов 1С (+SQL) 115

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

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

17.11.2016    8600    ture    40       

Использование git для доработки типовых конфигураций 1С 229

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

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

11.10.2016    185899    pumbaE    31       

Оптимизация запросов 1С:Предприятие – от теории к практике 114

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

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

07.10.2016    31030    bpc222    20