gifts2017

Объектно-ориентированный взгляд на программирование в 1С

Опубликовал Борис Моренко (BorisMor) в раздел Программирование - Теория программирования

Рассматриваем программирование в 1С как работу с объектами и классами.

Первое что меня поразило при знакомстве с 1С – это отсутствие ООП. Никаких классов, наследований, закрытых методов. А ведь любой код должен быть логически структурирован. А классы - это то, что позволят это сделать с наименьшими нервами.
Потом, поработав с 1С, понял, что объекты конечно есть. Одни предопределенные (вроде «Документы», «Регистр сведений»), а другие зависят от фантазии программиста («Обработки»). Конечно, нет полиморфизма, нет наследования, но объектную модель построить можно.

Только есть другая проблема: большинство 1С-программистов все пишут в «процедурном стиле». Язык сам по себе толкает создать общий модуль. Потом поместить в этот модуль кучу процедур для обработки данных и поддерживать все это «спагетти» из вызова процедур.

Похожая проблема наблюдается в Delphi. Там тоже программист может ничего не знать про ООП и писать приложения. Никакого разделения на классы, весь код зачастую помещается в модуль формы. Но плюс Delphi в том, что с опытом все приходит, т.к. в книжках объектная модель пропагандируется.

Рассмотрим 1С в объектно-ориентированном подходе. Предопределенные объекты (Документ, Регистр,..) содержат код 3-х типов:

  • «Модуль объекта» - Код отвечает за конкретный экземпляр объекта, а вернее обработку данных этого объекта.
  • «Модуль формы» - Код отвечает за обработку действий пользователя.
  • «Модуль менеджера» - Код отвечает за операции над определенным типом объекта, без привязки к конкретному экземпляру. В обычных языках это зовется «статические методы» 

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

А существование «модуля формы» - это вообще фишка 1С, которой можно гордиться. Этот модуль позволяет отделить код отвечающий за обработку действий пользователя и код который обрабатывает данные (Ни дать ни взять MVC).

Только проблема в том, что большинство разработчиков в модуль формы «суют» код, отвечающий за общую логику работы с данными. Сам грешен. По-моему, разработчикам платформы 1С не мешает в «модуль формы»  добавить быстрый вызов «модуля объекта» (например через контекстное меню).

Теперь про объекты, созданные самим программистом. На infostart встречал различные статьи о эмуляции объектно-ориентированной модели. Но согласитесь, манипуляция  со  структурами для хранения данных – занятие муторное и неинтуитивное. Я считаю, что лучшее решение, это воспринимать «обработки»  как описание собственных классов.

Наглядный пример. В «Списке значений» мне не нравится диалог, вызываемый методом «ОтметитьЭлементы». Не хватает кнопок, которые выделяли (или снимали выделение) со всех пунктов. И вот обработка СписокЗначенийРас как раз и дает такой диалог. Добавляем обработку в конфигуратор, а потом вызываем:

СписокЗначенийРас = Обработки.СписокЗначенийРас.Создать();
СписокЗначенийРас.Добавить("Пример1");
СписокЗначенийРас.Добавить("Пример2");
Если
СписокЗначенийРас.ОтметитьЭлементы() тогда
   
СписокЗначенийРас.Данные.ОтметитьЭлементы(); // а это стандартный диалог
КонецЕсли;

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

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

// Устанавливает или снимает (интерактивно) пометки у элементов списка значений.
// Заголовок - Заголовок окна диалога
// РабочиеДанные - список значений
Функция ОтметитьЭлементы(Заголовок=Неопределено, РабочиеДанные) Экспорт
   
Результат = Ложь;

   
ФормаОЭ = ПолучитьФорму("ФормаОтметитьЭлементы");
   
ФормаОЭ.ПрочитатьДанные(РабочиеДанные);
   
ФормаОЭ.ЧитатьДанныеПриОткрытие = Ложь;
    Если
Заголовок <> Неопределено тогда
       
ФормаОЭ.Заголовок = Заголовок;
    КонецЕсли;

   
РезультатФормы = ФормаОЭ.ОткрытьМодально();
   
Результат = (РезультатФормы = КодВозвратаДиалога.ОК);

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

Теперь мы можем вызвать диалог еще проще.

сзДанные = Новый СписокЗначений;
сзДанные.Добавить("Пример_1");
сзДанные.Добавить("Пример_2");
Обработки.СписокЗначенийРас.ОтметитьЭлементы("Заголовок",сзДанные);

Чем не статический класс?
В подходе использования обработок как классов есть несколько недостатков.

  • Нет наследования. Хочется возможности указывать родителем хотя бы простейшие типы (СписокЗначений, ТаблицаЗначений, Дата, Строка…)
  • Класс-обработка показывается в общем списке обработок. Хотелось бы отдельный тип объектов.

На этом пока все. Надеюсь, заметка позволила вам разглядеть в 1С зачатки ООП :)

Скачать файлы

