Опрос
Вопрос:
Как Вы относитесь к Истории к контексте данного форума?
Вариант 1: Пишите, коллега, история это всегда интересно
голосов: 6
Вариант 2: Мне по барабану
голосов: 0
Вариант 3: Хватит уже, чувак, расвешивать здесь свои простыни
голосов: 2
Вот, есть 1С++, есть ООП. Согласен, это здорово. Для программиста это действительно свежий воздух.
Помню, как всё начиналось - Rainbow, DMS, OXY - и снимаю шляпу перед теми людьми, которые приложили свои светлые головы к развитию этого направления.
Дальше классы, репозитории, сообщества, и затем уже стыдно быть одинэсником, который не использует классы в своей работе.
А я не использую.
Ребята, может я чего-то не догоняю все эти годы? Может я таки тупой?
На кой мне вся это ООП, если я не могу сделать элементарную хрень - Товар.Цена(ДатаДок) ?
ну, я тоже ООП не использую..
у меня из классов только РедакторТЗ стоял.
даже ТабличноеПоле "ниасилил".
.
Почему?
.
Штатные контролы всегда покрывали почти все потребности.
Где проблемы - старался строить процесс так, чтобы чего-то "внешнего" надо было по минимуму.
Вроде получалось. Реально ТП нужны были разово пару раз. На ТЗ - не сильно красиво, но работает.
Прямые запросы? - ну есть пару простейших типа селекта где в наименование слова входят и все...
Парочка сложных )для меня сложных) - сообщество помогло написать, я как собака - понимаю, ног сказать не могу.. ;-) Готовые запросы в целом понятно, но самому писать - ну вот не было прям вот таких потребностей чтобы освоить хорошо.
Ну не было у меня таких клиентов и объемов, чтобы нужны были прямые запросы прям вот до зарезу использовать чтобы не тупило в оперативной работе...
.
Так и живу, нищенствуя практически на типовых возможностях платформы... ;-)
И да: реально охреневаю от настоящих мастеров...
.
Переживал ли когда-то из-за своей корявости?
Ну бывало, здесь вот можно было бы сделать лучше.. Здесь конечно код кривовато написан когда-то, хорошо бы переписать покрасивше... Прямые не умею.. ТП не использую.. Быдлокодер какой-то я...
.
Но как попадают ко мне в руки конфиги, как гляну внутрь что там понаписано понакостылено.... Ладно, если там куча велосипедов сделана, которые штатно можно выкрутить, просто люди явно не а курсе возможностей типовых, или сделано то, чего нет в типовых, но вообще не соблюдены какие-то подходы стандартов типовых - фиг с ним, каждый пишет как умеет. Но хоть код-то аккуратно можно написать ????!!!! Посмотрю на эти безобразия - да я со своим кодом как принц среди нищих, красава!
.
За все время встретил всего один код, с которым реально трудно было разбираться - Садовникова вроде, просто непривычная нотация записи, мозг скрипел ужасно...
.
А так - за красоту и правильность кода никто не платит. Хороший и правильный код писать дольше чем костыль влепить, пусть даже костыль сделанный красиво и аккуратно... И чем старше - тем меньше хочется делать что-то хорошо забесплатно ;-) - такое катит только в случае там где делаешь "для себя", как хобби...
.
как-то вот так...
Цитата: Злоп от 05 апреля 2024, 01:16ну, я тоже ООП не использую..
Доброй ночи, Че!
Очень хорошо Вас понимаю. 100 предпиятий за плечами, и никто ни разу не спросил, пишу я на ООП или на ПОП. Всем нужно решение учетных задач, структуры и отчеты. И вчера. И, конечно, PDF по почте.)
По кодам и кривым рукам, отвлекусь на пример из недавнего прошлого. Поработал чуток с одной торговой организацией, 1500 штат, 50 магазинов по области, склады, стоит 77 SQL, база недавно обрезана, 90Gb за три года набрала, под 100 юзеров онлайн, работа кипит 23/7 и один чудо-кодер. Пожаловались, что программа тупит, подвисает, порой на десятки минут, область стоит, кровь кипит, кодера клянут, а тот на сервер кивает, мол сам ни при чём, как обычно.
Глянул я в кода, и сел. В каждом, клянусь, каждом модуле документа Предупреждение("Товара нет на складе"). Остальное перечислять даже не буду, иных алгоритмов не видал ни до ни после. Я ему - нельзя так, транзакция, сообщения, а он мне - юзеры буков внизу не читают, им надо фэйсом об тэйбл ткнуть. Еле победил чудака.
Кстати, там я и пытался прикрутить ОкноСообщений "в фэйс", и памятуя тот случай, попросил Расшифровку. (https://forum.dorex.pro/index.php?topic=57.0)
Сергей, спасибо Вам искренность и понимание.
Жму руку, в общем.
Я взаправду хочу узнать у специалистов, у разработчиков, а они здесь точно есть, как работает ООП вместе с ПОП, так сформулировала компания свою концепцию - Предметно-Ориентированное Программирование. Может всё таки можно прикрутить ООП на агрегаты, а я не знаю о этом?
Что значит прикрутить ООП на агрегаты?
Цитата: Злоп от 05 апреля 2024, 01:16ну, я тоже ООП не использую..
у меня из классов только РедакторТЗ стоял.
даже ТабличноеПоле "ниасилил".
.
Почему?
Сереж, как я тебя понимаю...
Я почти так-же.
Из классов использую только "перехватчик", да и то с недавних пор...
Тут лень подтолкнула :-)
У одной ИПшки, появился магазинчик в соседнем городе... Как разделить учет? Для юрика, я бы и не задумывался - отдельное СвоеОП, свое ЮрЛицо, и все... А тут, ИП, по сути одно "ЮрЛицо", КПП то нет...
Решил по "Складам" разделить.
И все бы хорошо, но нашлась у них оператор, которая своим нытьем стала доставать - типа не удобно в общем журнале, можно отобрать либо по складу, либо по виду документа, и т.д...
А отобрать по двум критериям нельзя. Ну, не умеет 1С так.
Сначала отказал, типа нельзя, и все тут. А потом подумал, "а почему-бы и нет"-?
Слелал через составной общий реквизит. Все работает.
Но потом подумал - и ужаснулся... В типовой ТиС 100500 документов, да еще и моих пару десятков... И в каждый нужно в процедуру ПриЗаписи(), прописать формирование этого составного реквизита...
Вот это был у меня единственный случай, когда я понял, что даже мало-знакомая для меня работа с классами, несмотря на то, что нужно еще изучить и ихотя-бы немного понять, как это работает, ускорит на порядок всю мою хотелку - сделал через перехватчик, все работает.
А так... Меня часто ругают на мисте, что что типа все мои "костыли" делаются проще и изящьнее на табличных полях, и тому подобно, что все мои поиски и работа с выделенными строками списков есть в ТП... Да. Согласен.
Но, мне так проще. И юзерам привычнее.
А вот без Формекса, уже сложно обходиться стало, привык :-) Но, это другое...
PS А из прямых запросов, только в нескольких местах поиск через SQLlite использую, чтобы минимизировать количество индексов(не ставить галку "сортировка") у добавленных полей, по которым надо отбирать "по реквизиту". Уж очень добавление каждого индекса замедляет реструктуризацию базы, в случае добавления реквизита с сортировкой... Тут, через SQLlite значительно веселее получается. А так... Получение данных? Ну нет у меня таких клиентов, где черные запросы не справляются. Все и так делается...
Цитата: trad от 05 апреля 2024, 07:29Что значит прикрутить ООП на агрегаты?
Сори за жаргон, агрегатные типы данных имел в виду.
Процитирую Александра Орефкова, из readme к turbobl:
"
Да!!! Свершилось!!!
Теперь можно через контекст обратится к методам и переменным модуля контекста.
Например:
конт=0;
ОткрытьФорму("Справочник.Товары",конт);
конт.Печать(); //где Печать() - процедура в модуле ФормыСписка справочника.
или например:
// в модуле проведения дока
Процедура ЭтоДокСТоваром()
возврат 1;
КонецПроцедуры;
Процедура ОбработкаПроведения(парам)
глНекаяГлобФункция(Контекст);
....
// В ГМ:
Процедура глНекаяГлобФункция(Конт)
Если Конт.ЭтоДокСТоваром()=1
.......
"
Вот, сабж примерно об этом, но только примерно.
Если бы 1С++ дал мне возможность каким-то образом обратиться по ссылке к методу соответственно документа или справочника, тогда бы и я воскликнул: "Да!!! Свершилось!!!".
Это не хотелка, да и в случае справочника даже нет такого модуля, где можно хранить его методы.
Это мегахотелка. )
Тебе нужен аналог восмерочного модуля объекта?
Цитата: trad от 05 апреля 2024, 09:45Тебе нужен аналог восмерочного модуля объекта?
Аналог - это у восьмерки, а у нас оригинал.
Спорил на этот предмет с Артуром Аюхановым (artbear) на еще проклабе вроде,
когда восьмерка в помине на свет не народилась.
Доказывал, что ООП ради ООП это только пол дела, нужда привязка к данным.
Да, в восьмерке это реализовано, доработали свою ПОП, подслушали наверное.)
Ты можешь в двух словах, без портянок и исторических экскурсов, объяснить чего тебе надо? ))
ООП в 1с++ строится вокруг всего что можно создать при помощи СоздатьОбъект()
Ссылка на справочник/документ - не объект.
Ссылку конечно можно инкапсулировать в некий класс, но унаследовать ее нельзя.
Унаследоваться можно от типа объекта, например создать свой класс Справочник.Товары.Мой от Справочник.Товары
Там определить метод Цена(ДатаЦены)
И потом:
Об = СоздатьОбъект("Справочник.Товары.Мой");
Об.НайтиЭлемент(Товар);
Об.Цена(ДатаДок);
Ещё раз хотел бы обратить внимание разработчиков ВК на то чем удобно иметь xml для каждой диалоговой формы.
Эти метаданные расширяют конфигуратор так как позволяют хранить данные о дополнительной функциональности:
- права на доступ к объектам и данным;
- сохранение метаданных диалоговых форм (позволяет сделать более удобным работу с интерфейсом);
- данные об опциях отчётов;
- ...
Код модулей упрощается и имеется возможность динамического изменения свойств.
Многие хотелки затрагивают конфигуратор и разработчики говорят это нельзя реализовать.
Всё можно!
Цитата: Forum123 от 05 апреля 2024, 10:19Ещё раз хотел бы обратить внимание разработчиков ВК на то чем удобно иметь xml для каждой диалоговой формы.
Эти метаданные расширяют конфигуратор так как позволяют хранить данные о дополнительной функциональности:
- права на доступ к объектам и данным;
- сохранение метаданных диалоговых форм (позволяет сделать более удобным работу с интерфейсом);
- данные об опциях отчётов;
- ...
Код модулей упрощается и имеется возможность динамического изменения свойств.
Многие хотелки затрагивают конфигуратор и разработчики говорят это нельзя реализовать.
Всё можно!
Все можно. Никто ж не против. Все только спрашивают где именно можно посмотреть твою разработку, о которой ты постоянно рассказываешь.
Цитата: АЛьФ от 05 апреля 2024, 10:22Все можно. Никто ж не против. Все только спрашивают где именно можно посмотреть твою разработку, о которой ты постоянно рассказываешь.
Для вышесказанного не нужны ActiveX, достаточно использовать 1cpp, formex и классы.
Что касаемо разработки, то после создания API "Хранилище ресурсов" проверю API на семёрошных и восьмёрошных конфигураций и поделюсь оттестироваными ActiveX.
Это будет по существу конфигуратор на порядок функциоальней восьмёрошного.
Так как в хранилище ресурсов можно будет загружать и данные, то добавлю удобный API.
Самое интересное в том, что это будет не 1С, но всё то к чему привыкли 1С-ники API позволит использовать.
Как такое может быть?
Может, так как это API для работы с метаданными, а это могут быть игры, мультимедия, 1С, ...
Надеюсь всё будет Ok!
Кстати никогда не было желания конкурировать с 1С.
Просто API универсально.
Цитата: Forum123 от 05 апреля 2024, 10:25Просто API универсально.
Для использования API можно будет использовать любой ЯП и к Windows API не привязано.
Цитата: Forum123 от 05 апреля 2024, 10:41Цитата: Forum123 от 05 апреля 2024, 10:25Просто API универсально.
Для использования API можно будет использовать любой ЯП и к Windows API не привязано.
Скажи, пожалуйста, на форуме 1С++ "vladimirmir2012" - это твой ник?
Цитата: trad от 05 апреля 2024, 09:58Ты можешь в двух словах, без портянок и исторических экскурсов, объяснить чего тебе надо? ))
Не могу, блин, учитель я, по образованию, математики и информатики, и преподавал к тому же в АУЦ 1С, болезнь, сам себе уже надоел.
А вообще, ничего мне не надо, хочу просто высказаться, не более того, дети выросли, времени появилось.
Цитата: trad от 05 апреля 2024, 10:08...
ООП в 1с++ строится вокруг всего что можно создать при помощи СоздатьОбъект()...
Унаследоваться можно от типа объекта, например создать свой класс Справочник.Товары.Мой от Справочник.Товары...
Это я понимаю.
Не могу подняться на Ваш уровень, где копаются в кишках платформы и делают компоненты,
но на мой уровень можно опуститься на минуту?
Я не понимаю, почему я могу написать Товар.Цена, но не могу написать Товар.Цена().
Рассуждаю как юный интерпретатор:
1. вот Товар, ага ссылка, чего хочу?, ага Цена, иду в таблицу, вот Цена;
2. вот Товар, ага метод, чего хочу?, ага Цена(), иду в модуль, вот Цена().
Мне кажется, что такую хрень реализовать было проще, чем ООП в 1С77
Да мой ник.
То о чём говорил в постах сделаю и поделюсь.
Могу ныне к примеру опубликовать реализацию использования XML для диалоговых формах.
Если будет заинтересованность опубликую разработанный вэб интерфейс для 1С 7.7 (раньше не мог опубликовать).
Для меня вообще-то важен диалог о разработке, а реализацию сделаем.
К сожалению рутина много времени отнимает, много чего уже бы разработал.
ActiveX поделюсь однозначно, а вот исходники (а это ведь новая технология) пока публиковать не буду.
Но к примеру исходники API для struct strage и работы с xml C++ опубликую.
Цитата: Forum123 от 05 апреля 2024, 11:26Да мой ник.
Это многое объясняет. А я все гадаю откуда в твоих словах такое жутко знакомое-старинное.
Цитата: АЛьФ от 05 апреля 2024, 11:36Да мой ник.
Альф, я не вредный и люблю разработку.
Здесь у нас с Тобой много общего.
Да и маниловщины в постах нет.
Что касается API для использования метаданных, то это новая технология, так API универсально.
На очереди после "Хранилища ресурсов" разработка API для использования баз знаний (это вполне реальная и выполнимая задача).
ОткрытьФорму("Справочник.Товары",конт);
конт.Печать(); //где Печать() - процедура в модуле ФормыСписка справочника.
так вроде это давно можно было.
или я что-то путаю?
Дежавю, на форуме 1cpp и на мисте тоже был товаришь с подобными идеями декомпиляции форм в xml и создании на их основе вэб поделок..но, там кроме тролинга дальше ничего не пошло.
vladimirmir2012, перелогиньтесь.
Я даже ник вспомнил, и этот товаришь, потом на 1cpp всё потер.
Хотя зачаточная реализация (в картинках) какая-то была.
https://forum.mista.ru/topic.php?id=739732
ну и т.д..
Было такое.
На 1cpp писал о том, что мне запретили делиться исходниками.
Ныне того начальства нет.
Если опять грязь начнут как на 1cpp лить, то постов и здесь не будет.
С людьми по нормальному разговариваешь, а они начинают ярлыки вешать.
У меня много работы и ругаться с кем-то в мои планы не входит.
Посты на 1cpp действительно удалил.
Почему?
Выше объяснил.
Чорт, перечитал с начала ветку, товарища уже вычислили ранее
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Эх, как всегда, олени не кормлены
Цитата: Forum123 от 05 апреля 2024, 12:23Было такое.
На 1cpp писал о том, что мне запретили делиться исходниками.
Ныне того начальства нет.
Если опять грязь начнут как на 1cpp лить, то постов и здесь не будет.
С людьми по нормальному разговариваешь, а они начинают ярлыки вешать.
У меня много работы и ругаться с кем-то в мои планы не входит.
Посты на 1cpp действительно удалил.
Почему?
Выше объяснил.
Так и ?
Какой-то практический толк от этого активикса есть хоть ? Или был ?
За 10 лет что-то сдвинулось с тех пор ?
Цитата: Ёпрст от 05 апреля 2024, 12:38Эх, как всегда, олени не кормлены
А что не так?
Предложил же разработки, которыми готов поделиться, а вы всё такой же как и годами ранее.
Что ныне не нравится?
Цитата: Ёпрст от 05 апреля 2024, 12:40За 10 лет что-то сдвинулось с тех пор ?
Многое.
Разработана новая технология.
Реально на семёрке и восьмёрке использую.
Для того, чтобы могли другие использовать нужно разработать "Хранилище ресурсов".
Когда разработаю, поделюсь.
Цитата: Forum123 от 05 апреля 2024, 12:42Предложил же разработки, которыми готов поделиться, а вы всё такой же как и годами ранее.
Так где эти разработки можно скачать? Или хотя бы почитать описание подробное?
Или что значит "предложил"?
Цитата: АЛьФ от 05 апреля 2024, 12:46Так где эти разработки можно скачать? Или хотя бы почитать описание подробное?
Или что значит "предложил"?
Предложил означает то, что если кому они интересны, то опубликую.
Какую бесплатную файло помойку посоветуете?
Ещё раз, раньше не мог опубликовать.
На 1cpp говорил об этом, но полилась грязь потоками и удалил все посты.
Цитата: Forum123 от 05 апреля 2024, 12:49Цитата: АЛьФ от 05 апреля 2024, 12:46Так где эти разработки можно скачать? Или хотя бы почитать описание подробное?
Или что значит "предложил"?
Предложил означает то, что если кому они интересны, то опубликую.
Какую бесплатную файло помойку посоветуете?
Ещё раз, раньше не мог опубликовать.
На 1cpp говорил об этом, но полилась грязь потоками и удалил все посты.
Рекомендую создать свой сайт.
На 1cpp писал о разработках, а мне постоянно говорили, что раз разработками не делишься, то ты нас не интересуешь.
Для меня более важно обсуждение разработки.
Реализация сама по себе не сложна, если не лениться, а вот хорошие архитектурные решения не сразу удаётся найти.
Цитата: АЛьФ от 05 апреля 2024, 13:17Рекомендую создать свой сайт.
Понял Вас.
Цитата: Forum123 от 05 апреля 2024, 13:21На 1cpp писал о разработках, а мне постоянно говорили, что раз разработками не делишься, то ты нас не интересуешь.
А должны восхищаться?
Как можно обсуждать что-то, не видя этого? Обсуждать просто твои слова? Это никому в принципе не интересно.
Цитата: АЛьФ от 05 апреля 2024, 13:26Как можно обсуждать что-то, не видя этого? Обсуждать просто твои слова? Это никому в принципе не интересно.
Согласен с этим.
Если кто-то не занимается разработкой, то его интересует результат.
Цитата: Forum123 от 05 апреля 2024, 13:37Цитата: АЛьФ от 05 апреля 2024, 13:26Как можно обсуждать что-то, не видя этого? Обсуждать просто твои слова? Это никому в принципе не интересно.
Согласен с этим.
Если кто-то не занимается разработкой, то его интересует результат.
Я занимаюсь разработкой. Мне не интересны пустые разговоры. Интересен предметный разговор. Кто бы тут что обсуждал, если бы от меня было только "вот щас каааак! все ахните!".
Выложи хотя бы внятное описание, чтобы было о чем говорить. Пока за 10 лет ты так ничего и не смог сформулировать.
Цитата: АЛьФ от 05 апреля 2024, 13:43Выложи хотя бы внятное описание, чтобы было о чем говорить. Пока за 10 лет ты так ничего и не смог сформулировать
Во как!
Ну извини дружище.
Неужели в постах не понятно было о чём речь?
Что касается Ваших разработок, то спасибо Вам.
Но вот вэб интерфейс к 1С 7.7 до ныне никто не разработал к примеру.
Или он не нужен?
Альф на 1cpp, кое-что и публиковал.
Например ActiveX для работы с struct storage и работы с строками.
Цитата: item от 05 апреля 2024, 00:58На кой мне вся это ООП, если я не могу сделать элементарную хрень - Товар.Цена(ДатаДок) ?
Цитата: item от 05 апреля 2024, 09:12Это не хотелка, да и в случае справочника даже нет такого модуля, где можно хранить его методы.
Это мегахотелка. )
Вообще-то ООП от 1С++ позволяет сделать всё это, так то...
А товарищьа этого я сразу, со второго поста узнал по шизофазии его специфической. Стеснялся просто озвучить.
АЛьФ, напрашиваются не только лайки, но дизлайки к сообщениям. А то лень бывает отписываться на ерунду всякую, но неодобрение своё выразить хочется.
А уточните мне ещё раз, а то меня гложут сомнения:
Перехватчики позволяют обрабатывать, например, программную запись, например, документа, когда запись без использования формы документа?
Меня по всему что добавляется по большому счету колышет реально только одно: чтобы не стало тормозить! Потому как фейс снеговика меня в целом не напрягает, а напрягает задумчивость и вальяжность эрекции
А ТП конечно надо мне освоить, чтобы в свою мини WMS няшненько ТЧ доков вместо ТЗ кузявенько на ТП сделать...
Цитата: Arbuz от 05 апреля 2024, 16:02Вообще-то ООП от 1С++ позволяет сделать всё это, так то...
Ну не томите уже.
Цитата: item от 05 апреля 2024, 20:37Цитата: Arbuz от 05 апреля 2024, 16:02Вообще-то ООП от 1С++ позволяет сделать всё это, так то...
Ну не томите уже.
trad попытался было...
Цитата: trad от 05 апреля 2024, 10:08ООП в 1с++ строится вокруг всего что можно создать при помощи СоздатьОбъект()
Ссылка на справочник/документ - не объект.
Ссылку конечно можно инкапсулировать в некий класс, но унаследовать ее нельзя.
Унаследоваться можно от типа объекта, например создать свой класс Справочник.Товары.Мой от Справочник.Товары
Там определить метод Цена(ДатаЦены)
И потом:
Об = СоздатьОбъект("Справочник.Товары.Мой");
Об.НайтиЭлемент(Товар);
Об.Цена(ДатаДок);
Но, что-то не в коня корм...
Цитата: item от 05 апреля 2024, 11:10Цитата: trad от 05 апреля 2024, 09:58Ты можешь в двух словах, без портянок и исторических экскурсов, объяснить чего тебе надо? ))
Не могу, блин, учитель я, по образованию, математики и информатики, и преподавал к тому же в АУЦ 1С, болезнь, сам себе уже надоел.
А вообще, ничего мне не надо, хочу просто высказаться, не более того, дети выросли, времени появилось.
Цитата: trad от 05 апреля 2024, 10:08...
ООП в 1с++ строится вокруг всего что можно создать при помощи СоздатьОбъект()...
Унаследоваться можно от типа объекта, например создать свой класс Справочник.Товары.Мой от Справочник.Товары...
Это я понимаю.
Не могу подняться на Ваш уровень, где копаются в кишках платформы и делают компоненты,
но на мой уровень можно опуститься на минуту?
Я не понимаю, почему я могу написать Товар.Цена, но не могу написать Товар.Цена().
Рассуждаю как юный интерпретатор:
1. вот Товар, ага ссылка, чего хочу?, ага Цена, иду в таблицу, вот Цена;
2. вот Товар, ага метод, чего хочу?, ага Цена(), иду в модуль, вот Цена().
Мне кажется, что такую хрень реализовать было проще, чем ООП в 1С77
Хочешь методы у объектов — сам описываешь логику в классе, где, собственно, и хранится сам код логики.
итого:
1) с помощью ООП от 1срр ты можешь написать Товар.Цена()
2) с помощью ООП от 1срр ты можешь иметь отдельный модуль объекта, где хранятся его методы.
ЗЫ: если Вы таки математик-информатик, то, возможно, стоило потратить время на ознакомление с объектной моделью программирования, а не тратить его здесь на увеличение энтропии этого трэда?
Цитата: Arbuz от 10 апреля 2024, 15:57с помощью ООП от 1срр ты можешь иметь отдельный модуль объекта, где хранятся его методы.
а можно так сделать что
СпрНоменклатура.Записать(), где Записать() - это будет мой метод, который будет типа содержать код
//тут типа куча кода всяких проверок, отрабатывающих при программной записи
//а тут применение штатного метода Записать()
...
?
.
или каким другим вариантом отработать возможность выполнения "кода модуля объекта" при программном штатном Спр.Записать()...? типа как в 8-ке.. (менеджер объекта?)
Цитата: Злоп от 10 апреля 2024, 16:04Цитата: Arbuz от 10 апреля 2024, 15:57с помощью ООП от 1срр ты можешь иметь отдельный модуль объекта, где хранятся его методы.
а можно так сделать что
СпрНоменклатура.Записать(), где Записать() - это будет мой метод, который будет типа содержать код
//тут типа куча кода всяких проверок, отрабатывающих при программной записи
//а тут применение штатного метода Записать()
...
?
.
или каким другим вариантом отработать возможность выполнения "кода модуля объекта" при программном штатном Спр.Записать()...? типа как в 8-ке.. (менеджер объекта?)
Можно.
Цитата: Злоп от 10 апреля 2024, 16:04Цитата: Arbuz от 10 апреля 2024, 15:57с помощью ООП от 1срр ты можешь иметь отдельный модуль объекта, где хранятся его методы.
а можно так сделать что
СпрНоменклатура.Записать(), где Записать() - это будет мой метод, который будет типа содержать код
//тут типа куча кода всяких проверок, отрабатывающих при программной записи
//а тут применение штатного метода Записать()
...
?
.
или каким другим вариантом отработать возможность выполнения "кода модуля объекта" при программном штатном Спр.Записать()...? типа как в 8-ке.. (менеджер объекта?)
Можно, при условии, что СпрНоменклатура это объект твоего класса. Это весьма тяжёлое условие когда не понимаешь как это. ;D
Цитата: Злоп от 10 апреля 2024, 16:04СпрНоменклатура.Записать(), где Записать() - это будет мой метод
https://www.1cpp.ru/forum/YaBB.pl?num=1309279852/3#3
Оно? С Таблица.Показать(,,) работает отлично.
Цитата: Грузчик от 10 апреля 2024, 16:22Оно? С Таблица.Показать(,,) работает отлично.
учтем..
Цитата: Arbuz от 10 апреля 2024, 15:57ЗЫ: если Вы таки математик-информатик, то, возможно, стоило потратить время...
Это было лишним, дружище.
В чём-то Вы правы, у меня большие пробелы в классификации полиморфизмов,
но тем не менее, не следует так себя вести в гостях, и прошу Вас
впредь не тратить своё время на мои трэды, дабы "не увеличивать энтропию".
Цитата: item от 10 апреля 2024, 17:51Это было лишним, дружище.
Не стоило так оскорбляться, я не ставил такой цели, а хотел всего лишь побудить Вас к изучению возможностей 1срр. Зря Вы так от неё открещиваетесь — на текущий момент это такой же неотъемлемый костыль для клюшек как и формекс. Я бы сказал штатный.
Что есть "Товар"?
С точки зрения БД - это запись, с точки зрения ООП - объект.
Концептуальный барьер.
Вот, и Компания до сих пор не смогла преодолеть этот барьер, совместить эти два понятия наконец в одну сущность.
Для меня "Товар" - это и запись, и объект, и пусть компилятор заботится о том, чего я от него хочу.
Вот, Trad спросил: "Тебе нужен аналог восмерочного модуля объекта?".
Мне нужно намного больше.
Я большой сторонник ООБД, перечитал в своё время все книги Кузнецова, и хочу сказать, за этим будущее.
А могло бы стать уже настроящим.
Компания всё время ходит вокруг да около, и вроде бы сам Бог велел, платформа - прокладка между ООП и СУБД, но нет.
Я так мечтал увидеть в восьмерке хотя бы шаг в эту сторону.
Увидел, через 20 лет, в очередном релизе 8.3, определяемые типы...
Хочу блог.
Открывайте уже классы по ООП, классам и прочему в 1С 7.7 ;-)
Цитата: Злоп от 10 апреля 2024, 18:52Открывайте уже классы по ООП, классам и прочему в 1С 7.7 ;-)
Да, Че, спасибо, это моё, я ещё тот болтун. )
Можно годы поминать на ветках "вложенные и наследуемые структуры", это не составляет труда.
Но блог - это другое.)
Любой учитель должен готовиться к уроку, а любая мало-мальсткая статья отнимает как минимум неделю времени.
Может, любопытства ради, кто сам заинтересуется ООБД.
Кузнецов тоже теоретик, популяризатор этого направления.
Но парень крепкий, в полиморфизмах не плавает, как я.
Цитата: АЛьФ от 10 апреля 2024, 16:16Цитата: Злоп от 10 апреля 2024, 16:04Цитата: Arbuz от 10 апреля 2024, 15:57с помощью ООП от 1срр ты можешь иметь отдельный модуль объекта, где хранятся его методы.
а можно так сделать что
СпрНоменклатура.Записать(), где Записать() - это будет мой метод, который будет типа содержать код
...
или каким другим вариантом отработать возможность выполнения "кода модуля объекта" при программном штатном Спр.Записать()...? типа как в 8-ке.. (менеджер объекта?)
Можно.
Алексей Леонидович, разверните пожалуйста Ваше "можно".
Хрен с ней, со ссылкой на Товар, как в родном объекте Спр это можно?
Цитата: Злоп от 05 апреля 2024, 16:33Перехватчики позволяют обрабатывать, например, программную запись, например, документа, когда запись без использования формы документа?
Лично я знаю только одну реализацию, приснопамятную V7Crypt Щербакова,
где подменой blang.dll он релизовал все необходимые триггеры, и При, и Перед, и После.
В модуле документа можно объявить все соответсвующие предопределенные процедуры, причём они работают вне транзакции проведения, и видят при этом и контекст модуля и другие триггеры, за малым исключением, ОбработкаУдаленияПроведения выполняется в собственном контексте.
Таким образом, там можно в Спр.Записать() запихать свои коды.
У кого-то, говорят, работает, а я было начал, но не достаточно протестировал грабли и пока отказался.
Имхо очень крутая и полезная штука.
К сожалению, для Справочников нет там ничего, вероятно в связи с отсутствием собственного модуля.
Цитата: Болтун от 10 апреля 2024, 18:46С точки зрения БД - это запись, с точки зрения ООП - объект.
Концептуальный барьер.
Что же такое ООБД простыми словами?
Это база данных, в которую уложены Классы вместе с данными, интерфейсами, формами и всем, что только под руку попадёт.
Аппологеты любят поспорить, что первично в парадигме ООБД, Класс или ТипДанных?
Специалисты по ООП перетягивают канат со специалистами по БД.
Мне лично, как канату между этими группами в полосатых купальниках, глубоко фиолетово.
Я принимаю как аксиому, что любой Класс это ТипДанных, а любой ТипДанных это Класс, поэтому эту двуликую сущность в парадигме ООБД можно называть и так и эдак, в зависимости от контекста.
Повторюсь, любой ТипДанных - это Класс.
СуммаДокумента.Окр() разве не может быть?
Конечно может, как и у любого Класса, у Числа есть собсвенный интерфейс.
Более того, СуммаДокумента, как и СуммаДокумента() могут быть переопределены в этом интерсейсе, ведь Число есть Потомок более глубокого класса под нехитрым названием Класс...
Здесь Злоп начнёт уже ругаться. )
Но я хочу успокоить читаетелй, поскольку Число относится к базовым типам данных, работа с ему подобными Классами-примитивами не может быть заложена на уровне Конфигуратора, это забота виртуальной машины-1Cv9...
Цитата: Болтун от 10 апреля 2024, 22:21это забота виртуальной машины-1Cv9...
Здесь я должен отвлечься на терминологию.
Если с ООП, БД и ООБД всё как бы должно быть понятно, то в отличе от этих христоматийных словечек, ООСУБД в нашем контексте будет имеет не прямое значение, как некая пупер-супер навороченная СУБД из ряда тех, которую даже Компания до сих пор для себя не в силах реализовать,
а будет обозначать нашу программку-прокладку, между ООП и БД, "нашу ООСУБД", как некую виртуальную машину, понимающаю нашу ООБД и ее исполняющую.
Из уважения таки к заслугам Компании, иногда буду называть ее 1Сv9.
И работать она будет с проверенной временем класической СУБД.
Я же не псих помышлять о своей собственной.
К слову, аппологеты так же спорят, а нужно ли использовать реляционные БД, мол, старье и всё-такое, пора перевернуть страницу, и создавать "на новых физических принципах".
Я лично не знаю, на каких бинарных деревьях кто чего собрался создавать, прирос всем телом к таблицам и всецело доверяю Эдгару Кодду...
Цитата: Болтун от 10 апреля 2024, 22:21Повторюсь, любой ТипДанных - это Класс.
А любой Класс это ТипДанных.
В ООБД каждый класс уложен в свою таблицу либо набор таблиц.
Конечно, есть таблица и для Корневого класса Класс, содержащая в себе перечень всех классов.
Что же, получается, для Числа есть своя таблица?
Конечно. Конструкция Число.Пи ничего не напоминает?
Это же наши бывшие Константы - ПредопределенныеЭлементы.
Такие же таблицы есть и у Строк, и у Дат, и у всех прочих Базовых классов и Наследников.
Для Базового класса в концепции ООП как-бы не должено существовать Суперкласса, но
в концепции ООБД мы можем несколько смягчить парадигму, чтобы не нарушать терминологию.
Всё-таки Базовые классы, как и Корневой, заложенны на уровне Машины, как положено, и именно на их основе идёт строительство репозитория.
В числе Базовых Классов/ТиповДанных, кроме примитивов Число, Строка, Дата и Булево, в обязательном порядке входят Структура, Массив, Дерево, Список, Таблица (прошу не путать таблицы БД и Таблицы ООБД), Форма, Макет и так далее.
Список этот ограничен только фантазией разработчика нашей ООСУБД, хоть Графы туда вставляй, лишь бы реализация не подвела...
На зародыш ОпределяемыеТипы не смахивает?
Так мы получили первую ветку Метаданных, под названием ТипыДанных, и можем уже начинать равивать своё дерево Классов. От Числа наследовать, например, Сумму, Количество, Курс, от Строки НаименованиеСпр, КомментарийДок, а от Отца Фамилию и Отчество...
Шутка, на ночь глядя.
Давайте ближе к практике
Цитата: Злоп от 11 апреля 2024, 01:07Давайте ближе к практике
А вот с практикой неувязочка вышла.
Весь мой личный опыт не выходит за рамки Конфигуратора.
Когда потух проект 2С, я даже пытался собрать коллектив
спецов, втолковать им что к чему, не вдохновились.
Смешно, спустя много лет, 15 может даже, встретил на улице товарища,
разболтались, и он мне грит: "Помнишь, ты мне втюхивал
про вложенные структуры данных? Так до меня только сейчас дошло!"
Я даже выходил на одного большого чиновника, который вкладывался
в стартапы, боялся за бескровно нажитое, разложил ему вопрос как
политический, мол бабло плывёт в Москву, 1С его в качель, импортозамещаем,
дёргаем за нитки, ставим на гос.предприятия, я эту 1С одной левой и т.д.
В общем, вложился он тогда в деревобработку. Сейчас сидит, давно уже, 9 лет дали.
Писали, что за 200т зелени взяли с поличным, но я не верю, хороший мужик.
Вот и вся история.
Цитата: Злоп от 11 апреля 2024, 01:07Давайте ближе к практике
Сорри, дружище, затупил, не о той практике сперва подумал.
Нельзя писать на ночь глядя, кошмары в голову лезут, пригрезилось, что мой ник - Форум123.
Итак, что дают нам определяемые ТипыДанных/Классы.
Пример 1, примитивный, но очень показательный, из жизни.
В 2016 году у нас в РБ прошла денежная реформа, деноминация, замена купюр, и
появились настоящие железные копейки. Кто не знает, белорусские деньги называют
метким словом "белки" от того, что была в начале 90-ых такая купюра, 50 копеек с изображением белки,
а на рубле красовался соответсвенно заяц. Со временем "белка" была изъята из оборота, и на протяжении многих лет страна жила без копеек. Ессесно, в типовых конфигурация копеек тоже не было, везде ОКР(), [18.0] и т.д.
Представьте теперь, сколько труда потребовалось, чтобы добавить копейки во все щели в конфигурации.
В реквизиты вроде просто, а модули, где было кругом ОКР() и НоваяКолонка(, "Число", 15, 0), а печатные формы, где повсюду #Ч16.0, и, учитывая большое разнообразие этих 15.0, 17.0, 015.0 и т.д., работа была не из лёгких, персонально с каждой конфигурацией. По сей день всплывают, как эхо войны, то тут то там косяки с этими копейками.
А теперь представьте, что у нас есть некий ОпределяемыйТип "СуммаРуб", который задействован во всех реквизитах всех прикладных объектов. И ОКР() умеет округлять до собственной точности.
Проблема с деноминацией была бы решена одним щелчком....
Цитата: Болтун от 11 апреля 2024, 08:32Пример 1, примитивный, но очень показательный, из жизни.
Пример 2, определяемые структуры.
Есть в v7 такой объект - Дебет/Кредит, тот который вложен в проводку, я называю его Корреспонденцией, хотя это не очень грамотно в контексте сложных проводок.
По сути это настоящий Объект, с собственными данными и интерфейсом.
А в прикладных объектах мы вынуждены постоянно рожать набор Счет, Субконто1,.., СубконтоХ,
и затем, в стотысячный раз, оформлять его на форме, в модуле и т.д.
Дело упростится в стотысяч раз, если мы определим такую структуру в нашей ветке ТиповДанных.
Итак, на базе класса Структура, создаем наследника - структуру Корреспонденция {Счет, Субконто1,.., СубконтоХ}, один раз пишем МодульОбъекта со всякими ПриВыбореСчета(), один раз рисуем ФормуОбъекта, со всеми Счет.ВидСубконто() и т.д.
А прикладной объект, например Справочник.ОсновныеСредства, будет у нас содержать один единственный для это дела реквизит "ЗатратыНаАмортизацию" типа Структура.Корреспонденция, доступный в контексте элемента через свой интерфейс, и доступный на форме элемента, как некая область вложенной формы.
Здесь немного о формах. ФормаОбъекта у нас имеет важную особенность - некую приватную вложенную ОбластьОбъекта, в которой нельзы размещать кнопки действий типа Записать, Закрыть, ислючительно данные объекта и контролы, связанные с данными объекта, в том числе панели инструментов.
ОбластьОбъекта таким образом, является ее основной частью, которая может быть вложена в формы владельцев Класса и в формы наследуемых Классов...
Цитата: Болтун от 11 апреля 2024, 09:15Пример 2, определяемые структуры.
Пример 3. ТабличныеЧасти, памяти Марка Порция Катона.
Аппологеты восьмерки считают несомненным достоинством наличие множества ТабличныхЧастей у объекта.
Так то оно вроде и так, только зачем выпячивать ТабличнуюЧасть из списка реквизитов, если в нашем
дереве определяемых ТиповДанных это всего лишь "один из", такой же, как и Число, и Структура.
В ветке ТипыДанных-Таблица создаем наследника, нужный нам в работе класс, например ТаблицаТоваров {Товар, Цена, Количество, Сумма}. Далее, как обычно, один раз описываем его модуль (ПриВыбореТовара(), ПересчетСтроки() и т.д.), один раз рисуем форму, и вуаля, можем во все складские документы добавить хоть двадцать реквизитов ТаблицаТоваров,..,ТаблицаУслуг типа соответствующих типов Таблица.ТаблицаТоваров и так далее.
К слову, ОбластьОбъекта в этом случае имеет право на свою ПанельИнструментов...
Что же мы имеем в итоге?
Учитывая, что в процессе развития прикладной конфигурации то и дело возникает необходимость "копнуть назад", например, добавить копейки, увеличить количество субконто в плане счетов, добавить НДС в складские документы, нам не потребуется бегать по всем прикладным объектам, достаточно поправить нужный нам ТипДанных/Класс, и ффсё...
ООБД таки, ептыть.
Ффсё, перерыв.
Ля... концептуальные посты... Респект!
Цитата: АЛьФ от 11 апреля 2024, 10:11Ля... концептуальные посты... Респект!
Спасибо, Алексей Леонидович!
Ваша оценка, как специалиста, который давно и плотно в этой теме, мне очень важна.
Это вдохновляет на новые подвиги, в отличие от неодуманных реплик, после которых, признаюсь, руки немного опускаются.
Эти посты - вторая причина, по которой я у Вас в гостях.
Представьте себе только, что я начну писать такие апокрифы на ИС, или даже на Icpp.
Там руки даже и не подымутся. Анафема будет навеки.
"Понятно что здорово, но здорово непонятно!" :o
Цитата: Arbuz от 10 апреля 2024, 17:581срр... на текущий момент это такой же неотъемлемый костыль для клюшек как и формекс. Я бы сказал штатный.
Не как ответ автору, а так, к слову.
Icpp входит в мой список обязательных для внедрения компонент.
В первую очередь меня интересует в ней класс MetaDataWork, доставший в наследство, насколько я понимаю, еще из Rainbow. Мне он нужен для получения идентификаторов Журналов, ОбщихРеквизитов и прочих метаданных, чьи идентификаторы я не могу извлечь обычным способом ЗначениеВСтрокуВнутр.
Мог бы обойтись и АктивМД, но там какие-то косяки есть, чего-то не выдает, не помню уже.
В дальнейшем я использую эти идентификаторы для РасшМетаданных, непосредственно в Предприятии,
для синхронизации с метаданными и собственно для безошибочного доступа к ним из прикладных объектов.
И уже на базе РасшМетаданных я разворачиваю
необходимый мне для работы функционал, например,
ПредопределенныеЭлементы, ПриоритетныеЭлементы, Подмножества, Словари и СловарныеСвязи, ТиповыеДокументы, ПериодическиеРеквизитыДокументов и тому подобные.
Так вот, ключевая мысль: всё, что я привношу в конфигурацию, оцениваю критерием необходимости и достаточности, не для меня любимого, а для абстрактного разработчика, возможного приемника.
Наследовать в общем-то и нечего, проблемы повторения кода нет, пара-тройка функций в глобальном модуле, и забыл.
Так стоит ли ради этой пары-тройки функций разворачивать defcls, и обрекать твоего преемника,
возможно совсем неподготовленного к таким абстракциям, на головные боли?
Вопреки сложившемуся стереотипу, я лично не втречал ещё ни одной конфигурации, которая бы не могла обойтись без классов.
Цитата: Злоп от 11 апреля 2024, 12:34"Понятно что здорово, но здорово непонятно!" :o
Будете смеяться, элементы концепции ООБД есть уже в семерке.
Вот, например, Документ хранится в общем случае с двух таблицах,
в одной Шапка, а в другой ТабличнаЧасть.
А мог бы лежать и в трёх таблицах, кроме таблицы-шапки и таблицы-табчасти, могла быть и общая таблица для всех документов, эдакая таблица Класса. В эту таблицу можно было бы положить ИД, НомерДок, ДатаДок и .. ОбщиеРеквизиты. Я подозреваю, что ЛюдиВЖелтом об этом думали, но по каким-то причинам отказались, и решили ОбщиеРеквизиты добавлять и синхронизировать по всем таблицам-шапкам.
Так вот, в случае реализации трех таблиц для документа, это вполне бы походило на первое приближение к ООБД, если не рассматривать табличную часть как отдельный класс.
Цитата: Болтун от 11 апреля 2024, 15:00Цитата: Злоп от 11 апреля 2024, 12:34"Понятно что здорово, но здорово непонятно!" :o
Будете смеяться, элементы концепции ООБД есть уже в семерке.
Вот, например, Документ хранится в общем случае с двух таблицах,
в одной Шапка, а в другой ТабличнаЧасть.
А мог бы лежать и в трёх таблицах, кроме таблицы-шапки и таблицы-табчасти, могла быть и общая таблица для всех документов, эдакая таблица Класса. В эту таблицу можно было бы положить ИД, НомерДок, ДатаДок и .. ОбщиеРеквизиты. Я подозреваю, что ЛюдиВЖелтом об этом думали, но по каким-то причинам отказались, и решили ОбщиеРеквизиты добавлять и синхронизировать по всем таблицам-шапкам.
Так вот, в случае реализации трех таблиц для документа, это вполне бы походило на первое приближение к ООБД, если не рассматривать табличную часть как отдельный класс.
Есть такая таблица - 1SJOURN.
Цитата: АЛьФ от 11 апреля 2024, 15:18Есть такая таблица - 1SJOURN.
Ну вот, садись, Эдик, 2!
Да, мозг уже не тот, я ж говорил, надо готовиться к урокам. (
Откуда мне приснилось две таблицы?
Теперь точно, можно смеяться.
Цитата: Болтун от 11 апреля 2024, 15:40Откуда мне приснилось две таблицы?
Теперь точно, можно смеяться.
- товарищи солдаты, вода кипит при 90 градусах!
- тщ прпарощик, вода кипит при 100 градусах!
- а, точно.. это я с прямым углом перепутал...
Садись, тебе двойка! ;)
100 градусов работает на уровне моря (да и то это слегка колеблется в зависимости от давления, и это усредненная величина), на 3000м поднимись вверх и будет тебе кипение при 90 градусах.
А вот про крокодилов, которые низенько летают - все чётко сказано!
Цитата: Djelf от 11 апреля 2024, 16:28Садись, тебе двойка! ;)
100 градусов работает на уровне моря (да и то это слегка колеблется в зависимости от давления, и это усредненная величина), на 3000м поднимись вверх и будет тебе кипение при 90 градусах.
А вот про крокодилов, которые низенько летают - все чётко сказано!
Как там по классике? "Сам топи урановый лом в ртути!"
Цитата: АЛьФ от 11 апреля 2024, 16:35Как там по классике? "Сам топи урановый лом в ртути!"
Это я могу! Я по первому образованию химик, хотя тут надо быть физиком.
Главное чтобы не
урановый нефритовый стержень в ртуть макать...
Цитата: Djelf от 11 апреля 2024, 16:28А вот про крокодилов, которые низенько летают - все чётко сказано!
- тщи солдаты, пушка стреляет вот так: (чертит параболу)
- тщ прапорщик, это что получается: если пушку положить набок, можно из-за угла стрелять..?!
- хм.. можно... НО СОВЕТСКИЙ СОЛДАТ ИЗ_ЗА УГЛА СТРЕЛЯТЬ НЕ СТАНЕТ!
Болтун - находка для шпиона!
Цитата: Djelf от 11 апреля 2024, 16:51Главное чтобы не урановый нефритовый стержень в ртуть макать...
Гы, это будет весьма
занимательно затруднительно, учитывая плотность ртути. И, в целом, чистая металлическая ртуть не такая уж и токсичная, как ей приписывает молва. Я как то, было дело, руки в ртуть погружал ради интереса.
Да, друзья, так облажаться ещё уметь надо.
Непоправимый удар по авторитету.
А какой же авторитет может быть под таким ником?
Такой себе.
Ток и вы уже не вредничайте, я ж много чего пропустил.
На dorex и ИС только заглядывал.
Скажите мне, темному, может кто на просторах таки копает в сторону ООБД?
Может, 2С ещё где-то в гараже рихтуют?
Честно, ну очень хочется, как говорит один мой знакомый, мозг встряхнуть.
Цитата: Болтун от 11 апреля 2024, 17:54Да, друзья, так облажаться ещё уметь надо.
Мы просто от скуки и/или от передозировки работой, жанглирум словами, ничего личного.
Продолжай, худо от этого не будет, хотя пока не понятно как это к клюшкам применить...
Цитата: Djelf от 11 апреля 2024, 18:04Продолжай, худо от этого не будет, хотя пока не понятно как это к клюшкам применить...
Не, ко клюшкам никак не применить.
И к снеговикам тоже никак.
Я прост удивился немало так на топик trdm - https://forum.dorex.pro/index.php?topic=77.0
Нифига себе, думаю, стругают ещё альтернативу?
Цитата: Djelf от 11 апреля 2024, 18:04Продолжай, худо от этого не будет, хотя пока не понятно как это к клюшкам применить...
Цитата: Болтун от 11 апреля 2024, 18:12Не, ко клюшкам никак не применить.
Можно конечно поразмышлять, как бы могла выглядеть v78 с ОпределяемымиТипами.
ООБД конечно это круто, концепция универсальная, но наши метаданные таки не в базе, а концепция семёрки таки ПОП.
Слово ПОП я правда не выдумал, такое слово есть, если не ошибаюсь, на первой странице первой книги "Описание встроенного языка". Напомню, это Предметно-Ориентированное Программирование.
Так вот, для семерки, в ПОПе, если отбросить напрочь наследование, то даже в этом случае можно получить конфету.
Для этого собственно нужно добавить в метаданные ОпределяемыеТипы, МодулиТипов и ФормыТипов.
Последние, Модули и Формы, ессесно нужно определить и для ПрикладныхОбъектов.
ФормаТипа, повторюсь, это не обычная форма, с кнопками Ок и Закрыть,
а с ограниченими, только данные и контролы для управления данными, для последующего вложения
этой формы в другие формы. Также нужно позаботится о представлениях ТипаДанных в полях МногострочнойЧасти и в контролах редактирования. Например, одно число может быть "с калькулятором", а другое с каким-нибудь выпадающим списком или другой фишкой.
Доступ в коде к вложенной форме в контексте владельца, как мне думается, мог бы выглядеть как Реквизит.Форма, как мы привыкли, через вложенный контекст ТипаДанных.
Здесь в общем, я пас, на форуме формекса можно с этим вопросом снова крепко облажаться.
Цитата: Болтун от 12 апреля 2024, 09:17мог бы выглядеть как Реквизит.Форма
Вот, уже неправильно, лучше будет как Форма.Реквизит, так получаем ФормуТипа.
Что касается Модуля, как возможного интерфейса ТипаДанных, здесь у меня тоже не хватает компетенции, каким образом научить платформу по ссылке обращаться к методу модуля, обозначенному как Экспорт.
Напомню, это собственно тема этой ветки, Товар.Цена().
Как мне кажется, здесь без предварительной компиляции всех модулей не обойтись.
ОпределяемыйТип в v78 может и даже должен иметь не только ФормуТипа, но и ТаблицуТипа, как область табличного документа, которая также может быть вложена в таблицы других типов.
Здесь, признаюсь, я вообще никогда не копал дальше, поскольку не представляю себе формат Таблицы, и каким образом это может использоваться.
Искал вчера свои тетрадки, записки сумашедшего, подозреваю, что они стали жертвой юных сборщиков макулатуры.
Кстати, насчет шпионов, за бугром уже есть и давно полностью реализованные ООСУБД.
Но и v78 тоже было бы неплохо.
Представьте, мы описали трехмерный массив необходимой структуры, и начали на платформе моделировать сложные геометрическые объекты. Автокад отдыхает.
Цитата: Болтун от 12 апреля 2024, 08:40Модули и Формы, ессесно нужно определить и для ПрикладныхОбъектов.
Вернусь в свои бухгалтерии, в прикладные объекты.
Зачем нужны прикладным объектам ещё какие-то новые ФормыТипа, есть своих уже некуда девать?
На первый взгляд, это чушь собачья, выносить на форму элемента справочника форму другого элемента, но нет, это не только должно быть возможно, это должно быть прянято как вполне нормальная практика.
Поясню на примере, Справочник.Контрагенты и его РасчетныеСчета. В подавляющем большинстве случаев у Контрагента в наличии всего один РасчетныйСчет, тогда на кой хрен городить в форме Контрагента СпискиЗначений?
Можно разрешить эту дилему простым способом, более понятным для бухгалтера - вынести на форму Контрагента форму ОсновногоРасчетногоСчета, не ссылку, на именно ФормуОбъекта. Платформа должна понимать, что в открываемой Форме есть вложенные прикладные Объекты или ТипыДанных, и ПередПередОткрытием раскручивать дерево блокировок в соответсующих таблицах, в ПриЗаписи применить транзакцию на запись всех используемых объектов.
Ну, а если кому надо два расчетных счета, пожалуйста - есть подчиненный справочник.
Более того, если вынести на форму Контрагента ОсновнойРасчетныйСчет и как Ссылку, и как Объект, то придётся задуматься и о динамической смене владельца вложенной формы.
Конечно, нужны ясные правила для такого поведения формы, но в целом и такую возможность считаю необходимой, например для реквизитов неопределенного вида...
Цитата: Болтун от 12 апреля 2024, 12:01Конечно, нужны ясные правила для такого поведения формы, но в целом и такую возможность считаю необходимой, например для реквизитов неопределенного вида...
Действительно, как быть, если вид элемента заранее не определен, и форма его заранее неизвестна?
У Подразделений данных кот наплакал, а у Контрагентов и Сотрудников вона сколько всего, гляди, и на нашу форму не налезет, в отведённую им область.
Здесь надо на минутку забыть, что мы в ПОПе, и отбросили наследование напрочь.
Вовсе и не отбросили, просто ПОПа была не та.
Доколе в метаданных ветки Справочник, Документ и прочие будут пустым местом, плюсиком для галочки?
Они просто обязаны иметь свою ФормуОбъекта, наследуемую всеми видами справочников.
Эта форма не только определит нам рамки для контролов, но и может задать и более интересные свойства, переходящие по наследству, например, ПанельИнструментов, ПанельДействий и ещё чего ещё не придумал.
Вот вам и наследование, эдакое лайт, в один шаг. А может, и не в один.
А МодульОбъекта? Мы так жаждем от АЛьФа новых Глобальных Предопределённых процедур, что забыли вовсе,
что такое полиморфизм. Так почему бы мне не переопределить в МодулеОбъекта типа Справочник системный метод Записать(), и таким образом влиять на поведение всех видов справочников? Ну, а в Модуле конкретного вида напрашивается возможность и переопределить метод "папочки".
Вот вам и полиморфизм, самый настоящий.
Не об этом ли спрашивал Злоп намедни?
К сожалению, в v7 так нельзя, а вот в v78 могло бы быть...
А теперь короткая разминка.
Наши пальчики писали, наши пальчики устали.
И вопрос классу, кто правильно ответит, тому десять лайков.
Кто мне скажет, почему я могу писать где угодно Товар.Цена.Получить(ДатаДок), но не могу написать Товар.Цена()?
ЗЫ: АЛьФ, не нужен мне никакой блог, мне уже и здесь хорошо, тихо, тепло и мухи не кусают.
Перед тем, как разобрать пример вложения форм документов, хочу сказать пару слов об этом прикладном объекте, рассмотреть его, как говорят, под лупой.
Наряду со Справочником, Документ давно кочует из одной версии платформы в другую.
Я работал с v6 и не знаю, каким Документ был раньше, но суть его с тех пор так и не поменялась.
Продекларировав в своё время принцип учёта "от первичного документа", Компания стала заложником
этой идеи, а такой принцип ведь изначально был тупиковым.
Это не трудно понять, взглянув на список видов документов в вашей конфигурации.
Что это за первичные документы - ВводНачальныхОстатков, НачислениеАмортизации, ЗакрытиеМесяца?
Может, у нас есть такая первичка как ОС-1 и ОС-2? Нет, вместо него ПоступлениеОС и ПеремещениеОС.
Может, у нас есть ТТН? Нет, вместо него ОтгрузкаТоваров. А где вообще Договора?
Дело в том, что в Документ попытались вложить две совершенно разные сущности, ПервичныйДокумент и ХозяйственнуюОперацию. В действительности у них мало что есть общего, разве что Номер и Дата, и тот и другой хотят нумеровать и видеть в хронологическом порядке.
Я таки восстановлю правильную терминологию, красоты ради, и далее буду называть ПервичныйДокумент Документом, а ХозяйственнуюОперацию Операцией, только пожалуйста, прошу не путать её с БухгалтерскойОперацией, о ней чуть ниже.
Документ действительно есть отражение в учете документа первичного, со своими уникальными категориями (входящий, исходящий, ...), состояниями (на подписи, подписан, подшит, ..), и другими свойствами, о которых лучше расскажет специалист по документообороту. Наконец, все Документы обычно разложены по папкам, чего порой так хочется видеть в окне Предприятия. Попытка реализовать Документооборот на Справочниках это тяжелая задача, взять хотя бы отбор за период, нам подобные индексы не доступны, но в принципе-то, между Документами и Справочниками гораздо больше общего, чем с Операциями. И те, и другие есть элементы, предназначенные для хранения условно-постоянной информации.
Операция же, в свою очередь, есть отражение в учёте хозяйственной операции предприятия, событие, точка пространственно-временного континуума, если хотите, в результате которого что-то должно измениться в наших учетных регистрах. Тот самый Регистратор, которого никто не видел, но он есть. В том числе и первичных документов, и может менять их состояния. Зачастую Операция даже не знает, с каким видом Документа ей придётся иметь дело. Так при ОтгрузкеТоваров, может быть оформлена как форма ТТН, так и форма ТН*, опять же дилема...
Короче, Документ и Операция должны быть разделены в разные прикладные объекты.
Совмещение этих сущностей в одном флаконе уже привело к парадоксальным (я бы даже сказал крепче, но вдруг кто расстроится) ситуациям. Так, стало в порядке вещей определять ВидСубконто типом Документ. Оно вроде "а почему бы и нет"? Но когда в собственной БухгалтерскойОперации Документ проводит самого себя, я отказываюсь принимать такой учёт. Эта рекурсия имхо на грани профпригодности. И это делают не где-нибудь в Малорите, а там, наверху, в типовых конфигурациях. А что, ручные операции уже отменили? Или ввод начальных остатков уже не актуален, все кому надо уже ввели?
Так вот, далее в моём конфигураторе Документ и Операция это разные прикладные объекты.
Моя v78, что хочу, то и делаю.
И Компании рано или поздно придётся навести порядок в своей идеологии.
Что касается БухгалтерскойОперации, здесь я в общем согласен с работодателем, особой необходимости в ней не вижу, поскольку Проводки уже сами умеют разбегаться по разным периодам...
Регистратор, блин. Ну и слово придумали.
Подхожу вот я к бухгалтеру к грю: "ну-ка, Валя, создай-ка новый регистратор", а у неё прям очки с ушей, а я такой: "да ты чё, лошара, учи матчасть, они ж регистры двигают, понимать надо!".
Вот, другое дело, история, как Че стал однажды недобрым человеком.
Жил-был парень, молодой и добродушный, лезли к нему все, помоги да помоги, ты же добрый, ты же
Чебурашка, а он, добрая душа, и помогал, а на стотысячный раз подумал, а че это я им всем помогаю-то, а они вон сидят, чай пьют и ржут, с меня наверное, и вот подошёл как-то раз один коллега, помоги грит тут, Чебурашка, в конфигураторе, ты же добрый... и тут родился ОН, встал, взял коллегу за лицо, и херась об стол, херась, херась, и приговаривает, Чебуратор я, сука, Чубуратор, и пендаля в догонку...
Я вообще поражаюсь, какие дебилы в Компании за названия своих гаджетов отвечают.
Взять вот, объект Периодический. Они в школу вообще ходили то? У меня пальцы не слушаются кнопки такие жать. Я ж с синусами на ты. Какой нах курс Периодический, когда он всё время вверх растёт?
Ну, назови Хронологический. Бугага. Че, хроны типа некрасиво? Ну тогда мот ВремяЗависимый.
Тож не катит? Как у вас в книжке там, "условно-постоянные"? Вот, БезУсловноНеПостоянный тогда.
Не, один взял пернул "периодический", и все такие, ага, звучит, берём, молоток, премия. Придурки.
А вот, Таблица. В программе, которая работает с БД, назвать такую херню таблицей?
У нас тут чё, таблиц мало? Не, этож другое. Та вон - ТаблицаЗначений у нас, а вон эта, сбоку которая, ТабличнаяЧасть называется, а ещё вверху есть - Многострочная.
А в Базе у вас ессесно, РеляционнаяТаблица?
Это как понять? Эксель навеял? На табличный процессор смахивает? Так навовите ШахматноеПоле, E2E4, или МорскойБой, там такая же херня.
Агрегатные типы данных, этож вообще новое слово в науке. В механике тока.
Я вон как сказанул "агрегат", программисты поперхнулись, с такими гаджетами только на мехдвор.
Это чево такое? Может, таки Классы?
Не, какие Классы, ты чё, газет не читаешь, у нас не какой-нибудь ООП, у нас Предметно-Ориентированое!
- Пипец как круто звучит.
- Концепция, брат.
- А че за концепция-то?
- Концепция, брат.
- Так объясни толком.
- Концепция, брат...
Нет никакой концепции. Чтобы говорить о концепции, нужно начинать с терминологии.
Ну, а если в гугле поискать, конечно, можно и диссертации найти,
по теме "Концепция 1С в контексте хронологических таблиц".
Надо ник поменять.
...Когда благому просвещенью
Отдвинем более границ,
Со временем (по расчисленью
ФилософическихТаблиц*,
Лет чрез пятьсот) дороги, верно,
У нас изменятся безмерно:
Шоссе Россию здесь и тут,
Соединив, пересекут.
Мосты чугунные чрез воды
Шагнут широкою дугой,
Раздвинем горы, под водой
Пророем дерзостные своды,
И заведёт крещёный мир
На каждой станции трактир...
Люблю поэзию, как красивый код.
Красавчик Александр Сергеевич. Ас.
Первый программист на Руси, такого накодировал, дай Бог пережить нам всем.
Никак вот ник себе не мог подобрать.
Буду Пиит, чуток математики, чуток информатики.
Не занят ещё? Может, есть уже в какой мисте известный персонаж?
Не перенесу ещё один удар от классиков.
Встречайте.
Отчего иной поэт
Жаждет столь внимания?
Это, братцы, не секрет -
Есть такая мания:
Вечерами, сняв портки,
Побродить околицей,
Чтоб плевались мужики
И смущались школьницы...
* Имеется в виду книга французского статистика Шарля Дюцена (1784-1873)
"Производительные и торговые силы Франции", где приведены данные о состоянии
экономики европейских стран, в том числе и России.
Цитата: Пиит от 11 апреля 2024, 17:54Может, 2С ещё где-то в гараже рихтуют?
наверняка.
Теперь могу рассмотреть вложение объектов и форм на примере ОтгрузкиТоваров и ТТН.
В прошлый раз я разделил ДокументV7 на два различных прикладных объекта конфигурации,
непосредственно Документ, со знакомыми нам НомерДок и ДатаДок, у которого я изъял функцию
регистратора в привычном нам понимании, и Операцию, как регистратор хозяйственной операции, со
знакомыми нам НомерОперации и ДатаОперации, благо от БухгалтерскойОперации я, как и Компания,
отказался, но, как видите, вовсе не изгнал этот термин из конфигурации, а напротив, "повысил в звании".
Вначале рассмотрим ТТН. Классический документ, с массой собственных реквизитов как шапки - Грузополучатель, ВремяРазгрузки, так и табличной части (нашей Таблицы из соответствующий ветки метаданных ТипыДанных) - Товар, Цена, МассаГруза, КолГрузовыхМест, Примечание и т.д.
Здесь всё вроде понятно. В v8 такая струткура могла бы быть вполне и элементом справочника. Но нет, а на кой тогда прикладные объекты в принципе нужны? Эта сущность вполне себе востребована.
Мы можем предварительно создать ТТН в ЖурналеДокументов и положить его на стол.
Здесь может быть вопрос из зала "и это всё, а где проводки на?"
Переходим в ЖурналОпераций. Или, что более удобно, на основании нашей ТТН создаем Операцию ОтгрузкаТоваров, и видим ... привычную для нас Форму отгрузки товаров, в шапке поля НомерОперации и ДатаОперации, снизу кнопка Провести, а между ними практически всю остальную форму Операции занимает область формы нашего Документа ТТН.
И эта вложенная форма совсем не в режиме ТолькоПросмотр, пожалуйста, можете подправить при необходимости всё, что угодно.
Бред, скажете вы? Нет, это вложение Объектов и их Форм.
Более того, мы могли бы и не создавать Документ ТТН предварительно, а сразу в ЖурналеОпераций создать новую Операцию ОтгрузкаТоваров, и оформлять ТТН уже непосредственно в Форме Операции, почему нет?
ПриЗаписи Операции мы создаем одновременно с ней самой ещё и Документ, как Документ в свою очередь ПриЗаписи создает новую ТаблицуОтгрузкиТоваров в соответсвующих ей таблицах БД.
Конечно, вы скажете здесь, что это разные вещи. Таблица-то есть ТипДанных, пусть и составной, а с Документом, как и с Элементом справочника нельзя вытворять такие фокусы, создавать его из другоо объекта, ссылочная целостность там и всё такое, и что же будет, если отменить проведение.
Вот здесь и следует рассмотреть поближе, что же такое Регистратор, и можно ли это слово писать с большой буквы...
Цитата: Пиит от 14 апреля 2024, 07:11Вот здесь и следует рассмотреть поближе, что же такое Регистратор,
Перед тем, как определить место для слова "регистратор" в нашем словаре, нужно немножко копнуть.
Что такое "ссылка"?
Является ли Ссылка сама по себе у нас отдельной сущностью?
В языках, в общем, есть такой тип данных, указательный, и там имеет право на жизнь.
А в базах данных, где практически любая запись в таблице имеет свой уникальный идентификатор, вне независимости от "ссылочной целостности" и идеологии Компании, что такое ссылка?
А в концепции ООП, где кажный объект априори раскладывается по заранее неведомым объемам и закоулкам на просторах оперативной памяти, и без ссылки на него собственно концов не найдёшь, это что, что-то особенное?
Вот здесь Компания имхо и нагородила в v8 очередное не до разумение.
В v78 Ссылка - это фундаментальное свойство любого ТипаДанных, вертикально интегрированное понятие, и в списке ТиповДанных конфигурации вы не найдёте такой ветки.
Конструируя любой объект, Справочник, Документ и т.п., у вас нет нужды ломать голову, Ссылку вы хотите добавить в список реквизитов, или Объект. Любой Объект, добавленный в ваш список, будет иметь ссылку, а любая ссылка позволит вам использовать ее Объект для своих целей.
Здесь Форма, как это ни странно, имеет определяющее значение для поведения Машины, а ваша задача - заниматься моделированием сущностей, не отвлекаясь на такие головоломки.
Таким образом, один и тоже Реквизит можно разместить на Форме и как Ссылку, и как Объект, в зависимости от целеполагания, а уже Машина либо будет блокировать вложенный Объект в базе данных, либо в этом не будет необходимости.
Помимо Ссылки, есть ещё одно фундаментальное свойство любого Объекта/ТипаДанных, я назову его Владелец, несмотря на то, что Компания так же очень любит это словечко. А мы не будем путаться в терминах Владельцев и Родителей, оставим таки слово Родитель таким, как оно используется в ООП, для Классов и наследования.
Итак, Владелец - это фундаментальное свойство Объекта/ТипаДанных, ссылка на конкретный вышестоящий Объект/ТипДанных, которому сам объект принадлежит всецело, и не может принадлежать одновременно другим Объектам/ТипамДанных.
Это относится конечно в первую очередь к нашей ветке ТипыДанных.
Для сложных Определяемых ТиповДанных, начиная со Структуры, для Массива, Списка, Таблицы и т.п., Объект является Владельцем для соответсвующих записей в таблицах БД, и кроме как своему Владельцу, они больше то никому и не нужны. Как вот ТабличнаяЧастьV7, кому она здалась, кроме как своему ДокументуV7? Ессесно, все эти записи должны иметь и ссылку на объект-владелец.
И все они создаются и удаляются вместе со своим Владельцем, а Владельцем может быть не только ПрикладнойОбъект, но другой ТипДанных, поэтому при блокировках и транзакциях следует рассматривать целое дерево вложенных объектов.
И Ссылка, и Владелец не подлежат изменению ни в Предприятии, ни кодом в Конфигураторе, это, повторюсь, фундаментальные свойства для связи Объектов и таблиц, предназначены для исполняющей Машины, но могут быть получены в любом объекте "для чтения", как-то Объект.Ссылка и Объект.Владелец соответсвенно.
Есть в конфигурации Объекты, для которых Владелец может быть не указан, или указан как ссылка, некий ГУИД КорневогоОбъекта конфигурации, над этим надо ещё подумать.
Это в первую очередь ПрикладныеОбъекты -Справочник, Документ и.д.
Вот ним и относится в полное мере правило "ссылочной целостности"...
Беда, ребята, похоже профукал таки я свои тетрадки.
А память уже не та, боюсь, разложение МетаКлассов по таблицам уже и не восстановлю.
Цитата: Пиит от 14 апреля 2024, 09:52Это в первую очередь ПрикладныеОбъекты -Справочник, Документ и.д.
Вот ним и относится в полное мере правило "ссылочной целостности"...
И наконец-то, про Регистратор.
Но перед этим, по традиции, небольшая история.
Одним из первых моих предприятий была старейшая в районе птицефабрика, год основания которой даже старожили не могли точно назвать. Самые жёлтые формуляры основных фондов указывали на 48-й послевоеный год. Ну и, как полагается, в техзадании по учету основных средств, одной строчкой была запись об автоматическом формировании карточки ОС. Тоже мне задачка, думал я, выдеру что надо из типовой и все дела. Но бухгалтерия там оказалась та ещё, с черными нарукавниками, и когда я показал пустую печатную форму ОС-6 с наименованием, инвентарным номером и балансовой стоимостью, услышал неожиданный для себя спич: "А где разделы "движение основного срества", "модернизация", "ремонт", "состав", "характеристики" и наконец, где данные ежегодной переоценки? Простите, но нам такая механизация не подходит!"
- Так этих данных нет в программе!
- Таки мы внесём, скажите только куда?
- Так там же тыщи формуляров с 40-х годов!
- Таки да, а в чём вопрос то?
Вопрос конечно интересный, а куда вносить-то? Плодить документы "МодернизацияОС",, "ПереоценкаОС" и т.д. за все годы?
С этой проблемой я разобрался быстро и красиво - набор подчиненных справочников образца [ДатаЗаписи,..., Документ] в соответсвии с разделами ОС-6, и... карточка готова. Фишка была в том, что часть записей предполагалось ввести вручную, как начальные сведения, и без особых напряжений, в дальнейшем же соответсвующие документы в ОбработкеПроведения создавали записи уже самостоятельно, а в ОбработкеУдаленияПроведения эти записи полностью удалялись. Редактировать записи, созданные документом, во избежание блокировки было запрещено, ПриОткрытии открывался непосредственно сам документ, а ручные записи - пожалуйста, создавай и меняй сколько хочешь. В обшем, как в истории периодического реквизита, я прозвал тогда эти справочники "историей элемента".
Ура?
Стоп.
Вот пройдёт столько-то лет, пополнятся сведениями эти регистры, разбухнет база, кто-то захочет провести свёртку, и удалит ведь ко всем чертям все новые данные вместе с документами. И что, опять несколько человеко-месяцев сядет оцифровывать пожелтевшие формуляры?
Вот тогда-то я и задумался, а должны ли в принципе записи в подобных случаях вообще удаляться?
И впервые тогда нарушил идеологический постулат Компании - обратимость проведения документа. Мои записи в подчиненных справочниках перестали исчезать, они только стали менять, как умели, своё состояние вместе с состоянием документа, а процедура их создания переместилась из модуля документа в форму, где ПриЗаписи, в общей транзакции, сохранялся как документ, так и "подчиненные" записи. И к свёртке я подготовился, черканул обработку для "дерегистрации" всех записей от документов-регистраторов. Уже не так красиво, правда?
Вот так, за одной малекой строчкой в техническом задании скрывалась цельная концепция.
Так я и пришёл к понятию "регистратор", как и многим другим, решая задачи "на земле".
Итак Регистратор - это функция ПрикладногоОбъекта, наделяющая его правом подчинения других ПрикладныхОбъектов собственным интересам, включая право на содержание, состояние и жизненный цикл последних.
Можно сказать и по другому:
Регистратор - это свойство ПрикладногоОбъекта, ссылка на другой ПрикладнойОбъект, который обладает правом для подчинения самого объекта собственным интересам, включая право на содержание, состояние и жизненный его цикл.
Можно сказать и по третьему, и по десятому, суть не изменится.
Зачем я так издеваюсь над этим термином?
Этим я хочу подчеркнуть, что понятие Регистратор применяется исключительно к ПрикладнымОбъектам и не имеет никакого отношения к фундаментальным свойствам объектов.
Обратите внимание, само определение не является строгим, включает в себя такие вольные словечки как "включая", "интересы", "право". Выходит, можно включать, а можно и не включать. А закон это вообще, как в народе говорят, дышло. Здесь нужно понять и зафиксировать, что Регистратор каким мы его знаем - это не более чем однобокое порождение идеологии 1С, упрощение в первом приближении, а на самом деле логика Регистратора более сложна и разнообразна, и в общем случае она подчинена логике подчиняемых им ПрикладныхОбъектов. Бутерброд?
Поясню вышесказанное на примерах.
Является ли Контрагент регистратором для своего ОсновногоРасчетногоСчета? Нет, не является, это поведение укладывается в концепцию ООБД, это вполне легитимный способ ввода и редактирования Объекта в Форме другого Объекта. Без обязательств, по быстрому и разбежались. ОсновнойРасчетныйСчет в последствии можно спокойно открыть, изменить у даже удалить, и Контрагент об этом даже и не узнает.
А вот в случае с Операцией ОтгрузкаТоваров и ТТН - немножко другая ситуация. Здесь включается логика ПрикладныхОбъектов, и мы начнём рассуждать по логике вещей. Так, если Операция использует в своих целях данные Документа и будет проведена на его основании, должно ли при этом измениться Состояние самого Документа Проведён/НеПроведён? По логике, должно. А можно ли редактировать этот документ теперь независимо от Операции? По логике, нельзя. А как быть, если Операция помечена на удаление? По логике, пометить и Документ. А как быть, если Операция удалена?
Вот здесь и должна подключиться к логике ПрикладныхОбъектов Машина, разорвать "ссылочную целостность" между Регистратором и подчиненным ему Объектом, Операцию удалить, а Документ оставить.
В этом то и заключается ценность ПрикладныхОбъектов как базовых Классов в концепции ПОП.
Регистратор я переименовывать не буду, это сложившийся и важный для нас термин, оставим его как есть, тем более, ведь есть же у нас Регистры.
А вот термин ПОП мне уже порядком поднадоел, слово "предмет" я ни разу ещё не использовал в своих сочинениях и поэтому здесь я объявляю манифест о Прикладном Объектном Программировании, как концепции программирования в объектно-ориентированных системах управления базами данных.
Звучит?
Концепция, брат!
...
ЗЫ: Если есть "подчиненный" справочник, то главный у нех наверное большой "начальник"? Или "чиновник"? Как лучше?
Немного отвлекусь, чтобы таки окунуться в работу.
Небольшой лайф-хак по работе с подчиненными справочниками, может баян, не знаю, придумал сам, ни с кем не делился, нигде не видел, пишу здесь как-бы кстати...
В некоторые подчиненные справочники, такие как Договора, Партии и т.п. добавляю реквизит ИсконныйВладелец, дубликат Владельца, с Отбором. Значение этого реквизита устанавливается ПриЗаписи элемента, и на протяжении жизненного цикла не изменяется. Что в итоге имею?
1. ПриСменеИерархии, точнее при отключении таковой, принудительно включаю отбор по ИсконномуВладельцу, что позволяет искать Договора одного Контрагента вне зависимости от их групп в справочнике.
2. Выношу ИсконногоВладельца на специальную форму ВсеДоговора с отключенной иерархией, в хронологическом порядке, где пользователь видит, чей это договор, и может в целом проводить аудит Договоров, проверяя некие состояния типа Подшит/НаПодписи, наличие прикрепленных сканов и т.п..
3. Даю возможность пользователям одним движением "архивировать" Договора и Партии, меняя при этом Владельца подчиненного Элемента, не этого "исконного", а того самого "системного". Таким образом пользователь избавляется от неприемлемо больших списков, но может посмотреть "архивные элементы" при отключенной иерархии в обычной форме (см.п.1). В качестве "архива" используется специально обученный Контрагент. Ессесно, операция обратима, можно и извлечь из "архива" нужную запись. Так же есть обработки для "массового архивирования" незамеченных за последнее время в бухгалтерских итогах элементов. И кое-где даже с разложением "по папкам" внутри "архива".
К слову, похожим образом, с помощью реквизита "ИсходныйРодитель", в больших неподчиненных справочниках я использую "Корзину", как специально обученную группу справочника.
Может кому пригодится.
Цитата: Пиит от 15 апреля 2024, 13:19Небольшой лайф-хак по работе с подчиненными справочниками
Не могу остановиться. Ну просто обожаю подчиненные справочники.
Ещё немного "сняв портки, поброжу околицей" вокруг этой птицефабрики.
Потерпите немного.
Там же и тогда же я выделил ещё одну разновидность подчинённых справочников, со структурой образца [ДатаЗнач, Ревизит1, Реквизит2,..]. На них я реализовал историю знакомой нам субстанции Счет,,СубконтоХ. Полагая, что в режиме реального времени как правило будут востребованы последние значения, и в целом, основное средство не часто меняет своою дислокацию, я не парился о количестве итераций, и простым перебором "с конца", получал запись истории значения. Сами же реквизиты Счет и Субконты и вовсе изъял из владельца, в знак уважения к Эдгару Кодду. Тем не менее, форму ОС я не обделил, разложил на ней Счет и Субконты как псевдо-реквизиты,
как атрибуты Формы. Подменил также типовую обработку ЗаписьПериодическихРеквизитов на более продвинутую ЗаписьПериодическихСведений. И блокировки подтянул до логики периодических реквизитов, если Владелец заблокирован, нельзя внести запись непосредственно в справочник.
В общем, реализовал в полной мере периодический регистр сведений, и даже умудрился связать такие подчиненные справоники именно с этим словом - ПериодическиеСведения. Использовал эти конструкции и для справочника Сотрудники, и ещё Бог знает где.
И будущие планы видов характеристик, прости Господи, я тоже мастерил на починенных справочниках.
И даже первые наброски аля журналов расчетов на бухгалтерской компоненте я моделировал на подчиненных справочниках, но быстро отказался, и полез по уши в проводки.
Представьте теперь, что я думал о Компании, когда впервые закрывал окно конфигурации в свежеиспечённой платформе v8.
А как его впервые открывал, дрожащими руками, сердце стучало, как рельсы под скорым Брест-Москва.
И что я увидел? РегистрСведений, который может быть только "или-или"? Или заполняется вручную, или подчинён документу. Это как? На кой мне такое? Многомерным стал? Так мы и не такие Функции уже освоили, и не благодаря вам, господа хорошие, а вопреки, или да, благодаря вашему упущению в виде ЗначениеВСтрокуВнутр. Да, да, именно Функции, в N аргументов, и Запрос нам здесь в помощь, кто не знает, есть там такой метод Получить(<ЗначениеГруппировки1>,...,<ЗначениеГруппировкиN>), прямое позиционирование на запись в выборке, очень кстати при обработке большого числа записей...
Знаете, каким был мой первый пробный ПланВидовХарактеристик? Валюты и Единицы измерения.
Я реально обрадовался, думаю вот, хоть что-то дельное, пользователь сможет регулировать точность Валюты и ЕИ, наконец-то, не дело ведь когда белки с копейками а штуки с тысячными. Ага, держи карман шире, "неверный типа данных".
Проводки, добавили ресурсы, хорошо, теперь можно наконец реализовать без извратов количественно-весовой учёт поголовья, только называться они должны "измерители учета", так они прописаны в толмудах по бухучету, и бывают они натуральными, трудовыми и денежными. Я их уже реализовал, без "ресурсов". Правда, в очередном релизе v7, после 14-го вроде, оказалось, что Запрос перестал поддерживать произвольные числовые реквизиты проводки в собственных функциях ДО() и КО(), бывает, что делать. Из какой же предметной области слово это - "ресурсы"? Опять своя идеология? Опять всё под одну тупую гребёнку?
В общем, новая платформа оказалась самым большим разочарованием в моём жизненном цикле.
И где таки догожданное ВыбратьВПромежутке("Наименование", "от А", "до Х")?
Владимир Ходаков ака hoqik, первопроходец в области замены движка БД, тоже помню ругался, на чём свет стоит. Он ведь прикрутил в своё время свой ext в v7 для таких радостей жизни. И вот скажите, индекс то есть, ничего нового не нужно, дайте только доступ к нему, дайте мне эту ВыбратьВПромежутке. Это что, концепция? Имхо это тупая упёртость рогом в свою собственную бездарность.
Так что же такое Регистры?...
ЗЫ: Друзья, если у кого есть раздражение по непоследовательности изложения, примите во внимание, что в этих записках нет системы, это не фрагменты книги, они сочиняются в режиме реального времени, и горизонт планирования не привышает одну заметку. Кто читает, потерпите, камень уже на выходе, кирпич я бы сказал, скоро пойду на второй круг, с самого начала, но на новом уровне диалектического развития.
Кто знает что про Владимира Ходакова? Жив, работает? Боюсь даже спрашивать.
Ещё картинки, в догонку.
Договор №79 я подпишу в этом месяце с новым клиентом. На фрилансе. А сколько их было "во франчах", уже не берусь вспомнить. Моя птицефабрика, два АПК, и все заводы-пароходы остались там, "во франчах".
В нашей стороне не говорят "фриланс", у нас говорят "ИПэшник". Когда-то было "ЧеПэшник", частный предприниматель, но, вероятно по политическим мотивам, парламентарии вскоре переименовали меня в индивидуального. А намедни наша "палата лордов" извлекла из себя очередной кирпич, по которому ИПэшники до конца 25-го года перестанут существовать как Класс. Какому-то неуёмному никак не могло уложиться в таблицу, каким образом ИП может быть одновременно и ФЛ и ЮЛ. Отныне будет всё по полочкам, ЮЛ отдельно, ФЛ отдельно в своих подмножествах юридических концепций. Имхо, идеологией-с попахивает-с.
Пишу об этом не случайно. Как "высоким лордам" не просто разобраться в своих идеологемах, так и лорды от науки порой стоят десятилетиями в концептуальных тупиках своей предметной области. Если Эдгар Кодд осилил таки в своё время обосновать концепцию РБД как математическую модель, полную, непротиворечивую и достаточную, то с концепцией ООБД не всё так радужно. Насколько мне известно, новый Эдгар на свет ещё не появился, и никто в общем нам и не раскажет "как надо". Эдакая проблема столетия Гильберта в информатике.
Вот отсюда и споры, и перетягавания канатов и топтание на месте в течение вот уже десятилетий.
Утверждал и буду утверждать, что v7 есть продукт мирового уровня. В то время, в конце девяностых, ведущие компании-разработчики СУБД, IBMы и SUNы, делали только первые шаги в этом направлении, с большой осторожностью внедряя в свои продукы зачатки ООБД. Поэтому появление на наших просторах такой платформы, включающей в себя косвенно и ООП, и одной ногой в СУБД, имхо это было событие, которое и тогда, и сейчас многие недооценивают. Нынче модно щеголять номером версии продукта, а не его содержанием. Поэтому я в общем, ругая Компанию здесь, буду с кулаками защищать её вне нашей компании, в кругу непосвященных во все недостатки и достоинства Предприятия людей.
"В твоём С1 всё не как у людей", постоянно слышал я от программистов высокого полёта. "Да вы чево, этож целая среда, база, пиши не хочу!". "Гы-гы-гы, напиши нам Дуум". А вы напишите сперва мне хотя бы учет кадров на своих плюсах, а потом издите, а погляжу, сколько времени вам потребуется на конструирование классов, таблиц и форм, а потом и подумаю, стоит ли вам вообще платить зарплату. Я так не говорил, я так думал. Потом именно мой отдел платил зарплату этим бездельникам.
Так я стал чётко понимать разницу между программистами и одинэсниками. Имхо, проблема программиста в том, что ему трудно где-то остановиться в полёте своей фантазии, летает себе в бескрайней среде классов, форм, таблиц, и по неведомым просторам. Проблема же одинэсника заключается о обратном, он заточён в одиночную камеру, крылья чешутся, и порой хочется просто взорвать эти стены и летать, летать. А если и небо видишь каждый божий день, то камера твоя превращается в пыточную. Поэтому каждая новая внешняя компонента, каждый новый квадратный метр моей камеры - это возможность немного расправить крылья. А еще лучше - сменить нах место заточения на другое, на 2С например. Эти программисты - те что надо программисты.
Не подумайте, я программистов люблю, мои друзья "теперь и в Mic и Sun", на 1сv7 не плюются, относятся с должным уважением, не без моих усилий, конечно. А те, кто поближе, даже помогают мне, например вот, с АЛьФом бороться. Я недаром вспоминал случай, когда мой товарищ признался через много лет, что только пришёл к пониманию проблематики v7. Я не смеялся над ним, я знаю, что нам, одинэсникам трудно понять проблемы программистов, а им трудно опуститься на наш прикладной уровень. А над кем смеяться-то? Над всей ИТ-индустрией с её лярдами, лабораториями и научными сотрудниками, среди которых таки не нашёлся новый Кодд, чтобы разрешить концептуальное несоответсвие ООП и РБД? Тоже мне, Гильберт выискался.
Давид Гильберт, академик, "бухгалтер" математики, был величайшим умом своего времени. Покоритель геометрии, автор "абсолютной" геометрии, свёл воедино три пространства в одно, и поставил точку в аксиоматике пространств. Это тебе не концепция ООП. А чем он известен публике? Раскручивают его за какие-то "задачи столетия". Даже голливуд изо всех сил пиарит "10 проблем века", как будто составить топ-10 это какое-то величайшее достижение.
А я догадываюсь, почему. Это как "тесла", тачка такая крутая, скажет любой нигер в любой олобаме. Нихера себе "тачка", это мать вашу, Николай Милутинович Тесла, отец современного мира электроники, и ни хера не американский, и не австро-венгерский, а сербский. Серб он, нравится это кому-то или нет. Чем же интересен товарищ Гильберт? Нет, он немец. Но если копнуть, на чьих плечах он стоял, увидим товарища Риммана, тоже немца, исследователя пространств постоянной положительной кривизны, ну а если поскребсти как следует Бернхарда Риммана, то окажется, что он быть всего лишь жалкой тенью, подражателем Николая Ивановича Лобачевского, разовавшего в своей тесной коморке Казанского университета Евклида на части и обосновавшего существование пространств постоянной отрицательной кривизны.
Как вам? Здесь уже не только идеогогией-с попахивает-с.
А на чьих плечах стоим мы? Вспомним Родителей. Что мне досталось от Родителя моего? Наследник крестьянина, пролетарского Класса, он не только оставил мне свою Фамилию и своё Отчество, мои базовые реквизиты, но и дал мне возможность расписывать здесь с умным видом свои размышления. Неплохое плечо.
Второе плечо моё здесь, это те парни, из 2С, благодаря которым я собственно и занялся этими размышлениями. Всех же своих наставников я как-нибудь ещё вспомню поимённо.
Вот, о Родителях и базовых атрибутах поговорим в следующий раз. Работать надо.
ЗЫ:
А на чьих плечах стоял наш любимый лохматый Альберт? Следите за руками - Лоренц - Пуанкаре - Минковский... дальше не продолжаю. А Милена Милошевна Марич, наверное, всем им борщи варила в это время, а её братья дров подносили.
Интересно, а на чьих плечах уселся Билли Гейтс? И кем таки работала его мама в IBM, что вдруг так вот, DOS, совместную разработку компании и военных ведомств взяли так и подарили юноше "на д/р".
А Стиви Джобс? Кто из ныне живущих знает про Стива Возняка, некого "американского изобретателя"?
Ну всё, в эту тему я больше ни ногой.
ООБД не может бывть радужной хотя бы потому, что это надстройка. а как любая надстройка-шанхай - состоит из овна и палок, допускает множество трактовок и моделей.
Цитата: Злоп от 17 апреля 2024, 12:25ООБД не может бывть радужной хотя бы потому, что это надстройка. а как любая надстройка-шанхай - состоит из овна и палок, допускает множество трактовок и моделей.
Нет, дружище, это концепция программирования.
В ранее построенной БД, уже существующей среде, можно даже сказать, в виртуальном пространстве, где не существует отдельных либов, интерсейсов, классов и даже типов данных вне этого пространства. Где с любым Классом, с любой переменной, каждой "int A" можно взять и проделать фокус "A.Save()". Где размыта разница между оперативной и постоянной памятью. Это новый мир, Злоп. Это тюрьма, о которой я мечтаю, без стен и границ.
Как-то пафосно вышло, блин. Не бузи, Злоп, потерпи немного.
Цитата: Пиит от 16 апреля 2024, 10:57ЗЫ: Друзья, если у кого есть раздражение по непоследовательности изложения, примите во внимание, что в этих записках нет системы, это не фрагменты книги, они сочиняются в режиме реального времени, и горизонт планирования не привышает одну заметку. Кто читает, потерпите, камень уже на выходе, кирпич я бы сказал, скоро пойду на второй круг, с самого начала, но на новом уровне диалектического развития.
Не-не, никакого раздражения по (не)последовательности нет и в помине. Даже интересно. Есть некое раздражение, уж простите, от того, что чудовищная часть ваших хотелок-вопросов-пожеланий закрывается уже реализованным 1срр (и современным диалектом скулайта для файловых баз). На который у вас аллергия, уж простите ещё раз за откровенность.
Вот так бывает, и Злоп прав, и я прав.
Разве так может быть?
Злоп прав, для Программиста ООСУБД это не более чем надстройка, а с точки зрения Одинэсника, ООБД это целый мир ООП, не ограниченый только ПрикладнымиОбъектами. Мы смотрим на этот шарик с разных точек, Злоп снаружи, как Создатель, а я изнутри, как муракашка. Для меня это целая вселенная, а для Демиурга - одна из моделей ООБД.
Вот в чём прикол.
Помните киношку ЛюдиВЧёрном, первую, где Билли Смит и Томми Джонс за жучком гонялись? Там в конце осьминоги шариками со вселенными в гольф играют, вот я - в шарике, а Злоп - осьминог походу. ))
Без обид, конечно, как пример.
Повторюсь, одинэсник получает в своё распоряжения то, что предложит ему разработчик, и каким будет эта ООБД, какие Базовые и Прикладные Классы заложит в неё программист, имхо нужно прорабатывать гораздо лучше, и не грех спросить одинэсника, что ему нужно.
Могу предположить, что на планёрках у Нуралиева программисты завалили авторитетом одинэсников, надавали им по шее, и пошла восьмерка нах "Дуум писать".
Идут инженер и математик по лесу.
Вдруг видят медведя.
Математик:
— Его скорость такая-то, наша такая-то, бесполезно убегать, все равно догонит.
Инженер улепетывая со всех ног:
— Его объем желудка такой-то, объем человека такой-то, мне достаточно обогнать тебя!!!
;D ;D ;D
Я всё же ещё раз призову к сдержанности в этой теме.
Это очень личная и важная для меня дискуссия "на троих", с самим собой и моим идеальным читателем.
Я очень ответсвенно отношусь к моиму изложению, сам его перечитываю постоянно, чтобы не повторяться лишь раз, чтобы планировать свои записки на ход вперёд, и болезненно реагирую на вбросы, которые в последствии мешают мне сосредоточиться.
Не скрою, я просил АЛьФа открыть блог, чтобы не привлекать лишнего внимания к своей персоне, и в соответсвующем формате, неспеша излагать мысли вслух. Блог не востребован, и я не вправе злоупотреблять гостеприимством с подобными хотелками.
Замечу также, что я не новорожденный Эдгар Кодд, что у меня нет в кармане никаких концепций, и даже общего понимания того, что я хочу сформулировать. Многое переоткрываю для себя заново в процессе продвижения своих рассуждений. Более того, не претендую ни на первенство, ни на оригинальность, ни какие-либо другие лавры, просто есть время, желание и потребность высказать кое-какие идеи по поводу гипотетического развития проекта 2С. Сформулировать проблемы, с которыми имхо неизбежно должны были столкнуться разработчики, ознакомить с ними заинтересованных в этом читателей, и возможно, привнести свою лепту в их разрешение. И наконец, просто в целях популяризации как этого проекта, как и концепции ООБД.
Приветствую в ветке юмор, конструктивую критику и ценные замечания.
Спасибо за понимание.
Господа, нас тут очень немного и я надеюсь, что мы все, как единомышленники, найдем путь не устраивать склоки и скандалы.
Итак, этот форум действительно позволяет создавать свой круг общения, т.е. вести черный список людей, чьи посты вы не желаете видеть. Смотрите приложенную картинку.
Цитата: Пиит от 17 апреля 2024, 20:49...просто есть время, желание и потребность...
Да, именно так, есть потребность. Треба. У нас в деревне говорят "трэба". "Трэба у махгазин схадзиць", - можно услышать от проходящей мимо бабули, и непременно треба с ней поздороваться, а як жаш, бо не па-людски.
На неделе у моего товарища, с которым я работаю вот уже 20 лет, случился инфаркт. Спасли, прооперировали, слава Богу, ещё повоюем. А иных не смогли спасти. И в моих друзьях не только парни, с которыми я прожил свои лучшие годы, есть и другие, где то там, в виртуальных пространствах. Порой они даже и не подозревали и не подозревают, что они мои друзья. Но они не только мои друзья, но и мои плечи, люди, которые приложили знания, силу и энергию в развитие моей вселенной. Василий Демидов, Аркадий Кучер, Василий Кушнир...
Из нашего пространства человек уходит как-бы незаметно, тихо так, часто никто их участников в реале не знаю друг друга, порой годы пройдут, пока ты опомнишься, кликнешь страничку, ну, чево там нового, чего там Вася снова выдумал? Смотришь, а Васи-то и форуме давненько не было. Может, плюнул на всё, в израили подался, на пенсию?
Ан нет больше Васи. Сложил он голову, за други своя. За меня, засранца такого.
Но нет же, вон он, вот его работы, вот его советы, вот обматерил меня, по делу значит, так жив ведь, курилка?!
Да, друзья мои, они все живы, и будут жить, пока я топчу это пространство и время.
Война то заканчивается, когда уходит последний солдат.
Почитайте вот
https://infostart.ru/1c/tools/16847/
А что же я?
Что я принёс людям в этой вселенной? Огонь?
Кто-то скажет: "Эээ, парень, да у тебя кризис среднего возраста, всё ясно..."
Назовите это, как кому нравится, у психологов терминов предостаточно.
Да, кризис. Старшие мои девочки уже разлетелись, одна в Питере, одна в Минске, осталось дома два хоббита, тоже на старте.
Есть такие периоды в жизни, когда "имеешь что сказать". Впервые я это остро почувствовал лет в 26, осознал всеми своими фибрами: "парень, тебе есть что сказать, не пора-ли заводить детей?"
Никак не могу хоббитов посадить за учёбу, но все равно надеюсь, что смогу им передать что-то важное, стать неплохим плечом, и возможно, они воплотят в свою жизнь мои несбывшиеся мечты.
Вот такое у меня сегодня утреннее настроение, братцы.
Так что, памяти всех ребят, которые сегодня не с нами, но всегда с нами, посвящается...
ПС:
Не, не, Ёпрст с нами, слава Богу, видел на днях.
Таки не поставил мне плюсик за блокировку базы.
Я всё конспектирую.
Цитата: Пиит от 16 апреля 2024, 10:57... Так что же такое Регистры?...
Оставим на время Регистры. В который раз я перелистал всю ветку, и понял, что примеров было уже вполне достаточно. Регистр таки это ПрикладнойОбъект, вернёмся к нему немного попозже. Вообще, каждого представителя семейства ПрикладныхОбъектов я хочу рассмотреть отдельно, поделить ли его, помножить ли, разбираться необходимо пристально, в контексте его назначения и ссылочной целостности, как впрочем, и представителей семейства ОпределяемыхТиповДанных.
Ссылочная целостность как термин будет в дальнейшем использоваться без кавычек, как термин из теории РБД, который существенным образом повлияет на нашу классификацию Базовых ТиповДанных/Классов, и позволит немного разобраться, каким образом следует строить дерево метаданных.
Похоже, настала пора перейти к делу, на другой уровень изложения, более строгий в терминологии и более сложный в своей абстракции от v7.
Как введение, считаю необходимым подбить здесь итоги вышесказанного, и повторить "содержание предыдущих серий".
Итак, ООБД - это БД, в которой данные Объектов содержатся вместе с данными их Классов.
Нужно заметить, что наша платформа вообще далека от слова ОО, и укладывать пока нечего.
Концепция ООБД сама по себе универсальная, но не является здесь в целом некой самоцелью, хочу такую, мама купи.
Нет, пусть над ней корпят лучшие умы человечества, как все dll-и мира запихать в эту чудное пространство, а я, как типичный одинэсник, хочу выдрать из этой "типовой" концепции то, что считаю нужным для развития платформы V7.
V7 я считаю революционным продуктом, а V8 - тупиковой ветвью эволюции.
Принцип уложения Метаданных в БД также не есть самоцель. Разницы я тут особой не вижу. Если метаданные будут как в V7, отдельно от базы, это никак не повлияет на концепцию развития. Даже в случае присутствия Метаданных в базе, потребуется разграничение доступа специалистов и пользователей к таблицам базы на уровне прав. Здесь я оставляю право выбора реализации за разработчиком платформы. Разрешение проблемы ПредопределённыхЭлементов, как связующего звена между метаданными и данными, возможно будет решающим при выборе варианта реализации.
V78 я буду называть реализацию, где метаданные отделены от данных, V9 - соответсвенно реализацию совместного проживания, а независимой от положения метаданных у меня будет просто Машина.
Задачей для себя вижу разработку некой концепции ПОП, как одной из моделей ООБД, применительно к платформе v7 с ее прикладными особенностями.
Ни v7, ни v8 не имеют средств для описания собственных классов в полном смысле слова, с наследованием от базовых классов и полиморфизмом реквизитов, форм и методов базовых классов, поэтому цель концепции ПОП - прикрутить эти термины к Машине и описать простые и понятные правила их поведения.
Более того, ни v7, ни v8, даже не имеют средств описания собственных типов данных, и проктически все используемые типы данных построены по факту на ссылках и базовых примитивах. Здесь также целью концепции ПОП я считаю ликвидацию этого ущемления прав трудящихся и реализацию такой возможности, причём не просто как объявление типов, а представления типов данных как полноценных классов, со всеми к ним прилагательными. Перечень типов данных используется не только для организации таблиц БД, но и отражает потребности в них среды программирования.
Также я вижу целью концепции переосмысление ПрикладныхОбъектов платформы, описание и особенности их реализации в Машине как таковых в контексте вышеперечисленных новшеств. Перечень же ПрикладныхОбъектов и их свойства не является целью рассмотрения концепции, как я уже отметил, здесь нужно разбираться отдельно с каждым регистром, это поле для дискуссий, я могу только предложить своё видение этого перечня.
Таким образом, списки определяемых типов данных и прикладных объектов являются открытыми, и их пополнение можно представить себе как потенциальное развитие Машины в будущем...
БазовыеКлассы - это сопокупность Классов, для которых правила поведения, а именно, правила вложения, наследования и ссылочной целостности заложены на уровне исполняемой Машины, и не могут быть изменены на уровне Конфигуратора.
ТипыДанных - это сопокупность БазовыхКлассов, для которых, в рамках ссылочной целостности, на уровне исполняемой Машины устанавливается правило каскадного удаления.
ПрикладныеКлассы - это сопокупность БазовыхКлассов, для который правила ссылочной целостности на уровне исполняемой Машины в целом не определены, таким образом...
Вот так, целый вечер вчера я пытался выдавить из себя могучий научный слог, хмурил брови, слюнявил карандаш, да так и не осилил.
Вы бы почитали эту ересь: "концепция программирования", "используемая терминология", "определяемые понятия".
Нет, эт не моё. Отказываюсь от научных степеней, нобелевки по химии и персональной пенсии.
Нахрен такой счастье, если я не смогу здесь ёжика с удавом заплести. Может мне ещё Злопа прикажете под ковёр? Злоп мой друг, а истина пусть подождёт, или побудет где-то рядом.
Итак, ТипыДанных.
Прикинусь немножко Программистом, открываю Конфигуратор, летаю по модулям, лезу в книжку, ничего не понимаю, а где раздел описания типов данных? Где эта несущая конструкция, начало всего сущего, святая святых программиста? Ладно, пишу Перем = Число, Дата, Строка, Массив[Х] и всё на этом? Эй, наверху, у вас там че, многомерные не модно? Я чё, глист вам? Где типы, я кого спрашиваю?
- Чего шумишь в храме моём, сын мой?
- Ойо, кто здесь, я слышу глас Божий?
- Отвечай, грешник, какого типа ты ищешь в святом РБД?
- Эдгар, ты чё ли? Как жизнь? Сорян, офтоп.
- Отвечай, глист, кто таков в таблице таблиц?
- Дык это, программист я, ООП люблю.
- Как ты смеешь сквернословить в храме моём?
- Лан, лан, массивы, структуры...
- Плзи вон, глист! Нарекаю тебе массив одномерный до конца дней твоих!
Бррр... Приснится же такое. А может это сон Нуралиева, за секунду до пробуждения? Усатый Сальвадор отдыхает. Не люблю я Дали, люблю импрессионистов.
Та что общего между ООП и РБД?
С одной стороны цельная концепция программирования, с другой цельная теория баз данных.
На первый взгляд кажется, что легче сложить килограммы с километрами.
Да, складывать уж точно не нужно, будем умножать.
В теории мкножеств операция умножения определена как пересечение друх множеств, как множество общих элементов. Это так, к слову, закладка на будущее.
Так вот, общий элемент между этими ёжиком и удавом всё же есть. Это ТипыДанных.
Базы данных. Все таблицы РБД строго типизированы, каждое поле объявлено в заголовке своим маркером. Но это достаточно низкий уровень прочтения таблицы, без icpp не разберёшься. И Эдгар упаси рассматривать таблицу БД дальше под лупой, там можно увидеть только копошащиеся нули и единицы. Наоборот, я хочу воспарить над ней, посмотреть на расстоянии, как картину импрессиониста.
Глянь Эдгар, вон те три поля рядышком, может массив[3]? А вон те четыре, чуть правее, двумерный [2х2] мне напоминают. Эй, Кодд, а чё у тебя было по теории множеств в оксфодах, тройка поди? А про субтаблицы и супертаблицы слыхал? Ник, кстати классый.
Зря, конечно я так про Эдгара Кодда. Глыба, безусловно. Но Сергея Дмитриевича Кузнецова тоже настоятельно рекомендую.
http://citforum.ru/database/advanced_intro/84.shtml
Цитата: Пиит от 19 апреля 2024, 09:38...В теории мкножеств операция умножения определена как пересечение друх множеств, как множество общих элементов. Это так, к слову, закладка на будущее...
Заложил так заложил, по полной. Умножил себя на нуль. Именно нУль, так говаривал наш доцент кафедры алгебры и матанализа Семенчук Николай Палыч. Как треснул бы мне щелбан за такое.
"Не офицер я, не асессор.."
Вот и думаю, не программист я, не учёный. Популяризатор? Подходит.
Есть такая категория пишущей братии, популяризаторы науки и чего ещё там.
Но за ними глаз да глаз нужен, учтите.
ПОПуляризируем дальше.
Здесь я утверждаю, что любую структуру данных, какого угодно уровня сложности и абстрации, можно уложить в таблицу или набор таблиц. Хошь, tree of structure, хошь array of table, хошь ДокументV7, АЛьФ не даст соврать. Хошь, Злоп, вложенный в себя ассоциативный вектор? Да не вопрос, лишь бы уложилась такая абстракция в таблицу Одинэсника. Ведь ему с ними работать.
Рассмотрим способ 1. Субтаблицы и Подтаблицы.
С базовым примитивами всё понятно, они остаются самими собой, значениями в полях БД и дедушка Кодд на нас не осерчает. Проблема реструктуризации данных правда выйдет на первый план. Если мы заявили в Конфигураторе тип СуммаДокумента[18.0], и практически вся база будет насвозь им пропитана, то и все таблицы придётся хорошенько перетряхнуть при изменении длины или точности. Но здесь имхо большой плюс универсальности применения такого типа на порядок перекрывает недостаток в администрировании.
С простыми структурами ситуация похожая. И Массив, и Структура может быть представлена в виде Субтаблицы, и ничем в общем работа с ними не будет отличаться от базовых типов данных. На первый взгляд странно, но это так. Субтаблица, если вы ещё не заглянули к Кузнецову, это не таблица БД в физическом понимании, а её воображаемыя часть в виде подмножества полей. Таким образом, и Массив и Структура существуют только в наших метаданных, а в таблице это просто набор колонок, связанных исключительно нашей логикой и не более того. Вот, для них, как и для базовых типов, будет та же реструктуризация всех супертаблиц, т.е. таблиц-владельцев подобных типов данных при изменении их размерностей и/или типов их значений.
С множественными типами, такими как Список, Дерево, Таблица и т.д. ситуация немного другая. Данных о них вообще нет в таблицах-владельцах. Для них необходимо заложить в БД специальные "подчиненные" таблицы, назовём их просто Подтаблицы, с нелишним полем-ключом Владельца записи из таблицы-владельца, табличные связи же могут быть заложены в СУБД отношением многие к одному. Таким образом, все записи одного определяемого типа данных будут уложены в одной таблице БД. Здесь мы получаем очевидное преимущество при реорганизации таких типов. Например, если вы в ТаблицуОтгрузкиТоваров вдруг добавили новый Реквизит, то это не повлечёт за собой реструктуризацию всех таблиц-владельцев такого виртуально типа, потому как вроде он есть в таблице, а вроде и нету.
Таким спобом уложены в таблицы БД ТабличныеЧасти V7, и здесь я не рассказал вам ничего нового. Но уже в V7 могли бы не плодить ТабличныеЧасти, а хранить однотипные таблицы в соответсвующих им подтаблицах.
Подобьем итог. Плюсы такого способа уложения очевидные: простота, скорость, подержка индексов для простых типов и структур, любой тип данных на первом уровне вложенности мы можем внедрить во Владельца. Казалось бы, а на кой хрен тогда я затеял свои записки, если всё так просто.
Нет, не всё так просто, попробуйте уложить таким способом таблицу таблиц...
Забыл совсем.
Ура, случилось! Да вот же он - тот самый раздел описания типов данных для программиста.
Почему нет? Это он, тот самый, ОпределяемыеТипыДанных, типы описаны, бери и объявляй Перем = Структура.Корреспонденция; Перем.Счет = ...
Красота? А какие ещё типы нужны программисту в среде, где основной объект применения - БД? Дедушка Кодд на этом месте должен улыбнуться.
Цитата: Пиит от 19 апреля 2024, 12:15. ПОПуляризируем дальше.
Может, таки ПОПом стать?
А чё, буду ПОПоведовать.
Эдгару помооолимся.
И Злоп в теме, братьями будем.
Как думаете, братия мои в РБД?
Нет ограничесний на форуме ник менять?
Цитата: Пиит от 19 апреля 2024, 16:11Цитата: Пиит от 19 апреля 2024, 12:15. ПОПуляризируем дальше.
Может, таки ПОПом стать?
А чё, буду ПОПоведовать.
Эдгару помооолимся.
И Злоп в теме, братьями будем.
Как думаете, братия мои в РБД?
Нет ограничесний на форуме ник менять?
Не стоит.
Цитата: АЛьФ от 19 апреля 2024, 16:47Не стоит.
согласен, а то у меня в глазах уже мельтешит
Спасибо, друзья, вы правы.
Хотел было оправдаться, мол я тоже немножко Программист, и мне тоже трудно бывает вовремя остановиться, но когда заглянул в Реанимацию сборки 1С++, моё "немножко Программист" сдулось до статистической погрешности.
Как среди арабов очутился, чес слово, говорят о чём то люди, а ты тока стоишь и улыбаешься.
Был в этом году впервые в Москве, да и в большой России тоже впервые, чего скрывать.
Ездили с супругой на тот самый КэВээН, дочку поддержать, мешок картошки по традиции и всё такое.
Зашла мне столица моей Родины, прям как родная зашла, 24к протоптали мы пёхом по площадям и скверам, намаялись к обеду, и решили по Москве-реке покататься, передохнуть значит. Сели на пароход, а там - арабов полная палуба, одни арабы, арабки и арабчата, мы ток походу одни белые были, не считая группы китайских товарищей. Потом из газет я узнал, что сходка была не детская в Москве, товарищи из Йемена, все партии изо всех Палестин, и еще Бог знает кто из каких оазисов, а расквартировались они все в гостинице Украина, у причала. Так вот мы и проплавали, по родной реке средь гула заморских наречий. А какие они красивые, эти арабки, подумал было, что из одного гарема все, все как одна ухоженные, в браслетах и кольцах на всех щупальцах, с бровками и губками, пипец в общем, Скво моя даже насупилась. Ну, и все в хиджабах ессесно, но это так няшно ёлы-палы. И вспомнил я тогда, на волны глядя, свою бабушку Нину Макаровну, царство её небесное, всю жизнь свою трудовую проносившую на голове платок. Никогда, ни 20-м веке, ни в 21-м она не выходила на гулыцу без платка, по будням - обычный, серенький, по выходным - нарядный, с цветочками. Не допускала она даже мысли опростоволоситься, т.е. опозориться, выйии на'люди с непокрытой головой. О как. Это она, моя милая старушка, сызмала приучила меня к порядку, где "всё должно быть по полочкам". И гоняла меня веником, если чего натворил, выговаривая: "уу, бандюган Брэский, вочы твои бесстыжые". Это даже не плечо, это фундамент моего образования...
...Уже в школе я был уверен на все 200, что стану программистом. Правда, школа была не совсем обычной. Моя мама, вычитав в местной газете, что в городе открывается лицей для особо одарённых, со словами "у тебя уже тройка по физике, а что будет дальше", отвела меня за'руку в приёмную комиссию. До сих пор не понимаю, за какие глаза меня туда взяли.
Начало 90-х, иномарки на улицах, банкиры-рэкетиры, и бывшая партийная номенклатура решила отгородить своих детей от других сословий, выделив бюджет на строительсво учебного заведения нового типа. Так считал папа, но благословил. Новое время, новые веяния и с ними диковинные для нас вступительные испытания. Представьте, большая поточная аудитория в политехе, битком набита подростками, галдёж, входит человек, ставит на стол бум-бокс, произносит "вам пол-часа, пишите что хотите", включает Баха и был таков. Не Шуберта блин, а Баха, тут задуматься надо. Ну и понесло меня в космос, в другие галактики, и "как одиноки мы во вселенной". Да, потом были тесты, тоже диковинка, поставь галочки на трёх листах, и своден как африка. Вопросы были не простые, например "смогли бы вы убить человека", ё, чесал я тогда за ухом по пять минут на каждым пунктом, недоумевая, как мой сосед по парте быстро так и ловко расставляет свои галочки, электроник какой-то. С кем мне доведётся ещё тут учиться? С терминатором?
Аттестат мой за 8-й класс был такой себе, четверки-пятерки 50/50, и та самая тройка по физике, и с этой черной меткой мама ещё на что-то надеялась, когда только из моего класса документы подали пятеро, один мальчик, это я и ещё четыре девочки, и у всех, как утех арабок, годовые отметки будь здоров, найди четвёрку. Вот поэтому я до сих пор так и не знаю, как я попал в эту мясорубку, какой добрый человек внёс мою фамилию в списки будущих лицеистов, подозреваю только, что этот кто-то вероятно сильно прослезился над моей космической диссертацией и сжалился над рабоче-крестьянким сыном.
А соседа по парте того звали Вадим, в будущем Программист, мой гуру в айтишных вопросах и просто хороший товарищ...
Цитата: Пиит от 19 апреля 2024, 14:49. попробуйте уложить таким способом таблицу таблиц...
Не переведутся никогда на земле русской таланты и гении.
Вот, надежда русского слога, Джахид Афраил оглы Гусейнли, послушайте:
"Буря мглою небо кроет
Вихри снежные крутя
То, как зверь, она завоет
То заплачет, как дитя
И если ты найдешь во мне Инь-Янь
Останови это мучение
В тот миг, когда я потерял тебя
Там вдали падала Луна..."
А? Красавчик.
Я вот, как и коллега Djelf, иногда задумываюсь о своей адекватности.
Так было и тот день, когла впервые разложил в тетрадке структуры данных по таблицам.
Так просто? Не, не может быть. Я чё, умный такой? Никто до меня ещё не допетрил?
А что Компания? Ну вот же оно, документ-то разложили, Dh и Dt, отчего не дожали, не пошли дальше?
Они ведь карасавцы, копали, даже наследование данных в один шаг ввели, вот оно - JOURN, общие реквизиты, что это если не ООП в РБД, мать его тудэ? Что не так? Или может я таки псих?
И включил я тогда волшебный ДиалАп. Фу ты, какое облегчение, я не псих.
Оказывается, много лет IBM с Oracle вкупе с другими крутыми ребятами не могли договориться между собой в мелочах об уложении сложных структур, но таки пришли к стандарту, SQL 3, выродили наконец к 1999 году. Так что я хочу от какой-то российской компании, на краю айти-вселенной, если буржуины только-только сами определились? И называют этот стандарт Объектным SQL.
Вот, уже как четверть века определяемые типы данных не только существуют, но и поддерживаются в известных СУБД, и даже приняты как стандарт в SQL, в целях поддержки концепции Объектно-Ориентирования Программирования.
А я вот уже больше 20-ти лет периодически бьюсь лицом об стол с одним вопросом: ну когда же, когда, когда, когда Компания наконец сдвинется в места, когда совершит очередную революцию?
Сегодня, 21 апреля 24 года, я хотел бы задать этот вопрос и вам, друзья мои, Программистам с большой буквы, крутым ребятам, вывернувшим платформу наизнанку в благих целях, и даже тем, кто просто "знает крутых ребят".
Поднимите руки, кто знал об этом и не предпринял ничего в этом направлении?
Или задайте себе вопрос, а может Компания остановилась не одна, может и вы остановились вместе с ней? Глядя, как вы обсуждаете, какой из лайт движков SQL лучше прикрутить на новое детище, я чего-то таки недопонимаю.
Не обижайтесь, друзья, немного перебрал наверное.
Может быть потому, что Сергей Дмитриевич Кузнецов, горячий сторонник, популяризатор и аппологет ООБД, таки не дожил до светлых дней, до своей мечты, и отошёл от дел не далее как в прошлом году, а я узнал об этом буквально вчера, когда подыскивал ссылку для очередной заметки для наших мальчиков.
Помянем? SQL 3:1999 (http://citforum.ru/database/digest/sql1999.shtml)
https://ru.wikipedia.org/wiki/Кузнецов,_Сергей_Дмитриевич_(учёный)
Цитата: Пиит от 21 апреля 2024, 08:39А я вот уже больше 20-ти лет периодически бьюсь лицом об стол с одним вопросом: ну когда же, когда, когда, когда Компания наконец сдвинется в места, когда совершит очередную революцию?
https://www.ispras.ru/proceedings/ О журнале «Труды ИСП РАН»
https://www.ispras.ru/proceedings/recent-issues.php Выпуски последних лет
Цитата: Пиит от 21 апреля 2024, 08:39... какой из лайт движков SQL лучше прикрутить
За пять лет моей работы "во франчах", всего один раз за всё это время, я смог "впарить" SQL-версию Предприятия v7. И да, до этих самых пор, большинство моих клиентов работали и работают на файловых версиях, сами о том не догадываются, а меня это ни сколько и не смущает.
Не имеет ровным счетом никакого значения, какой движок БД будет прикручен к платформе. Это целиком и полностью прерогатива разработчика, как и выбор GDI, ОС и прочих постулатов. Конечно, эти вопросы важны, от них зависит и ход реализации, и возможности платформы, но эти все вопросы лежат как вне моей компетенции, так вне моих интересов. Меня интересует, что я смогу сделать потом этим мотолком, что не смогу, или смогу, но не по прямому его назначению.
Вернёмся к теме. Как быть с вложенными друг в друга Таблицами, и смогу ли я уложить их в БД предложенным способом, при помощи Субтаблиц?
В работе я часто использую для отчетов вложенные друг в друга ТаблицыЗначений. Вот и намедни, раскладывал и подсчитывал данные Автотехконтроля по времени работы водителей, для доплаты ночных, на ТаблицахЗначений на глубину в четыре уровня вложенности. Поэтому вопросов, нужна ли кому-нибудь такая конструкция, я себе не задаю, хотя вопрос в общем правильный, практичный. Таких вопросов у нас на форуме хоть отбавляй. Смотришь порой хотелку очередную и думаешь, а на кой тебе парень эта хрень? И наоборот, твои хотелки читают коллеги, и пожимают плечами, куда ж ты её, вундеркинд, воткнуть-то собрался? Дело не в том, кому это нужно, дело в самой концепции, что я в ней задекларирую, как обьясню правила пользования моим молотком, и какой предел прочности заложу этому инструменту.
Повторение Мать учения, поэтому напомню термины. Субтаблицей называют таблицу, взятую как поджножество колонок исходной таблицы БД. Последнюю называют в этом случае Супертаблицей. Здесь и далее я начну использовать термин ТаблицаБД, для исключения путаницы между Таблицей как структурой данных, представителем семейства множественных типов данных, знакомую нам в v7 под названием ТаблицаЗначений. ТаблицаБД - это собственно физическая таблица БД в рамках реляционной её модели. Ничего сложного.
Базовые типы данных я пропускаю, они представляются атомарными значениями в своих ячейках.
Структуры данных фиксированной размерности, такие как Массив и Структур, целиком и полностью укладыватся в свои Супертаблицы. С многомерным массивом также нет никакой сложности, на уровне ТаблицыБД он однозначно раскладывается в виде одномерного своего собрата, и таким же образом собирается обратно в свою многомерную логику. Единственное, что может нас испугать, это геометрический рост Супертаблицы "по горизонтали". Но и в v7 у нас есть будь здоров какие ТаблицыБД, порой не влазят и на ширину двух экранов, пуганые мы. К тому же, напомню, что и ОЗУ, и ПЗУ по сей день остаются одномерными массивами, в которые каким-то чудесным образов влазит вся ит-вселенная, не говоря уже о каких-то там типах данных.
В множественными структурами данных ситуация сложнее. Поскольку их размерность заранее не определена, всегда будет необходимость в двух ТаблицахБД для их уложения. Одна ТаблицаБД несёт в себе ключ Владельца записи, другая ТаблицаБД содержит само множество элементов, растёт "по вертикали", и кроме данных содержит поле-ссылку OWNER, содержащую ключ Владельца, более известный нам как ID, идентификатор записи ТаблицыБД влалельца.
Так вот, чтобы уложить Таблицу в другую Таблицу, необходимо, чтобы и эта ТаблицаБД была наделена своей субъектность, своим ID, чтобы каждая в ней запись могла служить в качестве значения OWNER для подчиненной ей ТаблицыБД, содержащей вложенную Таблицу.
Таким образом, мы приходим к выводу, что любой элемент множественного типа данных должен иметь свой ID. Немного необычно для v7, в ТабличныхЧастях которой нет уникального идентификатора для каждой её строки. А он должен был быть, имхо, уже в семёрке.
И не только множественные типы требуют ID, вернёмся обратно к Массивам и Структурам.
Представьте ситуацию, когда Супертаблица имеет вложенными в себя две Субтаблицы, два Массива одного типа, и в каждый их них мы хотим вложить например Таблицу. Каким же образом по значению OWNER в Подтаблице мы сможем отличить эти два Массива, для которых есть один только ID, идентификатор Валадельца, общий для обоих Массивов? Получается, что в этом случае мы не можем уложить даже множественный тип? Поэтому вот здесь и ставим многоточие, каждых тип данных обязан быть уложен в свою ТаблицуБД, иметь свой ID, и переходим таким образом к другой модели уложения - Ссылочной...
Цитата: Пиит от 20 апреля 2024, 11:14...Уже в школе я был уверен на все 200, что стану программистом...
Первые уроки информатики были невыносимой мукой. Из гаджетов - тетрадь да ручка, и Робик на доске выводит мелом замысловатые формулы разложения десятичного числа в бинарную сущность. Робик - это наш и мой первый Учитель информатики, николько не смущался белым от мела пиджаком, повторя при этом, что информатика - это наука, и не обязательно иметь под рукой компьютеры для её изучения, достаточно вот этого куска мела. Так то оно может и так, но уроки утомляли меня бесконечным поглядыванием на часы, а когда дело дошло до алгоритмического языка, НЦ/КЦ, я и вовсе стал скучать по футбольному мячу, и оценки такого усердия стали соответсвующие.
Наша жизнь изменилась в одно морозное утро, когда к учебному заведению подкатила большая фура с неизвестным содержимым и нас, парней покрепче, сняли с физры на помощь Робику заниматься погрузочно/разгрузочными работами. На вопросы вне урочного времени Робик отвечать отказался, с волнением бегал вокрук ящиков, с довольным видом потирал руки и покрикивал на неопытных грузчиков, не дрова мол носим.
Да, это были они, 286-е Машины, с 1М ОЗУ, без ХДД, но с VGA, они самые, сверхъестественные на то время наглядные пособия учебного процесса. Так лицей стал первым в городе учебным заведением с самым настоящим классом не каких-нибудь УКНЦ, а фирменных АйБиЭм. За чей счет банкет, я не знаю до сих пор, поговаривали, что какие-то мериканьские спонсоры отслюнявили такое богатство. Кто не в курсе, в 91м году такое один такой гаджет стоил целой квартиры в моём уездном городке.
Отбоя от желающих пощупать, понюхать и попробовать на зуб чудо-технику первое время было так много, что Робик открыл в школе "вторую смену", после обеда приезжал в родные пенаты, открывал кабинет и отскакивал в сторону, чтобы не снесло его бурным потоком юных исследователей. Дрались за каждую машину, сидели по трое за одним монитором. Ещё бы, только физмата было восемь классов разных возрастов, не считая очкариков из других факультетов. Такое безобразие Робик быстро прекратил, введя Журнал учёта, где уже по квотам, не далее чем на неделю, мы записывались по времени на вожделённой свидание со своим цифровым другом.
Учебники среди дефицитов того времени были для нас самым ценным приобретением, у Робика - только под запись и только на один день, крутись как хочешь. Бэйсик был освоен мною именно таким образом за одну ночь. Паскаль я осваивал уже по своей, честно спионеренной в городской библиотеке рукописи Никлауса Вирта, за что отнёс взамен целую стопку какой-то макулатуры. Дискеты - на вес золота, я даже звонил в МММ, тогда ещё безобидную компьютерную контору, чтобы прислали мне, сироте Бресткой, посылкой парочку. Посмеялись и повесили трубку.
Со временем от желающих проводить время вечерами остались только самые стойкие, прирождённые, и сложилась у нас такая себе айти-банда местного разлива. Обзавелись как-то дискетами, стали приносить всяки вкусняхи и делиться друг с дружкой. И, конечно, в первую очередь это быди игрухи. Пакман отстой, ПринцОфПерсия наше всё. Как же буржуины его так отрисовали? И полез наш коллективный разум в видеопамять, разбирать на части этот гадкий VGA. С мультиками уже всё ясно, или фон, или персонаж, проехали. А как-же буржуины распараллеливают персонажи, Принц бежит, огонь горит, а боссу всё похер, а? Это не реал тайм какой-то, и это ж надо ещё оторвать от процессорного времени, заглушки нужны от таймера. Вот таким образом мы и росли над собой, каждый в отдельности и все разом одновременно, освоили языки, начали писать себе библиотеки, "драйвера" для мышки, добрались до прерываний и портов, освоили таким способом ассемблер. Ну, и конечно, Петер Нортон тоже парень что надо. Не дурак, не зацикливал обработку ожидания пользователя, как мы, а включился в таблицу прерываний. Вот кто отец всех хакеров и вирусов на свете. Резиденты, это наше всё, и отныне мы стали хакерами, подбрасывали друг дружке безобидные какахи на дискеты, чтобы вместе потом поржать над бедолагой. Тогда же мы и придумали Окна. Да, да те самые Окна. Это просто, ведь если все программы включить в цепочку таблицы прерываний, они смогут работать одновременно, нужно только отказаться от текстового режима 80х25, уйти в графику и все дела. Покрутили мы это открытие, ну да, можно, а как все проги причесать под одну гребёнку, чтобы знали кажный своё окно? Не прикажешь ведь, в общем, покрутили идею и выбросили, таки под одну гребёнку - это не наш метод. У нас у каждого уже на дискетах свои проекты, свои игрули. Тем более, кто-то притащил Реталятор, первый известный мне авиасимулятор, и мы все как один переключились на разгадку 3D моделирования.
Неизвестно, как сложилась бы судьба человечества, и что ещё выдумала бы наша айти-банда, но неожиданно пришёл конец нашему броуновскому развитию, и как это обычно бывает, в один прекрасный день.
Представьте, урок информатики, Робик ведёт урок, объясняет покрасневшим девочкам про начало циклов и конец оных, и вдруг так вот, посреди занятия, на Учительской машине выскакивает на весь экран тётька с титьками и не только. Робик покраснел и отправился к директору.
Нет, родителей в школу не вызывали, Робик поступил по-другому, так как не ожидали ни мы, и не догадался бы мой читатель. Робик не закрыл "вторую смену", не искал виновных, а отправился к директору выбивать деньги на дополнительные факультативы. Отныне Робик стал приглашать местных специалистов читать нашей банде по вечерам лекции, направляя тем самым бурную творческую активность в правильное русло. Александр Адамович Сахарук познакомил нас с языком Си, Виталий Александрович Козлов - с Клиппером, его брат Александр Александрович, будучи программистом, и вовсе перешёл учительствовать к нам в школу, благо через годик мы обзавелись вторым компьютерным классом.
Вот так, покидая альмаматер в 93м году, я свободно разъяснялся на шести языках, среди которых два знал в совершенстве, это Паскаль и Кумир. Обычно не хвастают знанием русского, но здесь особый случай, это был любымый язык нашего Робика, Яцкевича Сергея Александровича, нашего Учителя с большой буквы.
Говорят, что он уже не с нами, но, как вы знаете, это не правда. Он всегда со мной, мой Робик, мой Кумир на все времена...
Должен сказать, что моя айти-биография интересует в первую очередь меня самого. Мне, как и АЛьФу, в этом году предстоит штурм новой "вершины", в моём случае это покорение платформы v8. Да, я никогда ещё плотно с ней не работал, не знаю секретов и подводных камней, но дуть против ветра уже не имею возможности.
В связи с этим, кроме того, что мне нужно как следует встряхнуть свой процессор, хочу ещё и дефрагментировать нежножко свою память, вспомнить кто я есть, и на чьих плечах стою, потому как, признаюсь, немного сцыкотно, смогу ли я потянуть новые объемы информации.
Здесь я хочу развести ветку на две линии, собственно сабж, где планирую "бродить околицей" и биографию, где буду "снимать портки". Буду указывать ссылками на соответствующие субветки, чтобы у читателя была возможность пропускать не интересующие его подробности. Конечно, факты моей жизни позволят моему читателю немножко расслабиться, в какой-то степени стать ближе ко мне, ну а мне соответственно, стать ближе к вам. Спасибо за внимание.
Цитата: Пиит от 22 апреля 2024, 20:46позволят моему читателю немножко расслабиться, в какой-то степени стать ближе ко мне, ну а мне соответственно, стать ближе к вам
https://www.youtube.com/watch?v=Bq7398HxsVI&t=84s
Цитата: Пиит от 22 апреля 2024, 10:22... переходим таким образом к другой модели уложения - Ссылочной...
Модель уложения структур данных 2. Ссылочная.
Должен предупредить, что давно не слежу, чего там творят буржуины, какой по счёту стандарт SQL они нынче рожают. Причин этому аж целых три.
Во-первых, я немножко побаиваюсь самого языка запросов, назвал даже его сегодня про себя СцыКуэЛем, и не оттого, что это некая сложная субстанция, нет. Я действительно слабо знаю SQL, но моих знаний хватает, чтобы подозревать, что это детище реляционной модели в итоге не налезет на объектную модель БД от слова совсем.
Во-вторых, я перестал листать талмуды по объектому SQL, когда понял, что принятая ими модель уложения на базе Субтаблиц мягко скажем ограничена, как я уже указал, не только для вложений друг в друга множественных типов, но и в некоторых случаях для более простых структур. Может я таки не долистал до нужной страницы, но по своей привычке просто взял тетрадку и стал копать дальше самостоятельно.
И в третьих, меня больше занимает развитие концепции Запроса аля v7, как ПрикладногоОбъекта на базе другой теории, алгебраической теории множеств.
Вообще я этим предисловием хотел сказать, что так называемая Ссылочная модель уложения структур данных является плодом моего воображения, может она уже принята как некий стандарт, а может существует только как идея в головах таких любителей поболтать, как я.
Итак, по порядку. Для каждого определяемого ТипаДанных предполагается наличие собственной ТаблицыБД, с обязательными для неё полями ID и OWNER. Поле Идентификатор создает субъектность ТипаДанных, т.е. возможность для вложения в него других ТиповДанных, а поле Владелец соответственно определяет его объектность, т.е. возможность быть вложенным в другие структуры данных.
Рассмотрим примеры, и начнём не с базовых типов, как обычно, а с середины списка. Составный тип данных фиксированной размерности, Массив либо Структура, выносятся со всем своим барахлом из ТаблицыБД Владельца, и представляются в записи Владельца одной колонкой, ссылкой на себя любимого в своей родной таблице. Таким образом, никакие изменения внутри самой структуры данных, будь-то добавили мы реквизитов, или изменили размерность массива, не повлечёт за собой изменений ни в одной из ТаблицБД Владельцев. Имхо, это уже напоминает принцип Инкапсуляции из ООП. Как минус, теряем простые индексы и чувтствуем снижение скорости чтения/записи.
Похожая ситуация и с множественными типами, с поправкой на то, что для каждого из них таки нужны две таблицы, эдакая ТаблицаБД-шапка, с ID и OWNER непосредственно экземпляра типа данных как такового, и вспомогательная ТаблицаБД-множественная часть, содержащая множество его значений, но тем не менее, также содержащая в себе ID и OWNER для определения субъектности и объектности каждого элемента множества. Например, в случае с Таблицей, таким образом мы задаём в шапке ID самой Таблицы, как цельного субъекта, для указания ссылки на неё из записи владельца, а в множественнной части для СтрокиТаблицы, в которую также может быть вложена другая структура, OWNER же СтрокиТаблицы задает принадлежность этой записи самой Таблице по её ключу в шапке. Такое масло масляное с множественными типами на первый взгляд кажется мутноватым, но привыкнуть можно. Мути в это дело дабавляет любимая нами ТаблицаЗначений, которая по сути сама является особенной среди структур данных, наследует свойства одновременно и Списка и Структуры, но надо и к ней привыкнуть, и к тому же, не следует путать её с такой структурой данных, как СписокОфСтруктура, это немножко таки разные блюда.
Попытки уложить множественный тип в одну ТаблицуБД считаю возможными, но бесперспективными, поскольку так или иначе теряется либо субъектность самого объекта, либо ссылочная целостность с ТаблицейБД Владельца. В общем, нужно чуток привыкнуть к такой схеме.
Схема работает ессесно на уровне Машины, а на уровне Конфигуратора мы просто куда нужно добавляем реквизит и указываем его ТипДанных.Таблица.ТаблицаОтгрузки. И всё.
Для базовых ТиповДанных, Числа, Строки и т.д. ТаблицаБД несёт, как и для остальных типов, не только символическую нагрузку. Во-первых, каждый ТипДанных, имея собственную ТаблицуБД, может иметь дополнительные свойста объекта, например, ДатаСоздания, ВерсияОбъекта, ИмяСобственное и т.д. Так мы невзначай подошли к ПредопределеннымЭлементам, как весьма интересному изобренению Компании. А во-вторых, что самое интересное, любая Переменная, любого типа данных, объявленная в любом модуле, может быть взята и сохранена в БД общим для всех объектов методом А.Записать(), даже если не имеет ни Владельца, ни ИмениСобственного. А что нам мешает, идеология?
Здесь я должен напомнить, что:
ТипыДанных - это сопокупность БазовыхКлассов, для которых, в рамках ссылочной целостности, на уровне исполняемой Машины устанавливается правило каскадного удаления.
Таким образом, наличие Идентификатора и использования его как Ссылки в других Объектах не является алиби для объекта, чтобы не быть уделённым как вместе со своим Владельцем, так и без оного. Объекты без владельца - это подобие "мусора" в ООП, как и утечки памяти, являются сопутствующим явлением, и нас не должны пугать. Для подобных случаев нужно позаботиться о специальных механизмах - сборщиках мусора, а мы тем временем становимся всё ближе и ближе к ООП в рамках нашей концепции.
Но и всё дальше от РБД. Обратите внимание, что все записи БД, связанные отношением Владелец-Вложенный, имеют прямую и обратную ссылку друг на друга, по меткому выражению коллеги Злопа, зациклены между собой, как Документ-Операция и Операция-Документ. Здесь на самом деле нет никокого противоречия. В природе самих СтруктурДанных, а именно в упорядоченных множествах, таких как Список, Стек, Очередь, Дерево и даже Граф, наличие взаимных указателей между элементами является априори необходимым свойством, которое обычно проявляется в системе предписаний, другими словами в интерфейсе Класса, методами Предыдущий() и/или Следующий(). Таким образом, в связных списках достигается целостность самой СтруктурыДанных, но это не про ТаблицыБД, поэтому дедушка Кодд здесь наверняка нахмурится. Как пример, попробуйте побродить по Дереву Справочника вверх-вниз с помощью SQL-запроса.
Запись Владельца происходит в транзакции вместе со всеми вложенными структурами, по порядку сверху вниз устанавливая значение OWNER, а по пути обратно наделяя всех попутных владельцев Ссылками на ID вложенных структур. Как-то так.
А в Справочнике между тем мы имеем такое свойство как Родитель, как раз для указания свой ветки для этой груши. Но название этого свойства мне не нравится от слова никак. Кого же родил это родитель? К тому же, нас ждёт таки наследование ТиповДанных, и этому словечку я хочу вернуть первоначальный общепринятый смысл...
Кстати, Владимир Ходаков в своё время отчаянно доказывал своим оппонентам, что SQL тоже, как и FoxPro, имеет средства для работы с указателями для навигации по ТаблицамБД, и нет причины, чтобы в интерфейсе справочника отсутствовали такие методы как Предыдущий() и Следующий() в рамках установленного для ТаблицыБД индекса.
Цитата: Пиит от 22 апреля 2024, 13:05... покидая альмаматер в 93м году ...
Да, у моих ног была вся айти-вселенная, а в пальцах рук я чувствовал такую мощь, что смог бы легко свернуть шею любому косо взглянувшему на меня терминатору, ну, по крайней мере, робокопу уж точно.
Так я тогда думал, но что-то пошло не так.
Выбор ВУЗа был в целом вынужденным, с одной стороны родители увещевали, мол, куда тебе ехать, голодные годы и как же мы одни без тебя останемся. С другой стороны, моя тройка по физике, как ни странно, никуда не делась. Больше того, я прекрасно знал, что эта тройка в аттестате была на самом деле нулём с пририсованным хвостиком. И аттестат в целом остался, как и был до того, 50/50. Чудные дела твои, товарищ Макаренко. Есть такой парадокс в гимназиях и лицеях, поступают туда дети отличниками, и вдруг уже в первой четверти оказывается, что среди них есть и хорошисты, и троешники, и того похуже. Ну не может наша школа жить без таких категорий, обязательно нужно выстроить учеников по ранжиру. Именно поэтому многи дети, не без родительских советов, уходят обратно в свои школы, чтобы подтянуть в выпускном году свои аттестаты до уровня Бог. А я вот, как вошёл, так и вышел, как гусь из воды.
За аттестат я не парился, мне было пофиг, единственное, чего я тогда опасался, так это обуть сапоги и нахлобучить пилотку в осенний призыв. А поскольку в нашем политехе на все желанные специальности был барьер в виде экзамена по физике, этот вариант я не рассматривал. И какая таки разница, какую специальность я выберу, главное - заполучить доступ к Машине, а остальное - "дело техники". Вот, таким самоуверенным юношей я и пошагал в сторону нашего пединститута, наивно полагая, что специальность математика-информатика есть именно то, что мне нужно в этой жизни. Вступительные экзамены таки были по профильным предметам, а мои мощные пальцы плюс восемь часов математики в неделю на протяжении трёх лет это вам не хухры-мухры.
Математику я сдал на 5, и вошёл число 4-х умников из 120 абитуриентов. У троих были медали, и экзамены для них таким образом закончились, а я готовился к информатике. И первый облом от ВУЗа ждал меня именно на любимом предмете. Единственный из всего потока, я выбрал Паскаль для решения задачек по билету, справился на 15 мин, и поднял руку, мол я всё, оцени, товарищ профессор, мою незаурядность. Садись, Эдик, тебе 4. Как 4? А так, чтобы не выёживался. Нехер нам тут в куб возводить через логирифм экспоненты, у нас принято А*А*А. Понял, щенок?
Мда, тогда я ещё не понял, куда попал, унижение пережил, скрипел зубами, но справился с собой, чтобы не свернуть шею этому Робокопу.
Дальше больше, первая вводная лекция, на которой до меня доводят, что я есть не кто иной, как будущий образцовый госслужащий, поскольку заказчиком системы образования у нас является государство, а я не более чем винтик в этой Машине. О как. А хрен вам, мечтайте дальше.
А где же мои Машины? Бегаю по этажам, ищу компьютерный класс, везде Искры и УКНЦ, да ёптыть, не может быть такого, этож цельный ВУЗ! Ищу скрытую комнату, нашёл, заперто, постучал, иди на хер, занято. Вот так, под сигнализацией и охраной ретивых лаборантов, единственный класс Машин был окупирован местной айти-бандой, можно сказать, айти-мафией в лице хитрожопых лаборантов и важных преподов с кафедры информатики. Не по сеньке шапка, вот тебе монохром, вот тебе клава, вот и экстраполируй свои фукнции и транспонируй матрицы, а нам не мешай, мы тут делом заняты, Дуум изучаем. Пальцы мои не разжимались наверное целый семестр, так и хотелось свернуть чью-нибудь жалкую шею.
Бытие таки определяет сознание, да и физмат не давал мне много свободного времени. Так я постепенно втянулся в проблемы Гильберта, в пространства Лобачевского и ещё массу всякой научно-непопулярной хрени, которая не без труда укладывалась в мои извилины.
Робокоп оказался отличным парнем, научил меня кое-каким вещам, а именно, не важно сколько ты знаешь языков, важно что ты ими "имеешь что сказать". Вообще, с пониманием ко мне отнёсся, разрешил не посещать занятия по информатике совсем, что бы я больше не спал на его парах и не подавал таким образом дурной пример окружающим. А чтоб не расслаблялся, вот тебе задачка из школьного учебника А.Г.Кушнеренко, на исполнитель Робот, пиши хоть на ассемблере, но в конце семестра предоставь решение. Я не решил, точнее решил, но только наполовину, известная оказалась задачка, про Робота у забора. Это был урок. С тех пор я не спал на лекциях, клевал носом, но не спал, в надежде услышать для себя что-нибудь интересное. И услышал таки. Тщательно законспектировал курс Силаева Николая Васильевича по структурам данных, потом долго хранил и перелистывал эти конспекты, это был другой подход к информатике, подход к сущностям через их системы предписаний. А спецкурс Омельянюка Сергея Николаевича по ООП и вовсе расставил всё на свои места. Классы, интерфейсы, вот оно, недостающее звено Никлауса Вирта. Теперь я точно знал, как нужно писать проги в принципе, и уже к концу третьего курса, в 95м году, я потихоньку утратил интерес к этому предмету.
Я ушёл в математику, придумал себе своё пространство, выдумал некую дискретную математику и занялся, как умел, изучать своё детище, исследовать свойства, придумывать аксиомы и теоремы. Так я благополучно и профукал революцию в айти-вселенной, появление на свет Окон как основополагающего принципа бытия, со всеми АПИ и ГДИ, и таким образом отстал от паровоза на веки вечные.
Но и над этим не парился. На выходе из ВУЗа я был уже прилежным болваном, образцовым госслужащим, видел себя эдаким молодым и остроумным школьным учителем, но одна мысль таки не покидала мою голову, начиная наверное курса с четвёртого. Что-то не так, Эдик, каким-то ты тут стал придурком, ей Богу. Служение отечеству, пример для подражания, образец поведения - когда ты успел заразиться всем этим?
Но я и не боялся уже ничего, ни детей, ни женщин, ни стариков. Был обучен планировать урочное время с точностью до минуты, четверть с точность до дня, составлять учебные программы хоть по физкультуре, ставить задачи и подводить испытуемого к их решению, дозировать объемы подаваемой информации, управлять любым коллективом, создавать и разрешать любые конфликты и т.д. В общем, если вы сейчас начали о чём-то догадываться, как говорит один мой друг, ничего личного.
А первое что сделал после выпуского вечера - отправился в военкомат, открыл ногой дверь и задал первому встречному в погонах остроумный вопрос: "а какого хрена мне ещё не пришла повестка, я что, нах, не человек? Хочу Родине служить!"...
Робокоп - это не прозвище, это не более чем имя персонажа, за которым скрывается замечательный человек и педагог, Лобов Сергей Дмитриевич. Это именно он спустя годы, приобёл у меня SQL-версию Предприятия. Ушёл он из ВУЗа, имхо, нельзя так разбрасывать ценными кадрами.
Цитата: Пиит от 23 апреля 2024, 02:03... ТипыДанных - это сопокупность БазовыхКлассов
Пора уже заканчивать с определяемыми типами и переходить к ПрикладнымОбъектам, по-тихоньку подкрадываясь при этом к Наследованию.
Подведу небольшой итог по этой теме. Мне известны два способа уложения структур данных в РБД.
Первый, классический, Субтаблицы и Подтаблицы позволяют использовать все структуры с фиксированной размерностью и частично множественные типы данных, является де-юре стандартом в мире SQL, и не только имеет право на жизнь, но и определённые таким образом типы данных могли бы быть внедрены даже в v7, не говоря уже о ее потомке. Этой модели вполне бы хватило, чтобы сделать из клюшек конфету с номером 7.8, облагородив при этом платформу более научным подходом в реализации ТабличныхЧастей, как любимого детища Компании. Но лично меня такой способ концептуально не интересует.
Второй способ, ссылочный, декларирует Инкапсуляцию структур данных, поддержку любого уровня вложенности любых абстракций, имхо более заманчивый вариант. Таблицы при этом в первом приближении напоминают деревья переплетённых между собой справочников, со Ссылками во всех места, и могут вызвать некое недоумение, а что здесь таки нового. Новое здесь - это определение Объекта через ссылочную целостность в понимании РБД, и ТипыДанных, как неизменные составляющие ПрикладныхОбъектов, несмотря на наличие ID, фактически не обладают полной субъектостью, целиком и полностью принадлежат либо своим Владельцам, либо в конечном итоге тем самым ПрикладнымОбъектам, Справочникам, Документам и т.д. Возможно наличие "мусора" в результате программных действий с этими типами, но как недостаток я это не рассматриваю, недостатки вижу в сложности реализации индексов для ПрикладныхОбъектов и в целом заметного замедления работы по причине Запросов "по длинным ссылкам". Это в сравнении в классической моделью уложения. Но жизнь таки не стоит на месте, и вопросы скорости ПЗУ и линий передачи данных сегодня таковы, что позволяют работать клюшкам в сетевом режиме по VPN, поэтому здесь я надеюсь на лучшее.
В отличие от ТиповДанных, ПрикладныеОбъекты наделены самой что ни на есть настоящей субъектностью, суверенностью в политике наших метаданных, и "ссылочная целостность" здесь записана уже в ковычках, в понимании платформы как нечто, что нельзя удалять без спросу. Согласен, для них не может быть огульно установлено правило КаскадногоУдаления, но в зависимости от логики каждого, это будет либо Запрет, либо ПрисвоениеNull, и не исключено, что какие-то Регистры подпадут таки и под КаскадноеУдаление. К слову, Null таки является фундаментальным понятием концепции РБД, и я только приветствую появление его в платформе v8.
Закончить эту заметку я хочу немного крамольной мыслью.
Не нужно думать, что ООБД это что-то сложное. Заложив Классы в базу, прикрутив к ней определяемые типы данных любой абстракции, вложив в руки программисту Var.Save() и Create Table, и как вишенку на торте, всего один оденюсенький прикладной объект, а именно ТаблицуБД, мы получим в итоге такую дубину, что треснет шея не только у Робокопа, но и яйца у самого БиллиГейтса. Но это не есть наша цель, пусть трудится на благо своего отечества.
Имхо, такая конструкция ООБД это как ящик пандоры, как ИИ, заранее невозможно даже предположить, что с эти делать и куда это приведёт.
Так, открывая каждый раз конфигуратор, мы будем видеть всё новые и новые Объекты Метаданных, и станем задаваться резонным вопросом, а нужен ли нам "такой футбол".
Здесь и я, как немножко Программист, должен остановиться в полёте своей фантазии, оставить на рассмотрение Потомкам эту конструкцию, и ограничить таки ПОП привычными нам окнами конфигуратора и ПрикладнымиОбъектами. Более того, я считаю, что концептуально нельзя давать в руки Одинэснику
такую дубину, как ТаблицаБД. Имея на вооружении такой инструмент, отпадёт необходимость в Справочниках, Документах и т.п., ведь любого из этих представителей, вооружившись терпением и 1С++, можно будет реализовать на уровне Конфигуратора, и Регистры, и даже БухгалтерскиеИтоги, таким образом я нарушу основополагающие принципы любой Концепции, такие как полнота, непротиворечивоть, достаточность и так далее.
Да, друзья мои, Концепция ООБД в некотором смысле даже проще, чем наша ПОП.
Моделируя ПрикладнойОбъект, мы берём на себя ответсвенность заложить в Машину максимальную реализацию его прикладной сущности, не обременяя при этом Конфигуратор глобальными модулями в 30к строк, десятками и сотнями модулей и обработок, а Одинэсника тратить время на поиски извращений для преодоления наших недоработок...
Цитата: Пиит от 24 апреля 2024, 11:04Пора уже заканчивать с определяемыми типами и переходить к ПрикладнымОбъектам
Перед тем как взять этого быка за рога, приведу ещё пару примеров применения ТиповДанных и их Наследников.
Число. Суть любого базового Класса-наследника заключается в сужении логики применения своего Суперкласса, в некой собственной специализации, так, для БазовогоКласса Число, с максимально определённой для него разрядностью, каждый из Наследников может только уменьшить такое вродённое свойство чисел, но никак не увеличить. В целом, можно определить КоличествоПроводки[18.3], СуммуПроводки[18.2], СчётчикИтераций[18.0], Часы[10.0] и так далее. Да, да, Часы это вовсе не время, Часы это трудовой измеритель, хотя в некоторых отраслях народного хозяйства, например в медицине, можно встретить и табеля с минутами, и значение часов 168:42 не должно удивить опытного бухгалтера.
Строка. Здесь также имеет место некая специализация от максимально возможного Строка[8], и перечень наследников больше нужен для "общей гребёнки", например Фимилия[30], Имя[25], Отчество[30] и т.д., чтобы не было в конфигурации разношёрстного употребления даже этого, казалось бы, неприметного БазовогоКласса. Что касается Строк бесконечной длины, я к ним отношусь очень аккуратно. Бесит прямо, когда КоммендарийДок задан как бесконечность, выведен колонкой в журнале, и при этом ещё кто-то жалуется, что форма списка тормозит. И это не "в Малорите". Я бы даже ввёл тип данных Текст, а АЛьФ бы реализовал РасширениеТекста. )
Дата. Безусловным шагом вперёд стало внедрение в v8 типа данных ДатаВремя, здесь я согласен с Компанией, это нужная штука. Но не согласен с тем, что специализация этого типа данных возможна только на Форме, имхо, в нашей ветке метаданных вполне буду востребованы таки отдельно и Дата, и Время и даже Месяц, и Год, Наследники от ДатаВремя, во всём своём разнообразии представлений и кнопочек для выбора. Я бы даже определил Дату и Время даже в БазовыеКлассы, запихал в Машину, чтобы они были неотъемлемой частью конфигурации "с нуля".
Булево. Здесь имхо возможно играть только представлениями, Да/Нет, +/- и т.д. Иногда это тоже бывает востребовано.
Массив. В отличие от базовых типов данных с логикой специализации, здесь на первом уровне наследования у нас полное разнообразие возможных размерностей. Реализация автокада как внешней компоненты к платформе не является для меня фантастикой на втором этаже, но как глисту, было бы достаточно и одномерного массива Табель[31], чтобы управляться таки без хлопот с рабочим временем сотрудников без 100500 одноимённых реквизитов Документа-владельца.
Структура. Имхо, наиболее востребованная СтруктураДанных. Кроме упоминаемых кортежей Счет..СубконтоХ, я мог бы не париться ни с Кладром, ни ФИО, ни с Комиссиями, и ни с теми же ДнямиЧасами в табельных значениях, определив тот Массив[31] of День как Структура[ТабельноеЗначение, Дни, Часы, ЧасыНочные, ЧасыПраздничные, ЧасыСверхурочные...] и т.д.
Список. Список уже существует в Конфигураторе v7, но тщательно укрыт от посторонних в компоненте Расчеты, это ГруппыРасчетов. По сути, подмножества каких-либо элементов, будь-то Справочника, Документа или других сущностей. Здесь также на первом уровне наследования разнообразие нужных вам Наследников, например тот же Список of Справочник.ВидыРасчетов, Список of Счет, Список of МоиВкусняшки и т.д. Может быть востребован где угодно, от заработной платы до рецептур в общепите. Может служить также к качестве Перечисления, с логикой выбора или/или, но в отличие от родственника, заполняется не в Конфигураторе, а в Предприятии, включая в себя элементы разных типов.
Дерево. Дерево уже присутствует в платформе v7, как неотъемлимая часть МногоуровнегоСправочника, что имхо является издевательством как над Деревом, так и над Справочником. Имея такую структуру в базе, можно прикрутить два разных Дерева классификации одного Справочника. Например, отобразить Товары как по пользовательким веткам, так и по папкам торгового классификатора; ОсновныеСредства, как по пользовательким веткам, так и по веткам КлассификатораЕНАОФ и т.д. Дерево вообще имхо, недооценённая штука, и АЛьф недаром ТаблицуЗначений раскурочивал.
Таблица. Это самая неординарная СтруктураДанных. Скажу по секрету, что такую структуру данных вы можете и не найти в академических статьях. Иной академик бы даже приказал выбросить её из списка структур, когда уже у нас в дереве есть возможность определить Список of Структура. Сущность ее и связность действительно отличается от своих собратьев, но, поскольку она уже давно вошла в нашу жизнь и прочно укоренилась на всех уровнях бытия БД, у меня не подымется рука вычеркнуть этот тип данных, эту вожделенную ТабличнуюЧасть из своего списка. Здесь, как мне кажется, комментарии излишни.
Стек, Очередь и Граф я уже пропущу. "Здравствуй, племя, младое, незнакомое". Структуры эти нужны для решения общеизвестных задач в информатике, прикладное значение в бухгалтерии я пока не берусь сформулировать, разве что применение графов в логистических процессах. На мой взгляд, будет лучше, что бы они таки были в нашем конфигураторе, чтобы не пришлось когда-нибуль делать глупый вид, что при чтении академических статей по структурам данных вы что-то ненароком пропустили.
В любом случае, повторюсь, список типов данных не запечатан наглухо, может пополняться в процессе развития Машины, и здесь возьмём пример с Компании, которая на протяжении уже более чем 20-ти лет не изменяет себе, сохраняя версию своего детища, и скромно ограничивает себя только релизами...
Чувак, ты ломаешь просмотр "последних сообщений" своими простынями.
Лучше это в блох какой-нить вынести.
Цитата: trdm от 24 апреля 2024, 16:32Чувак, ты ломаешь просмотр "последних сообщений" своими простынями.
Лучше это в блох какой-нить вынести.
Привыкай, чувак.
Я здесь энтропию форума повышаю.
То ли ещё будет.
Читать хоть можно?
А сам проголосовал-то? (https://forum.dorex.pro/index.php?topic=74.0)
Цитата: Пиит от 23 апреля 2024, 11:44... не боялся уже ничего, ни детей, ни женщин, ни стариков...
На выпускном вечере в институте я сидел и вспоминал своего отца. Слушал разговоры новоиспечённых высокообразованных и думал, а пожал бы мне папа руку сегодня за этим столом? Не долюбливал он на своём заводе ИТР, работников умственного труда. И таки было за что.
Я вырос на улице, районы-кварталы, стенка на стенку, всё как положено. От детской комнаты милиции меня спасали только успехи в учёбе. Всякий раз на комиссии по делам несовершеннолетних, уткнувшись носом в зашарпанный пол, я бубнил как "отче наш": "я бош так не бу". И мама там же со слезами вторила: "он так больше не будет". И в лицей она привела меня за руку не только из-за тройки по физике. Что будет дальше, это был не праздный вопрос. Ещё на первом собеседовании меня спросили, чем занимаюсь в свободное время, я честно ответил - гуляю. Мама сидела рядом, спохватилась, не слушайте его, говорит, читает он, читает. Да, верно, я и забыл, читать я тоже любил, как папа, фантастику особенно, про космос там, про "бороздят просторы вселенной". Даже писал что-то, в 12 лет. Один рассказ до сих пор помню, как полетел капитан Джон Магеллан на звёздной вундервафле куда-то туда, далеко-далеко, на самый край, прилетел, глядь, знак стоит указательный - Малорита - 2км. Примерно так, но суть была охрененной на те мои годы, до сих пор удивляюсь. Потом уже, наш профессор физики Шульман, на четвёртом курсе нам сообщит, что наука не знает точно, круглая вселенная или плоская, всё зависит от кривизны пространства, а измерить рулетки пока не нашли. Вот вам и Лобаческий.
За прошедших восемь лет среди очкариков я сильно оторвался от дна, от отца своего, и в тот вечер заметил у себя этот зародыш высокомерия, вот мы какие красавцы, ваше благородие, будем миром управлять, рабоче-крестьянким классом погонять значит. Сидели вот так за столом и вслух обсуждали, прям кремлёвская элита. Гавнита, подумал я, всё ровно наоборот, винтиками были, шпунтиками стали. Вспомнил, как папа старательно прятал бутылочку русской, когда пришёл с мамой на выпускной вечер в лицее. Мама дёргала его за рукав, а он нет, вытащил таки чекушку и протянул мне со словами: "на вот, ток закусывайте там". Тот ещё шуруп. Тогда я впервые осознал, что он мной гордится.
Мужиков я никогда не чурался, вон они, во дворе, трико-домино, попивал даже с ними в прыщавом возрасте, уважали. Очкариком не был, занимался всю дорогу, и классикой, и штангой, и на станке сиськи качал, и с каратистами по залам прыгал. Когда пришёл в лицей, стыдно даже было, однокласники-то мои новые, оказывается ничего ребята, а вчера ещё я их по району гонял. В общем, лицей, как сказала бы мама, оказал на меня благоприятное воздействие.
Однажды, уже в институте, курсе на 3-ем, в какой-то тёплый месяц, выхожу я с девочкой своей после пар, не успели отойти от крыльца, навстречу три товарища в коже, чуть под мухой, ну и один меня плечом так раз, хорошо так развернул. А я что-то девочке в это время втюхивал, даже не заметил, откуда столб на дороге. Ну и слово за слово, я ему оплеуху и "потанцуем, дружище"? Десять шагов назад, дал ему намахаться вдоволь, он подустал, я вошёл, удивил левым джебом, а правым прямым в подбородок отправил оппонента в Малориту. Его друзья даже не пытались со мной дискутировать.
И вся эта картина на глазах у сотни людей, в т.ч. из преподавательского состава. Тепло таки, вылезли покурить и погреться. У моего геометра цыгарка аж изо рта выпала.
Нехорошо конечно. Молча я взял за руку девочку, и краснея от пристального внимания, поплёлся с ней на остановку. В животе остаток дня крутило, пока не вырвало меня, от душевных мук. Говорили, парень час на траве лежал, друзья отнесли в тенёчек, скорая откачала. Вот дурак, думал я, всю свою семью и карьеру в жопу из-за одного придурка. Ждал повестку и ругался сам собой. Не, ну так же нельзя, у нас во дворе так не принято, у нас другие правила, пацана с девкой нельзя трогать, даже самого очкастого, чтобы не ронять его какое-никакое достоинство. Кому нужны твои правила, отвечал сам себе, поедешь сейчас на пятёрку, за тяжкое телесное, родоки то постараются. Знаю я уже одну такую историю.
Был у нас на районе парень один, плюс минус моего года, Голиком звали, невысокий такой, а крепкий как два, на штангу вместе ходили, не дружили, но знал я его не с лучшей стороны, в итоге он в колонию, а я в лицей. Вышел он, успокоился, тихий такой стал, даже добрый. Приглянулась одна дивчина ему, и стал он её после уроков встречать, портфель носить и всё такое. А дивчина-то в лицее нашем училась. А лицей-то наш партийный. И вот стоит он как-то на крылечке, скромно стоит, в сторонке, девочку ждёт. И вываливают из дверей после занятий лицеисты, в пиджаках все, элита, и девочка его с ними, с портфелем. И тут один её одноклассник, чей-то сынок, сам щавель, попёр с чего-то с вопросами на Голика, че стал мол тут, баб типа в округе мало, а ты че, сука, мы тебя не устраиваем? Это он девочке так. Ну и ударил его Голик по лицу, один раз. Взял девочку за руку и пошел, краснея, с ней на остановку. А сынок этот встал с жопы, домой даже доехал, в дверь вошёл и упал там на ковёр персидский. Пришлось оперировать, не в ту руку он свой язык засунул. И его жалко, придурком выписался, таки не поправился. А папа его, большой тогда человек, усадил Голика на пятёрку, и никакие свидетели не помогли. Даже одноклассники на суде показали на чрезмерную неправоту своего товарища. А хрен там, руку поднял?, поднял, вот - пятак в плечи и привет семье и детям...
У меня, слава Богу, в тот раз всё обошлось. Повестка не пришла. Видно, папа был у того парня по-проще, как мой, виноват - отвечай, и неча на других пенять. И что странно, после того случая учёба у меня в гору пошла.
Вот так, сидя на выпускном, вспоминая отца своего, который не дожил до этого светлого дня, я готовился морально к службе в армии. Побаиваться я стал мужиков, как примут, чему научат тебя, зазнавшегося учителя, школа жизни всё-таки, папа всегда так любил повторять.
А девочка моя распределилась в один недалёкий северный городок отбывать учительскую повинность годика на три, так что, не плачь девчонка, ты только жди. А повестка действительно где-то потерялась...
Вот так часто со мной бывает, сел писать одно, а на выходе хрен знает что.
Какой-то незначительный пустяк, муха мимо пролетела, пост новый появился и мысли уходят в сторону, в какие-то непонятные порой ассоциации. Так и здесь, чувак. Одно только слово, и память, как избушка на ножках, поворачивается со скрипом к тебе своей забытой уже гранью, и видишь себя в совершенно другом зеркале. Я даже в гугл залез, Чува́к — жаргонный синоним слов «парень», «юноша», «мужчина» в молодёжном сленге. Вроде и не обидно должно быть, но что-то есть в этом слове не очень хорошее, какая-то дурная ассоциация.
Там, в ВУЗе, в процессе ковки государственного винтика, я узнал много. Например, предмет психология дал мне знание типов памяти. Оказывается, у всех людей она построена по-разному. Одни, например, хорошо помнят факты, даты, формулы, другие - звуки, музыкальное направление, третие - видимые образы, художники значит, и порой люди часто и не понимают друг друга от этого. Как ты вот, не помнишь, как зовут моего сына, я ж тебе, такой ты эдакий, в том году рассказывал. Нет, не помню, ну хоть убей меня. У меня всегда были проблемы с историей, не мог никак запомнить я эти все имена и даты, и даже с математикой, формулы до сих пор не знаю, спроси меня про дискриминант школьный, не назову, стряляй меня в упор. Всю свою учебную часть жизни я был вынужден вникал в суть вопроса, чтобы иметь возможность вывести эту формулу в любой момент, когда нужно будет. У меня другая память - ассоциативная. Соединяет какие-то фрагменты из улогков ПЗУ в одну цепочку, очень легко слышу плагиат в музыке, узнаю в бородатом хроне по телеку знаменитого актёра из детского советского фильма, могу юморить на ассоциация слов и образов, в общем, у меня свои гуси в голове, как обычно говорят в таких случаях. Вот и "чувак" здесь тоже сыграл определённую роль.
Так что не серчайте, братцы, не "бандюган я Брэски", вот уже как тридцать лет так точно.
Цитата: Пиит от 25 апреля 2024, 10:22у меня свои гуси в голове
хорошо, что не тараканы ;-)
Цитата: Злоп от 25 апреля 2024, 11:20... хорошо, что не тараканы ;-)
А хоть и тараканы. Если подумать, бегут же они, если пожрать неча.
Давайте надеяться, что в наших головах таки есть чего похавать ))
Цитата: Злоп от 25 апреля 2024, 11:20хорошо, что не тараканы ;-)
А Вы знали, коллега, что любимым блюдом СэраРичардаЛьвиноеСердце был мозг сарацина?
Таким способом вероятно, арабские цифры и проникли в средневековую европу.
Наследование данных.
Начну, как положено, с постановки проблемы, на примерах.
Не передать словами, как надоело ковыряться уже в этих типовых справочниках ТМЦ в v7.
Вот, запихали все сущности в три флакона, и радуются. В ОсновныхСредствах всё в кучу, и Здания, и Транспорт, и Калькуляторы и так далее по классификатору ЕНАОФ. Номенклатура это у нас и Товары, и Услуги, у Продукция, и какого-то хрена КомиссионныеТовары и ещё чёрти-чё. И Материалы туда же, по субсчетам типа разбиты, как будто так они станут разные, Материалы, Топливо, Спецодежда, БСО (бланки строгой отчетности) и далее по списку субсчетов.
А то, что все перечисленные элементы внутри групп - это несовместимые порой штуковины, с разной структурой и даже различным учётом, так это типа "не к нам вопросы", а к покойному Эдгару. Вот тебе, чувак, слои, ВидыТиповВидов, группы в справочниках, как хочешь, так разделяй и влавствуй. И вот в v8, та же проверенная старая схема, даже хуже, всё один флакон, по группам разнеси, и не задвай больше глупых вопросов.
А я бы сделал так.
Справочник.ТМЦ, первый наследник БазовогоПрикладногоКласса, далее следующий наследник - Справочник.ТМЦ.ОсновныеСредства, с общими характеристиками для всех ОС, как-то ИнвентарныйНомер и т.д. Далее пойдут наследники по первому коду классификатора ЕНАОФ, Здания, Транспорт, Калькуляторы и т.д., где каждого из указанных Справочников я бы наделил присущими им свойствами, например, Здания площадью м2, этажностью и прочими контруктивные особенности, а Транспорт - Моделью, ГосНомером, ПервоначальнымПробегом и так далее.
Таким образом, на каждом уровне наследования я достигаю той самой специализации ОС не только в соответсвии с ЕНАОФ, но и житейской логикой, и даже концепцией ООП.
Точно также, Материалы наследуют ТМЦ, имеют свои общие характеристики, Цена и всё такое, а далее, по мере специализации, наделяются своими "родными" качествами, кто НормамиЗакладкиБлюд, кто СериямиИНомерамиБланков, а кто и НормамиРасходаТоплива.
Номенклатура в таком же порядке, есть ТМЦ, а дальше подразделяется на свои известные ВидыНоменклатуры, среди которых Товар мы можем по мере необходимости специализировать и дальше, для продуктов питания добавить СрокиХранения, для Ботинок Цвет и Размер и так далее в безграничном разнообразии всей товарной массы.
Всё это дерево Классов имхо Компания попыталась в V8 запихнуть в свою новую вундервафлю под названием ПланВидовХарактеристик, дескать вот вам супер-штука-дрюка, и приступайте сами "на стороне клиента" скурпулёзно составлять свои классификаторы товаров. Это я понять могу, Компания не хочет заниматься Ботинками, она предлагает нам универсальность, ту самую, про которую говорят, "для всех и ни для кого в частности". Это деловой подход.
А у нас чуток не так. У нас есть огромный Справочник.ТМЦ, чуть поменьше его потомки ТМЦ.ОС, ТМЦ.Материалы и ТМЦ.Номенклатура, а дальше - все наследнички более мелкого калибра.
Да, напомню, любой Класс имеет свою Инкапсулированную ТаблицуБД, и таким образом мы получаем столько таблиц, сколько листьев на этом дереве с корнем Справочник.
Напрашивается логичный вопрос, а в какой из комнат нам искать наш Ботинок?
Ответ - в общем случае Ботинок валяется сразу во всех суперкомнатах, он разложен на атомы ровно в том количестве ТаблицБД, каков уровень его наследования от БазовогоКласса, включая последний.
Давайте считать, идём с конца - Ботинки - Товары - Номенклатура - ТМЦ - Справочники, итого 5. Если не считать, что мы пропустили ПромТовары и ещё чего-нибудь предметно-ориентированное.
Да именно так, в общем случае пять, если не вспомнить о том, что в ООП есть ещё третий принцип - Полиморфизм.
Я в общем-то психом себя редко считаю, и пихать все элементы всех справочников в одну таблицу рука не подымется, хотя не исключаю и такой вариант.
А вот для выбора варианта я предлагаю ввести здесь в оборот Полиморфизм данных, как Классов, так и их Реквизитов....
С точки зрения бухучёта в его общей ипостаси - большая часть всего этого нахрен в бу не нужна. Имхо. А специфику учёта отдельных классов можно реализовать типа свойствт-значение и плугинами для обработки/учёта. При этом ещё и свои счета и субсчета можно создавать в режиме предприятия. И кстати, бля ОС в 77 существовала отдельная конфига 1с:Основные средства.
С попытка реализовать всю специфику чего бы то ни было через ахеренную череду наследования и потомков имхо ни к чему у хорошему не приведёт...
Цитата: Злоп от 25 апреля 2024, 18:10... И кстати, бля ОС в 77 ...
Это непременно войдёт в наши анналы, коллега, но таки дайте мне помечтать.)
С Вашего позволения, я продолжу.
А чтобы продолжить этот разговор дальше, необходимо избавиться от одного крепко засевшего в мозжечок стереотипа, а именно от нашего всего - от Конфигуратора. Да, сломать его об колено и выбросить на свалку истории. Я не первый, кто попытается это сделать, ломать не строить, но имхо все предыдущие реинкарнации этого Деуса нашей Компании имели, как говорят в Одессе, те же яйца, только сбоку.
Необходимо выбросить из головы все "плюсики", за которыми скрываются выпадающие списки реквизитов и прочих ресурсов. Отныне это только ДеревоКлассов, и за плюсиком выпадет только список наследников, и на этом всё. Когда у нас появятся, "лет чрез пятьсот", трёхмерные мониторы, у нас будет возможность поместить на экране и то и другое, например по оси ординат дерево наследников, а по оси аппликат - списки их реквизитов, или по оси абсцисс, так даже смешнее.
Но пока я ещё не собрал воедино теорию дискретных пространтсв, и придётся таки отказаться от привычного нам вида Конфигуратора. Каждый Класс требует отдельного Окна для рассмотрения его Структуры в контексте Наследования данных.
Наследование данных как принцип ООП нельзя просто взять и огульно "включить", модули и методы - это только частный случай, нужно рассмотреть правила наследования для каждого в отдельности БазовогоКласса. Вот, как пример, Структура, очевидным образом обрастает в каждом поколении всё новыми и новыми реквизитами, взять ЭлементСправочника, на первом уровне можно заложить Код и Наименование, на втором, в том же ТМЦ, добавить Цену, на третьем и последующими, в соответствии со специализацией Справочника, будут добавляться и Площадь, и Пробег и прочие свойства. По правилу наследования, нельзя изменить у Класса реквизит его Родителя, для этого нужно открыть в отдельном Окне родительскую Структуру, и там уже, внутри Отца своего, добавлять, изменять либо удалять то, что вам нужно.
И вот именно здесь и сейчас мне очень захотелось, как никогда прежде, выкопать мощи святого Эдгара* и закопать их в другом месте, но уже гораздо глубже, завернув его в саван концепции реляционных баз данных. Очень уж захотелось выбросить из проекта все таблицы, объявить Справочник как связный двунаправленных список of structure и перейти на модель БД, построенную на Лесах Бинарных Деревьев. В споре между аппологетами ООБД о применимости модели РБД у меня с собой таки нет единого мнения.
О чём это я? Да, наследование Таблиц. Таблица, как двуликая сущность, сама по себе которая содержит качества одновременно и Структуры, и Списка, является немножко занозой в стройной классификации структур данных. Но реалии таковы, что мы все сегодня априори внучата дедушки Кодда, и SQL наше всё, и даже самые смелые проекты начала века опускаются на уровень Тырнета, и вместо обмена данными в режиме реального времени, опускаются до примитивного уровня запрос-ответ. А между тем, сами изобретатели SQL приходят по-тихоньку в выводу, что реляционной модели пора уже занимать место на кладбище, и структурированному языку запросов, как ее порождению, дорога туда же...
*
Про некрофилов, многие наверняка читали в детстве хоррор Герберта Уэлса "Голова профессора Доуэля", но мне больше нравится другая аглицкая баллада, история похождения головы Оливера Кромвеля, поверьте это гораздо интереснее и поучительнее.
это вам в сторону баз типа NOSQL
Цитата: Злоп от 25 апреля 2024, 21:36это вам в сторону баз типа NOSQL
Ну что Вы, коллега, не нужен нам берег турецкий. Мало ли чего иногда хочется, особенно когда седина в бороду. Меня частенько заносит во время дискуссии, и поэтому бываю не точно истолкован. Я вовсе не хотел обидеть дедушку Кодда. Вопрос просто не простой, концептуальный. В этом любовном треугольнике из Таблицы, Списка и Структуры, в котором Таблица имеет обоих, а те в свою очередь имеются Таблицей, кто-то явно лишний. Вот в чём дело. Я даже уверен, что Эдгар Кодд, вертя в руках этот спиннер, долго не мог сделать выбор, какой фундамент заложить в модель базы данных, Таблицу или Список&Структуру. Возможно даже, что он исследовал оба варианта. Как бы там ни было, мы имеем то, что имеем, и я таки Одинэсник, а не Амазонник, и вопрос приемственности для меня очень важен, поэтому от Таблицы как структуры данных я отказываться не намерен. Я намерен её обойти на повороте.
Приемственность это имхо очень не простая штука в развитии любого проекта, и соблюдать её чрезвычайно сложно. Вот, даже Формекс неоднократно подвергался ревизиям, что-то пропадало, что-то переименовывалось, что-то пошло изначально не так как хотелось, а потом уже поздно исправлять, потому как нарушится эта самая приемственность. Сегодня вот, обсуждали, была АтрибутХреньТакаяТо, потом пропала, на ровном месте ошибки где-то попёрли.
Я стараюсь придерживаться приемственности. Хочу нарисовать такой проект v78, в который можно было бы конвертировать любую типовую конфигурацию v7. Никто же силком не заставляет типового архитектора возводить десять этажей наследования Справочников, а базовые типы данных и прикладные объекты какие-никакие в v7 есть, и я думаю, при аккуратном подходе, такая цель может быть вполне достигнута.
По крайней мере, я не порождаю куролесицу в виде Ссылок-Объектов-МенеджеровСправочников.
Компания потому и отказалась от приемственности v8 с v7, что сама заблудилась в собственных хотелках, нарожала гремлинов каких-то с непонятными даже названиями, и какой тут СоздатьОбъект прикажете? Ресурсный унисекс какой-то изобрели. Даже термины, к которым относились в v7 таки более по-человечески, заглядывали в бухгалтерские учебники, консультировались с экспертами, так взяли и исчезли просто. Слово Субконто вошло в этот мир благодаря Компании, а теперь это ПланВидовХарактеристик. Ну, а РегистрыБухгалтерии чем от ПлановСчетов отличаются? Я ж не просто так про Ресурсы, это ж в УчебникеПоБухУчёту написано, что Измерителями они называются, а ресурсы это другое понятие. Так на каком языке с бухгалтером прикажете разговаривать? Где оно, предметно-ориентированное ваше?
А ООП со структурами данных как раз и позволяет создать ту самую прикладную конструкцию, самую что ни на есть предметно-ориентированную модель, с понятными для юзера объектами и их свойствами.
Что касается SQL. SQL оперирует таблицами, на экранах мониторов таблицы, и мы все структуры данных пытаемся уместить в таблицах, а ООП то оперирует другими структурами, кодер оперирует другими абстракциями, более сложно организованными, многомерными конструкциями, а таблица то - всего лишь двумерная матрица. И вопрос, как научить SQL на запрос возвращать ответ не таблицами, а этими самыми конструкциями, не имеет пока полного ответа...
"с понятными для юзера объектами и их свойствами."
а что сейчас для юзера непонятно, например в 77? Он ни с таблицами, ни с классами не работает. Доки, списки, отчёты. Всё. Вот не сталкивался я например по бухии, чтобы отсутствие каких-то узкоспециализированных характеристик ОС мешало вести бух.учет этих ОС. Группа ОС - для определения срока. А сколько там квадратов, всота потолков и тощина стен - это все в инженерных данных и прочих околобухгалтерских и продажных вещах, чтобы успешно торговать продукцией этих ОС (квадратами в аренду, киловатчасами и прочими)
.
?
Цитата: Злоп от 26 апреля 2024, 04:14... Он ни с таблицами, ни с классами не работает. ... Группа ОС - для определения срока. А сколько там квадратов, всота потолков и тощина стен - это все в инженерных данных и прочих околобухгалтерских и продажных вещах,
Вот, здесь Вы абсолютно правы, дружище. Нет необходимости знакомить главного бухгалтера с новым словом "Класс", пусть это будет как и раньше - "Вид". Вот, есть Виды ОсновныхСредств, вон они, в ДеревеКлассов, тьфуты, в ДеревеВидов, слева от списка в Справочнике. Вот Здания, вот Сооружения. Главбух видит все элементы, всё своё хозяйство, но перед тем как ввести новый элемент, нужно таки выбрать для него ветку, что это, Транспорт или СтанокОборудование, вот имхо и вся новая трудность для этого главного специалиста.
Но он же не один такой, главный, есть и другие, и главный механик, и главный технолог, прораб ещё есть.
Закладывая классификацию справочников-наследников ТМЦ, мы приводим конфигурацию таким образом в соответсвие и к структурным подразделениям предприятия. Пусть механик работает со своим Транспортом, и разбирается там, какое колесо на каком месте крутится на его тягаче, и когда его нужно списать. Путь мастер копается в своих СтройМатериалах, подгоняя их к сметам. А технолог пусть разбирается с остатками муки на утреннюю выпечку или другими нормами расхода на единицу продукции. И никто из них, этих главных специалистов, не будет думать, с какого хрена у меня в муке дизтопливо плавает, а бланки БСО лезут в строительные сметы.
Но в первую очередь, объектная модель данных нужна мне, Одинэснику, чтобы не бегать постоянно по всей конфигурации при каких либо изменения законодательства. Поменяли там наверху бланк ТТН, добавили какую-то бздюху, примечание какое-то, открыл я свой ТТН, добавил Реквизит, попавил Макет, модуль подмандил, чтобы печатал красиво, и всё, дружище. Всё, я описал объект, и при оформлении любой Отгрузки всё будет работать, и реквизиты, и печать. Я не буду бегать как ошпаренный по всем Отгрузкам Товаров Материалов Продукции ОсновныхСредств и ещё каким-нибудь МалоценнымПредметам, чтобы добавить Реквизит и прочия, отмечая на бумажке, тут я сделал, тут надо сделать, а тут пропустил какого-то хрена.
ООП таки, ёптыть...
Эх, забыл про товароведов с Ботинками.
Цитата: Пиит от 24 апреля 2024, 20:12... Побаиваться я стал мужиков, как примут, чему научат...
Пиитеть не мешки ворочать, говорили мужчины в нашем дворе. Чайф о таких мужчинах даже куплеты спел, был такой танцевальный коллектив на Урале, ламбадушку душевно так бацал.
Когда они стали такими, те мужчины, думал я, глядя на моих сержантов из разведбата, которые на июльской жаре мотали десятку в ОЗК по стадиону в десантных кирзачах. Вот же они, красавцы, загорелые, мускулистые, альфа-самцы, прямые и жёсткие машины-убийцы в своей армейской классификации.
Нельзя сказать, что среди лицеистов таки все были зашуганными очкариками, отнюдь нет. Много было крепких ребят, которые могли и за себя постоять, и за друга спросить. Мой хороший друг и одноклассник поступал после лицея в академию МВД, тот ещё голливуд. С блатом поступал, какой-то майор, родственник у бати его там был. Не прошёл, завалили на русской литературе. Как, спросил его местный академик, звали отца Пьера Безухова по отчеству? Вот и вся академия, со своми полковниками. Так наше МВД потеряло по дороге возможный винтик в своём следственном отделе, и приобрело себе шурупа в виде отъявленного бандита и нарушителя общественного спокойствия. Тоже элита. Бригада, биты и ломаные кости оппонентов. Живой по сей день, и как полагается, бизнесмен. А тогда всякое могло случиться, на казалось бы ровном месте.
Помню одну историю, бригада его чистила бундесов на варшавке, т.е. собирала налоги и отчисления с транзитных легковых автомобилей на пограничном пункте пропуска. И вот подкатили они так к очередной тачке, и с мужичка, на вид щуплого, 50 марок вежливо попросили. Мужичок отпираться стал, вы чево, мужики, я ж местный, семья, дети и т.п. Кому нужны твои семья и дети, не вытерпел один бандюк эти сопли, и достал из-за пазухи ножик такой, с локоть длиной, чтоб мужичок не отнимал значит рабочее время. И тут случилось то что случилось - в самое яблочко, прямо в анальное отверстие того бандюка вставил этот мужичок самурайский нож владельца, по самую диафрагму. Дискуссия таким образом была окончена, и поволокли братки, подобрав свои сопли, друга своего на белую койку. Пол года потом тому бандюку хирурги кишки перештопывали и сухожилия перевязывали, одно так и не срослось.
Спустя много-много лет я эту историю услышал однажды от другого человека, моего нынешнего хорошего друга, за ночными посиделками с чашкой чая и рассказами о бурной молодости. После армии, говорит, куда идти, время лихое, заводы стоят, семья вон, дети малые пошли, и подался машины гонять, из европ на восточное направление. Обычно, говорит, братки местных не трогали, а тут видно, не хватало им на баню с девками, и упёрлись рогами. И тут один придурок нож достал, похвастаться. Всё, пипец, доберман пошёл. И засадил этому гавнюку его гаджет по самые помидоры, осознанно засадил, спец таки. Десантура, афган, ахернадцать боевых выходов по душманским тылам со списанием с довольствия. Вот такой попался тем браткам мужичок.
Когда я открывал ногой дверь горвоенкомата, я действовал как учитель. Есть такой приём психологический, выкинуть какой-нибудь фортель, создать эффект неожиданности, привести в замешательство испытуемого. Учителя в школе таким образом привлекают внимание к важному моменту в учебном процессе. Можно хлопнуть в ладоши, ляснуть по столу линейкой, пёрнуть громко наконец, главное - возбудить кору юного мозга за партой, чтобы встрепенулся и сориентировался таки в пространстве и времени. Так было и в военкомате. Сотрудники на своей памяти наверное и не видали таких наглецов. Что-что? Служить хочу? Как-как? Родине? Замешательство уже случилось, что делать не знали. К тому же, мерцавец был не один. Сразу двое желающий защищать отечество упали на голову военкомам. Это был перебор, это уже конгнитивный диссонанс.
Да, я был не один, подбил своего сокурсника на это дерзкое дело. Серёга, тоже интересный персонаж, клички не имел, фамилия была короткой и хлёсткой, так и называли его все, по фамилии, даже жена его молодая не назвала его по другому. Хороший хлопец, вырос в таких пердях полесья, что не долетел бы туда и змей-горыныч. Имхо именно в тех краях и зародился этот сказочный герой русских сказок, по топономике речки тамошней, Горынь назывется. Мой отец тоже из тех мест, недалеко, на Лани вырос. Серёга тоже не был очкариком, он был кикбоксёром. Каким способом доплыл до Горыни этот вид искусства, остаётся загадкой, но намахался Серёга вдоволь на первом курсе, в общежитии, указывая оппонентам из спортфака, что физмат тоже сила.
Как и мою девочку, его молодую скво распределили в места отдалённые, сеять разумное-доброе, и мы такие два охламона были не-пришей-к-жене-рукав, свободны и открыты к любому общению. Так и стояли теперь, улыбаясь, перед большим начальником, зам.горвоенкома п/полковником Гумянко. Это была женщина, красивая, статная женщина, в погонах и заколках. Жалко, забыл уже её имя-отчество, но это была фемина. Улыбнулась нам, по-доброму, по-матерински так, сняла трубку и позвонила начальнику областного узла связи. Посмотри, говорит, Виталик, двух бойцов, умные, компьютеры знают, и пожелала нам удачи. Поехали мы с Серёгой собеседоваться к тому Виталику. Прям как на работу принимали, по одному в кабинет директора. Не знаю, о чём там беседовали они с Серёгой, но у меня Виталик спросил один только волнующий его вопрос, кем тебе-на приходится-на полковник Гумянко? Тётка-на, ответил я, глазом не моргнув. Ассоциация-на.
После, в отдельной штурмовой воздушно-десантной, после присяги Серёга три ночи глаз не сомкнул у толчка в расположении своего нового боевого подразделения. С железной дужкой от кровати, трое суток, убеждительно доказывал новым друзьям из класса дедов-дембелей, что физмат таки тоже сила. Не сдался, редкий случай, раскрасил не одну голубую беретку, пока не сдались боевые товарищи. Посрать наверное уже очень хотели. Хрен с тобой, сказали, выходи, что с тебя взять, годишник ведь, педагическими приёмами владеешь, наш человек. Так Серёга пошёл вверх по военной лестнице, нанадцать прыжков и рейдов по тылам голодающих колхозов, диверсионная подготовка, и прочее. После службы не остался, долго уговаривали, пошёл в сисадмины, по банкам скитался, пока боевые качества не проявились на новом поприще. Сейчас рулит областью, в отделе безопасности одного нашего крупного госбанка, гоняет инкассаторов, бывших майоров-полковников, по технике безопасности при обращении с табельным. Всякое случается, бывает, приходится вспомнить физмат, и применить к новенькому майору педагогические приёмы.
Меня Боженька уберёг от посиделок с дедами. "Тётка" помогла. После присяги отправился я на тот самый областной узел связи, разминать пальцы на телеграфе и спать в секретке. Не жалею, побегал, попрыгал, успел сигануть с куполом разок, познал силу крепкого мужского локтя, и мужиков уже после службы не побаивался...
"не будет думать, с какого хрена у меня в муке дизтопливо плавает, а бланки БСО лезут в строительные сметы."
если бардак то он везде будет. в дереве классов будет дизтопливо лежать. Почему? да потому что раздолбаи! завели так, ой не туда, кинули как было и в новой ветке завели правильно.
Цитата: Злоп от 26 апреля 2024, 13:38... Почему? да потому что раздолбаи! ...
Ну, не горячитесь так, коллега.
Разве я похож на просвитера, который сначала промывает вам мозги цитатами библейских персонажей, а затем тащит вас за рукав в свою богодельню?
Мне не нужны последователи, потому как я не спаситель и не апостол.
Более того, меня не интересуют ни лайки, ни подписчики, ни количество просмотров.
Просто у меня "есть что сказать", сказать чего надумал за много лет, чего открыл для себя за время работы с v7, высказать мои оценки Компании и её новых детищ, и помечтать наконец.
Мечтать то не вредно?
Вполне даже себе представляю, как может здесь усмехнуться иной кодер, глядя на мои размышлизмы. Ну-ну, распрягай дядька своих скакунов, открывай америку, давно и без тебя всё это знаем, и сами с усами. Надеюсь, что я не похож и на наивного юношу.
Есть потребность, я уже писал об этом, весеннее обострение, я так это называю.
Более того, зная себя, думаю, до Победы ещё дотяну, а там успокоюсь.
Психотип у меня такой, загораюсь, хватает на какое-то время, а потом всё, туши свет.
Так что потерпите мои простыни, коллега, до Победы.
Всё же странно язык устроен -
То болтается где-то годы,
То печатным шагает строем,
То вдруг вешние дарит всходы.
Аккурат перед самым маем
Выпускает мой враг побеги,
Расцветает язык тюльпаном,
Распускаясь ко дню Победы.
Лепестком поиграет алым,
Поокрепнет зелёным стеблем,
И потом неизменно вянет,
Аккурат после дня Победы.
Цитата: Пиит от 25 апреля 2024, 19:19... взять ЭлементСправочника, на первом уровне можно заложить Код и Наименование...
Очень важная тема. Много нового. В таких случаях говорят, пропустишь - потом не наверстаешь.
Вернёмся в ТипыДанных и рассмотрим таки подробно Наследование на примере Структуры, и разложение её данных по ТаблицамБД.
Пример простой - Элемент - ТМЦ - Номенклатура - Товар - Ботинок.
Обратите ещё раз внимание, это не Справочники сейчас, это Структуры, к Справочникам вернёмся чуть позже.
Напомню, что каждых Класс этой цепи Инкапсулирован, таким образом, один несчастный Ботинок содержится сразу в пяти ТаблицаБД. Постулат РБД об избыточности я свято храню в памяти, и собственно нет никакой небходимости дублировать данные и лишние гигабайты тоже ни к чему. В каждой ТаблицеБД Ботинок представлен только своей прикладной частью, реквизитами соответствующего этой ТаблицеБД Класса.
Так Элемент будет содержание Код и Наименование, ТМЦ - Цена и ЕдИзм, и так далее, пока собственно сам Ботинок не расскажет нам про свой Цвет и Размер.
Таким образом, Ботинок целиком в этом дереве Классов представляет собой некий Кортеж данных, в общем случае неопределенной длины. Я назвал этот кортеж Родом. Длина Рода соответсвует уровню наследования Ботинка, как последнего в Роду потомка от БазовогоКласса.
Давненько мы не заглядывали в фундамент Концепции, пора наконец ввести в оборот новые термины.
Родитель - это фундаментальное свойство любого Объекта, вертикально интегрированное понятие, представляет собой Ссылку на нижестоящий Объект в цепи наследования.
Логичное и понятное свойство. Каждый Ботинок должен знать своего Родителя, знать что он Товар и далее генеалогическому древу. А Род у нас благодаря такому свойству превращается в односвязный список в направлении к БазовомуКлассу, и мы сможем получить на каждом уровне наследования данные всех предков Объекта до самого Адама.
На этом месте я хотел бы определить ещё одно, новое и в то же время хорошо нам известное понятие, понятие простое, но определить его чётко имхо очень важно для последующего изложения.
Вид Объекта - это Класс, которому принадлежит Объект на последнем уровне наследования, считая от БазовогоКласса.
Определение как определение, ничего сложного, примеры нам хорошо известны - Вид Сотрудника это Сотрудники, Вид Ботинка это Ботинки. Смысла продолжать этот ряд не вижу. Зачем это определение мне понадобилось в таком виде? А дело в том, что по факту Ботинок принадлежит физически одновременно сразу пяти разным Классам, пять ипостасей имеет этот подкованный Объект. Никто ведь не поспорит, что Ботинок это не Товар или не Элемент, это пять Объектов в одном, но в первую очередь это таки Ботинок Вида Ботинки. Логика, ептыть. И заметьте, в каждом из Классов, он имеет в наличии свой уникальный ID. Это тоже фундаментальное свойство Класса, и повторять его небходимость здесь я уже не буду. Здесь важно остатовиться, и выяснить, что из этого следует.
Имея пять разных ID в разных ТаблицахБД, Ботинок может и даже будет представлен в базе данных Ссылками на все свои запчасти, все свои ID, причём одновременно. О как. Это не шутка и не парадокс, это ссылочная целостность РБД.
Как же на практике так может случиться, что один и тот же Ботинок окажется разными частями в разных местах?
Пожалуйста, выписываем Счет на оплату, работаем в этом случае со Справочником ТМЦ. Какая ведь разница для менеджера, чего мы хотим продать, ОсновноеСредство, Материал или Товар. В такой логике работает менеджер и в v7. А у нас в v78 открывается подбор и мы видим весь список ТМЦ нашего предприятия, выбрали что надо, и таким образом, Документ Счет сохранил в себе список Ссылок на ТМЦ. Идём дальше, приходуем Товары, оператор работает со Справоником Товары, соответсвующая Операция, некий входящий Документ аля ТН, и здесь формируется список Ссылок на Товары. И так далее, вариантов бесконечное множество.
Возникает вопрос, а какой же из этих ID Ботинка является таки главным, определяющим его целиком. Очевидно, последний в Роду, ID его Вида. А чтобы в любом месте, где будет фигурировать наш Ботинок, юзер таки мог понять, что это таки Ботинок, возникает необходимость в новом фундаментальном свойстве Объекта.
Я не хотел бы превращать Род Объекта в двусвязный список, вводить в оборот Потомка, дескать это само собой напрашивается, навигационная симметрия и прочие аргументы. Не хочу. Это вопрос в целом дискуссионный, но имхо, это будет во-первых немного противоречить самой логике Наследования, а во-вторых, это будет избыточно в нашей модели. Я предлагаю ввести в оборот вместо несостоявшегося Потомка новое, необычное, но перспективное понятие, и назвать его Г'еном.
Ген - это фундаментальное свойство Объекта, вертикальное интегрированное понятие, представляет собой Ссылку на последего потомка в цепи наследования, и назначается для всех предков Объекта одновременно.
Такая вот Видовая ссылка, Родовая метка, которая будет неотъемлимоый частью каждого предка нашего Ботинка. И в ТаблицеБД Товары, и в Номенклатуре, и так до самого БазовогоКласса.
Это и есть тот самый главный ID среди всех ипостасей, главная часть ДНК моего Рода.
Казалось бы, амёба ведь не знала, что станет когда-то Пиитом. Ну да, но я то знаю, что я не амёба, и в моём эмбрионе каждая амёба тоже знает о этом.
Таким образом, на каждом уровне наследования, и юзер, и Машина в первую очередь, будет знать, с кем имеет дело. Так, в списке ТМЦ, если менеджер захочет открыть и посмотреть данные Ботинка, Машина считает Ген Товара, и от Видовой ТаблицыБД начнёт прочтение всех данных Объекта, блокируя по мере продвижения по Родителям к БазовомуКлассу весь его Род.
Как то так.
Пора обозначить уже, что такое ID, и с чем его едят...
Цитата: Пиит от 27 апреля 2024, 08:33... Ген - это фундаментальное свойство Объекта....
Род, Вид, Ген - это всего лишь слова.
Подобно Эдгару Кодду, я тоже крутил свой спиннер на пальцах, только с филологической точки зрения.
Можно было бы назвать этот ID собственно и Видом Объекта. Но "Вид" таки уже принятое в обиход понятие, и бухгалтер уже привык, и для приемственности, для логики Классов, я оставил за этим словом его известное значение, Вид - это таки Класс.
Затем я хотел назвать этот ID Родом, как что-то объединяющее все Объекты в цепи наследования, но в обиходе, на бытовом уровне, у нас принято несколько другое его использование, вот, говорят же, у меня в Роду был такой-то крутой предок, вот и здесь логично было назвать Кортеж, вмещающий в себя все данные Потомка, именно этим словом.
Ген, геном, здесь у меня нет уверенности в правильности применения. Напротив, говорят ведь, что у тебя вон, ген твоего бати на лбу вырос, т.е. Ген как-бы передается от Отца к Сыну, а не наоборот. Здесь я таки надеюсь, что Геном - это всё-таки что-то общее для всех Объектов, такое Родимое пятно, потому я и взял его на вооружение.
Вообще, у меня была четвёрка по соответствующему предмету, и возможно среди нас найдётся, помимо химиков, ещё и биологи, чтобы уточнить этот термин, и даже предложить другой.
Добавлю в тему Классика:
"...Мой предок Рача мышцей бранной
Святому Невскому служил;
Его потомство гнев венчанный,
Иван IV пощадил.
Водились Пушкины с царями;
Из них был славен не один,
Когда тягался с поляками
Нижегородский мещанин..."
Цитата: Пиит от 27 апреля 2024, 12:28.... Ген, геном, здесь у меня нет уверенности в правильности применения.
Гугл наше всё. Ген - наследственный признак, Геном - совокупность признаков, информация об организме, заложенная в каждую его клетку.
Вопрос разрешился сам собой, итак, подправлю определение:
Геном - это фундаментальное свойство Объекта, вертикальное интегрированное понятие, представляет собой Ссылку на последего потомка в цепи наследования, и назначается для всех предков Объекта одновременно.
Кстати, Ген по гречески это Род. Упустить из виду этот факт - это настоящий позор для меня, так как считаю себя большим любителем славянского языковедения и загадок словесных полиморфизмов.
Например, почему Медведя называют кое-где Ведмедем, и то же время жилище его во всех языках называется Берлога.
Цитата: Пиит от 27 апреля 2024, 18:36... Геном - это фундаментальное свойство Объекта, вертикальное интегрированное понятие, представляет собой Ссылку на последего потомка в цепи наследования, и назначается для всех предков Объекта одновременно...
Эволюция Объекта.
Продолжение сложной темы.
Повторение - мать учения, и даже просто повторяя вслух эту прописную истину, наставник уже программирует свой Объект.
Повторюсь, вследствии Инкапсуляции данных Класса, данные Объекта при Наследовании оказываются разделёнными по разным Классам, физически по разным ТаблицамБД, и сам Объект представляет собой в дереве Классов не единую Структуру, а Кортеж Структур, согласно установленному ему наследованию, и общем случае, длина Рода заранее не определена.
Да, этот момент мы не ещё рассматривали. Объект, как живой организм, имеет свой жизненный цикл, и на его протяжении может Эволюционировать, передвигаясь всё выше и выше вверх по дереву Классов.
Пример, оператор, оформляя ПриходныеНакладные, может не указывать ПриВводеНового Элемента справочника Товары его специализацию, а внести просто Товар, на этом уровне наследования, со своими Родительскими Код,Наименование,ЕдИзм и т.д., и собственными реквизитами, хз какими. В дальнейшем, некий менеджер, работая с тем же справочником, классифицирует поступившие Товары согласно их торговым категориям, продвигая их таким образом по служебной лестнице. Так наш Ботинок, не сразу может стать Ботинком, а на пределённом этапе свого цизненного цикла.
Таким образом, в ООБД, как в концепции, помимо Новый() и Удалить(), появляется новая процедура, Эволюционировать(), и соответствующие ей триггеры типа ПриЭволюции(). Я бы не хотел называть тот метод именно так, "Эволюционировать". Не люблю, когда со мной изъясняются умными словами, Валя, ну-ка, Проэволюционируй-ка мне этот Объект в Дереве Классов. Здесь можно и дырокол ухом смоймать, нужно таки быть ближе к людям. Это могло бы быть "Уточнить()", "Продвинуть()", или "Классифицировать()", имхо, последнее не айс, но лучше, чем очередной термин из биологии. Но мы то с вами с усами, может себе позволить поумничать друг с дружкой.
В процессе Эволюции, длина Рода Объекта таким образом увеличивается. Объект прирастает новой Структурой, в новой ТаблицеБД, и получает в коллекцию новый ID. И именно этот новый Идентификатор становится новым Геномом во всей цепочке наследования. Да, у нас Геном может меняться, но ничего страшного в этом нет, Геном не участвует в ссылочной целостности, а нужен нам только для объединения Объекта в одно целое.
И здесь пора определиться, что такое ID и Ссылка. В общем, ничего сложного. Идентификатор Объекта Класса - это его Ключ, уникальное значение внутри Класса, Ссылка же - уникальное значение Объекта во всей БазеДанных, и представляет собой пару Ключей, ID Класса + ID Объекта, тоже самое что ID ТаблицыБД + ID ЗаписиВТаблицеБД. Эта конструкция нам знакома, в v7 уже такое практиковали, для АгрегатныхТипов неопределённых Видов, именно пара полей представляла собой Ссылку в этом случае. Но в нашей БД необходимо установить это как правило, Ссылка - это всегда пара ключей, иначе мы концов с вами не найдём.
Вопрос этот более технический, нежели концептуальный. Ссылка может быть и одним полем в ТаблицеБД, эдаким составным внутри себя, это не принципиально, возможно, специалисты могут одной левой построить необходимые индексы и в этом случае. Здесь я, как старый поклонник DFB, не очень компетентен. Я даже не знаю, каким образом Ссылки реализованы в V8, никогда не ковырялся в её таблицах, и даже не знаю, каким скальпелем это делают. Принципиально здесь - Ссылка это пара Ключей, однозначно определяющая Объект в БазеДанных.
Что таки даёт нам Геном, как пара ключей в каждом наследуемом Классе, в каждом Родителе нашего Ботинка, кроме того, что мы можем с его помощью вытащить Ботинок целиком за любой шнурок на свет Божий?
Вот вам фокус номер один, на любом уровне наследования мы имеем возможность сделать выборку потомков любого Класса. Уже в списке Элементов мы можем разместить на форме ДеревоКлассов наследников, и щёлкая по любымым веткам, производить отбор в списке необходимых нам потомков. Щёлк по ТМЦ, вот тебе список ТМЦ, щёлк по Товарам - вот тебе список Товаров, а вот и Ботинки, пожалуйте, Ваше Высокоблагородие. И при этом мы не выходим за рамки одной ТаблицыБД, мы работаем только со Справоником Элементы.
Этот фокус не сложно разгадать, просто для ТаблицыБД Класса Элементы построен индекс по Геному, точнее сказать, по Виду Генома, первому ключу в его Ссылке. И такой индекс существует во всех ТаблицахБД в дереве Классов. В справочнике ТМЦ мы тоже размещаем ДеревоКлассов, но здесь уже будут только Классы-наследники ТМЦ, и повторяем такой же фокус для любого Справочника в цепи наследования, но при этом ДеревоКлассов на форме списка становится всё хилее и хилее. Дойдя до любимого Ботинка, ДеревоКлассов, как говорят в таких случаях, помножится на нуль.
Точно по такой логике оператор, ПриВводе нового Элемента, видит ДеревоКлассов - потомков, может указать Вид нового Элемента, и таким образом, определить его Род, его Кортеж данных, и набор ТаблицБД, в которые будет разложен вновь прибыший к нам Элемент. И повторюсь, необязательно вешать новый фрукт на последнюю ветку дерева, это может быть абсолютно любая ветка, таки у нас в Концепции ПОП есть уже понятие Эволюции Объекта.
Согласитесь, Эволюция это звучит, и такая модель если вдруг и не жизнеспособная, то как минимум жизнеутверждающая. Отмечу три важных момента.
Первый, Эволюционировать Объекту, вылететь из кокона, можно всегда, если позволяет твоё ДеревоВидов, но обратно втиснуться в гусеницу уже не всегда получится. Напомню, появился в Роду новый ID, и в контексте ссылочной целостности РБД, уже нельзя так просто от него избавиться. Для определяемых ТиповДанных, с КаскаднымУдалением, пожалуйста, а для ПрикладныхОбъектов мы можем получить Отказ. Это знакомая ситуация, когда Конфигуратор посылает нас по-дальше, если мы хотим удалить Справочник, на который есть Ссылки в Метаданных.
Второй момент. Для каждого Класса, продвигаясь вверх по ДеревуКлассов, всё труднее и труднее формировать выборку его Объектов, потому что данные таки в разных ТаблицахБД, и что бы увидеть в списке ТМЦ Коды и Наименования, необходимо производить объединение с ТаблицамиБД Родителем, и на каждом следующем уровне количество ТаблицБД в этом JOIN будет только увеличиваться. Но здесь я надеюсь, что Геном таки поможет языку запросов собрать за одним столом всех предков Класса, имея не только горизонтальную навигацию от Вида Объекта по Родителю до БазовогоОбъекта, но вертикальную, табличную навигацию по индексам.
Момент третий и на сегодня последний. На первом уровне, на уровне БазовогоКласса мы получаем очень большую ТаблицуБД, включающую в себя может и незначительное число реквизитов потомков, но содержащую практически всех своих наследников. Так, в Справочнике Элементы присутствуют все элементы всех справочников базы данных, начиная от Вали и далее до последнего Ботинка. Такая возможность, согласитесь, это неплохо, но и не всегда хорошо и необходимо. И вот здесь пора уже поразмышлять о Полиморфизмах данных....
П.С.: Пригодился бы мне сейчас тот учебник по ООП, ток беда - забыл я, в какую библиотеку сдал его в 95м году.
Цитата: Пиит от 28 апреля 2024, 09:27Повторюсь, вследствии Инкапсуляции данных Класса, данные Объекта при Наследовании оказываются разделёнными по разным Классам, физически по разным ТаблицамБД, и сам Объект представляет собой в дереве Классов не единую Структуру, а Кортеж Структур
Конфигурации 1С 7.7 являются псевдо деревьями, смоделированными на плоских структурах.
Многое из того о чём Вы пишите достижимо при использования иерархического хранения данных.
Цитата: Пиит от 27 апреля 2024, 12:28Добавлю в тему Классика:
"...Мой предок Рача мышцей бранной Святому Невскому служил;...
Если история любого человека таки есть история его исторической эпохи, то история Александра Сергеевича есть история Отечества. Вот так, коротко и громко. И это не пустые слова, которые, как и "наше всё", любят повторять учителя языка и литературы. Зачастую они и сами толком не знают, кто таков этот Классик от поэзии, и монтируют в головы свох учеников сложившиеся стереотипы об этом великом человеке. Его история уходит концами в такие хронологичестие дебри, что времена Трои могут показаться в ней только одним из кадров исторического фильма.
Я здесь хочу чуточку познакомить моего читателя с этой историей. Совсем чуть-чуть, на примере одного его знаменитого произведения "Моя родословная".
А чтобы заинтриговать вас как следует, скажу сразу, что этим стихом Поэт подписал себе смертный приговор, дело не шуточное. Вот эти строки, 1830 год:
Смеясь жестоко над собратом,
Писаки русские толпой
Меня зовут аристократом:
Смотри, пожалуй, вздор какой!
Не офицер я, не асессор,
Я по кресту не дворянин,
Не академик, не профессор;
Я просто русский мещанин.
Понятна мне времен превратность,
Не прекословлю, право, ей:
У нас нова рожденьем знатность,
И чем новее, тем знатней.
Родов дряхлеющих обломок
(И, по несчастью, не один),
Бояр старинных я потомок;
Я, братцы, мелкий мещанин.
Не торговал мой дед блинами,
Не ваксил царских сапогов,
Не пел с придворными дьячками,
В князья не прыгал из хохлов,
И не был беглым он солдатом
Австрийских пудренных дружин;
Так мне ли быть аристократом?
Я, слава Богу, мещанин.
Мой предок Рача мышцей бранной
Святому Невскому служил;
Его потомство гнев венчанный,
Иван IV пощадил.
Водились Пушкины с царями;
Из них был славен не один,
Когда тягался с поляками
Нижегородский мещанин.
Смирив крамолу и коварство
И ярость бранных непогод,
Когда Романовых на царство
Звал в грамоте своей народ,
Мы к оной руку приложили,
Нас жаловал страдальца сын.
Бывало, нами дорожили;
Бывало... но - я мещанин.
Упрямства дух нам всем подгадил:
В родню свою неукротим,
С Петром мой пращур не поладил
И был за то повешен им.
Его пример будь нам наукой:
Не любит споров властелин.
Счастлив князь Яков Долгорукий,
Умен покорный мещанин.
Мой дед, когда мятеж поднялся
Средь петергофского двора,
Как Миних, верен оставался
Паденью третьего Петра.
Попали в честь тогда Орловы,
А дед мой в крепость, в карантин.
И присмирел наш род суровый,
И я родился мещанин.
Под гербовой моей печатью
Я кипу грамот схоронил
И не якшаюсь с новой знатью,
И крови спесь угомонил.
Я грамотей и стихотворец,
Я Пушкин просто, не Мусин,
Я не богач, не царедворец,
Я сам большой: я мещанин.
Post scriptum
Решил Фиглярин, сидя дома,
Что черный дед мой Ганнибал
Был куплен за бутылку рома
И в руки шкиперу попал.
Сей шкипер был тот шкипер славный,
Кем наша двигнулась земля,
Кто придал мощно бег державный
Рулю родного корабля.
Сей шкипер деду был доступен,
И сходно купленный арап
Возрос усерден, неподкупен,
Царю наперсник, а не раб.
И был отец он Ганнибала,
Пред кем средь чесменских пучин
Громада кораблей вспылала
И пал впервые Наварин.
Решил Фиглярин вдохновенный:
Я во дворянстве мещанин.
Что ж он в семье своей почтенной?
Он?... он в Мещанской дворянин.
...
Цитата: Forum123 от 28 апреля 2024, 09:41. Конфигурации 1С 7.7 являются псевдо деревьями, смоделированными на плоских структурах.
Многое из того о чём Вы пишите достижимо при использования иерархического хранения данных.
Совершенно в Вами согласен, коллега, для реализации ООБД реляционая модель не лучший выбор, но я уже вооружился этой линейкой и циркулем, и моделирую Концепцию не ООБД, а ПОП, с целью приемственности с известной нам и любимой нами платформой V7.
Я обязательно вернусь ещё к этому вопросу в одной из следующих заметок, к этому спиннеру Эдгара Кодда, противоречию Таблиц со Структурами и Списками, а сейчас давайте окунёмся в экзистенциальный Код Александра Сергеевича Пушкина.
Цитата: Пиит от 28 апреля 2024, 09:27... щёлк по Товарам - вот тебе список Товаров, а вот и Ботинки, пожалуйте, Ваше Высокоблагородие...
Вот вам, Высокоблагородие, и щелчок по носу, финита ля комедия. Это я себе, любимому. Ошибочка вышла. Не может таким образом определенный Геном показать нам всех наследников Класса, только список фруктов, висящих на одной ветке.
За сим прекращаю на время, а может и навсегда размышлизмы над Концепцией ПОП, для работы над ошибками и выяснения обстроятельств случившегося.
Форум123 как в воду глядел, да я и сам чувствовал, что добром это может не закончится. Возможно, спецы Компании тоже остановились где-то на этом месте, и так появился МногоуровневыйСправочник, с его ParentID, как элемент несостоявшегося наследования данных в V7.
Очередной удар по авторитету, почище ОбщихРеквизитов.
Пару слов о Полиморфизме данных, начал таки наброски. Чтобы решить проблему БазовогоКласса Элементы, справочника всех справочников, необходимо определить Полиморфизм как постулат не только для модулей и методов, но и структур данных, Классов и Реквизитов, определяя их виртуальными на некотором уровне наследования. Например, виртуальный Класс Элементы или виртуальные Реквизиты Код и Наименование. Полифорфизм их заключается в том, что они определены только в Метаданных, а соответсвующих собственных таблиц или полей не имеют. Машина должна, основываясь на Метаданных, поддерживать в соответствии Таблицы прямых потомков, определяя в каждом из них уже физически ОбщиеРеквизиты Код и Наименование.
Это к той истории о таблице 1SJOURN, и почему мне порой снятся странные сны.
Цитата: Пиит от 28 апреля 2024, 10:02Совершенно в Вами согласен, коллега, для реализации ООБД реляционая модель не лучший выбор, но я уже вооружился этой линейкой и циркулем, и моделирую Концепцию не ООБД, а ПОП, с целью приемственности с известной нам и любимой нами платформой V7.
Этот вопрос обсуждается десятилетиями.
Основной упрёк в сторону иерархического хранения данных в том, что они более "ломки" чем плоские структуры.
Впрочем этот вопрос вполне решаем.
Конечно не нужно быть фанатами каких-то единых способов хранения данных.
ИМХО хорошая модель хранения это симбиоз ирархической и реляционной модели.
Этот вопрос никто толком и не обсуждал.
Ещё года три назад разработал API, которое позволяет любую конфигурацию 1С 7.7 загрузить в дерево.
Не публикую API по той причине, что ныне разрабатываю много функциональней и универсальней модель хранения данных.
Но это вовсе не для конкуренции с фирмой 1С.
Цитата: Пиит от 28 апреля 2024, 10:02Я обязательно вернусь ещё к этому вопросу в одной из следующих заметок, к этому спиннеру Эдгара Кодда, противоречию Таблиц со Структурами и Списками,
Мне интересен Ваш блог.
здесь был черновик, случайно чёт нажал на клаве,
Цитата: Пиит от 28 апреля 2024, 11:08... За сим прекращаю на время, а может и навсегда размышлизмы над Концепцией ПОП...
С четвёртым курсом у нас закончились все лекции по математике, 18 дисциплин за 4 года. Мы их посчитали в своих зачётках. Дальше пятый курс, сплошная методика-педагогика плюс полгода практики в школе. И вот тогда-то, в самом конце червёртого, на последней, обобщающей лекции, мы наконец-то и узнали, что же изучали всё это время. Оказывается, математика - это наука, изучающая математические модели. Вот так, просто и не просто. А что же такое математическая модель? А вот это уже длинная история.
ВУЗ таки дал мне понимание научного подхода, в любой отрасли народного хозяйства. Научной моделью можно представить себе абсолютно любую систему, будь-то реляционная модель данных, система бухгалтерского учёта денежных средств или периодическая система химических элементов, известная нам как Таблица Дмитрия Ивановича Менделеева.
Любая система имеет в своём фундаменте свои первичные понятия и законы, описывающие их взаимоотношения. Например, в геометрии в качестве первичных понятий полагают Точку, Прямую, Плоскость, а законы, описывающие их отношения, называют Аксиомами. Такие законы, как и первичные понятия, полагают неопределяемыми, кирпичами в фундаменте системы, они не требуют ни доказательств, ни определений. Эдакие скрижали Моисея, постулаты, которые необходимо принять на веру, такие вот они и всё на этом. В дальнейшем, по мере развития любой системы, все прочие её понятия определяются через первичные, а все другие законы законы выводятся на основании аксиом, законы эти называют уже теоремами, чтобы подчеркнуть из зависимость. Что интересно, теоремы, выведенные из аксиом,
могут опираться в своём доказательстве только на одну единственную аксиому в Базовой системе, таким образом получается, что заменив в фундаменте это аксиому вышеназванной теоремой, в системе в целом ничего не изменится, просто теорема станет аксиомой, а аксиома превратится в теорему. Например, теорема Питагора является следствием одной только аксиомы геометрии Евклида, известной как пятая аксиома параллельности прямых, потому в аксиоматику можно смело заложить эту теорему, а аксиома параллельности станет теоремой, её следствием. Потому и в геометрической науке бывали жаркие споры о формулировках, как и что должно быть наиболее правильным образом положить в фундамент этой дисциплины. Конец этим спорам положил товарищ Давид Гильберт в 1905 году.
Система в процессе развития растёт и вширь и вверх, достигая порой высот небоскрёбов, отдалясь во все стороны от своего фудамента, от своей системы аксиом. Но она так и остаётся всегда Базовой подсистемой всей системы, полной и достаточной внутри себя, эдаким интерсейсом Базового Класса.
Возможно, на каком-то своём этапе развития системы, какой-то новый закон вступит в противоречие с основополагающим законом системы, и такая система признаётся несостоявшейся. Ну, не получилось, что-то пошло не так, может, и получится распутать, спуститься вниз на несколько этажей, и возможно там кроется ошибка, неверное допущение, приведшее в итоге на последнем этаже к противоречию.
На систему аксиом, как на фундамент, кроме марки бетона, накладывают и иные требования. Кроме непротиворечивости, есть требование её полноты, есть и требование об неизбыточности Базового Интерфейса.
Избыточность - это когда в списке базовых понятий и законов содержатся понятия или законы, которые можно определить или вывести с помощью других, соседних с ним Базовых понятий или потсулатов. Напомню, это не про систему в целом с её теоремами, а только внутри системы аксиом, внутри Базового Класса всей системы.
Применительно к нашей теме, таким понятием в структурах данных является Таблица, как понятие, определеямое из двух других, Списка и Структуры. По сути, Таблица есть ListOfSructure, поэтому вы и не найдёте её в академических статьях. Таблицу можно вывести из других структур данных, а вот Список или Структуру нельзя, они фундаментальны.
Так почему же Эдгар Кодд взял за основу Модели данных именно Таблицу? Как мне кажется, по ленности своей, оправдывая свою лень эстетическими соображениями. Красиво ведь, одно понятие, и Бог один, монитор вон квадратный, и Таблица тоже, и так далее.
Упростил Эдгар себе задачу, разложил массив типизированных записей в одну шеренгу, вывел формулу смещения, и был таков. Простота и надёжность этой модели лежат в основе её успеха, как научного обоснования, так и популярности. Как автомат Михаила Тимофеевича. Только в народе у нас недаром говорят, что порой простота хуже воровства...
Здесь я хочу попросить официальное разрешение администрации, чтобы выделить субветку об истории Александра Сергеевича Пушкина в отдельную ветку. Как бы и не про Формекс, и даже не про 1С, но так личный аргумент, и мой лицей, в котором я имел честь начать постигать нашу науку, и мой ВУЗ, оба эти учебных заведения носили и носят по сей день почетное название имени А.С.Пушкина. Такое вот совпадение, на которое я даже не обращал внимания вплоть до конца 10 годов нашего века.
В этой ветке пусть останутся размышлизмы об 1С и ООП, может, она оживёт когда-нибудь, а может и будет закрыта, как тупиковая ветвь эволюции V7.
Что скажете, Алексей Леонидович?
Цитата: Пиит от 29 апреля 2024, 12:48... Простота и надёжность этой модели лежат в основе её успеха, как научного обоснования, так и популярности...
Николай Иванович Лобачевский не работал в IBM, не думал, как обойти конкурентов, подешевле купить и подороже продать, он на протяжении своей жизни целиком и полностью служил своему делу, своему Казанскому университету и своему Отечеству.
Служить Отечеству вовсе не означает, что нужно куда-то бежать и куда-то стрелять, достаточно просто верой и правдой заниматься своим делом на своём рабочем месте. Всю свою трудовую жизнь Николай Иванович был педагогом, и вся его научная и просветительская деятельность так или иначе, связана с его Казанским альма-матер.
Википедия говорит нам, что Лобачевский был "одним из". Это как бы и так, и совсем не так. Он не сидел в тик-токе в Яношем Бойяи, не читал в газете заметки про этого талантливого венгра, и вообще не был с ним знаком. Это сегодня, или вчера, где-то кто-то раскопал, что жил был в Венгрии парень по имени Янош, и дескать где-то в его дневниках он высказывал удивительные идеи. Я не хочу унизить Яноша своим стёбом, но высказать идею - это одно, а сформулировать и разработать целую геометрию на нескольких томах, это имхо немного другое. Так или иначе, заслуги Николая Ивановича хотят сегодня немного размазать по карте, и не только в википедиях, и не только Лобачевского. Фамилию Менделеева вы тоже не найдёте в заморских учебниках по химии.
Так что же такое открыл Лобачевский для мировой науки, чего тысячи лет до него так никто и не додумался?
В двух словах, Николай Иванович заменил в системе аксиом Евклида ту самую, пятую аксиому параллельности прямых, на другое утверждение, прямо ему противоположное, а именно: через точку, не лежащую на данной прямой, можно провести какое угодно число прямых, параллельных данной в указанной плоскости.
Именно так, ни много ни мало, Лобачевский вытащил целый кирпич из древней науки и вбил вместо него другой, свой образец. Даже образованный обыватель может усомниться в адекватности сего учёного мужа, внимательно прочитав такое утверждение, мол, такое не может быть потому-что не может быть. Что это за пучок параллельных прямых такой? А вот Николай Иванович не был образованным обывателем, он был математиком, и рассматривал систему как математическую модель. Ну, заменил, а дальше что? Дальше надо насучить рукава и изучать уже эту модель.
Так, на протяжении всей жизни, рассматривал он известные фигуры и законы, что такое треугольник в такой системе, что такое угол, подобие и так далее. За годы работы накопил столько материала, что мог уже посоревноваться количеством томов с Евклидом и его потомками. И так и не нашёл противоречий и ошибок в расчетах на верхних этажах своей системы. А он искал ошибку, сам не верил, что такая геометрия возможна. Известно, что Николай Иванович писал о своём открытии Карлу Фридриху Гауссу, признанному тогда уже мировому светиле в области точных наук, но Гаусс не удостоил молодого русского ученого даже пуком, ответа не последовало. Потом уже скажут, что Гаусс побоялся святой церкви и насмешек, а сам то он знал, что к чему. Пусть говорят, есть такая передача.
Так в какой же сказочной стране Толкиена, в какой хоббичьей норе возможна такая странная геометрия, имени Лобачевского, где сумма углов треугольника всегда меньше 180 градусов? Ответ очень прост - в нашей стране, в нашей галактике, в нашей вселенной, одним словом - в нашей.
Николай Иванович не был каким-то умалишённым Альбертом, он просто очень любил смотреть на звёзды, туда, далеко-далеко, возможно воображая себя Магелланом, и задаваясь вопросом, а если полететь вот так, в исподнем, туда, в какой Малорите в конце концов окажешься?
Да, друзья, геометрия Лобачевского - это геометрия конечного простанства, вселенной, ограниченной некой Божественной сферой, за которой ничего нет и быть не может, и на которой сходятся некоторые прямые, а какое угодно количество параллельных прямых так и не пересекаются. А ошибку в расчетах не нашёл ни сам Николай Иванович, ни те, кто стоит на его плечах, ни Римман, ни Гильберт и никто другой. Это благодаря Лобачевскому мы сегодня говорим о теориии Большого взрыва, сингулярностях и прочих космических чудесах.
Николай Иванович не один такой космологический гений, чьи заслуги пытаются умалить с тех пор, как они появились на карте. Его тёзка, Николай Коперник, тоже не часто мелькает в газетных полосах, обычно мы слышим про чудесное исцеление прошедшего через костёр инквизиции Галилео Галилея, но это уже другая история...
П.С.: Казанский университет, к моему большому сожалению, носит имя другого человека.
> И так и не нашёл противоречий и ошибок в расчетах на верхних этажах своей системы. А он искал ошибку, сам не верил, что такая геометрия возможна.
Верю!
У меня так кухню делали, неоднократный замер рулеткой, макет с расчетом, расчет модулей, перепроверка раз 10, все сходится. Но!
При сборке не хватает 10см ширины. Перемеряли на месте модули - хватает, но на 10см все равно не влезает...
Сборщик в шоке, контора тоже, экстренное совещание в конторе тоже в ауте...
В результате отпилили некритичные 10см в сборке и успокоились ;D
Цитата: Djelf от 29 апреля 2024, 16:27В результате отпилили не критичные 10см в сборке и успокоили
И бы не пилил, я бы сдул, и всё влезло бы. Надули просто, перестарались )
Цитата: Пиит от 29 апреля 2024, 16:33Цитата: Djelf от 29 апреля 2024, 16:27В результате отпилили не критичные 10см в сборке и успокоили
И бы не пилил, я бы сдул, и всё влезло бы. Надули просто, перестарались )
Да не было такого, я сам пересчитывал. И сам измерял!
Парадокс какой то был: если бы сам не видел и не считал, то и не поверил бы в такое никогда, но я это это видел своими глазами, и это было подтверждено стронней которой и моей бывшей женой. Полтелгейст какой то был...
Нет, я не был "под мухой".
Сборщик тоже не был "под мухой".
Жена тоже...
Неразгаданая загадка...
Ну раз ты тут Эйнштена приводишь, то возможно всякое, вплоть до искривления пространства/времени, в отдельной взятой кухне...
Цитата: Djelf от 29 апреля 2024, 16:48Ну раз ты тут Эйнштена приводишь, то возможно всякое, вплоть до искревления пространства/времени, в отдельной взятой комнате...
В панельных хрущёвках расхождение стен в комнатах запросто 10 см. и более бывает.
Цитата: Djelf от 29 апреля 2024, 16:48... Ну раз ты тут Эйнштена приводишь, то возможно всякое, вплоть до искревления пространства/времени, в отдельной взятой комнате...
Не, домой я его не приводил, он сам пришёл, с Менделеевым.
Зная Ваши химические таланты, коллега, тут по шкафчикам поискать надо, может чего и осталось. )
Цитата: Пиит от 28 апреля 2024, 11:08... Ошибочка вышла. Не может таким образом определенный Геном показать нам всех наследников Класса, только список фруктов, висящих на одной ветке...
Коллеги, должен вам сообщить, что известия о кончине ПОПы оказались преждевременными. Ошибки как таковой не случилось, и я не закрываю эту ветку, ещё повоюем.
Случилось другое, я немного переоценил значение Генома, полагая, что смогу с его помощью производить отбор сразу всех потомком из всех Классов-наследников в одном списке. Не смогу, только представителей одного Класса-наследника, и ДеревоКлассов автоматически переименовывается в ДеревоВидов.
Такую работу Дерева можно увидеть в Проводнике в Окнах. Щёлкаю слева по Каталогу, и справа вижу только Файлы, непосредственно к нему относящиеся, а файлы в подкаталогах на этом уровне просмотра остаются невидимы для глаза. Но ФайловаяСистема имеет иерархическую реализацию, а наша модель по-прежнему остаётся самой что ни на есть реляционной. Список Видов в отборе представляет собой Домен из Видов Генома, и прибавляется как есть на форме списка к списку элементов. Таким образом, всё остаётся в силе, на каждом уровне наследования работаем с данными только выбранного Класса и его Предков, и там же можем производить выборки по Видам потомков, не обращаясь непосредственно к их ТаблицамБД.
Домен, к слову, в узком смысле - это множество уникальных значений одной колонки ТаблицыБД, в широком смысле - множество уникальных значений одного ТипаДанных в Базе. Это термин от СУБД, общепринятый в современных РБД. Есть и в V7 системный специальный метод для работы с подобными множествами, а именно ПолучитьЗначениеОтбора(ИмяОтбора, СписокЗначений, ДатаНач, ДатиаКон), очень жаль, что он работает только с Документами, не понимаю причин для обделения Справочников такой замечательной возможностью.
Похожим образом, как в Проводнике, мы видим и МногоуровневыеСправочники V7.
Вот здесь я хочу сказать пару слов об этих чудо-юдо китах любимой платформы.
МногоуровневыйСправочник V7 содержит в себе несостоятельность с точки зрения реляционной модели. Посмотрите в ТаблицуБД, записи Элементов практически все заполнены информацией, а для Групп как правило используются несколько полей типа Код и Наименование. Лично я не вижу ни одной причины для такой реализации. Не только природа не терпит пустоты, но и дедушка Кодд, если узнает об этом безобразии, перевернётся на другой бок от негодования.
Тем не менее, и в V7 есть один ПрикладнойОбъект, построенный по всем канонам, с некоторыми оговорками, это ПланСчетов. Именно ПланСчетовV7 являет собой пример "относительно" правильной СтруктурыДанных, в которой все поля заполнены заявленной информацией, и все элементы равноправны в контексте возможного разделения их на подмножества. "Относительно" здесь имею в виду не в негативном ключе, а принимая во внимание специфику ПрикладногоОбъекта.
В V8 появилась разновидность Справочника СИерархиейЭлементов, который я также могу отнести к правильным СтруктурамДанных.
А представляют собой эти оба ПрикладнымОбъекта не что иное, как Деревья Структур, соответствующих своему назначению. Подобные ПрикладныеОбъекты я считаю необходимым отделить от Справочников в собственную ветку Метаданных.
Правильное же построение МногоуровневогоСправочника аля V7 требует двух СтруктурДанных, Список отдельно, Дерево отдельно, а в структуру Элемента добавить индексируемый Реквизит типа Дерево соответсвующей структуры, со своими Кодом и Наименованием. Здесь и пригодится нам новая ветка ПрикладныхОбъектов, основанная на Деревьях. В этом случае и можно будет говорить о состоятельности как реляционной, так и структурной.
Есть в этой реализации некоторые вопросы с отображением Групп и Элементов в общем Списке, но это деталь техническая. А вот принципиальная штука здесь - возможность наделить Справочник сразу несколькими Деревьями, не говоря уже о присутствующем по умолчанию системном ДеревеВидов...
Цитата: Пиит от 30 апреля 2024, 01:45А вот принципиальная штука здесь - возможность наделить Справочник сразу несколькими Деревьями, не говоря уже о присутствующем по умолчанию системном ДеревеВидов
Не скажу, что нынешние СУБД несовершенны.
Они спроектированы профессионалами и пригодны для решения многих задач, но не пригодна для задач в которых требуется использавание динамических объектов с динамических наборов свойств.
Для такого рода задач реляционная модель не годится, а таковых задач много , так как в этом мире даже двух одинаковых снежинок не бывает (в реляционной модели все снежинки одинаковы).
Поэтому ИМХО.
Не нужно зацикливаться на справочниках, документах, ...
Должна быть возможность создания и использования любой сложности объектов.
У меня это одна из веточек в разрабатываемом API.
Это и есть ответ на то, почему никогда не было желания разработать а-ля 1С (а вот конфигурации 1С удобно использовать для отладки части API).
Цитата: Пиит от 30 апреля 2024, 01:45... Случилось другое, я немного переоценил значение Генома...
Да, коллеги, кто ещё не понял, рождение Генома состоялось здесь и сейчас, на этом форуме, на ваших глазах. Варит ещё котелок. Так далеко я ещё не продвигался в этой модели. Напомню, что это вторая модель уложения структур данных в Таблицы, ссылочная. Давным-давно, когда я впервые сел за тетрадки по этой теме, я допетрил до первой модели, ставшей уже христоматийной, на субтаблицах и супертаблицах, покрутил и выбросил как неперспективную, не дающую в полной мере положить в таблицы СтруктурыДанных любого уровня сложности. А во второй модели, на уровне свойств Рода. я пошёл по тупиковому пути, ввёл тогда Потомка, превратил Род в двусвязный список, и не знал, чего с этим делать. Геном представлялся тогда мне суммой ID всех членов Рода, он рос по мере Эволюции, и ни в какое поле не мог быть положен.
Вот поэтому я намедни и предупреждал своего нетерпеливого читателя, что готовой Концепции у меня в кармане нет. Вот она, рождается на ваших глазах.
К Полимормизму тогда я вообще не знал, как подступиться, понимал, что ввести его можно, но ломал он у меня все таблицы Метаданных.
В итоге всё это бодание закончилось с выходом восьмой версии, я поник, понял, что это надолго, и только с интересом наблюдал за развитием проекта 2С.
У школьных учителей, прям у всех, есть одни и те же словечки и целые фразы. Так, например, любой учитель то и дело задаёт вопрос Классу: "Всё понятно? Вопросы есть?". Класс конечно отвечает: "Нееет". Учитель с грустью: "Это плохо, что вопросов нет", и добавляет: "Если вопросов нет, запишите домашнеее задание...".
Почему же с грустью? Потому что, если вопросов у Класса нет, значит плохо объяснил, или никто не слушал.
Здесь я уже приглашаю вас, коллеги, подключаться к этой дискуссии, уверен, что одна голова хорошо, а два IQ таки пара.
При первом же предметном разговоре я сверну здесь свои биографические простыни, и развешу их по-дальше отсюда, по-ближе к Пушкину, а эта ветка останется исключительно как место для развития модели Прикладного Объектного Программирования в Реляционных Базах Данных.
Почему так всё большими буквами? Потому что здесь я рассматриваю вышеописанную обрывками на 12-ти страницах одну Модель, и никакие другие, ни иерархические, ни другие фантазии. Только циркуль и линейка, только ООП и РБД в контексте ПОП 1С.
И разрешите вас таки поздравить, в 2023 году в стандарте SQL проклюнулась поддержка Графов.
Нам ещё не поздно сделать революцию, буржуины ещё топчутся.
Цитата: Forum123 от 29 апреля 2024, 16:57Цитата: Djelf от 29 апреля 2024, 16:48Ну раз ты тут Эйнштена приводишь, то возможно всякое, вплоть до искревления пространства/времени, в отдельной взятой комнате...
В панельных хрущёвках расхождение стен в комнатах запросто 10 см. и более бывает.
Я и сам строил, можешь не рассказывать.
жить не мешает, просто больным рвет шаблоны.
Цитата: Пиит от 28 апреля 2024, 11:08... Возможно, спецы Компании тоже остановились где-то на этом месте, и так появился МногоуровневыйСправочник, с его ParentID, как элемент несостоявшегося наследования данных в V7...
Я более чем на 100% уверен в том, что Платформа изначально задумывалась как полноценная ООП-система. Но что-то пошло не так. Глядя на реализацию V7, можно предположить, что произошли изменения в составе команды разработчиков, и превратилась программа в эдакое письмо из Простоквашино. Начал писать ДядяФёдор: "Дорогие мои Родители...", а продолжил уже некий Шарик, у которого "то лапы ломит, то хвост отваливается". Не исключено, что был там и своего Рода Матроскин, со своей коровой и молоком изо всех умывальников, и в результате Лохматость Платформы таки изрядно повысилась.
ДядяФёдор был толковым парнем, знал не только ООП, но и SQL-3, по крайней мере о СубТаблицах и СуперТаблицах имел хорошее представление.
А как бы выглело то Дерево Классов, все Справочники, со всеми своими Потомками, от Элемента до Ботинка, в классической схеме, в СуперТаблице? Проще простого, друзья мои. Создаю СуперТаблицу [ID, ParentID, Код, Наименование], это тот самый БазовыйКласс, она же СубТаблица "Элементы". Далее, хочу ТМЦ, добавляю в СуперТаблицу [, Цена, ЕдИзм], получаю СубТаблицу "ТМЦ", считая от начала, от ID, таки СубТаблица - это таблица воображаемая. И так далее, продолжаю добавлять все Ревизиты всех Потомков, до самого Ботинка, с его[,Размер,Цвет]. Таким образом, СуперТаблица может вместить в себя всё и вся, все Виды Спраочников, и ОсновныеСредства, и Сотррудники и т.д. А в этой каше всех Реквизитов всех Справочников могут разобраться только Метаданные с Класссами, построенными на СубТаблице, представляющкй из себя, повторю, логически связанный набор колонок СуперТаблицы, вне зависимости от их порядка в ней и возможного повторения в других СубТаблицах. Так, каждый Класс, каждая СубТаблица обязательно содержит в себе колонки своих Родителей, вплоть до Базового Класса, поля ID, ParentID, Код и Наименование. Таким образом, в одну СуперТаблицу помещается вся ветвь Метаданных Справочники, с реализованным Наследованием данных и даже их Эволюцией.
А ID здесь является общим для всех Элементов, и уникальным для каждого Ботинка, идентификатором всего и вся на всех уровнях наследолвания. Красиво? Очень.
Но как же из этой каши выбрать наши Ботинки? И что же такое этот ParentID?
Вот, как мне кажется, на этом вопросе споткнулся проект, ДядяФёдор крепко задумался.
Если в этой СуперТаблице ParentID есть некая ссылка на Родителя, то на кой она такая вообще нужна, если Родитель уложен в одной и той же записи, что и его потомок, и имеет тот же ID? И где взять этот ParentID, если его не в даже в Базе. Но Меданных то есть, имхо, это не проблема, Перечислений тоже нет в Базе, но тем не менее, IDы их используется, как ни в чём не бывало.
Я вот не сомневаюсь, что такое ParentID, он же OBJID, он же Вид, он же ПолуГеном - это идентификатор Вида Справочника, и определив его таким образом, можно по щелчку производить отбор по индексу любого множества потомков любой СубТаблицы, по её колонкам, заданным в Метаданных.
Что же случилось с ДядейФёдором, отчего не дожал этот вопрос? Сложно сказать, не верю что не допетрил, возможно на самом деле уволился из Компании, а может и просто разочаровался в СубТаблицах. Ведь недостатки в схеме есть, СуперТаблица огромна, и вширь и вниз, и реструктуризация её по мере роста может представлять из себя уже существенную проблему, учитывая возможное количество полей и записей. И физический размер такой таблицы, как мы знаем, не бесконечен, и на количество записей, и даже на свой объем.
Но я знаю одно - ДядяФёдор поработал таки ещё некоторое время над проектом, он стал рассматривать, помимо классической схемы наследования, и ссылочную. Это та самыя конструкция Документов, 1SJOURN и DH, это наследование Инкапсулярное, и Классы Документов оказались все в своих таблицах БД, проклюнулся даже CHILDID. А вот таблицы DT являют собой классическое Вложение множественных структур, и здесь проявляется некое смешаное использование двух концептуально разных подходов для ООБД. А термин OWNER позволяет мне предположить, что ДядяФёдор мог планировать, помимо наследования, и возможность Вложения СтруктурДанных в своём детище.
А дальше ДядяФёдор вероятно покинул проект, а может просто не справился с компилятором ООП, или был банально ограничен временем и другими Ресурсами, вынужден был наконец на чём-то остановиться, ведь это вам не Казанский университет, а российский IBM, и результат работы таки вынь да полож. Матроскин хотел молока. Как бы то ни было, имхо дальше проектом руководил Шарик. Шарик был старым псом, но тоже умным, по своему, возможно даже это он спроектировал V6, очень уж любил он Группы в Справочниках, но вот ООП никак не мог уложить в свои полуШария, поэтому в дальнейшем вместо СуперТаблицы появился МногоуровневыйСправочник. Названия полей менять не стали, приемственность-на, да и слишком много кода надо было переписывать. Так остались в Платформе и ParentId, и Owner, но суть этих понятий кое-где претерпела сильные изменения. Стали появляться новые термины, такие как ParentExt, он же Владелец Подчинённых Элементов, и прочие. Заметьте, не Owner, а ParentExt. В общем, Лохматость Платформы заметно повысилась.
ДядяФёдор заложил в проект даже больше идей, чем реализовали за все последующие годы. Один только термин VERSTAMP чего стоит, имхо это Версионность в её зачаточном состоянии. В Константах, по другому в ПериодическихРеквизитах есть такой реликт - OBJID, я его уже здесь поминал, в контексте ParentID, вот это и есть оно, несостоявшееся ООП в V7.
Возможно, эта история мне просто приснилась, и всё на самом деле было совсем не так. Спорить не буду, но это таки моя история, чего хочу, то и придумываю.
Писал без очков, забыл дома, количество помарок должно быть больше обычного ...
Цитата: Пиит от 01 мая 2024, 11:52... А термин OWNER позволяет мне предположить...
У меня тоже, походу, лохматость повысилась.
Откуда я взял OWNER в семёрке?
Всю свою жизнь проводит в мечтах. Мечты Обломова подразумевают тихую спокойную жизнь с красавицей-женой и детьми. Он мечтает поехать заграницу, путешествовать с другом и своей возлюбленной, наладить быт в своем имении. Как может заметить читатель, все его мечты вполне осуществимы. Нужно лишь немного приложить усилий. Но проблема мечты Обломова состоит в том, что главный герой не хочет прикладывать даже малейших усилий, чтобы добиться желаемого результата.
На некоторое время его вдохновляет своей бурной деятельностью друг детства Андрей Штольц. Он берет Облоиова с собой на различные приемы, знакомит с интересными людьми. Но Обломов очень быстро устает от такой деятельности, ему кажется все происходящее слишком сложным. Он придумывает тысячу причин, чтобы не видеться со своей когда-то обожаемой Ольгой. В одной из бесед Ольга спрашивает Обломова: "Отчего погибло все?... Ты добр, умен, нежен, и благороден... и...гибнешь! Что сгубило тебя?" Он в ответ прошептал: "Обломовщина"
Цитата: Пиит от 01 мая 2024, 11:52Я более чем на 100% уверен в том, что Платформа изначально задумывалась как полноценная ООП-система.
Семёрка прекрасно дружит с OLE и Net.
OLE позволит в семёрку добавить новую функциональность (в т.ч. объекты).
В Net вагоны разработанных и отлаженных проектов, которые можно подружить с семёркой.
Не сложно и ответить на вопрос почему мало кто расширяет семёрку.
Всё просто - ХАЛЯВУ ЖДУТ!
Цитата: Злоп от 01 мая 2024, 16:09...Всю свою жизнь проводит в мечтах. Мечты Обломова ...
Пишите, Че, пишите, не нужно репостить.
Я знаю, что и Вам есть о чём рассказать.
Но должен Вас предупредить, это не просто.
Не просто открыть себя миру, и не просто подобрать нужные слова и сложить их в должном порядке. На несколько строк могуть уйти годы. На одну мою здесь заметку порой уходит целый день, а то и два. Да, я не пишу сразу на чистовик, несколько черновиков могу порвать, пока не сложится мысль, как мне кажется, доступно, последовательно и интересно читателю. А бывает и легко получается, руки сами пишут, как будто лучше меня знают, что и как надо делать.
Я не писал никогда серьезно ни стихи, ни прозу, до одного не очень прекрасного дня, когда стихи начали выходить из меня, что называется, по-взрослому. Я даже могу назвать этот день, когда всё началось. Нет, я не помню дату, год, я помню момент, событие, которое на меня, скажем так, оказало некоторое влияние. Это была трагическая гибель Владислава Галкина, и вечером по телеку в новостях показали небольшой сюжет. Похороны, могила, стоит Борис Галкин, и плачет... Несколько секунд как целая вечность. И я заплакал тогда вместе с ним... Я и не знал, что Владислав - сын Бориса, пришёл в себя, полез в гугл, а там - гавно на каждом углу, Владислав то, Владислав сё, дебошир, пьяница и сам виноват... И тогда я с какого-то хрена сел за стол, взял ручку, и начал писать. Этот стих не закончен до сих пор, не лежат кирпичи на своих местах, и врядли будет закончен когда-либо.
Так я стал писать, перманентно-постоянно, но особенно продуктивно весной, в эту самую пору. Не могу объяснить, почему весной. У пациентов психиатрических клиник, говорят, весной самые карусели. Вот, это про меня, я так и называю этот период активности - весеннее обострение.
Однажды в другой не очень прекрасный день я перестал писать. Но здесь я могу назвать эту дату точно, я её не забыл, и даст Бог, никогда не забуду. Это было 2 мая 2014 года. Вот, в тот день у меня как язык отрезало, с тех пор нет ни желания, ни внутренней потребности в рифмовании мыслей.
В тот день, ровно десять лет назад, я тоже плакал.
А сегодня, Че, я плакал вместе с Вами.
Будьте здоровы.
П.С.:
Пиши, мой друг, пиши!
И ямб, и анапест.
От сердца, от души
Какой угодно текст.
Не верь седым умам,
Не рвись и не спеши.
Пиши, как знаешь сам,
Но только не греши.
Пиши хоть сверху вниз,
Но не гляди в стакан,
Смотри почаще ввысь,
Пиши про облака.
Пиши о мотыльках,
Про ветер и про птиц,
Держи в своих руках
Всегда чернильный шприц.
Пиши, мой друг, пиши!
Для близких и родных,
От сердца, от души,
Свой самый верный стих.
10.04.2013
-
Цитата: Пиит от 01 мая 2024, 22:09-
Предыдуший пост не относился к Вам лично.
Хороший блог.
Конечно реляционые базы имеют нишу использования.
В мире объектов все виды объекты нужны.
Главное уметь правильно их использовать и не натягивать сову на глобус.
А давайте, я напишу на эСке Дуум. Не сразу, начну с малого, с Паинта.
Вот мольберт, ТаблицаБД с числовыми реквизитами [Измерение1, Измерение2, Цвет]. Далее определю составной Индекс Измерение1+Измерение2, позволяющий мне ПолучитьТочку(Х, У) и УстановитьТочку(Х, У, Цвет). Таким образом я получил в распоряжение двухмерное Пространство, в котором могу малювать что хочу по заданным координатам. А дальше дело техники, процедурное программирование, хошь отзезок, нарисую отрезок, хошь окружность - пожалуйста, а хошь и залью это всё любыми красками. Заметьте, это не бинарный файл, и не в Текст уложена Картинка, а вполне реляционная модель. Здесь можно и улыбнуться, типа вы раньше о таком не знали.
А на кой же мне такой Паинт, с форматом BMP и гигабайтами в базе? Пока не знаю. А может, Корэл лучше будет?
Но тут процедурами не обойтись, здесь нужны уже Классы, например, Точка, МножествоТочек, Отрезок, Окружность и так далее, и каждый из них имеет свои уникальные свойства и методы построения. Мы же знаем, что Окружность - это МножествоТочек, равноудалённых от одной Точки, и определяется Центром и Радиусом, вот и свойства Объекта пожалуйста. И Точка здесь уже не просто Цвет, а Структура, [Цвет, Следующая, Предыдущая], позволяющая включить её в произвольное МножествоТочек, в любой связный Список. А двухмерное моё Пространство Паинта уже станет не более, чем проекцией МножестваОбъектов, зависимой от и от состава, и от заданных значений их свойств. Так, изменив Радиус одной всего Окружности, необходимо отрисовать заново нашу Картинку. Что это, если не ВекторнаяГрафика?
А чего я остановился? Давайте добавим третье [Измерение3], и получим трёхмерное Пространство. Автокад? Пока не знаю. Знаю, что измерения могу определить с любой степенью точности, хоть 0.000001, и конечно, плюс отрицательные значения. Могу ввести в Пространство ТочкуОтсчёта и три ортогональных Вектора, и создавать проекции МножестваОбъектов на любую заданную Плоскость.
Может это уже 3D-Макс? В общем, чем-то напоминает. Но я беру это МножествоОбъектов, загружаю в ПЗУ, и придаю им направление движения и вращения, осталось только Флинну Таггарту текстуры на жопу натянуть.
Вот вам, друзья, и Реляционный Дуум. Мне он даром не нать, и недаром тем более, я подводил к другому.
Есть в семёрке такой замечательный Объект, Регистр назывется. А вы не пробовали в нём задавать Изменения как Число? А Конфигуратор позволяет. Жаль, руками его с места не сДвинешь, тут помощник нужен. А само слово "Измерение" откуда у Компании взялось? Конечно, сущность-то многомерная типа, но Измерения Числовые у нас в Геометрии, а в Пространствах Алгебры и ТеорииМножеств они могут быть заданы произвольным Множеством элементов, например теми же Товарами или Партиями.
Назвать можно как угодно, и Регистром, и Пространством, и Массивом и даже N-мерной Функцией, главное - не ограничивать Платформу никакими идеологиями, и коль взяли уже на вооружение такой молоток, покрутите его в руках, посмотрите на него с разных сторон, может, и Дуум не такая уж фантастика на втором этаже...
Цитата: Пиит от 03 мая 2024, 20:12...беру это МножествоОбъектов, загружаю в ПЗУ...
В этом месте случилась описка, конечно здесь подразумевалось ОЗУ.
Что касается ПЗУ. Имхо не принципиально, каким из логических способов реализовано хранение данных. Будь они реляционными таблицами, иерархическими структурами или сущностями других заковыристых топологий - это не имеет ровным счётом никакого значения. Я напомню, что все вышеуказанные структуры с помощью единиц и нулей располагются в одном и том же одномерном массиве под названиме ПЗУ. Они просто представляют собой более абстрактный, оторванный от железа и внятный для прочтения уровень интерпретации данных. Соответственно, и не принципиально использование той или иной из известных СУБД для свох целей. Нынешние СУБД - это системы управления данными низкого уровня, и дай им Бог здоровья.
Когда-то и программы Программисты писали Машинными кодами, и знание Ассемблера не освобождало от необходимости держать в памяти хренову тучу процессорных инструкций, номеров прерываний, адресов памяти и даже таблицу символов. Но ведь не зря на смену языкам низкого уровня пришли вскоре другие языки, которые так и назвали, в противовес Ассемблерам, языками "высокого" уровня абстракции. Это известные нам Си, Паскаль и другие. Так Программист перестал вникать в подробности очередного детища Intel, оторвался от железа, разгрузил своё ПЗУ и рабочее время, и тем самым получил возможность уделять больше внимания предметной области для решения своих задач.
Концепция ООП принесла в мир ИТ понятие Интерфейса. Это тоже своего рода революция, концептуальная и самодостаточная. Многие связывают появление ООП с Окнами, но это совсем не так. Интерфейсы были и раньше, только назывались они ВнешнимиБиблиотеками, СистемамиПредписаний и т.п. и были оторваны от своих СтруктурДанных. И ООП представился как следующий уровень абстракции программирования, ещё более высокий, чем те "высокие" языки. И назрел этот уровень абстракции исходя из элементарной необходимости неповторения кода, его инкапсуляции. Это основная причина революции, как сказал бы дедушка Ленин, "низы не хотели жить по-старому". Но это всё про ОЗУ.
Так до каких пор мы ещё будем зубрить названия колонок и индексов, и вникать в отличия ID от RowID? Не пора ли абстрагироваться от Таблиц в другие Измерения, в Объектную Модель Данных? Модель, где две абсолютно одинаковые Таблицы буду представлять собой совершенно разничные ПрикладныеКлассы, каждый со своим ПрикладнымИнтерфейсом. СтруктурыДанных придуманы ведь не просто так. Большинство из них представляют собой один и тот же ОдносвязныйСписок, но благодаря разным СистемамПредписаний, т.е. различным Интерфейсам, они представляются уже конкретными инструментами для решения своих прикладных задач.
Сейчас мы являемся свидетелями новой технической революции, и дело здесь не в ИИ. Имхо, если нет интеллекта естественного, не поможет и искусственный.
Архиважно то, что скорости работы ПЗУ и ОЗУ уже не отличается на несколько порядков, в тысячи раз, как на заре компьютерной эпохи. Теперь их скорости уже практически сопоставимы, и недалёк тот день, когда эти два понятия, бывшие когда-то разделёнными по объективным техническим причинам, сольются в одну сущность - ЗУ. И Машина станет работать по-другому, не по полувековому принципу - Из_ПЗУ_В_ОЗУ_И_Обратно, а В_Режиме_Реального_Времени, и любая программа будет запускаться не с белого листа, а в уже существующем Пространстве Данных, или Виртуальном Мире, как вам больше нравится...
Цитата: Пиит от 06 мая 2024, 22:53....Так до каких пор мы ещё будем зубрить названия колонок и индексов...
Несколько слов об SQL.
Своему рождению, как и многие мировые изобретения, структурированный язык запросов обязан обычной человеческой лени. Запарились однажды мериканьские программисты каждый день рожать новые отчеты своим бухгалтерам, и задумались, как им освободить по-больше времени для чаепития в полуденную сиесту.
Да, да, SQL был задуман не как средство программирования, а как интрумент пользователя, точнее сказать, продвинутого юзера. И те программисты здраво порешили, что вручив такую цацку юзеру, избавятся от него таким образом. Но, как это обычно бывает, что-то пошло не так.
Я учился в школе по учебнику Кушнеренко. Учебная программа того времени предполагала, что из любого школьника можно воспитать программиста, поэтому и упор в учебнике был сделан на изучение алгоритмов, абстрактного языка, двоичных систем и всего-всего очень скучного не только для девочек.
Но уже к концу 90-х содержание программ резко изменили. Оказалось, что стране нужны грамотные пользователи, а не программисты, и учебник сменили на более другой. И стали изучать школьники конкретно Паинт, Ворд, Эксель и всю эту прикладную херомантию.
Примерно так было и на Западном направлении. В условия быстрого роста рынка программного обеспечения рынок труда требовал потребителей, а не разработчиков. Не справились юзеры с такой цацкой, посему SQL и потерял первоначальное предназначение, Но, с развитием клиент-серверных систем оказался востребован в контексте сетевой логики, для транзакций не только на чтение, но и на запись данных. Таким образом, сей декларативный язык стал развиваться в сторону своей субэдэшной специализации, отдалившись на парсеки от замысла своих Творцов. К тому же, сиих Творцов купила с потрохами известная компания IBM, и кропели они уже над внереляционными вопросами, например как обойти конкурентов и т.п.
SQL тоже займёт почётное место в музее ПО всех времён и народов, но сейчас и без него не обойтись. Пусть он тоже работает на благо Отечества, но, как я уже говорил, на более низком уровне. На более высоком уровне Машина должна использовать его для реализации ПрикладныхКлассов. Даже Спр.ВыбратьЭлементы() имхо это не что иное, как Запрос. Только Одинэснику и знать о том не надо, он должен думать о том, что Спр - это Множество Элементов, а Спр.ВыбратьЭлементы() - это Подмножество указанного Спр, и каким должно быть это Подмножество, должен в полной мере нам рассказать Интерфейс БазовогоКласса.
АЛьФ здесь где-то уже подмечал, что прикладной программист не должен думать о том, на какой стороне выполняется какая хрень и в какой транзакции, он должен вцело быть погружен в предметную область, и радовать своих контрагентов быстрой и качественной работой, оставляя при этом себе время для чаепития в полуденную сиесту...
Цитата: Пиит от 06 мая 2024, 22:53... любая программа будет запускаться не с белого листа, а в уже существующем Пространстве Данных, или Виртуальном Мире...
Надо уже закрыть этот вопрос, и больше к нему не возвращаться.
Окна задумывались как псевдомногозадачная ОС, и до сих пор она по сути таковой и является, с добровольно-принудительным последовательно-параллельным распределением между приложениями процессорного времени и ОЗУ. По мере роста количества процессорных ядер и соответсвенно возможностей физического распараллеливания приложений, Окна трансформируются в настоящую многозадачную ОС. Ну и флаг им в руки, развитие этой концепции мне не представляется интересным.
В контексте объединения ОЗУ и ПЗУ имхо более интересным мне видится ОС с общим ЗУ для всех исполняемых приложений. Таким образом, в одной такой ЗУ-ООБД смогут одновременно сосуществовать и 1Сv25, и Компас-33D, и даже Флинн Таггарт в таком Мире будет иметь право на дополнительную Жизнь. И в такой Операционной Системе в добровольно-принудительном порядке, может быть осуществлён универсальный доступ приложений к данным друг друга, на основе общих Классов как универсальных СтруктурДанных в общей для всех среде исполнения.
Но это, "по расчисленью ФилософическихТаблиц, лет чрез пятьсот"...
АЛьФ здесь где-то уже подмечал, что прикладной программист не должен думать о том, на какой стороне выполняется какая хрень и в какой транзакции, он должен вцело быть погружен в предметную область, и радовать своих контрагентов быстрой и качественной работой, оставляя при этом себе время для чаепития в полуденную сиесту...
- так это же про 7.7.
Цитата: Злоп от 07 мая 2024, 02:19- так это же про 7.7.
И да, и нет. (https://forum.dorex.pro/index.php?msg=1029)
Все мы Родом из 7.7, но в контексте нынешнего безобразия под номером 8.3 многие специалисты пожимают плечами, глядя куда катится Компания.
Не нашлось таки у них нового ДядиФёдора...
Цитата: Пиит от 03 мая 2024, 20:12... Есть в семёрке такой замечательный Объект, Регистр назывется...
Дядя Фёдор знал не только ООП и SQL3, но кое что ещё.
Откуда в Платформе взялось слово "Регистр"? Открываем толмуд по бух.учету и читаем: "Счёт - это учётный регистр, предназначенный для тэго вэго". Вот и весь секрет. Когда ДядяФёдор приступил к моделированию компоненты БухУчёт, он не поленился полистать специализированную литературу. Как известно, Счета бывают синтетические, т.е. группы, и аналитические, так называемые СубСчета. Но есть ещё и другие Регистры - аналитические СубСчета СубСчетов, которые в теории бух.учёта Кодируются специальным образом, но собственного названия почему-то не имеют. СубСчет же по латыни звучит как СубКонто, и в результате такой игры слов Компания являет Миру новый термин для обозначения этих Измерений. Красиво? Мне нравится.
В то время основная проблема учётных систем заключалась в замедлении расчета конечных итогов в процессе накопления информации. В контексте и бух. и опер. учета программы того времени рассчитывали конечные сальды начиная с первой проводки в системе, таким образом, чем больше движений, тем больше требуется времени для расчёта итогов. Многие специалисты находили выход в постоянном архивировании предыдущих периодов с перерасчетом входящих остатков в новый период. В V6 также была реализована подобная схема, но чуть хитрее. Была внедрена специальная Таблица, Бухгалтерские Итоги, а для смены ПериодаБИ требовалась соответсвующая процедура перерасчета Бухгалтерских Итогов. Шарик был доволен, его ноу-хау было немножко интереснее, чем у конкурентов.
ДядяФёдор так не считал. Принимая Счет и ВидыСубконто как измерения в многомерном массиве бухлалтерских данных, он задумал и реализовал в V7 самый что ни на есть настоящий OLAP-куб. Это и есть те самые Таблицы БухгалтерскихИтогов, которые содержат промежуточные данные бухгалтерских функций, ещё и в помесячном разрезе.
Знал ли ДядяФёдор в то время, что такое OLAP? Термин этот ввёл в обиход Эдгар Кодд в 93 году в известной статье «12 правил аналитической обработки в реальном времени». Такие массивы использовались и раньше, с 70-х годов, а великодушный Эдгар в вышеуказанной заметке только дал добро на их применение в свой модели РБД.
ДядяФёдор мог и самостоятельно додуматься до подобной конструкции, а затем уже "включить диалап", чтобы удостовериться, что он не псих. Как бы то ни было, компонента получилась удачной. Положив структуру Таблицы Проводок в соответсвии с Таблицами БухгалтерскихИтогов, ДядяФёдор не только реализовал христоматийный ROLAP-куб, но и виртуальный одноимённый ПрикладнойОбъект, как технологию, объединяющую данные вторичных таблиц с исходными данными. И о приемственности Творец не забыл, и назвал такой механизм БухгалтерскимиИтогами.
В технологии OLAP, Таблицы, вмещающие в себе множества значений измерений общего массива данных, называют агРегированными, а уникальный набор значений, Кортеж данных в в этом многомерном Пространстве, в нашем случае это есть структура [Счет, Субконто1,.., СубконтоN], называют агРегатом, что вполне созвучно слову Регистр. Таким образом, ДядяФёдор и остановился на этом названии своей конструкции, с одной стороны, имеющем бухгалтерские корни, а с другой, вполне вписывающийся в актуальные по тем временам технологии.
Так в компоненте ОперативныйУчёт появился Регистр собственный, как таблица Многомерного массива, произвольный OLAP-куб, с неограниченным количеством как Измерений, так и Ресурсов. Причём Куб здесь немного урезанный, в отличие от БухгалтерскихИтогов. Почему-то один и тот же Регистр не может быть одновременно Оборотным и Остаточным. Но, несмотря на это, ПрикладнойОбъект Регистр, как и БухгалтерскиеИтоги, представляет собой Класс, объединяющий ТаблицыДвижений и ТаблицыАктуальности в одно целое.
Что любопытно, каждый новый Счёт в ПланеСчетов автоматически порождает новый бухгалтерский Регистр, и Одинэсники с удовольствием используют таким образом забалансовые счета в своих корыстных целях. И только Пираты Карибского моря могут в таких случаях обвинять Сапожников в извращениях, дескать, не проще ли использовать для этих целей сам Регистр. Нет, проще таки за балансом, а Регистр только в случаях, когда количество измерений выходит за рамки ПланаСчетов. Но всегда нужно помнить, что количество агРегатов в OLAP-кубе растёт в экспонециальной прогрессии при каждом новом измерении.
ПланСчетов же по сути есть множество Регистров, и заметьте, даже бухгалтер имеет полное право на порождения нового МногомерногоПространства для своих целей, а вот кладовщик таким правом не наделён.
А что же такое "агрегатные" типы данных в нашей Платформе? Согласно Описанию встроенного языка, в этом чудном списке присутствует не только агРегированные Таблицы типа Справочник и Документ, но такие Классы, как СписокЗначений, ФайловаяСистема и даже XBase, в общем всё то, что порождается с помощью СоздатьОбъект.
Но об этом таки нужно спросить у Шарика, который одним лохматым ухом слышал слово "агрегат" от ДядиФёдора, но понять замысел Творца как известно был не в состоянии...
Цитата: Пиит от 07 мая 2024, 12:39... появился Регистр собственный, как таблица Многомерного массива, произвольный OLAP-куб...
Всякий Регистр есть Пространство, но не всякое Пространство можно или нужно отнести к Регистрам.
Так, НепериодическийРегистрСведенийV8 являтся несостоятельным Регистром от слова совсем, но зато эту конструкцию можно использовать в качестве дискретной N-мерной Функции, с помощью которой можно задать множество полезной информации, такой как СодержаниеДрагметалловВТМЦ, НормыРасходаТопливаНаТягачИВидПолуприцепа, РасценкиКатегорийВодителейНаРаботыПоВидамТранспорта, СодержаниеВкусняшекВПродуктахПитания и т.д. и т.п. Когда речь идёт о действительно условно-постоянной информации, подобные КнигиОВкуснойИЗдоровойПище должны быть всегда под рукой. В типовых конфигурациях V7 такую информацию обычно раскладывали в ПодчинённыеСправочники, что не является правильным решением из-за асимметрии последних. И ТМЦ, и Драгметалл есть равнозначные Измерения, и пользователь, помимо информации о содержании всех драгметаллов в конкретном ТМЦ имеет полное право видеть и содержание конкретного драгметалла во всех ТМЦ.
ПериодическийРегистрСведенийV8 уже может быть Регистром, и подчиняться воле ХозяйственнойОперации, но это вовсе не обязательно. Так, например, НормыРаходаТоплива могут меняться со временем в связи с пробегом или другими обстоятельсвами, но из этого не следует, что нужно кровь из носу создавать для Регистрации этого события специальный ВидОперации, достаточно внести изменения в эти таблицы вручную. Наверное от слова "вручную" у некоторых товарисчей наверху прыщи на теле высыпают, иначе зачем они закрыли возможность править таким способом Регистры и даже Проводки? Понять эту логику без дедушки Фрейда крайне затруднительно.
Ближе к делу. Любое Пространство может стать Регистром при условии, что оно будет наделено ещё одним измерением, не совсем обычным, и называется оно - Время. Только Время даёт возможность положить в Регистр Событие, ту самый Точку Пространственно-ВременногоКонтинуума, ХозяйственнуюОперацию со своим собственным для этого случая Реквизитом ДатаОперации.
Это достаточное условие, но оно не является необходимым. Если нет Регистратора, то нет и Регистра, поэтому ПространствоВремя может существовать и само по себе, хотя в общем, я и не знаю, где будет востребована такая конструкция, ведь даже Флинн Таггарт не будет рад стоять на месте. Движение - это Жизнь.
Здесь я считаю небходимым пояснить разницу между Регистром и OLAP-кубом. Регистр - это таблица, пусть и "вторичных" Движений, но таки исходных данных для OLAP-куба. OLAP в общем случае не содержит Время в своих Измерениях, но в обязательном порядке содержит ПромежуточныеИтоги в разрезе ВременныхОтрезков. И здесь я считаю ОстаточныйРегистрV7 также несостоятельным решением, в отличие от ОборотногоРегистраV7 и БухгалтерскихИтогов. Специалисты знают недостатки ТочкиАктуальности при перепроведении отдалённым задним числом. Похоже, ДядяФёдор как раз на этом Объекте сдал свои дела, и РегистрV7 стал очередным не_до_разумением.
Важно, что Регистром не обязательно может быть только сложносочинённое Пространство. Любой ТипДанных, наделённый свойством Периодический, может стать Регистром. Я очень буду скучать по Объекту "Периодический", даже если меня тошнит от этого названия. Ведь это придумал ДядяФёдор - определить Время как Свойство, и это очень Логично. Время есть необычное Измерение, у него есть свои уникальные особенности, и добавить просто так Время в Пространство в Качестве рядового Измерения не позволит использовать его без надлежащего Интерфейса. Поэтому я, в честь ДядиФёдора, предлагаю восстановить Время в своих правах, и определить как фундаментальное Свойство любого ТипаДанных. Не вижу для этого никаких препятствий.
В системе, где каждый ТипДанных уложен в свою ТаблицуБД, и даже для Числа и Строки есть свои отдельные хранилища, добавить ещё одну колонку Время и ещё один индекс Owner+DateTime не составит никакого труда. Таблицу КонстантV7 видели? Вот, примерно так, каждый ТипДанных ака Класс, трах-тибидох, может одним щелчком превратиться в настоящий Регистр. И Зигмунд упаси запретить изменение его "вручную"...
И почему это остаточный регистр бяка, а оборотный небяка?
.
Кстати, так до сих пор толком и не знаю что сидит в таблице итогов оборотного регистра (например, с периодичностью = месяц)...?
Цитата: Злоп от 09 мая 2024, 17:35. И почему это остаточный регистр бяка, а оборотный небяка?...
Да, погорячился немного.
Спасибо, Че, так бы и не знал я, чего там в таблице сидит.
Вполне рабочий OLAP, в разрезе Дня, как и в оборотном.
А я был уверен, что там только оперативные итоги на дату актуальности.
Тогда тем более не догоняю, почему остатки и обороты не совмещены в одной таблице, с совмещением периодов OLAP как для сохранения остатков, так и расчета оборотов.
В разрезе дня? В таблице ИТОГОВ оборотного регистра с периодичностью месяц?
.
Ещё раз вопрос: что сидит в таблице итогов оборотного регистра?
.
Или перефразируя вопрос - если так будет проще - как считается такое: ТА допустим в июне, запрос типа: "дай мне оборот по продажам за период с 15 января по 25 марта"..?
Цитата: Злоп от 10 мая 2024, 04:21...Ещё раз вопрос: что сидит в таблице итогов оборотного регистра?...
В таблицах итогов в качестве периода указывается Дата, таким образом, минимальным возможным периодом теоретически является День, а фактически Период устанавливается внешними параметрами Регистра. Так, для Оборотного Период задан в Метаданных, а для Остаточного - в режиме Предприятия как ПериодичностьСохраненияОстатков в УправленииОперативнымиИтогами, а значение Периода представляется как НачДата интервала, в который попадает Движение от Регистатора со своим ДатаДок.
Здесь имхо и кроется разгадка слова "Периодический" для Реквизитов с Историей. У Наследников ДядиФёдора возникла путаница между Временем в ТаблицеДвижений и Периодом в ТаблицеOLAP.
Историю Реквизита можно представить себе как вырожденное, 0-мерное ПространствоВремя, в котором есть только Время, но нет по факту других Измерений. И такую конструкцию, Движения Реквизита во Времени, можно назвать в общем случае Регистром, но я бы предложил конкретизировать такие Реквизиты названием Динамические. А Регистром таки называть ПрикладнойОбъект, для которого организован свой OLAP-куб.
Теоретически, и Динамический Реквизит может иметь свой OLAP-куб, но это уже имхо перебор на текущем этапе проектирования системы...
Вопрос остался. Какие итоги сидят в таблице итогов оборотного регистра, например, с периодисностью месяц? Итог по обороту за месяц? Или итог по обороту за месяц нарастающим итогом от предыдущего месяца?
Цитата: Злоп от 10 мая 2024, 11:49...Или итог по обороту за месяц нарастающим итогом от предыдущего месяца?
По факту Обороты суммируются из Движений за один Период, без нарастающих.
А теоретически всё возможно. Даже возможно построение Вложенных друг в дуга OLAP-ов, с последовательным вложением Периодов друг в друга, например по Годам-Месяцам-Дням.
Я здесь уже вспоминал четырёхэтажные конструкции для обработки данных Автотехконтроля. Задача вспыла как экстренная, по результатам проверки предприятия профсоюзной организацией. Смешно, какие-то профсоюзы поломали учёт зарплаты об колено. Я посоветовал главбуху послать их нах, мол не Трудовая инспекция, и свои рекомендации пусть засунут себе в трубочку. Но руководство решило не выёживаться, и поставило меня раком - пересчитать за 2023 год всю зарплату, и доначислись водителям-дальнобойщикам помесячно Ночные, Праздничные и ДоплатуДоСреднегоЗаработка, перепечатав при этом все Табеля и Ведомости. А весь прикол в том, что данных по работе водителей взять неоткуда, зарплату надо начислять, даже когда они в рейсе, а полагаться на данные тахографа в оперативном режиме невозможно, поскольку сей прибор находится в рейсе вместе с водителем. А возомнившемуся инспектору все доводы были по барабану. Вот и пришлось утвердить в качестве данных объективного контроля Движение Автомобилей от службы Автотехконтроля. А данные представляют собой большую Таблицу всех Движений по каждому Авто, с записями на Дату от НачВремени до КонВремени, приходящиеся не только на текущие сутки, но и зачастую переходящие на следующие.
В общем, как говорят в таких случаях, упала на мою старую больную голову не детская такая головоломка. Но ничего, победил, разобрал, привязал к Сотрудникам, собрал, вычленил и Ночные, и Праздничные, и всю остальную херомантию, и за День, и за Месяц, и за Год. А для этого пришлось организовать вложенные OLAP-ы на ПодчиненённыхСправочниках.
В процессе решения нашёл для себя новые неведомые доселе законы Времени. Например, для Временных интервалов вполне правильным будет употребление значение 24:00:00 для КонИнтервала, не включая в сам Интервал последнее значение. Таким образом, проверка вхождения МоментаВремени в ИнтервалВремени будет выглядеть как ( >=00:00:00) И ( <24:00:00), что ликвидирует неопределённость момента смены Дня.
К слову, ИнтервалВремени может быть задан как Вектор, двуми значениями, НачИнтервала как ДатаВремя и ПротяжённостьИнтервала Как КоличествоВремени, по сути Число.
Жаль, что Интервалы как таковые вообще обделены вниманием в наших Платформах. Имхо, без таких ТиповДанных и возникают недопонимания и путаницы при решении прикладных задач...
Цитата: Пиит от 10 мая 2024, 11:28... У Наследников ДядиФёдора возникла путаница между Временем в ТаблицеДвижений и Периодом в ТаблицеOLAP....
Подобно Николаю Ивановичу Лобачевскому, Юрий Валентинович Кнорозов (https://ru.wikipedia.org/wiki/%D0%9A%D0%BD%D0%BE%D1%80%D0%BE%D0%B7%D0%BE%D0%B2,_%D0%AE%D1%80%D0%B8%D0%B9_%D0%92%D0%B0%D0%BB%D0%B5%D0%BD%D1%82%D0%B8%D0%BD%D0%BE%D0%B2%D0%B8%D1%87), сидя в своей тесной мастерской, вооружившись исключительно своим опытом, интуицией и здравым смыслом, сотворил чудо, недоступное для понимания наследникам индейцев Майя, и не только им. Представьте себе только, обычный русский парень взял и расшифровал потерянный древный язык и восстановил письменность, за что получил звание почётного Ацтека всех латиноамериканских времён и народов.
В последние годы, даже можно сказать десятилетия, я превратился из сухого математика в довольно живописного филолога. Скучно раскладывать Пространства на атомы, гораздо интереснее изучать живую Историю, как ПространственноВременную структуру, движения в которой осуществляют Великие Люди, в которой Геном играет не последнюю роль и загадки которой представляют гораздо больший интерес, чем лохматость какого-то прикладного приложения. История непрерывна, тянется с незапамятных Времён Бусовых, а мы видим сегодня только оперативные её итоги, а былое воспринимаем как что-то непостижимое и запутанное настолько, что и разбираться в нём порой и не желаем.
Сказать, что Историю пишут победители, это ничего не сказать. Я могу утверждать, что победители всегда переписывают Историю, и в этом их слабость. Недоверие к пишущим исторические трактаты вкупе с научныи подходом от Николая Ивановича представляет собой серьёзный скальпель, которым можно вскрыть многие опухоли Исторической науки. А если к вам на помощь придёт сам Александр Сергеевич, то поверьте, тогда точно нет ничего невозможного.
Хотите, друзья, я поведаю вам тайну царевича Дмитрия Угличского, младшего сына Ивана IV? И не только тайну его гибели, но и тайну его рождения. А заодно расскажу, кем на самом деле был самозванец Лжедмитрий, и какова настоящая История Смуты и причина последующего воцарения Романовых.
Не в этой ветке, в соседней. Предлагаю выше коротенький опрос.
Всем привет! Кризис кризисом, а работать надо.
Остановился у меня спинер Кодда, Эдгар - Гений, запихал две сущности в одну таблицу, и это АрхиПравильно.
В двух словах, он взял одно измерение, то самое, ОЗУ, и придал ему свойство периодичности,
т.е. повторяющиеся структуры. Таким образом, любое количество измерений может быть заложено в этот Дуум, и даже спец.измерение - Время, только в последнем случае оно дискретно, т.е. задано определённыи фиксированными значениями.
Короче, тут есть о чём подумать, но Святого Эдгара списывать никак нельзя.
Нужно брать за основу Реляционную модель, а уже сверху её модель Объектную, из которой Таблицу нужно изъять как Класс, для разрешения этого противоречия. О как. Дедушка Эдгар тут бы точно улыбнулся.
Пока всё, работать надо.
Забыл сказать, Приемственноть, ля ))
На infostart.ru/ опубликован блог
https://infostart.ru/1c/articles/2119794/ Доступ к DBF/memo FoxPro/DOS через "внешние источники данных" 1С тонкого клиента. Возможность решения проблем за несколько шагов
API проекта harbour 100% поддерживает DBF и использование memo.
В 1С 7.7 CDX не поддержан лишь частично.
В harbour работа с CDX, NTX, ... поддержана на 100%.
Нет никаких проблем разработать с использованием core harbour а-ля 1C 7.7.
Честно говоря у меня на C++ давно реализовано API для работы с всеми объектами 1С 7.7.
Более того разрботал 100% совместимый с API 1С 7.7 для работы с mxl.
Вообщем то можно с конфигурациями 1С 7.7 работать без использования программ от фирмы 1С.
Не публикую его потому, что архитектура данных 1С 7.7 весьма устарела и реанимировать её для фанатов
1С 7.7 нет никакого желания.
Для чего же мне понадобился тогда API?
Для:
- конвертации данных СУБД в формат конфигураций 1С 7.7 (md создаётся программно без использования 1С);
- работа с данными конфигураций 1С 7.7 без использования продуктов фирмы 1С.
- работа с данными 1С7.7 без использования программы 1С из конфигураций 1С 8.x и возможность использования в них mxl формата 1С 7.7.
Давненько разрабатываю свой API для использования метаданных, но он на порядок функциональней API фирмы 1С.
Нв его основе ныне разрабатываю полноценный сервер данных.
Он позволит использовать метаданные для работы с 2D, 3D, ...
Это не а-ля 1С, но уже и реализована конвертация данных конфигураций 1С 7.7 в формат данных для сервера.
Ещё одна фича реализована - возможность использования для DBF двух CDX.
Один от фирмы 1С, другой для создания дополнительных ключей.
Всё работает ok!
Забыл сказать.
Блог не мой.
Разработанное API позволяет работать с конфигурациями 1С 7.7 с использованием любого ЯП.
Ныне в приоритете разработка нового сервера.
Данные конфигураций 1С 7.7 и mxl можно будет сконвертовать в формат сервера.
Так что труд, затраченный на создание конфигураций 1С 7.7 не пропадёт за зря.
Исходники опубликую лишь после того, когда фирма 1С отроет свои.
Понимаете, это новая технология и кому попало исходники отдавть не буду.
Впрочем возможно и открою.
Это новая технология, а не какой-то там велосипед
Цитата: Forum123 от 05 июня 2024, 17:25Это новая технология, а не какой-то там велосипед
Принял к сведению что есть какая-то офигенная хрень, но что мне, клюшечнику, с ней делать и надо ли - осталось за бортом.
Конфигурации 1С 7.7 можно будет сконвертировать в новый формат данных и моксели будут функционировать как в 1С 7.7.
Работы ещё очень много.
Это всё же не сто программистов, а один человек.
Сказанное в предылущих постах не выдумка, а разработанное API.
Работайте в 1С 7.7 и Родина вас не забудет.
И что даст новый формат данных?
Полноценно использовать графику и мультемедия при разработке.
Можно динаически создавать объекты любой сложности и работать с ними: деревья, списки, таблицы, ...
Любой вложенности и иерархии.
Полноценная поддержка struct из Си.
Можно создавать динамически объекты на основании #include любой вложенности "например xls, ...".
Фича в том, что можно хоть игры разрабатывать, хоть какие-то информационные и аналитические системы.
Работы много!
Данные конфигурациё 1С 7.7 можно будет импортировать в сервере.
Короче фигня какая-то для программистов, а не для 1Сников ;-)
Цитата: Злоп от 06 июня 2024, 14:32Короче фигня какая-то для программистов, а не для 1Сников ;-)
Эта система 1000% Вам не нужна будет.
1C 7.7 Вас поит и кормит, остальное лишь праздное любопытство.
Нет смысла обсуждать.
Цитата: Forum123 от 06 июня 2024, 16:30...Эта система 1000% Вам не нужна будет.
1C 7.7 Вас поит и кормит, остальное лишь праздное любопытство...
Я тоже не совсем понимаю, какое отношение Ваш проект имеет к v77 и моему блогу в частности. Мне Ваши потуги напоминают собственные грабли, когда я пытался втолковать высококлассным программистам свои идеи о развитии 1С в сторону ООБД, но в ответ видел одно непонимание и выслушивал их собственные идеи и прожекты, не имеющие отношения к делу.
Конкретно для Вас, Форум123, рекомендую открыть свою ветку, в которой Вы сможете последовательно и основательно рассказать всему миру о своём детище. Признаюсь, понимание его сути и значимости для сообщества одинэсников лично у меня отсутствует. Можно сколько угодно вывешивать свои рекламные объявления на всех ветках, но от этого понимания не прибавится, только раздражения на откровенный оффтоп.
Цитата: Forum123 от 05 июня 2024, 16:02Давненько разрабатываю свой API для использования метаданных, но он на порядок функциональней API фирмы 1С.
Вы нам сказки рассказываете, нет никакого публичного апи.
Было-бы выложили бы.
Тут видишь ли открытые проекты обсуждаются, а не закрытые.
Закрытые проекты тут обсуждать - моветон.