ООП. Инкапсуляция, часть 3.

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

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

9
Заключительная серия размышлений об инкапсуляции в 1С.


Более сложный пример инкапсуляции.

В каталоге плохих запахов кода Мартина Фаулера есть такой запах, который называется
"Связанные данные" (Data clumps).

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

Что это такой за запах?

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

Нужно ИНКАПСУЛИРОВАТЬ эти данные в класс.

А методы, в которые эти данные передавались как параметры - станут первыми кандидатами
на то, чтобы стать методами данного класса.

Ведь что такое класс в самом общем смысле этого слова? Это некоторые данные, и методы
работы с ними. Данные первичны.

Пример.

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

Соответственно, у нас есть плотная связка данных: Менеджер + Месяц. И пара методов для
работы с ними: КВПП_Общий() и КВПП_Бренда(Бренд). Обратите внимание, мне нет надобности
передавать в свои методы менеджера и месяц в качестве параметров. Эти данные уже там
есть. Они инкапсулированы в классе.

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

9

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

Комментарии
Избранное Подписка Сортировка: Древо
1. fez 45 12.12.08 02:00 Сейчас в теме
2. O-Planet 6974 12.12.08 06:50 Сейчас в теме
Нююю... К третьей части тема раскочегарилась. Имхо, автор ввел по-большому счету свое понимание, и даже почти свое определение инкапсуляции в этой серии статей. Оно не стандартное, и это - смелый ход. Если тему развить соответствующим образом, то, возможно, оно и имеет право на жизнь. Считаю, что минусом статей является нечеткое позиционирование, что все описанное не относится к стандартной 1С, а к ее расширению в 1С++. Но скомпенсирую свой минус по первой статье плюсом. Строг. Потому что про ООП очень люблю читать и обсуждать. Я бы про ООП в 1С написал все не так. Начал бы от стандартной 1С и реализации ООП в ней, а потом бы перешел на 1С++.
3. artbear 1156 12.12.08 06:55 Сейчас в теме
(2) Цитата: "Начал бы от стандартной 1С и реализации ООП в ней"
В штатном 1С, собственно, нет ООП :)
Точнее так - сами внутренности 1С построены на ООП, для клиентского кода предоставляются спец.объекты ООП, но нет возможности создавать собственные классы/объекты и именно это не дает 1С считаться ООП-средой или языком :(

PS я также люблю порассуждать/почитать/пообсуждать по ООП, рефакторингу, построению кода :)
5. fez 45 12.12.08 12:48 Сейчас в теме
(2) Про позиционирование.
Считаю, что 1С++ уже достаточно давно присутствует на рынке. Так что можно считать, что все интересующиеся ООП, применительно к 7.7, уже давно знают, что использование 1С++ является самым простым и эффективным способом получить это самое ООП в этих самых 7.7. И не просто знают - для них это очевидно и естественно.

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

Хотя может быть ты и прав, и можно было бы одной фразой упомянуть об этом в самом начале.
15. O-Planet 6974 12.12.08 23:27 Сейчас в теме
(2) >> В штатном 1С, собственно, нет ООП :)
>> Точнее так - сами внутренности 1С построены на ООП, для клиентского кода предоставляются спец.объекты ООП, но нет возможности создавать собственные классы/объекты и именно это не дает 1С считаться ООП-средой или языком :(

А вот тут, почитав эту подборку статей, не согласен. Если пользоваться терминологией автора и рассматривать упрятывание чего-либо в глобальную функцию с осмысленным названием, как инкапсуляцию, то под созданием собственных классов по праву можно понимать создание собственных документов на базовом классе "Документ". Чем не механизм наследования? Соответственно, копии моего класса - это реальные доки, созданные в пользовательском режиме. А вот полиморфизм надо еще поискать в версии 7.7...
16. fez 45 13.12.08 06:15 Сейчас в теме
(15) А чего там искать? Документ.Провести(). Интерфейс одинаковый, поведение разное. Заказывали полиморфизм? Получите-распишитесь.
17. O-Planet 6974 13.12.08 20:53 Сейчас в теме
(16) Вообще, да. Короче, любой предопределенный метод.
4. JohnyDeath 294 12.12.08 10:16 Сейчас в теме
А сами методы КВПП_Общий() и КВПП_Бренда(Бренд) можно как-то подробнее описать?
6. fez 45 12.12.08 12:52 Сейчас в теме
(4) Вот весь код класса. Методы почему-то не КВПП*, а КВПО*, но это неважно :)