Наименование Файл Версия Размер
СписокЗначенийРас.epf 51
.epf 8,75Kb
17.04.12
51
.epf 8,75Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Виктор Кривенко (ViteG) 18.04.12 04:29
полезная очень статья. Автору спасибо :)
Makc16384; +1 Ответить
2. Алексей Новоселов (a-novoselov) 18.04.12 04:34
Не кажется ли вам, сударь, что в 1С ООП и не нужно? ИМХО, язык программирования - это просто инструмент и для своих целей язык 1С вполне подходит. 1С настолько популярна не в последнюю очередь из-за дешевизны поддержки. Можно посадить студента какого-нибудь биологического факультета с небольшим наличием мозга, дать желтые книжки, и он рано или поздно сможет разобраться в коде. А вы предлагаете усложнять код, созданием дополнительных обработок без описания с неявным и не совсем понятным предназначением... Тем более непонятным человеку, не знающему фундаментальных основ ООП. Зачем это нужно?
Yakud3a; Makc16384; Aleksandtmt; DenisKin; papami; sheff161; +6 2 Ответить 5
3. Наталия Ткаченко (natnat3) 18.04.12 05:44
(2) a-novoselov, полностью согласна с замечанием, зачем мешать мух и котлет, 1С вполне выполняет свои функции в данном диапазоне. Не хватает возможностей, нужно наследование и т.п., есть куча других языков программирования. У каждого своя сфера применения
4. Борис Моренко (BorisMor) 18.04.12 05:55
(2) a-novoselov, может нужно потому что делает жизнь легче?)
Большинство людей ведь хранят вещи аккуратно сложенными у себя в шкафу т.к. легче их найти. Да и если другой что то захочет взять то ему легче разобраться.
Хороший пример, это "Универсальный обмен данными XML". Ее кончено можно использовать как внешнюю обработку, а можно вызвать ее из своего кода и весь функционал будут доступен. При этом не надо лезть внутрь обработки и смотреть как все работает. Обработка как "черный ящик". На входе получает данные, а при запуске отдает результат.
А можно было сделать в виде функций и процедур. И тогда надо было бы понять какие функции нам нужны, разбираться с параметрами, смотреть что возвращает, понимать последовательность запроса функций.
ООП на самом деле не сложная штука. И если человек закончил биологический факультет - он разберется)
CyberCerber; CratosX; Никс; ViteG; +4 Ответить 2
5. Виктор Кривенко (ViteG) 18.04.12 06:20
Мне несколько неясен вообще повод для возникшей здесь дискуссии. Кто-то говорит, что не нужно мешать мух с котлетами, кто-то говорит, что в шкафу аккуратно вещи хранить удобнее. В статье обо всем этом уже написано. Как такового объявления классов там нет, но оно и не нужно. В 1С уже хватает необходимых полочек, чтобы хранить вещи в аккуратном виде и каждую вещь на своем месте. Каждый объект в системе 1С предназначен для каких-то своих целей, будь это регистр накопления (очень удобный для накопления данных и получения остатков) или регистр расчета (для хранения данных о периодических расчетах и удобного получения необходимых данных из виртуальных таблиц соответствующих). И если вам необходимо создать нечто свое уникальное - есть обработки. Что опять таки было описано в статье. На выходе универсальная система для решения учетных и управленческих задач на предприятиях. В итоге получается, что все кто писал выше правы, каждый по своему, и для каждого есть возможность реализовать желаемое в 1С :)
fort13; sound; BorisMor; +3 Ответить 1
6. Алексей Новоселов (a-novoselov) 18.04.12 06:30
(4) Да, согласен, что сложные вещи нужно делать с применением основ ООП. И так это, в основном, и делается.
7. Сергей Синцов (s.sintsov) 18.04.12 08:19
(4) BorisMor, согласен полностью, объектный подход необходим, но только будьте добры, если разрабатываете свои классы, не забывайте писать документацию, без этого никакой пользы от них для других программистов не будет, только лишние проблемы в виде кучи потраченного времени, чтобы разобраться, как с вашими объектами работать.
Damian; sermalp; BorisMor; +3 Ответить 1
8. розница.net (ZLENKO) 18.04.12 08:23
Какое ключевое преимущество для конечного потребителя (заказчика) даст ООП в 1С ?
9. Сергей Синцов (s.sintsov) 18.04.12 08:27
(5) ViteG, в 1С нет наследования, а это, пожалуй, основное преимущество объектной модели. Скажем, вам нужно было бы сделать копию типового документа, но с расширенными под себя свойствами. Как вы делаете это сейчас? Копируете типовой документ, добавляете свои процедуры и функции, переопределяете функционал, либо лезете в типовой документ и меняете всё там (чего лучше не делать). В первом случае после типового обновления ваш функционал может перестать работать, скажем, если поменяют какой-то реквизит в регистре, куда ваш документ делал движения. Во-втором, обновление тупо просто затрет ваш функционал, либо вы потратите много времени на саму процедуру обновления, чтобы разобраться, что поменяли в 1С и как теперь с этим жить. Так вот в объектной модели вам не нужно на эту тему волноваться, вы просто создали бы экземпляр класса типового документа, содержащий весь заложенный в него функционал и добавили бы свои методы и свойства, причем каждый раз при обновлении типовой функционал бы обновлялся вместе с стандартным документом и ваш экземпляр класса типового документа не потерял бы актуальности, а ваш код не был бы затронут. Это не единственное преимущество объектной модели и попытки реализовать ее подобие в 1С уже давно идут, взять, хотя бы универсальный отчет, обмен данными XML и т.д. Проблема в том, что не хватает хорошей документации по этим объектам. А с появлением управляемых форм ситуация еще более усугубилась в этом плане.
CyberCerber; ViteG; BorisMor; +3 Ответить 2
10. Борис Моренко (BorisMor) 18.04.12 08:28
(8) розница.net,
Код легче поддерживать и развивать. Теоретически будет меньше "костыликов" в коде, а значит и стабильней.
Новому человеку будет легче разобраться в вашем коде.
11. Борис Моренко (BorisMor) 18.04.12 08:30
(9) s.sintsov, согласен. С наследованием в 1С проблема.
12. розница.net (ZLENKO) 18.04.12 08:39
(9) Проблема с обновлением конфигурации после изменений есть и очень актуальна.
Насколько я знаю в Аксапте это решено при помощи так называемых слоев, а 1С ограничилась тем что есть конфигурация разработчика и основная конфигурация (ну и конфигурация БД), но это не совсем то что нужно в данном случае. Аналог наследования очень был бы полезен в данном случае.
BorisMor; ViteG; +2 Ответить
13. Александр Рытов (Арчибальд) 18.04.12 08:41
Интересен тон некоторых комментариев: мол, и без ООП прекрасно проживем. Это покруче, чем у того парня, что удивился, узнав, что говорит прозой. Здесь же неприятие какое-то: не будем говорить прозой, и все тут.
Возможно, и в самом деле наследование не очень-то нужно в рассматриваемой прикладной области (хотя в зачаточном состоянии оно существует). Но уж инкапсуляция данных священна. Без этого сколько-нибудь объемный код становится абсолютно неуправляемым.
"Ты хоша мне и подруга, но порядок быть должОн"...
MaxDavid; zfilin; ViteG; +3 Ответить
14. Евгений Мартыненков (JohnyDeath) 18.04.12 08:57
А теперь самое интересное. Имеем 8.2 на Управляемых формах. Доступность Модуля менеджера (как и модуля объекта): Сервер, толстый клиент, внешнее соединение. Таким образом приведенный вами код не будет работать на тонком клиенте.
15. Борис Моренко (BorisMor) 18.04.12 09:14
(14) JohnyDeath, Вероятно. Я на толстом все делаю.
16. vasek (iliabvf) 18.04.12 09:15
Не понимаю, как наследование может быть не полезным? Это же сэкономленное время разработки и исправления ошибок.

