Введение в конфигурирование 1С для опытного программиста на Java

1. radomir 06.11.21 22:05 Сейчас в теме
Посоветуйте плз что почитать про 1С опытному бэкенд разработчику на Java, который раньше никогда не проектировал бухгалтерские системы.
Основные цели:
- разобраться с транзакционной моделью
- структура регистров (оборотные и остаточные), агрегаты, индексы
- принцип двойной записи и его воплощение в коде
Короче в идеале какой-то условный Радченко в адаптации для опытных программистов не1Сников :) есть что-то такое?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 06.11.21 22:16 Сейчас в теме
(1)
Короче в идеале какой-то условный Радченко в адаптации для опытных программистов не1Сников :) есть что-то такое?

Нет. Забудь все что ты знал. Тут все передается по ссылке :)
3. Sashares 35 07.11.21 00:24 Сейчас в теме
(1)Если вы опытный разработчик на Java, зачем с нуля изучать 1С?
4. dehro 7 07.11.21 00:27 Сейчас в теме
(1)

...
- разобраться с транзакционной моделью
...


Собственно, как и везде: пишешь в 10 таблиц - в одну не удалось, значит нигде не удалось.


...
- структура регистров (оборотные и остаточные), агрегаты, индексы
...


Сиё 90% не понимает, но как-то программирует)). А так https://v8.1c.ru/platforma/registr-nakopleniya/
Есть ещё регистры сведений.


...
- принцип двойной записи и его воплощение в коде
...


Регистр бухгалтерии - это почти регистр накоплений, просто обязательных измерений два: счёт Дт, счёт Кт.
Хитрое слово "субконто" всего лишь аналитика.

Да, и 1С не объекто-ориентированный язык, обращение через "." иногда смущает.
Если какой-нибудь язык программирования знаешь: освоишь легко.

(2) Это юмор такой? Осваивают 1С только в Финляндии и Шушенском?
5. spacecraft 07.11.21 06:09 Сейчас в теме
(4)
Это юмор такой? Осваивают 1С только в Финляндии и Шушенском?

Какая-то странная ассоциация термина "все передается по ссылке" для программиста...
И да, это юмор. Опытный программист на Java должен понять. Там все передается по значению.
6. XAKEP 07.11.21 09:43 Сейчас в теме
я бы задал вопрос, как в 1с присутствует ( если оно там есть )
основные 3(4) принципы ООП

хотел сам поинтересоваться, как в1с Инкапсуляция - реализована :)

с полиморфизмом там проблем нет
25-100 конфигураций близнецов
7. XAKEP 07.11.21 09:48 Сейчас в теме
(6)
хотя, нашел такую инфо :


Безусловно 1С имеет объектно ориентированную сущность (и безусловно 1С не является 100% "чистым" объектно ориентированным языком).

Полиморфизм можно реализовать через "подписку на события"
Инкапсуляция - к нему на мой взгляд можно отнести механизм RLS в 1С .
Наследование - Документ "Приходная накладная" наследует свои свойства и методы от "базового класса" Документ.

И безусловно 1С это предметно-ориентированный язык. Целый ряд объектов в 1С создан и "заточен" под реализацию конкретных предметных областей (например бух учёт с её двойной записью или расчет зарплаты)
8. dehro 7 07.11.21 10:53 Сейчас в теме
(5)
...Опытный программист на Java должен понять. Там все передается по значению...


Спорить бесполезно, задачи языков разные. Но ссылки в java тоже передаются. Парой строк, конечно, но передаются. Имя таблицы + ключ таблицы.

В 1С эта пара собрана в тип переменной и значение переменной (в памяти занимает 32 байта).

Это особенность, но не ключевые различия языков.

(7)

...Наследование - Документ "Приходная накладная" наследует свои свойства и методы от "базового класса" Документ....


Сложно назвать "Документ" базовым классом. Ведь объект класса "Документ" нельзя создать никак)) Ну и расскажите как бы мне породить новый класс от класса "Документ.ПриходнаяНакладная"? Скопировать, это не породить. Новый класс должен содержать все свойства и методы родителя, плюс мы добавим свои.

Я бы назвал 1С "Объектным" языком, а вот с "ориентированностью" соглашаться бы не стал.
Это не говорит о том, что язык плох, широкое распространение ПО 1С говорит об обратном, просто как факт.
9. spacecraft 07.11.21 11:07 Сейчас в теме
(8)
Спорить бесполезно, задачи языков разные. Но ссылки в java тоже передаются. Парой строк, конечно, но передаются. Имя таблицы + ключ таблицы.

В 1С эта пара собрана в тип переменной и значение переменной (в памяти занимает 32 байта).