===============================
Перем НачалоМесяца, КонецМесяца;

Перем КэшКВПО;

Перем Менеджер;

Процедура __Инит__(ВыбДата, ВыбМенеджер) Экспорт

НачалоМесяца = НачМесяца(ВыбДата);
КонецМесяца = КонМесяца(ВыбДата);

Менеджер = ВыбМенеджер;

КэшКВПО = "Не посчитан";

КонецПроцедуры


Функция КВПО_Бренда(Бренд) Экспорт

Если Бренд = Константа.БрендБезПлана Тогда
Возврат 1; // Bug 3973
КонецЕсли;
Если Бренд = Константа.БрендКонсультации Тогда
Возврат 1; // Bug 3976
КонецЕсли;
Если Бренд = Константа.БрендРаспродажа Тогда
Возврат 1; // Bug 4223
КонецЕсли;

Период = СоздатьОбъект("Справочник.ПериодыПланирования");
Если Период.НайтиПоРеквизиту("НачДата", НачалоМесяца, 1) = 0 Тогда
Возврат 1;
КонецЕсли;

ПП = СоздатьОбъект("Справочник.ПланыПродаж");
ПП.ИспользоватьВладельца(Период.ТекущийЭлемент());
ПП.ВыбратьЭлементыПоРеквизиту("Менеджер", Менеджер, 1, 0);
Пока ПП.ПолучитьЭлемент() = 1 Цикл
Если ПП.Бренд = Бренд Тогда
Если ПП.РучнаяПравка = 1 Тогда
Возврат ПП.ИзмененныйКоэффициентВыполнения;
КонецЕсли;

Возврат глКоэффициентБренда(ПП.ПлановаяСуммаПродаж, ПП.ДостигнутаяСуммаПродаж);
КонецЕсли;
КонецЦикла;

Возврат 1;
КонецФункции

Функция РассчитатьКВПО_Общий() Экспорт
Период = СоздатьОбъект("Справочник.ПериодыПланирования");
Если Период.НайтиПоРеквизиту("НачДата", НачалоМесяца, 1) = 0 Тогда
Возврат 1;
КонецЕсли;

СуммаПлана = 0;
СуммаРезультата = 0;

ПП = СоздатьОбъект("Справочник.ПланыПродаж");
ПП.ИспользоватьВладельца(Период.ТекущийЭлемент());
ПП.ВыбратьЭлементыПоРеквизиту("Менеджер", Менеджер, 1, 0);
Пока ПП.ПолучитьЭлемент() = 1 Цикл
Если (ПП.Бренд = Константа.БрендБезПлана) И
(ПП.РучнаяПравка = 1) Тогда
Возврат ПП.ИзмененныйКоэффициентВыполнения;
КонецЕсли;

СуммаПлана = СуммаПлана + ПП.ПлановаяСуммаПродаж;
СуммаРезультата = СуммаРезультата + ПП.ДостигнутаяСуммаПродаж;
КонецЦикла;

Если СуммаПлана = 0 Тогда
Возврат 1;
КонецЕсли;
Если СуммаРезультата / СуммаПлана > 0.8 Тогда
Возврат 1;
КонецЕсли;

Возврат 0;
КонецФункции

Функция КВПО_Общий() Экспорт

Если КэшКВПО = "Не посчитан" Тогда
КэшКВПО = РассчитатьКВПО_Общий();
КонецЕсли;
Возврат КэшКВПО;

КонецФункции
7. fez 45 12.12.08 12:57 Сейчас в теме
а в комментарий как-нибудь можно отформатированный код засунуть?
8. artbear 1156 12.12.08 13:08 Сейчас в теме
(7) Как обычно, [code1] и [/code1] - 1 убрать :)
9. fez 45 12.12.08 14:21 Сейчас в теме
Код
Перем НачалоМесяца, КонецМесяца;

Перем КэшКВПО;

Перем Менеджер;