Спасибо за статью, тема действительно актуальная.
17. Евгений Мартыненков (JohnyDeath) 18.04.12 09:22
(15), (16)
Тема актуальна, но для УФ совсем не жизнеспособна, т.к. "объекты" можно создавать только на Сервере (или в толстом клиенте), а таких конфигураций скоро будет подавляющее большинство. А ООП "только не сервере", когда объект класса надо сохранять в некотором сеансе (на клиенте), крайне геморойная и неблагодарная затея, которая перечеркивает все плюсы ООП на корню.
18. vasek (iliabvf) 18.04.12 09:39
(17) Причем тут тонкий клиент. Если бы было реализовано хотя бы некое подобие наследия, это облегчило бы рутинную разработку, правку и поддержку конфигураций.
19. Сергей Кулешов (KulSer) 18.04.12 09:40
Позвольте и мне вставить свои 5 копеек. Предположим, что Вам нужно сделать документ Приходный кассовый ордер, который очень похож на типовой, но имеет некий дополнительный реквизит, и имеет некие особенности при проведении. При использовании ООП можно было бы поступить примерно так (простите, приходится на ходу придумывать свой псевдоязык):
1. Создаём документ МойПриходник. В свойстве НаследуетсяОт указываем ПриходныйКассовыйОрдер (предположим, что все объекты 1С имеют свойство НаследуетсяОт, где указывается типовой объект - родитель вновь создаваемого объекта)
2. В объекте МойПриходник создаём реквизит МойРеквизит. В модуле формы и модуле объекта пишем, как мы работаем с этим реквизитом. Болше ничего не пишем, поскольку весь функционал документа-родителя сохраняется (если мы сознательно не его не переписываем).
3. Проведение документа пишем примерно так:
Процедура ОбработкаПроведения()
ОбработкаПроведения(); // вызывается обработка проведения из родительского класса
..... // теперь наши действия
КонецПроцедуры
Ну вот приблизительно так. А теперь прикиньте, как бы вы стали решать поставленную задачу сейчас, без использования ООП. Или вносить исправления в существующий приходник (проблемы при обновлениях). Или создавать свой приходник, копируя типовой, и добавляя функционал.
Теперь предположим, поменялось законодательство, приходники стали в чём-то другими. При использовании ООП изменения в родительском классе наследуются в дочерний, и Вам в документе МойПриходник, возможно, вообще ничего не придётся переделывать (конечно, если изменения законодательства не революционны). А без использования ООП придётся писать ручками (или копировать изменившиеся процедуры из типового приходника).
Надеюсь, понятно рассказал.
Pigzilla; CyberCerber; DMSDeveloper; Damian; alex_shkut; Nevan; Tsprogrammist1; the1; ViteG; +9 Ответить 2
20. Евгений Мартыненков (JohnyDeath) 18.04.12 09:49
(18) при том что в модуле менеджера нельзя "ОткрыватьФорму", и вообще создавать объект обработки или вызывать "статические" методы на клиенте.
Про наследование в v8: http://infostart.ru/public/19332/ - разработка 2009 года!
21. Борис Скворцов (gaglo) 18.04.12 10:09
(16),(18) - не понимаю, зачем заявлять такие вещи бездоказательно.
...как наследование может быть не полезным?

...хотя бы некое подобие наследия... облегчило бы...

Это - в данном виде - только лозунги, вроде политических или религиозных.
Лично я думаю, что никакая вещь не может быть полезной "вообще", то есть всегда и всюду.
А рутинную разработку может облегчить дисциплина программирования, безотносительно к трем священным словам.
kuntashov; ViteG; +2 Ответить 1
22. Stamper (Stamper) 18.04.12 10:19
автору зачет. само дерево конфигурации невозбранно намекает, что в 1С применяется ООП. это дерево я бы сравнил с .h-файлом для C/C++, например
а кроме того, в 1С мы видим ORM (объекты Регистр Накопления, Регистр Сведений и т.п.) и если лезть дальше -- то и MVC.
должен заметить так же, что для усиления эффекта от вброса повидла в вентилятор рекомендую следующие шаги:
1) листинги кода переписать на английском языке;
2) добавить файл внешней обработки или замастырить ролик на ТыТрубе с заголовком "Я гарантирую это";
3) разместить статью на Хабре =)
23. Serj (Serj1C) 18.04.12 10:20
В средневековые времена программирования, к данным мы применяли функции. Для того, чтобы нарезать хлеб, брали структуру «хлеб» и передавали ее как параметр функции «нарезать»:

нарезать(хлеб);

Потом пришла эпоха объектно-ориентированного программирования. И вместо функии «нарезать», нам надо попросить «хлеб» нарезать себя — вызываем метод «нарезать» у объекта «хлеб»:

хлеб.нарезать();

Очевидно, что это значительное улучшение.
В настоящее время объектно-ориентированное программирование стало еще изысканнее. Сначала мы создаем объект «хлеборезка» и затем просто передаем ему «хлеб» для «нарезки»:

Хлеборезка хлеборезка = new Хлеборезка();
хлеборезка.нарезать(хлеб);


Прогресс налицо. Источник
CyberCerber; WhiteOwl; tango; link_l; boggonzikov; Spi1y; Svetlana_Trofimova; CratosX; MaxDavid; DoctorRoza; anton.fly7; Hany; sergathome; ViteG; gaglo; +15 Ответить 1
24. Евгений Мартыненков (JohnyDeath) 18.04.12 10:22
(23) В той статье более интересны обсуждения, чем сама статья. Например вот этот пост: http://habrahabr.ru/post/141505/#comment_4733285
BorisMor; gaglo; +2 Ответить
25. Борис Скворцов (gaglo) 18.04.12 10:23
(19) "Не надейтесь." Если "некие" особенности при проведении МойПриходника не перекрывают, а чисто дополняют стандартный функционал ПКО, то подпиской на события к стандартному документу можно обойтись. Добавится программный модуль, и для хранения некого реквизита - некий регистр, а документ-то новый зачем?
Так что мне такая полуконкретизация непонятна. Да, я чего-то не знаю про ООП, я чего-то не понимаю в ООП, но я что, должен просто на слово поверить, что ООП в 1С лучше, чем 1С без ООП?
26. Сергей Любезнов (sergathome) 18.04.12 10:30
Совершенно очевидно, что без наследования нет ООП. Все разговоры о каком-то ООП в 1С абсолютно беспочвенны. Да, можно условно считать "полочки" типа документов, регистров и тд абстрактными классами, но это НИЧЕГО не даёт ни для программиста, ни для пользователя. Потому как нет наследования. Полочки - есть, а наследования - нет. Представьте себе эдакое Дельфи с формами, событиями, но без наследования... -- Невозможно, ибо абсурд.
zfilin; ViteG; +2 Ответить 2
27. Борис Скворцов (gaglo) 18.04.12 10:32
(26)
...Дельфи с формами, событиями, но без наследования... -- Невозможно, ибо абсурд.