Это особенность, но не ключевые различия языков.

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


(8)
Сложно назвать "Документ" базовым классом. Ведь объект класса "Документ" нельзя создать никак))

Ну, попробуйте создать объект абстрактного класса. Только не говорите, что абстрактный класс не может быть базовым.
10. dehro 7 07.11.21 12:00 Сейчас в теме
(9)
Ну, попробуйте создать объект абстрактного класса. Только не говорите, что абстрактный класс не может быть базовым.


Я изучал ООП на языке Pascal в середине 199х. Там можно было создать объект любого типа.

Я допускаю, что есть языки в которых можно создать "абстрактный" класс. И смысл в этом есть. Но во всех этих языках от класса можно создать новый класс, который "наследует" все свойства и методы родителя и от новосозданного класса можно создать ещё один класс и т.д.

Если мы поменяем что-то в "родительском" классе, перекомпилируем, то все "наследники", не перекрывшие этот метод, изменяться.

Т.е. образно говоря, если меня не устраивает "Документ.ПриходнаяНакладная" по паре методов, я порождаю от него новый "Документ.ПриходнаяНакладнаяНовая", в котором меняю не устраивавшие меня свойства и методы. И после штатного обновления все изменения приходят и в мой объект сами.

В этом суть наследования, в многоуровневости. А не в возможности породить много "классов" от одного "базового абстрактного класса".
11. spacecraft 07.11.21 12:34 Сейчас в теме
(10)
В этом суть наследования, в многоуровневости. А не в возможности породить много "классов" от одного "базового абстрактного класса".

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

Более того, в С++ возможно наследоваться от нескольких классов. Что могло приводить к ошибке неоднозначности.
В Java нет множественного наследования.
Так что понятие Наследование это просто возможность наследования, а не обязательность всего и вся.
В некоторых ЯП класс необходимо специально помечать, чтобы дать возможность от него наследоваться.

(10)
Т.е. образно говоря, если меня не устраивает "Документ.ПриходнаяНакладная" по паре методов, я порождаю от него новый "Документ.ПриходнаяНакладнаяНовая", в котором меняю не устраивавшие меня свойства и методы. И после штатного обновления все изменения приходят и в мой объект сами.

Под это подходит возможность расширения )

Но в любом случае, я не считаю, что в 1С используется ООП. Есть отдельные элементы, но в общем именно ООП - нет.
dehro; XAKEP; +2 Ответить
12. dehro 7 07.11.21 15:19 Сейчас в теме
(11)
Вот в этом и недопонимание. Наследование рассматриваете только как многоуровневое наследование...


Операция "Наследование" или метод программирования "наследование"? Для операции да, определение википедии подходит.
А для метода никак: движение вперёд может быть только с многоуровневым наследованием - когда под новые задачи создаётся новый объект, имеющий свойства и методы старого + добавляет что-то своё. Так что программная среда, в которой наследование возможно только от абстрактного, имеющего несколько примитивных свойств и несколько пустых методов (таких, что даже их вызов в "наследнике" не имеет смысла) не может считаться имеющей механизм наследования.

...В некоторых ЯП класс необходимо специально помечать...

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


...Под это подходит возможность расширения...


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

...я не считаю, что в 1С используется ООП. Есть отдельные элементы, но в общем именно ООП - нет

Согласен. Плюс поставил.
13. spacecraft 07.11.21 15:29 Сейчас в теме
(12)
Операция "Наследование" или метод программирования "наследование"?

Вот после этой фразы могли и не продолжать.
14. dehro 7 07.11.21 15:37 Сейчас в теме
(13) Я не знал, что у Вас аргументов больше нет.
15. spacecraft 07.11.21 15:44 Сейчас в теме
(14) кто разбирается в теме, тот и так все поймет.
16. spacecraft 07.11.21 15:46 Сейчас в теме
(14) и да, если собрались мериться чем-то, то Pascal я изучал в конце 80-х. Тогда еще в нем не было ООП, из-за отсутствия Объектов )))
17. dehro 7 07.11.21 15:59 Сейчас в теме
(16)Ну начинал то и я с 3-го. Там не было объектов. По данным википедии в версии 5.5 появились, но я 5.5 не видел).
Я в 6.0 сталкивался. И оболочка к Pascal была написана на Turbo Vision.

Так я не мериться хотел. Просто мог какой-то термин употребить не так. Например, термина "class" в Pascal не было.
18. spacecraft 07.11.21 16:06 Сейчас в теме
(17) если по хорошему, то ООП начитается с Си с классами (в последствии переименование в С++). Вот с этого и стоит полноценно оценивать что такое ООП.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот