новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Комбинаторный взрыв в 1С:Предприятие версии 8

  • Добавить свою публикацию
  • для этого требуется регистрация

       В этой статье речь пойдет об увеличении или уменьшении объема информации для запоминания за счет комбинаций из стандартных элементов. В основе человеческого мышления заложен Естественный Язык (ЕЯ). Естественный язык основан на обработке осмысленных комбинаций из слов и других языковых единиц. Любой язык программирования тоже основан на составлении правильных комбинаций из команд языка, параметров команд, и других более крупных единиц языка типа классов, делегатов, лямбда-выражений и т.д. Естественный Язык отличается от языка программирования тем, что человек может из слов ЕЯ свободно составлять комбинации, а для комбинирования команд языка программирования требуется длительное обучение и интеллектуальное усилие. Теперь сравним, по каким принципам комбинируются между собой элементы языка в продуктах Microsoft и в российской разработке 1С:Предприятие.

     Меня восхищает технология от Microsoft – LINQ, которая впервые появилась в Visual Studio 2008. Команды LINQ могут интерпретироваться в запросы SQL к базе данных и выполняться. Часть LINQ является надстройкой над языком запросов SQL. Язык SQL, на котором основана 1С:Предприятие 8, уже стал технологией вчерашнего дня. Теперь ответим на вопрос, для чего понадобилась надстройка над SQL. Замечательным является то, как команды LINQ комбинируются друг с другом. LINQ содержит операторы запроса, которые могут последовательно соединяться друг с другом без всяких правил. Выходные данные одного оператора запроса являются входными данными другого оператора запроса. Теперь нужно отметить, что операторы запроса реализованы как статические методы расширения. Это означает, что в языках программирования от Microsoft существует конструкция, которая называется «статические методы расширения» и операторы запроса являются не абсолютно новыми конструкциями, а реализуют эту уже существующую конструкцию языка. Не будем рассматривать другие примеры из технологий Microsoft, а только подведем итоги. Microsoft использует в языках программирования следующие принципы:

 

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

 

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

 

  1. 1С:Предприятие 7.7 имеет один глобальный модуль. В версии 8.2 есть модуль управляемого приложения, модуль обычного приложения, модуль сеанса, модуль внешнего соединения, общие модули. Программист должен помнить для каждого из этих модулей: выполнение на стороне сервера или клиента; содержит ли модуль исполняемую программу, процедуры и функции, обработчики событий; вызов каких модулей доступен из данного модуля; из каких модулей можно вызывать процедуры и функции данного модуля; для чего предназначен данный модуль. Количество информации, которую нужно запомнить, можно получить перемножением количества модулей на количество параметров модуля, которые нужно помнить. Так же нужно помнить аналогичные правила использования и вызова: модуля формы, модуля объекта, модуля менеджера, модуля команды, модуля набора записей, модуля менеджера значений.
  2. В версии 8.2 программный код может исполняться &НаСервере и &НаКлиенте, еще с контекстом и без контекста. Еще можно отслеживать выполнение программы на тонком и толстом клиенте, веб-клиенте и внешнем соединении. При этом для каждой команды нужно помнить, в каком из перечисленных режимов она может исполняться. Еще нужно знать правила передачи управления с сервера на клиент и с клиента на сервер.
  3. Для доступа к данным используются объекты: Менеджер, Объект, Набор записей, Ссылка, Выборка. Каждый из этих объектов может использоваться для доступа к одному и тому же объекту конфигурации, например, к документу «ПриходнаяНакладная». При этом каждый тип: ДокументМенеджер.ПриходнаяНакладная, ДокмуентОбъект.ПриходнаяНакладная, ДокументСсылка.ПриходнаяНакладная, ДокументВыбока.ПриходнаяНакладная имеет свой набор команд. Программист должен помнить набор команд для каждого типа, и команды преобразования из одного типа в другой. Обратите внимание, что слово «Объект» было использовано в 3 различных значениях. На мой взгляд такая терминология только вносит путаницу.
  4. Версии 8.0 и 8.1 имеют обычный интерфейс. В версии 8.2 добавился управляемый интерфейс, у которого совершенно другие свойства, методы, события и параметры формы. Многие конфигурации в 8.2 продолжают использовать обычный интерфейс. Программисту для успешной работы нужно знать два совершенно разных интерфейса.
  5. В версии 8.2 можно уже использовать 3 способа создания отчетов: построитель отчета,  СКД, запросы и вывод результата через макет. Каждый способ создания отчета требует изучения большого объема информации.
  6. При настройке условного оформления в СКД и в динамических списках оформляемые поля указывать не обязательно, а при настройке условного оформления формы обязательно указывать оформляемые поля. Это сочетание нужно помнить вместо того, чтобы всегда было обязательно либо необязательно указывать оформляемые поля в условном оформлении.
  7. На обычной форме легко отобразить картинку. Изображение картинки на управляемой форме оказывается целой проблемой, если до этого не сталкивался с таким вопросом.
  8. Программа имеет множество недокументированных особенностей работы, которые обсуждаются на форуме.

     Это только часть описания той информации, которая порождается комбинациями из различных программных инструментов, и которую должен помнить программист. Эта информация не имеет непосредственного отношения к логике настройки учета. Этот огромный объем информации связан с особенностями создания программных инструментов, и не связан с особенностями экономического учета. В этом заключается главное отличие технологий Microsoft от российской разработки 1С:Предприятие. Технологии Microsoft можно изучить в разумные сроки и эффективно использовать. 1С:Предприятие версии 8 требует слишком больших затрат времени на изучение по-сравнению с временем основной работы.

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

 
0
Читайте также
Как сохранить настройку отчета
Как передать настройку, сохраненную в моей базе вместе с отчетом пользователю - Комплексная автоматизация 1.1 под 8.2
Выпуск №4.Настройки отбора и управление формой списка в 1С 8.х
Новые возможности 1С 8 по сравнению с 1С 7.7
Разработки
Специализированная конфигурация Autoupdater
Автоматическое внесение изменений в другие конфигурации 1С8
Интеграция 1С 8 "Управление торговлей" и VirtueMert
Интеграция 1С Предприятие 8 УТ10.3
[1С 8] SubSys: Рабочий стол руководителя - центр управления отчетами
Набор готовых отчетов для руководителя 1С8
Еще от автора
≡ к списку статей