Процедура __Инит__(ВыбДата, ВыбМенеджер) Экспорт
   
   НачалоМесяца = НачМесяца(ВыбДата);
   КонецМесяца = КонМесяца(ВыбДата);
   
   Менеджер = ВыбМенеджер;
   
   КэшКВПО = "Не посчитан";
   
КонецПроцедуры

   
Функция КВПО_Бренда(Бренд) Экспорт

   Если Бренд = Константа.БрендБезПлана Тогда
      Возврат 1; // Bug 3973
   КонецЕсли;
   Если Бренд = Константа.БрендКонсультации Тогда
      Возврат 1; // Bug 3976
   КонецЕсли;
   Если Бренд = Константа.БрендРаспродажа Тогда
      Возврат 1; // Bug 4223
   КонецЕсли;
   
   Период = СоздатьОбъект("Справочник.ПериодыПланирования");
   Если Период.НайтиПоРеквизиту("НачДата", НачалоМесяца, 1) = 0 Тогда
      Возврат 1;
   КонецЕсли;
   
   ПП = СоздатьОбъект("Справочник.ПланыПродаж");
   ПП.ИспользоватьВладельца(Период.ТекущийЭлемент());
   ПП.ВыбратьЭлементыПоРеквизиту("Менеджер", Менеджер, 1, 0);
   Пока ПП.ПолучитьЭлемент() = 1 Цикл
      Если ПП.Бренд = Бренд Тогда
         Если ПП.РучнаяПравка = 1 Тогда
            Возврат ПП.ИзмененныйКоэффициентВыполнения;
         КонецЕсли;
         
         Возврат глКоэффициентБренда(ПП.ПлановаяСуммаПродаж, ПП.ДостигнутаяСуммаПродаж);
      КонецЕсли;
   КонецЦикла;
   
   Возврат 1;
КонецФункции

Функция РассчитатьКВПО_Общий() Экспорт
   Период = СоздатьОбъект("Справочник.ПериодыПланирования");
   Если Период.НайтиПоРеквизиту("НачДата", НачалоМесяца, 1) = 0 Тогда
      Возврат 1;
   КонецЕсли;
   
   СуммаПлана = 0;
   СуммаРезультата = 0;
   
   ПП = СоздатьОбъект("Справочник.ПланыПродаж");
   ПП.ИспользоватьВладельца(Период.ТекущийЭлемент());
   ПП.ВыбратьЭлементыПоРеквизиту("Менеджер", Менеджер, 1, 0);
   Пока ПП.ПолучитьЭлемент() = 1 Цикл
      Если (ПП.Бренд = Константа.БрендБезПлана) И
          (ПП.РучнаяПравка = 1) Тогда
         Возврат ПП.ИзмененныйКоэффициентВыполнения;
      КонецЕсли;
      
      СуммаПлана = СуммаПлана + ПП.ПлановаяСуммаПродаж;
      СуммаРезультата = СуммаРезультата + ПП.ДостигнутаяСуммаПродаж;
   КонецЦикла;
   
   Если СуммаПлана = 0 Тогда
      Возврат 1;
   КонецЕсли;
   Если СуммаРезультата / СуммаПлана > 0.8 Тогда
      Возврат 1;
   КонецЕсли;
   
   Возврат 0;
КонецФункции

Функция КВПО_Общий() Экспорт
    
   Если КэшКВПО = "Не посчитан" Тогда
      КэшКВПО = РассчитатьКВПО_Общий();
   КонецЕсли;
   Возврат КэшКВПО;
   
КонецФункции
Показать полностью
10. fez 45 12.12.08 14:22 Сейчас в теме
11. vde69 908 12.12.08 18:16 Сейчас в теме
ну плюсану, тоже в качестве баланса за минус в первой части.

тем-не менее есть одно маленькое замечание/вопрос:
1с++ нарушаеть лицензионные соглашение ?????

ИХМО - нарушает, по этому и не так 1с++ распространена.

ps
статья - ни о чем, по сколько в ней изложены основы которые и так всем понятны, но мало примеров реализации. Короче можно было бы все обьеденить в одну, и еще добавить столько-же. Кроме того кто не пользует 1с++ она вообще имет только теоретический смысл...
12. fez 45 12.12.08 19:31 Сейчас в теме
(11) Практика показывает, что как раз с основами самые большие проблемы и возникают :)

