Автор Тема: 1С - One Ass  (Прочитано 41125 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
1С - One Ass
« : Апрель 17, 2012, 11:47:47 am »
Приглашаю сюда всех, кому хочется покритиковать, похвалить или просто обсудить сей продукт. :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: 1С - One Ass
« Ответ #1 : Апрель 17, 2012, 12:18:57 pm »
Если кто совсем об этой гадости не слыхал, то ознакомиться можно тут:
http://v8.1c.ru/overview/Platform.htm

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: 1С - One Ass
« Ответ #2 : Апрель 17, 2012, 12:19:46 pm »
Для меня явным удобством по работе с 1С (написанию кода) является реализованный конструктор запросов. Подозреваю что аналогов нет (по крайней мере мне не попадались). Если кто знает что нить аналогичное, прошу дать ссылку (хотел бы взглянуть).

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: 1С - One Ass
« Ответ #3 : Апрель 17, 2012, 12:22:26 pm »
Да. Я тоже лучшего конструктора не встречал. Есть у него маленькие неудобства, но в целом отличная штука.

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: 1С - One Ass
« Ответ #4 : Апрель 17, 2012, 01:33:40 pm »
Единственно неудобно, что звёздочку не поддерживает, хотя тут где-то попадалось, что звездочки в запросах это зло. Но думаю например для выборки временных таблиц, вполне удобно использовать звездочку (и скорее всего не накладно)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: 1С - One Ass
« Ответ #5 : Апрель 17, 2012, 01:38:26 pm »
Мне звездочка ни разу не пригодилась. Потому особой пользы от нее не ощущаю  :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: 1С - One Ass
« Ответ #6 : Апрель 18, 2012, 07:42:18 am »
В языке самая неправильная весч это оператор:
Цитировать
?(<Логическое выражение>, <Выражение 1>, <Выражение 2>)

Удобно конечно, но иногда такие перлы народ выдает, что уж лучше бы он отсутствовал.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: 1С - One Ass
« Ответ #7 : Апрель 18, 2012, 03:39:48 pm »
В языке самая неправильная весч это оператор:
Цитировать
?(<Логическое выражение>, <Выражение 1>, <Выражение 2>)

Удобно конечно, но иногда такие перлы народ выдает, что уж лучше бы он отсутствовал.

Похож на тернарный оператор в нормальных языках. Очень правильный оператор. Что с ним не так в сабже?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: 1С - One Ass
« Ответ #8 : Апрель 18, 2012, 03:46:01 pm »
Похож на тернарный оператор в нормальных языках. Очень правильный оператор. Что с ним не так в сабже?
А в Go его нет :-\ Это ужасно.
Зато в Аду недавно (в 2012 стандарте что-ли) подобную конструкцию ввели.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: 1С - One Ass
« Ответ #9 : Апрель 18, 2012, 04:20:45 pm »
По мне так оператор очень удобен, не знаю, насколько нужен

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: 1С - One Ass
« Ответ #10 : Апрель 18, 2012, 04:45:58 pm »
Просто часто попадается такое:
Проводка.Сумма = ?(Продажи и ТекКорректировка.Проводка_СуммаНУ<0, СуммаНДС,?(Покупки, ?(ТекКорректировка.Проводка_СуммаНУ>0, - СуммаНДС,СуммаНДС),0));

или такое:
Запрос.Текст = "
|ВЫБРАТЬ
| Счет,"
+ ?(КоличествоСубконто > 0, "
| Субконто1,", "НЕОПРЕДЕЛЕНО КАК Субконто1,")
+ ?(КоличествоСубконто > 1, "
| Субконто2,", "НЕОПРЕДЕЛЕНО КАК Субконто2,")
+ ?(КоличествоСубконто > 2, "
| Субконто3,", "НЕОПРЕДЕЛЕНО КАК Субконто3,")
+ "
| ЕСТЬNULL(СуммаОстаток, 0) * &Множитель КАК СуммаОстаток"
+ ?(ВыбиратьВалюту, ",
| ЕСТЬNULL(Валюта, НЕОПРЕДЕЛЕНО) КАК Валюта", "")
+ ?(ВыбиратьВалютнуюСумму, ",
| ЕСТЬNULL(ВалютнаяСуммаОстаток, 0)  * &Множитель КАК ВалютнаяСуммаОстаток", ",
| ЕСТЬNULL(СуммаОстаток, 0)  * &Множитель КАК ВалютнаяСуммаОстаток")
+ "
|ИЗ
| РегистрБухгалтерии." + ВидПланаСчетов + ".Остатки(&Период, Счет = &Счет, &ВидыСубконто, #Фильтр#) КАК Остатки"
+ ?(ЗнакОстатков <> 0, "
|
|ГДЕ
| "
+ ?(НЕ ЗначениеЗаполнено(Валюта),
"ЕСТЬNULL(Остатки.СуммаОстаток, 0) * &Множитель > 0", "ЕСТЬNULL(Остатки.ВалютнаяСуммаОстаток, 0) * &Множитель > 0"), "")
+ "
|
|ДЛЯ ИЗМЕНЕНИЯ
|
|УПОРЯДОЧИТЬ ПО
| Счет,
| Субконто1,
| Субконто2,
| Субконто3"
+ ?(ВыбиратьВалюту,",
| Валюта","");

ну или такое:
Данные.Свойство(?(ТипДанных = 1,"ФИОРук", ?(ТипДанных = 2, "ФИОБух", ?(ТипДанных = 3, "ФИОУпПред",""))), ФИО);
Данные.Свойство(?(ТипДанных = 1,"ТелРук", ?(ТипДанных = 2, "ТелБух", ?(ТипДанных = 3, "ТелУпПред",""))), Тел);
Данные.Свойство(?(ТипДанных = 1,"ВидУдЛичнРук", ?(ТипДанных = 2, "ВидУдЛичнБух", ?(ТипДанных = 3, "ВидУдЛичнУпПред",""))), ВидУдЛичн);
Данные.Свойство(?(ТипДанных = 1,"КодУдЛичнРук", ?(ТипДанных = 2, "КодУдЛичнБух", ?(ТипДанных = 3, "КодУдЛичнУпПред",""))), КодУдЛичн);
Данные.Свойство(?(ТипДанных = 1,"ДатаРождРук", ?(ТипДанных = 2, "ДатаРождБух", ?(ТипДанных = 3, "ДатаРождУпПред",""))), ДатаРожд);
Данные.Свойство(?(ТипДанных = 1,"ГраждРук", ?(ТипДанных = 2, "ГраждБух", ?(ТипДанных = 3, "ГраждУпПред",""))), Гражд);
Данные.Свойство(?(ТипДанных = 1,"МестоРождРук", ?(ТипДанных = 2, "МестоРождБух", ?(ТипДанных = 3, "МестоРождУпПред",""))), МестоРожд);
Данные.Свойство(?(ТипДанных = 1,"СерияУдЛичнРук", ?(ТипДанных = 2, "СерияУдЛичнБух", ?(ТипДанных = 3, "СерияУдЛичнУпПред",""))), СерияУдЛичн);
Данные.Свойство(?(ТипДанных = 1,"НомерУдЛичнРук", ?(ТипДанных = 2, "НомерУдЛичнБух", ?(ТипДанных = 3, "НомерУдЛичнУпПред",""))), НомерУдЛичн);
Данные.Свойство(?(ТипДанных = 1,"ПолРук", ?(ТипДанных = 2, "ПолБух", ?(ТипДанных = 3, "ПолУпПред",""))), Пол);
Данные.Свойство(?(ТипДанных = 1,"ОрганВыданУдЛичнРук", ?(ТипДанных = 2, "ОрганВыданУдЛичнБух", ?(ТипДанных = 3, "ОрганВыданУдЛичнУпПред",""))), ОрганВыданУдЛичн);
Данные.Свойство(?(ТипДанных = 1,"ДатаУдЛичнРук", ?(ТипДанных = 2, "ДатаУдЛичнБух", ?(ТипДанных = 3, "ДатаУдЛичнУпПред",""))), ДатаУдЛичн);
Данные.Свойство(?(ТипДанных = 1,"ИндексМЖРук", ?(ТипДанных = 2, "ИндексМЖБух", ?(ТипДанных = 3, "ИндексМЖУпПред",""))), ИндексМЖ);
Данные.Свойство(?(ТипДанных = 1,"СубъектМЖРук", ?(ТипДанных = 2, "СубъектМЖБух", ?(ТипДанных = 3, "СубъектМЖУпПред",""))), СубъектМЖ);
Данные.Свойство(?(ТипДанных = 1,"КодСубъектМЖРук", ?(ТипДанных = 2, "КодСубъектМЖБух", ?(ТипДанных = 3, "КодСубъектМЖУпПред",""))), КодСубъектМЖ);
Данные.Свойство(?(ТипДанных = 1,"РайонМЖРук", ?(ТипДанных = 2, "РайонМЖБух", ?(ТипДанных = 3, "РайонМЖУпПред",""))), РайонМЖ);
Данные.Свойство(?(ТипДанных = 1,"ГородМЖРук", ?(ТипДанных = 2, "ГородМЖБух", ?(ТипДанных = 3, "ГородМЖУпПред",""))), ГородМЖ);
Данные.Свойство(?(ТипДанных = 1,"НПунктМЖРук", ?(ТипДанных = 2, "НПунктМЖБух", ?(ТипДанных = 3, "НПунктМЖУпПред",""))), НПунктМЖ);
Данные.Свойство(?(ТипДанных = 1,"УлицаМЖРук", ?(ТипДанных = 2, "УлицаМЖБух", ?(ТипДанных = 3, "УлицаМЖУпПред",""))), УлицаМЖ);
Данные.Свойство(?(ТипДанных = 1,"ДомМЖРук", ?(ТипДанных = 2, "ДомМЖБух", ?(ТипДанных = 3, "ДомМЖУпПред",""))), ДомМЖ);
Данные.Свойство(?(ТипДанных = 1,"КорпусМЖРук", ?(ТипДанных = 2, "КорпусМЖБух", ?(ТипДанных = 3, "КорпусМЖУпПред",""))), КорпусМЖ);
Данные.Свойство(?(ТипДанных = 1,"КвартираМЖРук", ?(ТипДанных = 2, "КвартираМЖБух", ?(ТипДанных = 3, "КвартираМЖУпПред",""))), КвартираМЖ);

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: 1С - One Ass
« Ответ #11 : Апрель 18, 2012, 04:58:57 pm »
Просто часто попадается такое:

Важно правильное форматирование :)
x = long_expression1()
          ? eval1()
          : long_expression2()
                  ? eval2()
                  : eval3();

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: 1С - One Ass
« Ответ #12 : Апрель 18, 2012, 05:03:12 pm »
Только говнокодеры об этом не знают  ;)

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: 1С - One Ass
« Ответ #13 : Апрель 18, 2012, 05:14:29 pm »
Я вообще стараюсь не использовать в запросах сложение текста с переменными, потому как конструктором не сразу открвается. Предпочитаю бабахать в текст запроса параметр, а потом если надо его заменять через СтрЗаменить. В большинстве случаев этого достаточно (бывают конечно исключения, но их тоже можно почти все привести сюд). А иначе какой же смысл в конструкторе :)

По поводу второй кода, я еще такого не встречал, действительно ужасно. Уж лучше Если использовать

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: 1С - One Ass
« Ответ #14 : Апрель 18, 2012, 06:28:54 pm »
Похож на тернарный оператор в нормальных языках. Очень правильный оператор.
Ога, в SQL он прямо-таки необходим.