VBA?
28. Сергей Любезнов (sergathome) 18.04.12 10:32
Кстати, функции модуля менеждера это класс-методы, уж если на то пошло. Как можно вообще называть что-то "статическим" если "динамического" на горизонте даже не видать ???
29. Сергей Любезнов (sergathome) 18.04.12 10:35
(27) gaglo, Именно, и-мен-но ! Это скрипт. В том виде, в котором он есть в 7 и 8 - это скриптовый язык манипулирования данными. Он даже и компилируется-то не полностью. Какое уж тут наследование, в каше модулей бы не потонуть !
30. Борис Скворцов (gaglo) 18.04.12 10:44
(29) Ну да, скрипт... Но: все-таки возможно. И даже не совсем абсурд?
Я даже согласен обозвать программирование на этом скрипте процедурным, а ни разу не объектно-ориентированным. Но ведь работает зараза?
31. Ярослав Радкевич (WKBAPKA) 18.04.12 10:55
Лично мне статья нравиться. Хорошо написана. В ООП есть много полезного, 1С этого явно не хватает
Арчибальд; +1 Ответить 1
32. Сергей Любезнов (sergathome) 18.04.12 10:57
(30) gaglo, конечно, имея объект манипулирования скрипт не бесполезен. Но вот пустая объектная Дельфа без наследования - абсурд однозначный.
33. Андрей Якшин (YakshinAnd) 18.04.12 10:57
Наследование самое важное что нужно для ООП в 1с. Зачем что то еще не знаю...но наследование документов различных и т.д. сократит код в разы и будет проще работать. А так лучше оставить все как есть, а если хотите программировать ООП, то программисты C# C++ и т.д. тоже требуются)
34. Stamper (Stamper) 18.04.12 11:01
А на тему наследования...
Все объекты "Документ.*" наследуют свойства и методы (типа .Записать() и т.п.) объекта дерева конфигурации "Документы". Чем не наследование?!
35. Сергей Любезнов (sergathome) 18.04.12 11:04
(31) WKBAPKA, да никто не спорит, что не хватает. Конечно лучше быть богатым и здоровым. Но повода считать таковой 1С-овскую модель никакого нет, имхо. Есть определённая схожесть некоторых черт и не более. Дерево метаданных оно, а не объектная модель. Возможно, когда-нибудь, в 9 версии... ;)
36. Сергей Любезнов (sergathome) 18.04.12 11:07
(34) Stamper, ага, а констркуции вида Выборка.Следующий отнесём к механизму RTTI ;)) Не смешно ?
37. Александр Лапшин (zfilin) 18.04.12 11:14
(2) a-novoselov, Чем проще, тем лучше, согласен на все 100! Кстати, я считаю, что компьютер для бухгалтера - излишество, которое ведет к беспрерывной игре в косынку и питью чаев. Ручка, бумага и калькулятор. И можно садить в бухгалтерию любого человека. Любой разберется. ;-)

(21) gaglo, Товарищи! Так, "сектантов ООП" уже посрамили давно и окончательно: http://blogerator.ru/page/oop_why-objects-have-failed

(26), (28) sergathome, Без наследования тоскливо и "костыли" не помогают. Жаль, конечно. А по поводу "статических", так это просто по-аналогии с "взрослыми" языками по способу использования. Понятно, что фактически это фикция, так как нет раннего и позднего связывания, как такового.
awk; sergathome; +2 Ответить 1
38. Stamper (Stamper) 18.04.12 11:15
(36) sergathome, не вижу связи между типизацией переменных и выборкой результатов из строго-типизированного хранилища данных (а именно из базы данных).
так а собственно по существу (34) -- почему добавление документа (и следовательно отсутствием необходимости реализовывать стандартные методы, добавления Номера, Даты и т.п.) нельзя считать наследованием от Документов?!
википедия категорически подтверждает моё предложение :)
40. Александр Рытов (Арчибальд) 18.04.12 11:21
(37)
Ручка, бумага и калькулятор
А куркулятор-то зачем?
41. Ruslan (rus128) 18.04.12 11:22
Не вдаваясь в очередной холивар "Нужно ли в 1С ООП?", заметил, что публикация изобилует ошибками (например, "Никаких описание(?) классов", "модэль", "весь код зачастую помещалась(?) в модуль формы.") - лично мне читать неприятно.
Неужели трудно вычитать текст перед публикацией? Даже если не пользуемся Мозиллой со встроенной проверкой орфографии - неужели тяжело сначала набрать текст хотя бы в Ворде, а потом перенести сюда? И как оценивать высоту полета мысли автора, который не уважает своих читателей?
42. Александр Ф (fromon) 18.04.12 11:24
Многие "1Сники" просто не знакомы с другими языками и естественно с ООП.
43. Stamper (Stamper) 18.04.12 11:24
(41) rus128, дык холивар о другом: есть ли там ООП, или нет его
44. Александр Лапшин (zfilin) 18.04.12 11:25
(40) Арчибальд, Да. Действительно! =)
45. Сергей Любезнов (sergathome) 18.04.12 11:26
(38) Stamper, повторяю для танкистов - считать можно, толку от этого нет никакого, поскольку подменить стандартный метод нельзя НИКАК. Также абсолютно бесполезно представление объектной модели таблицы как потомка некоей абстрактной сущности, поскольку контекст полностью управляет поведением кода.
46. Stamper (Stamper) 18.04.12 11:27
(42) fromon, и как это влияет на обсуждаемый вопрос? тролей не кормим
47. Stamper (Stamper) 18.04.12 11:34
(45) sergathome, ну зачем же оскорблять!? не надо этого делать.
>>"поскольку подменить стандартный метод нельзя НИКАК"
быстренько открой литературу и найди N отличий между наследованием и переопределением методов. это во-первых.
а во-вторых, заставить бы тебя реализовать все методы ДокументОбъект-а (коих в 1С 8.2.15.301 насчитал 20), в УПП (где документов хорошо за сотню) за твой счёт -- ты бы иначе заговорил.
48. Александр Лапшин (zfilin) 18.04.12 11:51
(47) Stamper, Формально вы правы. Наследование и полиморфизм (а так же инкапсуляция, раз уж начали) между собой слабо связаны как таковые. Но фактически не зря эти три понятия все вместе называют тремя китами ООП. Так как только втроем они позволяют достичь максимального эффекта. А то, что есть в 1С, очень ограничено. Да, наследование есть. Но наследуется только "базовый класс Документ" (Справочник, Регистр, etc.) и все. Язык не поворачивается настолько ограниченное наследование называть наследованием. Извините за возможно лишнее упоминание, но я хотел бы наследовать больше. С полиморфизмом все плохо, ну а с инкапсуляцией (те самые "полочки", которых как уже было тут сказано, хватает) все более или менее хорошо.
Получаем в итоге, у нашего ООП один кит больной, другого нет, а третий вообщем-то нормальный, но выглядит странно.
Den_D; sergathome; +2 Ответить 1
49. Сергей Любезнов (sergathome) 18.04.12 11:51
(47) Stamper, зря обиделся. Извини, если что. Что касаемо теоретических воззрений на само ООП, то переопределение методов неотделимо от наследования. ;) Потому как первым был скелет и имя ему Абстрактный.
Впрочем это беллетристика. А вот обращение вида Метаданные.Документы прямо указывает - это дерево метаданных и ничто иное. Иначе придётся придумывать РТТИ, что маразм.
50. Александр Рытов (Арчибальд) 18.04.12 12:06
Надо заметить, что все обсуждение касается только наследования, полиморфизм и инкапсуляция сомнениям не подвергаются. Выскажу свое мнение. А именно, должен ли быть прикладной язык совсем уж объектно-ориентированным, т.е. с генеалогическими (евгеническими?) возможностями?
Я в этом сильно сомневаюсь. В процессе формирования прикладного языка должна быть исследована предметная область (реальные объекты), проведена классификация обнаруженных объектов и, далее, классификация свойств объектов (однозначно присущие, либо возможные/опциональные. При этом в какой-то разумный момент необходимо остановиться. Если исследование (анализ) предметной области проведено надлежащим образом, а затем грамотно построены соответсвующие объекты (классы) платформы (синтезирован адекватный платформенный образ предметной области), то прикладнику не потребуется наследование.
Другой вопрос, насколько платформа 1С адекватна предметной области. Например, Время Документа - это один момент, или таки несколько (ВремяСоздания, ВремяХозоперации, ВремяПроведения...)
hogik; awk; sergathome; Stamper; +4 Ответить 1
51. Stamper (Stamper) 18.04.12 12:07
(48) zfilin, ну почему же плохо с полиморфизмом? есть же возможность указать Procedure Foo(parameter=0);
т.е. возможность есть ;)
ну а красота... кто-то упорно пишет на C++ а кто-то переходит на Ruby или развивает C++0x
(49) sergathome, на обиженных балконы падают ;) я же призываю вести себя тактично
"переопределение методов неотделимо от наследования" -- ИМХО, вопрос религии.
я себе могу представить, что творилось бы в конфигурациях, если бы каждый франч мог переопределить .Записать()
52. Сергей Любезнов (sergathome) 18.04.12 12:12
(51) Stamper,
что творилось бы в конфигурациях, если бы каждый франч мог переопределить .Записать()