И отвечу маленьким вопросом на маленький вопрос. А у 7.7 разве есть лицензионное соглашение? Дадите почитать?
13. vde69 908 12.12.08 19:54 Сейчас в теме
(11) у Альфа спрашивай, он от туда цитировал чего-то.
Кстати видимо и его защита тоже попадает :)

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

зы
кстати например я ни разу 1с++ не юзал (это к вопросу о распространенности). Хотя конечно ООП мне знакомо не по наслышки.
14. fez 45 12.12.08 22:10 Сейчас в теме
(13) Про большую статью. Это много времени надо. Особенно чтобы вывод написать. А так есть несколько маленьких разрозненных мыслей - почему бы с обществом и не поделиться?

Поскольку мне понравилась реакция читателей - я намерен продолжать. Про полиморфизм мне всяко есть чего сказать. Ну и про наследование тоже наскребу наверное немного.
19. fez 45 14.12.08 19:09 Сейчас в теме
(18) Я их передаю как параметр один раз - в метод __Инит__(). В 1С, к сожалению, нет конструкторов с параметрами, поэтому приходится немного извращаться.
Оставьте свое сообщение

См. также

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

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

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

02.09.2019    4020    SeiOkami    35       

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

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

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

26.08.2019    4002    kirovsbis    28       

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

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

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

22.08.2019    4359    ildarovich    16       

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

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

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

22.08.2019    3412    ids79    7       

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

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

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

16.08.2019    1239    alex_bitti    18       

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

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

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

25.07.2019    10521    4    AlbinaAAA    23       

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

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

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

24.07.2019    14969    skv_79    32       

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

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

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

22.07.2019    6996    Stepa86    23       

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

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

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

16.07.2019    6715    YPermitin    29       

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

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

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

25.06.2019    17609    ids79    16       

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

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

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

24.06.2019    7192    RonX01    63       

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

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

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

10.06.2019    5551    DataReducer    12       

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

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

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

28.05.2019    3636    Oleg_nsk    93       

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

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

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

20.05.2019    9891    YPermitin    4       

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

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

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

16.05.2019    5628    FreeArcher    82       

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

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

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

25.02.2019    2937    mkalimulin    272       

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

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

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

28.01.2019    3630    mkalimulin    89       

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

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

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

23.01.2019    8628    starik-2005    43       

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

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

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

09.01.2019    5633    kalyaka    33       

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

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

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

21.12.2018    4449    mkalimulin    61       

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

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

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

19.12.2018    30677    for_sale    340       

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

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

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

10.11.2018    20909    ids79    40       

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

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

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

23.08.2018    21357    Rain88    42       

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

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

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

10.07.2018    15812    Артано    92       

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

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

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

24.05.2018    9200    van_za    62       

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

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

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

24.05.2018    10724    Артано    36       

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

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

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

10.05.2018    15588    Артано    51       

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

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

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

21.02.2018    16264    Dzenn    127       

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

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

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

17.01.2018    14905    1c-intelligence    108       

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

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

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

27.12.2017    25951    real_MaxA    57       

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

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

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

21.12.2017    9699    m-rv    15       

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

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

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

24.11.2017    12415    Irwin    4       

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

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

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

21.11.2017    18871    real_MaxA    22       

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

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

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

18.11.2017    42959    pahich    75       

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

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

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

12.10.2017    14480    for_sale    58       

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

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

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

08.09.2017    9423    Inkasor    21       

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

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

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

15.08.2017    17092    stas_ganiev    15       

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

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

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

03.07.2017    31976    comol    63       

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

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

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

07.06.2017    22593    ekaruk    9       

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

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

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

29.05.2017    12440    user621724_Dimav1979    11       

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

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

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

01.05.2017    22123    ikekoval    33       

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

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

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

17.12.2016    15409    alexandersh    16       

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

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

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

16.12.2016    27884    alexandersh    45       

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

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

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

17.11.2016    8649    ture    40       

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

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

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

11.10.2016    186338    pumbaE    31       

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

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

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

07.10.2016    31205    bpc222    20