И еще 1С++ любителям плюсов )))
И еще 1С++ любителям плюсов )))
Любителям 1С из этого примера надеюсь будет поянтно о чем я говорю:Сообщение от Qwadrat
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
for(int ci=0; ci<5; ci++);
ci++;
}
[C++ Error] Unit1.cpp(16): E2451 Undefined symbol 'ci'
Добавлено через 3 минуты
ИМХО! сильно много буквСообщение от Qwadrat
Последний раз редактировалось Viking; 18.10.2006 в 00:42. Причина: Добавлено сообщение
Прежде чем открыть рот, подумай!
Ну это уже чисто C++-ные радости, попробуй скомпилировать такой цикл на C, компилятор тебе вообще скажет, что нельзя так переменную определятьСообщение от Viking
Вероятно тем, что все нормальные редакторы кода для c/c++ умеют подсвечивать связанные скобки.Сообщение от Qwadrat
Ты не совсем прав. C99, батенька, C99 ;) Дефолтом он, правда, так и не стал и не далеко не все компилеры умеют его полностью поддерживать,но...Сообщение от Qwadrat
Код:andrew:~/PROJECTS/tests% cat 1.c #include <stdio.h> int main() { for(int i=0;i<100;i++) printf("%d",i); } andrew:~/PROJECTS/tests% gcc 1.c 1.c: In function `main': 1.c:4: error: 'for' loop initial declaration used outside C99 mode andrew:~/PROJECTS/tests% gcc -std=c99 1.c andrew:~/PROJECTS/tests% cat 2.c #include <stdio.h> int main() { for(int i=0;i<100;i++) printf("%d",i); i++; } andrew:~/PROJECTS/tests% gcc -std=c99 2.c 2.c: In function `main': 2.c:5: error: `i' undeclared (first use in this function) 2.c:5: error: (Each undeclared identifier is reported only once 2.c:5: error: for each function it appears in.) andrew:~/PROJECTS/tests% andrew:~/PROJECTS/tests% icc 1.c andrew:~/PROJECTS/tests% icc 2.c 2.c(5): error: identifier "i" is undefined i++; ^ compilation aborted for 2.c (code 2) andrew:~/PROJECTS/tests% gcc --version gcc (GCC) 3.4.6 [FreeBSD] 20060305 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. andrew:~/PROJECTS/tests% icc --version 8.1
начинали говорить про язык 1С, а закончили обсуждением С/С++...
да можно в 1С-ке программировать даже с удовольствием. все вполне терпимо! наоборот даже удобно, что возможности языка аккурат заточены под предмет применения - ничего лишнего
Добавлено через 1 минуту
хотя попрограммировать "для души", так сказать, на языке 1С вряд ли получится! тут необходимо в чем-нибудь другом "отрываться"!!
Последний раз редактировалось br.Reanimator; 18.10.2006 в 10:47. Причина: Добавлено сообщение
Вот уж никогда не испытывал нужды в подсветке начал-концов в 1С. Для С/С++ такая подсветка необходима из-за большого количества этих самых скобочек )
На счет С99 - твоя правда, но тот же gcc по умолчанию его не использует.
ps: отдалились от темы разговора
Да потому что синтаксис 1С ближе к Ц-шному все же, с некоторыми отступлениями. Вот и увидели ребята, свое - родное.
Ну синтаксис корявый, как и сказал Викинг, что ни к чему эти слова, обрамления инструкций, почему они не сделали скобочки ? гораздо удобнее и читаемей.. а так много лишнего в коде и глаза мозолятся ! И русские ключевые слова для меня не оправданы :( То же теряешься в коде из за них... Ну это конечно все дело вкуса и предпочтения каждого.
Кто то тут спорит за 1С кто привык на паскале лапатить или кроме 1С ничего не видел, кто то на сях и пхп. У каждого свое имхо.
2Paralax,
1) я бы на твоем месте за собой смотрел.
2) Мы тут обсуждаем язык программирования, а не среду разработки, еще раз для тех кто в танке повторяю !!! Гыы... мощный потому что интерактивный, для ленивых гыгы..
3) а ты знал, что для того чтобы написать знак "неравно" в 1С нужно переключатся на англ ? и любой оператор сравнения... И все удобство к черту, которое ты привел. Сообщения пишутся редко, если только обращатся к реквезитам, которые написаны по русски, но и их же можно было сделать на латинице.
4) LoL! и в чем же его близость заключается ? в методах ? в объектах ? а в 7ке этого не было ? Тут до сих осталась та же, дибильный, оператор сравнения "=", которыя является и оператором присваивания. Синтаксис тот же остался, улучшили редактор, стало удобнее читать и писать, ну и все !
5) Можно. Только вот на 1С ты не напишешь программу складского учета ))) Может конфигурацию составишь только в уже готовой системе ! А мне средненькую систему на работу с одним компом, для простейщей фирмы, занимающейся например продажей жвачки, делов часов 12 ;)
Добавлено через 3 минуты
Я никогда не соглашусь с тем, что 1ска больше похожа на с++ Дорогой, ты на сях писал, что нить кроме Привет земля ? Сравнивать синтаксис 1С и С++, то же что сравнивать Жигули с Мерседесом !
Последний раз редактировалось wertyman; 18.10.2006 в 13:35. Причина: Добавлено сообщение
Попробовать это перевести на английский
Если БалансоваяСтоимостьНалог <> 0 Тогда
ПервоначальнаяСтоимость = БалансоваяСтоимостьНалог;
СрокПолезногоИспользования = ОС.СрокПолезногоИспользованияН.Получить(ДатаНачала Месяца-1);
ДатаВводаВЭксплуатацию = Макс(ОС.ДатаВводаВЭксплуатацию, '31.12.2001');
готово - оттащили дохлого бойца....
Насчет ....п1...не понял. Наезжать ни на кого не собирался.
п2. Согласен. Ошибка вышла про среду разработки писал.
п3. Этим страдают все языки если ты россиянин или житель бывшего СНГ/СССР. Когда нибудь приходится переключаться из регистра в регист.
п4. Мнение не мое и слышанное неоднократно. Сам Ц не знаю - и если ты так считаешь - то это твое мнение. Я имел ввиду не конкретно язык напоминает Ц а синтаксис напоминает Ц пусть..отдаленно но не Паскаль/Васик - одназначна.
п5. Ц универсальный язык...1С - узкоспециализированная среда разработки со своими готовыми объектами в конфигураторе со своими плюсами/минусами.Перл/ПХП - тоже интерпритаторы и никто их не ругает за это.
Так вот и выражайся конкретнее ! И делать выводы по теме где то услышал, кто то сказал то же не стоит ! Он даже отдаленно никак не похож на С++ вообще никак ! уж поверь... А вот бэйсик очень и очень сильно ! надо будет, я тебе выложу тут 4 листинга кода на всех языках и будем сравнивать.
Я тебе просто показал, что все твои доводы необоснованы...
Так никто ничто не ругает... Пхп и перл та за что ругать ? ) на них хоть можно свои среды писать и они очень удобны и просты не то, что 1С редактор, который сжирает 100 метров памяти сразу, а когда интенсивно работаешь, то у тебя может и 4 быть открыто :(
По 5му пункту я тебе просто написал, что на 1С саму СИСТЕМУ учета ты никогда не разработаешь, а вот на пхп это возможно как ни крути
Не надо..Васик/Паскаль сам знаю...Сообщение от wertyman
Пожалуй соглашусь с тобой..дабы в обычную ругань не ударится...но ты для меня не авторитет -точно..не в абиду.
Ну ептСообщение от Paralax
Тогда скажи мне что общего в коде на С++ (синтаксис):
С таким синтаксисом в 1С:Код:DWORD TcpBoth(SOCKET nClient, SOCKET nTarget, UCHAR cVersion, bool bType) { DWORD res = 0; double i, j, sent = 0, received = 0; int trans = 0; int sasize; fd_set fds; struct timeval tv = {0,0}; UCHAR szBuf[BUF_SIZE]; tv.tv_sec = 180; while(1) { FD_ZERO(&fds); FD_SET (nClient, &fds); FD_SET (nTarget, &fds); res = select (nTarget > nClient ? nTarget+1 : nClient+1, &fds, NULL, NULL, &tv); if( res <= 0 ) { CloseWithError(cVersion, nClient, REP_SERVER_ERROR, __LINE__, bType); break; } i = 0; memset(szBuf, 0, sizeof(szBuf)); if (FD_ISSET(nClient, &fds)) { sasize = sizeof(struct sockaddr_in); szBuf[0] = 0; i = recv(nClient, (char*)szBuf, BUF_SIZE, 0); //DbgPrint("%u: RECV(%u): %s", __LINE__, i, szBuf); if (i > 0) { sasize = sizeof(struct sockaddr_in); trans = 0; do { //DbgPrint("%u: SEND: %s", __LINE__, szBuf + trans); res=send(nTarget, (char*)szBuf + trans, i - trans, 0); if(res <= 0){ CloseWithError(cVersion, nClient, REP_SERVER_ERROR, __LINE__, bType); shutdown(nTarget, SD_BOTH ); closesocket(nTarget); break; } trans += res; } while(trans < i); sent += i; } else if (i == 0) { CloseWithError(cVersion, nClient, REP_SERVER_ERROR, __LINE__, bType); shutdown(nTarget, SD_BOTH ); closesocket(nTarget); break; } else if ( i < 0 && WSAGetLastError() != WSAEWOULDBLOCK ) { res = -1; break; } } else if ( res == SOCKET_ERROR) { res = -1; break; } j = 0; memset(szBuf, 0, sizeof(szBuf)); if (FD_ISSET(nTarget, &fds)) { sasize = sizeof(struct sockaddr_in); szBuf[0] = 0; j = recv(nTarget, (char*)szBuf, BUF_SIZE, 0); DbgPrint("%u: RECV ( j = %u err = %d )", __LINE__, j, WSAGetLastError()); if (j > 0) { sasize = sizeof(struct sockaddr_in); trans = 0; do { DbgPrint("%u: SEND: ( trans: %u, j: %u )", __LINE__ , trans, j); res = send(nClient, (char*)szBuf + trans, j - trans, 0); if(res <= 0) { CloseWithError(cVersion, nClient, REP_SERVER_ERROR, __LINE__, bType); break; } trans += res; } while(trans < j); received += j; } else if (j == 0) { CloseWithError(cVersion, nClient, REP_SERVER_ERROR, __LINE__, bType); shutdown(nTarget, SD_BOTH ); closesocket(nTarget); break; } else if ( j < 0 && WSAGetLastError() != WSAEWOULDBLOCK ) { res = -1; break; } } else if ( res == SOCKET_ERROR) { res = -1; break; } } return res; }
а теперь посмотрим какой нить код на бэйсике:Код:Процедура Выгрузить() Экспорт ФайлБазаЗаголовок = "c:\tmp\heads.dbf"; ФайлИндексЗаголовок = "c:\tmp\рeads.cdx"; ФайлБазаСодержимое = "c:\tmp\rows.dbf"; ФайлИндексСодержимое = "c:\tmp\rows.cdx"; //УдалитьФайлы(ФайлБазаЗаголовок+","+ФайлИндексЗаголовок+","+ФайлБазаСодержимое); ИксБазаЗаголовков = Новый XBase(); ИксБазаЗаголовков.Поля.Добавить("wb_ID", "S", 100); ИксБазаЗаголовков.Поля.Добавить("wb_Number", "S", 50); ИксБазаЗаголовков.Поля.Добавить("wb_Date", "D"); ИксБазаЗаголовков.Поля.Добавить("wb_OutDate", "D"); ИксБазаЗаголовков.Поля.Добавить("SClient", "S", 255); ИксБазаЗаголовков.Поля.Добавить("RName", "S", 255); ИксБазаЗаголовков.Поля.Добавить("SuName", "S", 255); ИксБазаЗаголовков.Поля.Добавить("PName", "S", 255); ИксБазаЗаголовков.Поля.Добавить("wb_Basis", "S", 200); ИксБазаЗаголовков.Поля.Добавить("wb_DocType", "N", 10); ИксБазаЗаголовков.Поля.Добавить("wb_SDivis", "S", 200); ИксБазаЗаголовков.Поля.Добавить("wb_InDate", "D"); ИксБазаЗаголовков.Поля.Добавить("wb_PrNDS", "N", 1); ИксБазаЗаголовков.Поля.Добавить("IsIncNDS", "L"); //ИксБазаЗаголовков.Ключ.Добавить("wb_ID"); Попытка ИксБазаЗаголовков.СоздатьФайл(ФайлБазаЗаголовок, ФайлИндексЗаголовок); ИксБазаЗаголовков.АвтоСохранение = Истина; Исключение Сообщить("Ошибка создания файла базы данных."); Сообщить(ОписаниеОшибки()); КонецПопытки; ИксБазаСодержимое = Новый XBase(); ИксБазаСодержимое.Поля.Добавить("Wc_Id", "S", 38); ИксБазаСодержимое.Поля.Добавить("Wb_Id", "S", 100); ИксБазаСодержимое.Поля.Добавить("Amount", "N", 20,3); ИксБазаСодержимое.Поля.Добавить("PartyId", "S", 100); ИксБазаСодержимое.Поля.Добавить("Product", "S", 255); ИксБазаСодержимое.Поля.Добавить("Price", "N", 20, 4); ИксБазаСодержимое.Поля.Добавить("RateNDS", "N", 20, 4); Попытка ИксБазаСодержимое.СоздатьФайл(ФайлБазаСодержимое, ФайлИндексСодержимое); ИксБазаСодержимое.АвтоСохранение = Истина; Исключение Сообщить("Ошибка создания файла базы данных."); Сообщить(ОписаниеОшибки()); КонецПопытки; Док8 = Документы.РеализацияТоваровУслуг.Выбрать(НачалоДня(НачПериода),КонецДня(КонПериода)); Счетчик = 0; Пока Док8.Следующий() Цикл Если Док8.Проведен = Истина Тогда ИксБазаЗаголовков.Добавить(); ИксБазаЗаголовков.wb_ID = Счетчик; ИксБазаЗаголовков.wb_Number = Док8.Номер; ИксБазаЗаголовков.wb_Date = Док8.Дата; ИксБазаЗаголовков.wb_OutDate = Док8.Дата; ИксБазаЗаголовков.SClient = ""+Док8.Организация+" <Inn="+Док8.Организация.ИНН+"/> "+"<Kpp="+Док8.Организация.КПП+"/>"; ИксБазаЗаголовков.RName = ""+Док8.Контрагент.Наименование+" <Inn="+Док8.Контрагент.ИНН+"/> "+"<Kpp="+Док8.Контрагент.КПП+"/>"; ИксБазаЗаголовков.SuName = ""+Док8.Организация+" <Inn="+Док8.Организация.ИНН+"/> "+"<Kpp="+Док8.Организация.КПП+"/>"; ИксБазаЗаголовков.PName = ""+Док8.Контрагент.Наименование+" <Inn="+Док8.Контрагент.ИНН+"/> "+"<Kpp="+Док8.Контрагент.КПП+"/>"; ИксБазаЗаголовков.wb_DocType = "2"; ИксБазаЗаголовков.wb_PrNDS = 18; Счетчик2 = 0; Для Каждого СтрокаТовара Из Док8.Товары Цикл ИксБазаСодержимое.Добавить(); ИксБазаСодержимое.Wc_Id = Счетчик; ИксБазаСодержимое.Wb_Id = Счетчик2; ИксБазаСодержимое.Amount = СтрокаТовара.Количество; ИксБазаСодержимое.PartyId = 0; Если СтрокаТовара.Номенклатура.КодДляЕГАИС <> "0" И СтрокаТовара.Номенклатура.КодДляЕГАИС <> Null Тогда ИксБазаСодержимое.Product = ""+СтрокаТовара.Номенклатура.НаименованиеПолное+" <AlcCode="+СтрокаТовара.Номенклатура.КодДляЕГАИС+"/>"; Иначе ИксБазаСодержимое.Отменить(); Сообщить("Не выгружена номенклатура: "+СтрокаТовара.Номенклатура.НаименованиеПолное); Продолжить; ИксБазаСодержимое.Product = СтрокаТовара.Номенклатура.НаименованиеПолное; КонецЕсли; ИксБазаСодержимое.Price = СтрокаТовара.Цена; ИксБазаСодержимое.RateNDS = 1; ИксБазаСодержимое.Записать(); Счетчик2 = Счетчик2 + 1; КонецЦикла; Счетчик = Счетчик + 1; ИксБазаЗаголовков.Записать(); КонецЕсли; КонецЦикла; Док8 = Документы.ПоступлениеТоваровУслуг.Выбрать(НачалоДня(НачПериода),КонецДня(КонПериода)); Счетчик = 0; Пока Док8.Следующий() Цикл Если Док8.Проведен = Истина Тогда ИксБазаЗаголовков.Добавить(); ИксБазаЗаголовков.wb_ID = Счетчик; ИксБазаЗаголовков.wb_Number = Док8.Номер; ИксБазаЗаголовков.wb_Date = Док8.Дата; ИксБазаЗаголовков.wb_OutDate = Док8.Дата; ИксБазаЗаголовков.SClient = Док8.Контрагент.Наименование; ИксБазаЗаголовков.RName = Док8.Организация; ИксБазаЗаголовков.SuName = Док8.Контрагент.Наименование; ИксБазаЗаголовков.PName = Док8.Организация; ИксБазаЗаголовков.wb_DocType = "1"; Если Док8.УчитыватьНДС = Истина Тогда ИксБазаЗаголовков.wb_PrNDS = 1; Иначе ИксБазаЗаголовков.wb_PrNDS = 1; КонецЕсли; Счетчик2 = 0; Для Каждого СтрокаТовара Из Док8.Товары Цикл ИксБазаСодержимое.Добавить(); ИксБазаСодержимое.Wc_Id = Счетчик; ИксБазаСодержимое.Wb_Id = Счетчик2; ИксБазаСодержимое.Amount = СтрокаТовара.Количество; ИксБазаСодержимое.PartyId = 0; ИксБазаСодержимое.Product = СтрокаТовара.Номенклатура.НаименованиеПолное; ИксБазаСодержимое.Price = СтрокаТовара.Цена; ИксБазаСодержимое.RateNDS = СтрокаТовара.СтавкаНДС; ИксБазаСодержимое.Записать(); Счетчик2 = Счетчик2 + 1; КонецЦикла; Счетчик = Счетчик + 1; ИксБазаЗаголовков.Записать(); КонецЕсли; КонецЦикла; ИксБазаЗаголовков.ЗакрытьФайл(); ИксБазаЗаголовков.ЗакрытьФайл(); КонецПроцедуры
Заметь те же операторы присваивания, сравнения и "неравно" !Код:Private Sub mnuOpen_Click() If change = True Then Dim AnsAns = MsgBox("Сохранить изменения?", vbQuestion + vbYesNoCancel, "Текстовой редактор") If Ans = vbNo Then 'ОТКРЫТИЕ ФАЙЛА CD1.ShowOpen If CD1.FileName <> "" Then Open CD1.FileName For Input As #1 Do Until EOF(1) Line Input #1, txt AllTxt = AllTxt + txt + vbCrLf Loop Close #1 txtMain.Text = AllTxt old = True change = False End If ElseIf Ans = vbYes Then 'СОХРАНЕНИЕ ФАЙЛА mnuSave_Click() 'ОТКРЫТИЕ ФАЙЛА CD1.ShowOpen If CD1.FileName <> "" Then Open CD1.FileName For Input As #1 Do Until EOF(1) Line Input #1, txt AllTxt = AllTxt + txt + vbCrLf Loop Close #1 txtMain.Text = AllTxt old = True change = False End If End If Else 'ОТКРЫТИЕ ФАЙЛА CD1.ShowOpen If CD1.FileName <> "" Then Open CD1.FileName For Input As #1 Do Until EOF(1) Line Input #1, txt AllTxt = AllTxt + txt + vbCrLf Loop Close #1 txtMain.Text = AllTxt old = True change = False End If End If[/quote] Еще пишем такой код: [quote]Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If сhange = True Then Dim Ans Ans = MsgBox("Сохранить изменения?", vbQuestion + vbYesNoCancel, "Текстовой редактор") If Ans = vbNo Then End ElseIf Ans = vbYes Then mnuSave_Click End Else Cancel = -1 End If End If Код для mnuExit: Private Sub mnuExit_Click() If change = True Then Dim Ans Ans = MsgBox("Сохранить изменения?", vbQuestion + vbYesNoCancel, "Mik HTML Editor") If Ans = vbNo Then End ElseIf Ans = vbYes Then mnuSave_Click End End If Else End End If End Sub
Те же начало процедуры и конец, те же начало если и конец ! ну чего ты споришь та !
Да никто и не спорит. Язык был писан для бухов...наверно за основу и был взят самый простой из того что было.Заметь те же операторы присваивания, сравнения и "неравно" !
Те же начало процедуры и конец, те же начало если и конец ! ну чего ты споришь та !
Ну да
Я и думаю, что писали его как элементарнейщий, чтобы со школы приходил народ и сразу садился писал
Но на практике в синтаксисе разобратся 2 дня делов, даже без учебников, а освоить структуру данных, понять весь этот сыр бор может уйти до 2ух месяцев... Вот и имхо, почему разработчики не довели синтаксис до ума и не сделали бы его более удобным, чем простым в освоение, все равно ничего почти не выйграли...
все имхо.
Йопстудей...сейчас глянул в листинг 1С....знакомые все буквы....выгрузка накладных в ЕГАИС. Алкоголик, коллега?
Ага а ты откуда ?
ООО фирма "Центр" г.БратскСообщение от wertyman
Ха... конкуренты А я из Фантома
Приятно познакомится....я еще сисадмин ежели чо....
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)