Это ответ на вопрос, что будет, если 1С разродится истинной ООП-платформой. Не станет ли народу нечего делать. Не станет. ;)))
53. Борис Скворцов (gaglo) 18.04.12 12:16
(40) Ну хоть счЁты-то?? (жалобно так)
54. Stamper (Stamper) 18.04.12 12:23
(50) Арчибальд,
Например, Время Документа - это один момент, или таки несколько (ВремяСоздания, ВремяХозоперации, ВремяПроведения...)

а это о чем!? у документа есть Дата (которая включает в себя время). так эта дата -- таки дата (ну и время тоже) отражения хоз. операции
дата создания и проведения сохранится в журнале регистрации
не путаем "дата документа" и "период" периодических регистров сведений и регистров накопления
насколько платформа 1С адекватна предметной области

я бы сказал, что максимально адекватна из всех мне известных
55. Stamper (Stamper) 18.04.12 12:25
(52) sergathome, яркий тому пример Википедия :)
56. Сергей Кулешов (KulSer) 18.04.12 12:28
(25) gaglo, значит, я объяснил непонятно. Попробую ещё раз на пальцах. Допустим, имеем тот же приходник. Но главбух просит, чтобы в некоей конкретной ситуации, которая бывает только в нашей фирме, проводки были другими, а в остальном поведение стандартного приходника её устраивает. То есть ей надо, чтобы на форме документа стоял реквизит ОсобаяСитуация (галочка), и, допустим, ещё пара реквизитов: текст и число. Бухгалтер по своему усмотрению ставит, когда надо, эту галочку, и поведение документа меняется, как ему нужно.
Так понятнее?
Как это сделать сейчас, Вы и без меня знаете. А с применением ООП было бы примерно так:
1. Создаём документ МойПриходник. В свойстве НаследуетсяОт указываем ПриходныйКассовыйОрдер
2. В конфигураторе создаём реквизиты: ОсобаяСитуация (Булево), ОсобыйТекст (Строка) и ОсобоеЧисло (Число).
Остальные реквизиты платформа берёт из родительского объекта.
3. Реквизиты кидаем на форму. Тут, конечно, проблема, где разместить. Предположим, что как-то этот вопрос решили. Причём, методы модуля формы переписываем только те, которые влияют на наши новые реквизиты. Предположим, что нас интересует только видимость наших новых реквизитов, и в базовом классе (ПриходныйКассовыйОрдер) описана процедура
Процедура УстановитьВидимостьЭлементовФормы() МожетПерекрываться
// словом МожетПерекрываться мы указываем, что процедура может быть переписана в наследниках класса.
В наследуемом документе МойПриходник в модуле формы пишем:
Процедура УстановитьВидимостьЭлементовФормы() Перекрытие
Если ОсобаяСитуация = Истина Тогда
// что-то написали
КонецЕсли
УстановитьВидимостьЭлементовФормы(); // вызывается процедура с тем же именем из базового класса
КонецПроцедуры
слово Перекрытие указывает на то, что наша процедура будет вызываться вместо базовой процедуры, но только в нашем документе.
Больше ничего (никаких других процедур) в модуле формы нашего документа не пишем.
Теперь, если открыть документ МойПриходник, и в форме сделать что-то, что вызовет процедуру УстановитьВидимостьЭлементовФормы(), то вызовется наша (переписанная) процедура. А если открыть стандартный приходник, то там будет вызываться стандартная УстановитьВидимостьЭлементовФормы(). То есть вызовы процедур не меняются - это важно, платформа сама определяет, откуда идёт вызов, и запускает соответствующую реализацию процедуры.
Так понятнее?
4. В модуле объекта пишем:
Процедура ОбработкаПроведения()
Если ОсобаяСитуация = Истина Тогда
// делаем проводки, специфичные для особой ситуации
Иначе
ОбработкаПроведения(); // вызываем обработку проведения из родительского класса
КонецЕсли;
КонецПроцедуры
Таким образом, что мы сделали:
Создали (не копировали) документ, три реквизита, написали две процедуры, одну в модуле формы и одну в модуле объекта. Остальное поведение документа унаследовано из базового класса, мы о нём не задумываемся. Сравните с тем, что приходится делать сейчас.
И, самое главное, при обновлении конфигурации, если что-то меняется в базовом классе, нам ничего не придётся делать вообще. При условии, разумеется, что базовый класс написан грамотно. Но написан он не нами, а умными разработчиками, а я - "студент-биолог", добавил свой кусочек, ничего в базовом классе не испортил, и почти не парился.
Надеюсь, что теперь понятнее.
hvs; DMSDeveloper; Damian; МАлексей; sergathome; Stamper; +6 Ответить 2
57. Сергей Любезнов (sergathome) 18.04.12 12:35
Платформа, конечно, имеет массу не совсем понятных фич ака МоментВремени(), но, вобщем, сказать, что этот вариант самый плохой тоже нельзя. Мне лично больше симпатичен вариант со сквозной нумерацией, но он тоже имеет недостатки...
58. Stamper (Stamper) 18.04.12 12:39
(57) sergathome, мсье имеет сертификат Специалист по Платформе 1С 8?
59. Александр Лапшин (zfilin) 18.04.12 12:42
(56) KulSer, Хех. Для ответа на вопрос "где разместить элементы на форме" нужно еще сильнее отвязывать объект от представления.
В таком случае, стандартные объекты где-то имеют обработчик: ИспользоватьФорму("СтандартнаяФорма"), а в вашем унаследованном объекте этот обработчик будет переопределен на: ИспользоватьФорму("МояФорма"). Но рисовать (или копировать) все-равно придется обе формы, визуальные компоненты принципам ООП не подчиняются. Конечно, если мы не говорим об управляемом интерфейсе, который пытается что-то сделать в этом направлении.
60. Сергей Любезнов (sergathome) 18.04.12 12:46
(58) Stamper, практически. Подтягивать расчёт и сдавать лень. "Мсье" кроме этого разрабатывал и другие системы с другими подходами и моделями данных. Но проиграл монстру, такова селява. Теперь вот сам на ниве пробавляюсь...
61. Stamper (Stamper) 18.04.12 12:50
(60) sergathome, а я практически миллионер, лень заработать *trollface*
прошу оставаться в контексте обсуждения! я, например, когда-то завод чуть не взорвал. и что-же теперь? :)

