R
Ramzay
Когда меня спрашивают, знаю я тот или иной язык, то стараюсь ответить: "Да/нет, я могу/не могу решать задачи с помощью этого языка".
Да, я могу решать задачи с помощью 1С. Рискуя найти не понимание среди завсегдатаев форума, хочу сообщить следующее об 1С:
1. "Объектно-ориентированное", с позволения сказать, 1С программирование. Для описания
не объектно-ориентированных программ используют такой пример:
Программу сравнивают со сложным объектом, например с самолетом. Если в программе скапливается
большое количество переменных, то они могут иметь одинаковые имена. В результате может возникнуть
ситуация, когда вы сидя в кресле самолета вы включаете лампочку, что бы почитать, а это приводит
к включению системы пожаротушения левого двигателя и как следствие к его отстновке.
Сказанное полной мере относится к 1С.
Я уж не говорю о других принципах ООП. Почему нельзя создать свой объет, например документ,
на основе уже имеющегося документа? Что бы он обладал теми же свойствами и методами, что
и его предок.
То, что в 1С называется классами, на самом деле представляют из себя некие структуры.
До классов они никак не дотягивают.
2. Автора языка, наверное, за зверства выгнали из Гестапо. Программы получаются с длинными
строками и сами программы длинные. Ничего не имею против русского языка. Мне даже нравится
писать на нем программы. Но скажите на милость, какой садист придумывал название функций?
Например:
ПустоеЗначение() и ПолучитьПустуюСтроку()
Неужели вместо этих двух нельзя было использовать Пусто(), которая бы делала то, что делают эти две.
И так сплошь и рядом.
3. Общепризнано, что использование оператора Goto - это правило дурного тона.
В языках высокого уровня использование циклов сведено к минимуму.
Наверное когда-то настанут времена, и программисты не станут использовать оператор if
Мне очень не нравиться, что в 1С слишком часто приходится использовать цикл.
И, вследствие того, что методы Выбрать...() имеют не достаточные возможности фильтрации,
приходится не оправдано часто использовать if
4. Компилятор пропускает львиную долю ошибок, которые можно было отловить.
5. Конфигуратор - наверное это придумали инквизиторы. Если отлаживаешь какой-то технологический
модуль, в котором используются различные объекты, каждый объект помещается на отдельную веточку
конфигуратора. Когда отлаживаешь процесс в целом, с большим количеством модулей имеешь 2 варианта:
Или на рабочем столе куча открытых, беспорядочно разбросанных окон.
Или бегай по всему дереву ищи нужный модуль что бы открыть.
6. Высокая повторяемость кода. Это происходит из-за того, что одну нельзя запускать
процедуру или функцию "чужого" модуля. Даже если есть ссылка на "чужой" модуль.
Приходится или повторяться или, как это будет по-русски - "добавлять много
ненужной информации", в глобальник.
7. Есть люди, чье хобби запускать воздушных змеев, мыльные пузыри и отдельные приложения.
Наверное, такой человек придумал отладчик. Хорошо еще, что отладчик запускается не на
отдельной машине.
Помимо неудобств, ничего хорошего в этом нет. Неужели сложно было организовать отладку
в конфигураторе, в редакторе программ?
8. В таблице значений есть метод Заполнить. Он не работает, если таблица не имеет строк.
Он выдает ошибку. Бред.
9.Почему ТЗ.ТекущаяСтрока(Ы) не устанавливает номер текущей строки = Ы , хотя в документации об этом написано?
Приходится пользоваться ПолучитьСтрокуПоНомеру(Ы)
10. Из Жз нельзя выбрать с помощью цикла записи, зарегистрированные в нескольких периодах.
11. Нет команды, которая могла бы заполнить колонку Тз данными, которые зависят от значений строк Тз.
И не только ТЗ.
12. Косноязычность. Например, есть такие объекты как Справочники, Документы, ЖурналыРасчетов, ТаблицыЗначений
и др. Все эти объекты изначально представляют из себя некую таблицу. Для того, что бы организовать перебор
записей нужно воспользоваться функцией:
Для справочника ВыбратьЭлементы
Для документа ВыбратьДокументы
Для ЖурналаРасчетов ВыбратьЗаписи
для ТаблицыЗначений ВыбратьЗаписи
и т.д.
В нормальных объектно-ориентированных языках все бы это делалось одним методом: Выбрать.
И так не только с данными методами, так везде.
Существующий подход вносит очень много путаницы.
13. Опять же 1С содержит много по сути однотипных объектов. Но как уже говорилось методы работы
у каждого объекта свои. Причем у каждого свои оригинальные способы и подходы. Это говорит о
недостаточной продуманности внутренней организации объектов 1С. А расплачиваться за все
приходится нам, конечным пользователям.
14. Если в условиях используешь и / или, то выражения с обеих сторон нужно брать в скобки.
Наверное, тот, кто это писал мало слышал о приоритетах операций.
15. Скудный язык запросов.
16. Нет хороших методов, обеспечивающих фильтрацию таблиц. Например, нельзя штатными
средствами в журнале расчетов отображать записи по одному виду расчета.
ps Все сказанное относится к 7.7
С 8-кой не знаком, судить не могу. Только на ум приход пословица о гомне и конфетке.
Да, я могу решать задачи с помощью 1С. Рискуя найти не понимание среди завсегдатаев форума, хочу сообщить следующее об 1С:
1. "Объектно-ориентированное", с позволения сказать, 1С программирование. Для описания
не объектно-ориентированных программ используют такой пример:
Программу сравнивают со сложным объектом, например с самолетом. Если в программе скапливается
большое количество переменных, то они могут иметь одинаковые имена. В результате может возникнуть
ситуация, когда вы сидя в кресле самолета вы включаете лампочку, что бы почитать, а это приводит
к включению системы пожаротушения левого двигателя и как следствие к его отстновке.
Сказанное полной мере относится к 1С.
Я уж не говорю о других принципах ООП. Почему нельзя создать свой объет, например документ,
на основе уже имеющегося документа? Что бы он обладал теми же свойствами и методами, что
и его предок.
То, что в 1С называется классами, на самом деле представляют из себя некие структуры.
До классов они никак не дотягивают.
2. Автора языка, наверное, за зверства выгнали из Гестапо. Программы получаются с длинными
строками и сами программы длинные. Ничего не имею против русского языка. Мне даже нравится
писать на нем программы. Но скажите на милость, какой садист придумывал название функций?
Например:
ПустоеЗначение() и ПолучитьПустуюСтроку()
Неужели вместо этих двух нельзя было использовать Пусто(), которая бы делала то, что делают эти две.
И так сплошь и рядом.
3. Общепризнано, что использование оператора Goto - это правило дурного тона.
В языках высокого уровня использование циклов сведено к минимуму.
Наверное когда-то настанут времена, и программисты не станут использовать оператор if
Мне очень не нравиться, что в 1С слишком часто приходится использовать цикл.
И, вследствие того, что методы Выбрать...() имеют не достаточные возможности фильтрации,
приходится не оправдано часто использовать if
4. Компилятор пропускает львиную долю ошибок, которые можно было отловить.
5. Конфигуратор - наверное это придумали инквизиторы. Если отлаживаешь какой-то технологический
модуль, в котором используются различные объекты, каждый объект помещается на отдельную веточку
конфигуратора. Когда отлаживаешь процесс в целом, с большим количеством модулей имеешь 2 варианта:
Или на рабочем столе куча открытых, беспорядочно разбросанных окон.
Или бегай по всему дереву ищи нужный модуль что бы открыть.
6. Высокая повторяемость кода. Это происходит из-за того, что одну нельзя запускать
процедуру или функцию "чужого" модуля. Даже если есть ссылка на "чужой" модуль.
Приходится или повторяться или, как это будет по-русски - "добавлять много
ненужной информации", в глобальник.
7. Есть люди, чье хобби запускать воздушных змеев, мыльные пузыри и отдельные приложения.
Наверное, такой человек придумал отладчик. Хорошо еще, что отладчик запускается не на
отдельной машине.
Помимо неудобств, ничего хорошего в этом нет. Неужели сложно было организовать отладку
в конфигураторе, в редакторе программ?
8. В таблице значений есть метод Заполнить. Он не работает, если таблица не имеет строк.
Он выдает ошибку. Бред.
9.Почему ТЗ.ТекущаяСтрока(Ы) не устанавливает номер текущей строки = Ы , хотя в документации об этом написано?
Приходится пользоваться ПолучитьСтрокуПоНомеру(Ы)
10. Из Жз нельзя выбрать с помощью цикла записи, зарегистрированные в нескольких периодах.
11. Нет команды, которая могла бы заполнить колонку Тз данными, которые зависят от значений строк Тз.
И не только ТЗ.
12. Косноязычность. Например, есть такие объекты как Справочники, Документы, ЖурналыРасчетов, ТаблицыЗначений
и др. Все эти объекты изначально представляют из себя некую таблицу. Для того, что бы организовать перебор
записей нужно воспользоваться функцией:
Для справочника ВыбратьЭлементы
Для документа ВыбратьДокументы
Для ЖурналаРасчетов ВыбратьЗаписи
для ТаблицыЗначений ВыбратьЗаписи
и т.д.
В нормальных объектно-ориентированных языках все бы это делалось одним методом: Выбрать.
И так не только с данными методами, так везде.
Существующий подход вносит очень много путаницы.
13. Опять же 1С содержит много по сути однотипных объектов. Но как уже говорилось методы работы
у каждого объекта свои. Причем у каждого свои оригинальные способы и подходы. Это говорит о
недостаточной продуманности внутренней организации объектов 1С. А расплачиваться за все
приходится нам, конечным пользователям.
14. Если в условиях используешь и / или, то выражения с обеих сторон нужно брать в скобки.
Наверное, тот, кто это писал мало слышал о приоритетах операций.
15. Скудный язык запросов.
16. Нет хороших методов, обеспечивающих фильтрацию таблиц. Например, нельзя штатными
средствами в журнале расчетов отображать записи по одному виду расчета.
ps Все сказанное относится к 7.7
С 8-кой не знаком, судить не могу. Только на ум приход пословица о гомне и конфетке.