моё ИМХО: с таким негативным отношением к технологии продолжать не рекомендую. на собственном же кармане отразится
62. Сергей Любезнов (sergathome) 18.04.12 12:59
(61) Stamper, почему "негативным" ? Где оно, это "негативное" ?? Заметьте - не я перешёл на личности, г-н тролллфейс. ;) Это было ответом на вопрос, не более того.
63. larissa builova (larisab) 18.04.12 13:02
В 1С 8 архитектурно заложена концепция предметно-ориентированного программирования (ПОП). Модель 1с – объектная, поэтому за основу взяли синтаксис ООП, но только синтаксис. Синтаксис похож, но программирование не объектно-ориентированное. Этим 1С отличается от всех систем разработки и программирования, именно поэтому платформа 1С8 начала продвигаться на западе. (Платформа, а не конкретные реализации – конфигурации)
Концепция ПОП – это следующий виток в развитии программирования, и фирма 1С является заслуженным основателем этого витка.
ПОП предназначена для решения предметных задач, и состоит из 3 уровней программирования:
1)описание логики прикладной задачи (уровень бизнес-логики)
2) инструкции для системы (уровень технической реализации)
3) расширения встроенного языка

Р.S. Курс «Основы клиент-серверного программирования в 1С: Предприятие 8». Мысли из вступительного слова Арутюнова Сергея.
irishka77; alex_shkut; gaglo; +3 Ответить
64. Stamper (Stamper) 18.04.12 13:02
(62) sergathome,
Заметьте - не я перешёл на личности

ценю!

хм... значит мне показалось. извини
65. larissa builova (larisab) 18.04.12 13:06
+ 63) так что спор о том насколько "мальчик, переодетый в девочку, я вляется девочкой )))))
sergathome; +1 Ответить
66. Александр Рытов (Арчибальд) 18.04.12 13:24
(54) Stamper, мне непонятно
так эта дата -- таки дата
А 1С при проведении просит указать, с каким временем прводить документ. Т.е. у документа время как минимум, не единственное.
Регистры сведений и регистры накопления здесь совершенно ни при чем. Может, у меня в конфе их вообще нет.
Да, я согласен, что модель 1С наиболее адекватна из существующих. Только вот адекватна чему? Хотелось бы адекватности (в частности) настоящему учету. Реально же мы видим адекватность документообороту.
67. Сергей Любезнов (sergathome) 18.04.12 13:30
(64) Stamper, я не обидчивый, но обсуждение личных, в том числе профессиональных качеств в отрыве от предмета как-то не комильфо уж совсем, согласись. :) Продолжим тогда по теме - фиксация события документа по методу Граница, определяемая как совокупность ДатаВремя+УУИД очевидно не является единственно возможной. Более того, очевидно, что такая схема, заявленная в официальной документации - я ничего не придумываю, сама по себе не обеспечивает однозначной фиксации последовательности документов на оси времени. Для обеспечения требуемого функционала (однозначной фиксации) в этом случае требуется как минимум таблица УУИДов с привязкой к чему-то ещё. Очевидно, что система, основанная на простой сквозной нумерации с автоинкрементом такого недостатка лишена.
Нет ?
68. Максим Сафонов (maXon777) 18.04.12 13:37
Хороший взгляд на платформу!Поддерживаю автора
69. Stamper (Stamper) 18.04.12 13:38
(66) Арчибальд, документ без заполненного реквизита "Дата" (который по сути отражает, сколько секунд прошло с 01.01.0001, т.е. он включает в себя время тоже) не запишется, не то, что не проведется.
это единственное время документа. в проводки можно писать какое угодно время, хоть ТекущаяДата(), если это соответствует бизнес-логике. равно как Вы можете добавить какую-то свою дату (типа ДатаОтгрузки), которая может отличаться от даты документа и по отдельным разделам учета делать движения с соответствующими датами. повторюсь: всё зависит от бизнес-логики, т.е. от того, как реализовано в конфигурации. а у документа Дата -- это один реквизит, который фактически является обязательным полем в базе данных. как его использовать -- дело разработчика.

Адекватность учету -- это вопрос уже конфигурации.
70. Stamper (Stamper) 18.04.12 13:45
(67) sergathome, вот я ж и спросил про сертификат, т.к. удачная сдача этого экзамена обычно не оставляет "белых" пятен в несложных вопросах.
описана проблема многопользовательских систем, когда в один и тот же момент могу писать несколько пользователей. в таких случаях помогает объект Граница()
нумератор штука конечно хорошая, но с осью времени он нам не поможет, т.к. документы часто вводятся задним числом.
71. Александр Рытов (Арчибальд) 18.04.12 14:02
(69) Stamper, может, я непонятно объясняю... Речь шла о модели предметной области (учет). 1С считает, что у Документа (модели хозяйственной операции, отражаемой в учете) есть один атрибут Время (неважно, что оно в составе даты). Однако по действующему законодательству, моменты совершения хозяйственной операции и составления документа могут различаться. Т.е. в реальности у каждого документа времени, как минимум, два, и эти два времени неотъемлемы от реальности.
72. Сергей Любезнов (sergathome) 18.04.12 14:09
(70) Stamper, а никакого "пробела" тут у меня и нет. Я всё отлично понимаю, если ты не заметил. А вот ты сможешь ответить на простой вопрос - каким образом объект типа Граница, содержащий официально всего три поля - УУИД, ДатаВремя и признак включения без запроса таблицы привязки УУИДов может "помочь" ?
При введении документов задним числом проявляется уже недостаток нумератора. И с ним тоже можно бороться. Например введением дерева нумерации. Может быть гораздо эффективнее ведения таблицы УУИДов ;)
73. Александр Лапшин (zfilin) 18.04.12 14:13
(71) Арчибальд, Ага! В этом случае получается, что доменная (предметная) модель платформы отстает от действующего законодательства. А завтра поменяется законодательство и даты станет ТРИ. И, что? Менять платформу? А некоторым документам, как сущностям, но не как сущностям отражающим хоз.деятельность предприятия (ну, например, "Служебная записка") одной даты вполне достаточно. Или вообще без даты. Те же "Договора контрагентов" в типовых вовсе не документы, а очень даже элементы справочника.
Вот поэтому я и утверждаю, что не худшее решение привести платформу к чем-то более фундаментальному, вроде ООП, а доменную модель реализовывать средствами конфигурации от потребностей непосредственно предметной области.
74. Stamper (Stamper) 18.04.12 14:16
(71) Арчибальд, если я ничего не путаю, то подтверждением хозяйственной операции в бух. учете является первичный документ, дата которого является обязательными реквизитом для заполнения.
время нас интересует для оперативного учета, который не регламентирован.
а уж сколько реквизитов "Дата" добавить разработчику -- это его дело.
в типовой РеализацияТоваровИУслуг их штуки 3, кажется.
75. Stamper (Stamper) 18.04.12 14:18
(72) sergathome, мы выходим за рамки ООП, и идём в предметную область.
не буду телепатировать, сразу спрошу: мы сейчас о получении остатков или о списании партий?!
если про партии -- помогает МоментВремени(), если об остатках -- нам хватит границы.
76. anton dmitriev (tyfmyl) 18.04.12 14:27
зык сам по себе толкает создать общий модуль. Потом поместить в этот модуль кучу процедур для обработки данных и поддерживать все это «спагетти» из вызова процедур.

Общие модули пишутся не как раз для того для чего создано ООП и другие технологии программирования(повторное использование кода). Туда обычно попадают процедуры и функции, которые используются больше 1 раза в разных местах. Это вам не компилируемый язык, чтобы раздувать код, здесь каждая строчка блин время добавляет.
77. Павел Малахов (sermalp) 18.04.12 14:38
(7) s.sintsov, согласен. Документация нужна для всего нужна обязательно, и для таких обработок в частности. Бывает, что самому проще написать, чем искать чужое, а потом еще и разбираться.
78. Сергей Любезнов (sergathome) 18.04.12 15:03
(75) Stamper,
если про партии -- помогает МоментВремени(), если об остатках -- нам хватит границы.

Вот с этого момента поподробнее. Я-то, дурак, считал, что Граница точнее МоментВремени(), так как включает дополнительную инфу. Но даже не в этом суть. Суть в том, что механизм привязки документов ко времени в 1С не является ни единственно возможным, ни идеальным. Существуют другие подходы. Вот и всё. И пример с Моментом я привёл только для иллюстрации того, что не всё в слоне прекрасно, хотя слон и живой вполне.
И ООП тут действительно не в тему. На чём предлагаю и закруглиться. :)
79. Stamper (Stamper) 18.04.12 15:08
(78)[QUOTE=sergathome]На чём предлагаю и закруглиться. :) [/IS-QUOTE]
выручил =)
sergathome; +1 Ответить
80. Игорь Мирошниченко (igormiro) 18.04.12 15:10
Я дописывал конфигурацию созданную по такой методике.
Ничего хорошего в этом нет, я сторонник общих модулей. Просто первая же задача была убрать утечку памяти которая образовывалась из за переизбытка создания обработок и не удаления их в дальнейшем из памяти. Я понимаю что это ошибка разработчика но все же. Задача убрать утечку памяти в 1С звучит устрашающе.
82. Сергей Любезнов (sergathome) 18.04.12 15:20
(80) igormiro, задача утечки памяти в скриптовом языке это нечто. Это из области решения задач не имеющих решения.
83. Александр Рытов (Арчибальд) 18.04.12 16:11
(74)
...подтверждением хозяйственной операции в бух. учете является первичный документ, дата которого является обязательными реквизитом для заполнения.
Дата, а не время.
время нас интересует для оперативного учета, который не регламентирован.
Про оперативный учет я вообще не говорил, ибо не знаю, что это такое. Но точно знаю, что бухгалтерский учет является оперативным. Таким образом, время нас интересует именно в бухгалтерском учете.
Далее, Хозяйственная операция (реальная) имеет некоторую протяженность во времени. Начало совершения операции может иметь дату, отличающуюся от даты завершения операции. Скажем, выпуск продукции ночной сменой. Вполне очевидно, что он будет зафиксирован (сделает движения регистров) завтра утром. А сегодня вечером часть продукции уже отгружена. Что нам об этой ситуации говорит время (даже дата) проведения документа? Проводить отгрузку завтрашним числом? Сегодняшним не получится: продукции на складе сегодня еще не наблюдается.
И дело здесь не в конфигурации, а в модели учета 1С.
84. Stamper (Stamper) 18.04.12 16:24
(83) Арчибальд,
Про оперативный учет я вообще не говорил, ибо не знаю, что это такое. Но точно знаю, что бухгалтерский учет является оперативным.

трудно вести дискуссию в таком ключе :)
а я, например, точно знаю что нет. хотя бы потому, что не все операции, отображаемые в оперативном учете отражаются в бухгалтерском.

в ПСБУ Украины я нигде упоминание времени в связи с первичными документами не встречал.

то, что Вы описали ("разорванная" отгрузка товаров), реализована в Акселот Логистика: Управление складом, например (не сочтите за рекламу). это конфигурация для 1С.

повторюсь: Вы сейчас поднимаете проблемы реализации конфигурации, которые механизмами платформы вполне удаётся запрограммировать.
85. Алексей Роза (DoctorRoza) 18.04.12 16:24
Спасибо за статью .. очень поучительно!!
86. Александр Рытов (Арчибальд) 18.04.12 16:58
(84)
трудно вести дискуссию в таком ключе

Почему трудно? Я сказал: не знаю, что такое ОУ. Не встречал нигде определения. Если Вы встечали - поделитесь. А то обстоятельство, что бухучет обязан быть "оперативным" в смысле не "посмертным" определено законодательно. В http://infostart.ru/public/22032/ я это разбирал. А фирма 1С длительное время игнорировала это обстоятельство: например, в семерочной Комплексной бухучет был заложен как "среднеежемесячный". Т.е. при анализе предметной области (я о бухучете говорю) не было учтено одно из ключевых обстоятельств - отсюда и неадекватность. И не в конкретной конфигурации дело, а в поверхностном понимании сути учетных документов.
87. Stamper (Stamper) 18.04.12 17:16
(86) Арчибальд, когда человек пишет "не знаю, что это такое, но точно знаю что это..." (когда речь об одном и том же) становится смешно :)
Бухгалтерский учет -- регламентирован ПСБУ (правила, стандарты бухгалтерского учета)
Управленческий учет -- каждый хоз. субъект выбирает для себя сам его правила
кстати, я из Украины. но у нас эти моменты практически одинаковые.
А то обстоятельство, что бухучет обязан быть "оперативным" в смысле не "посмертным" определено законодательно

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

1С 7.7 была выпущена в 1997 году, если я не путаю. 15 лет назад!!!!
а мы тут обсуждаем 8.2, спешу напомнить
88. larissa builova (larisab) 18.04.12 17:45
(87)
1С 7.7 была выпущена в 1997 году

В 1999 г.
89. Роман Романов (romansun) 18.04.12 17:49
вполне закономерные статьи и разговоры

8-ке скоро 10 лет.... и если сперва задачи, решаемые её были весьма локальны, то всё больше и дальше 1С уходит в серьёзные отраслевые информационные внедрения

а это очень очень много кода, весьма и весьма непростого... это огромные запросы, это большая и сложная архитектура... и это всё надо оперативно поддерживать и развивать дальше

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

это и ООП, и svn, olap, юнит-тестирование, регресс-тестирование, всякие вумные понятия типа "рефакторинг" или "реинжиниринг". Это попытки создать какие-то автоматизированные системы документирования. Это redmine, jira и прочие мантиссы... И т.д. и т.п.

вот как-то так думается мне... :)
DMSDeveloper; zfilin; BorisMor; YVolohov; +4 Ответить 2
90. Ярослав Волохов (YVolohov) 18.04.12 18:08
А вы, друзья, как ни садитесь Всё в музыканты не годитесь


... из процедурного языка объектный не сделаешь никакими ухищрениями. А вот потребность в нем огромная. Кто пытался разбирать процедуры в 50 экранов кода в УПП, тот меня поймет. Кроме того очень нужен механизм автодокументирования, подобный JavaDoc. А то в типовых документированы дай Бог если 10% всех функций, да и то достаточно криво. Остальные - догадайтесь сами (предположительно по названию), что же они делают и нафик нужны вообще.
91. Stamper (Stamper) 18.04.12 18:12
(89) romansun, ну чёрт с ним с ООП, о нём уже много чего сказано.
Хранилище конфигурации, Корпоративный инструментальный пакет, Сценарное тестирование -- это о чем-то говорит?!
эти "технологии" "накрывают" версионирование и тестирование.

про OLAP лучше не начинать -- эта технология старше 1С 8 и о ней уже даже успели забыть.
смотрите в сторону QlikView и т.п. нереляционные технологии

рефакторинг и реинжиниринг ограничен не 1С-ом, а ясностью головы и прямотой рук.

ну а redmine и jira я, как 1С-ник, активно использую.

следующий =)
92. Stamper (Stamper) 18.04.12 18:15
(90) YVolohov, на тему документирования -- не забываем пользоваться "Шаблоны текстов". никакая технология не заменит организованность разработчика
93. Ярослав Волохов (YVolohov) 18.04.12 18:20
(92) Шаблоны текста не имеют никакого отношения к документированию. Это инструмент, позволяющий более эффективно повторно использовать код.
Насчет организованности разработчика - организованность конечно замечательная вещь, но если в 1с я должен делать руками то, что другие системы позволяют сделать в автоматическом режиме, то это минус для 1с.
94. Роман Романов (romansun) 18.04.12 18:22
(91)

дык, отлично ж!

но

хранилища недостаточно... это вполне четко описывается в статье про svn тут на инфостарте. У каждого 1С-ника есть свой каталог обработок, где лежат "ЗаливкаА_в_Б", "ЗаливкаА_в_Б_ДляЛены", "ЗаливкаА_в_Б_НоваяСРюшками", "ЗаливкаА_в_Б_ДляЛены2" и никакой версионности и всех прочих клевых инструментов нет... Это, честно говоря, сильно запаривает

olap используется весьма активно

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

Самый очевидный пример - сертификат "1С:Эксперт по технологическим вопросам" - один из самых весомых (если не самый весомый), в котором от 1С одно название, похоже, осталось
95. Ярослав Волохов (YVolohov) 18.04.12 18:23
(93)+ Добавлю, что платформа документирована прекрасно. Синтакис-помощник отличный инструмент. Здесь у меня никаких претензий.
96. Алексей Константинов (alexk-is) 18.04.12 18:24
97. Ярослав Волохов (YVolohov) 18.04.12 18:26
(96) Лучше уж вообще без рук, даже прямых. Чтобы нажал кнопку "Сделать все" и все сделалось :)))
98. Stamper (Stamper) 18.04.12 18:32
(93) YVolohov, что-то мы слишком много говорим о том, чего в 1С нет.
а давайте обсудим то, что есть! а за одно прикинем, во что встанет разработка хотя-бы Регистра бухгалтерии на Java. я уж про регистр расчета не говорю :)
99. Stamper (Stamper) 18.04.12 18:39
(94) romansun,
У каждого 1С-ника есть свой каталог обработок, где лежат "ЗаливкаА_в_Б", "ЗаливкаА_в_Б_ДляЛены", "ЗаливкаА_в_Б_НоваяСРюшками", "ЗаливкаА_в_Б_ДляЛены2" и никакой версионности и всех прочих клевых инструментов нет... Это, честно говоря, сильно запаривает

начнём с того, что эти обработки должны быть встроены в конфигурацию. всё, что снаружи -- это неуправляемые костыли.
в С/C++ за #define true false током же не бъёт =)))) и никто не говорит при этом, что плюсы -- плохой язык.

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

так говорить как минимум не этично. вам видимо не очень везло со знакомыми 1Сниками =)

Самый очевидный пример - сертификат "1С:Эксперт по технологическим вопросам" - один из самых весомых (если не самый весомый), в котором от 1С одно название, похоже, осталось

в нашей конторе такими техническими вопросами занимается штат системщиков и сетевиков.
хотя, это конечно исключение
100. Роман Романов (romansun) 18.04.12 18:53
>>Самый очевидный пример - сертификат "1С:Эксперт по технологическим вопросам" - один из самых весомых (если не самый весомый), в котором от 1С одно название, похоже, осталось

в нашей конторе такими техническими вопросами занимается штат системщиков и сетевиков.
хотя, это конечно исключение


да не, ну это не админский сертификат.. Возможно я не совсем корректно написал - чисто 1С-ный, но весьма высокого уровня

Например, билет №3


Я лишь хотел сказать, что 1С-ный мир не слишком открыт именно благодаря своей самодостаточности. И многих классных штук в 1С нет. Хотя при разработках особенно крупных систем они были бы весьма кстати.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа