- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВложенныйЗапрос.Ссылка,
| ВложенныйЗапрос.Заказ,
| ЕСТЬNULL(ВложенныйЗапрос.ВРезерве, 0) + ЕСТЬNULL(СвободныеОстаткиТоваровНаСкладахОстатки.ВНаличииОстаток, 0) - ЕСТЬNULL(СвободныеОстаткиТоваровНаСкладахОстатки.ВРезервеОстаток, 0) КАК СвободныйОстаток
|ИЗ
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ВложенныйЗапрос.Ссылка КАК Ссылка,
| ВложенныйЗапрос.Заказ КАК Заказ,
| СвободныеОстаткиТоваровНаСкладах.ВРезерве КАК ВРезерве,
| ВложенныйЗапрос.Размер КАК Размер
| ИЗ
| (ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Ссылка КАК Ссылка,
| ЗаказПокупателя.Ссылка КАК Заказ,
| ВЫБОР
| КОГДА &Размер = ЗНАЧЕНИЕ(Справочник.Размер.ПустаяСсылка)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Размер.ПустаяСсылка)
| ИНАЧЕ &Размер
| КОНЕЦ КАК Размер
| ИЗ
| Справочник.Номенклатура КАК Номенклатура,
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
| ГДЕ
| Номенклатура.Ссылка = &Номенклатура
| И ЗаказПокупателя.Ссылка = &Ссылка) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстаткиТоваровНаСкладах КАК СвободныеОстаткиТоваровНаСкладах
| ПО ВложенныйЗапрос.Ссылка = СвободныеОстаткиТоваровНаСкладах.Номенклатура
| И ВложенныйЗапрос.Заказ = СвободныеОстаткиТоваровНаСкладах.Регистратор
| И ВложенныйЗапрос.Размер = СвободныеОстаткиТоваровНаСкладах.Размер
|
| СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка,
| ВложенныйЗапрос.Заказ,
| СвободныеОстаткиТоваровНаСкладах.ВРезерве,
| ВложенныйЗапрос.Размер) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстаткиТоваровНаСкладах.Остатки(
| ,
| Склад = &Склад
| И Организация = &Организация) КАК СвободныеОстаткиТоваровНаСкладахОстатки
| ПО ВложенныйЗапрос.Размер = СвободныеОстаткиТоваровНаСкладахОстатки.Размер
| И ВложенныйЗапрос.Ссылка = СвободныеОстаткиТоваровНаСкладахОстатки.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка,
| ВложенныйЗапрос.Заказ,
| ЕСТЬNULL(ВложенныйЗапрос.ВРезерве, 0) + ЕСТЬNULL(СвободныеОстаткиТоваровНаСкладахОстатки.ВНаличииОстаток, 0) - ЕСТЬNULL(СвободныеОстаткиТоваровНаСкладахОстатки.ВРезервеОстаток, 0)" );
Запрос.УстановитьПараметр("Номенклатура",ТекущийЭлемент.ТекущаяСтрока.Номенклатура);
Запрос.УстановитьПараметр("Размер",ТекущийЭлемент.ТекущаяСтрока.Размер);
Запрос.УстановитьПараметр("Склад",Склад);
Запрос.УстановитьПараметр("Ссылка",Ссылка);
Запрос.УстановитьПараметр("Организация",Ссылка.Организация);
Выборка = Запрос.Выполнить().Выбрать();
Человек, написавший такой запрос явно был с перепоя. С учетом его двухлетнего опыта программирования в 1С - никогда бы на него не подумал... но факт.
Я когда вижу 1c тут мне обычно хочется убиться чтобы не знать что на свете есть такое, но это уже точно придет ко мне в ночных кошмарах.
Добавьте сюда кнопку развидеть...
Круто! А зачем ходишь в этот раздел на ресурсе? Из идейных соображений? "Ежики плакали и кололись, но продолжали есть кактусы"? Ну-ну. "Мы в восхищении!" (с)
Если серьезно, давайте вспомним, для чего вообще придумали 1С - для автоматизации учета и быстрой разработки учетных систем. И попытаемся написать код для этих сущностей на английском, да так, чтобы это было наглядно и удобно потом сопровождать. Переведи на английский "Счет-фактура", "Требование-накладная", "Расходы будущих периодов". Таких понятий в "их" учете просто нет. Даже если все время помнить, что НДС по-английски VAT, не факт, что в контексте это будет всегда понятно. Транслитом? Один напишет Ostatki, другой Remains, разбирайся потом.
Можно писать гибридно:
Documents.СчетФактураВыданный.CreateNew( );
Не уверен, что это менее криво, чем то, над чем тут смеются. Да и раскладку переключать невесело.
Хреново, говорите, смотрится с общепрограммерской точки зрения все это? Так вам что писать - учетную задачу или системную утилиту? 1С - инструмент под вполне жизненные задачи. Расчет вашей же ЗП, со всеми налогами и премиями, как бы криво они не назывались и не считались, спасибо правительству.
Ну блин не подходит русский язык для кодинга из-за своей сложности! Пиздец как звучит же.
Резьбовое.
Быдло-SQL - отличное развлечение. Когда я начинаю думать, что в восьмёрке появилась вменяемая архитектура и 1с не так плох, я смотрю на его язык запросов и меня пробивает на ха-ха.
это - не быдло-sql, это корректная глубокая локализация. что не отменяет пробивания на ха-ха.
приблизительно так же (с точностью до обозначения!), как китайский - не быдло-язык. что не отменяет от пробивания на ха-ха от многих его фраз, так созвучных привычной уху обсценной лексике родного великого и могучего.
Вероятность того, что человек, приходя делать запросы уже знает _нормальный_ язык запросов не нулевая. А тут, фактически, нужно освоить тот же, только без крыльев и с быдлозапросами.
1с вэй.
Одна из причин, по которым я всеми руками и ногами упираюсь от его изучения - это реализация синтаксиса...
А какая разница какой язык? Качество кода то зависит не от этого.
Корпоративная солидарность.
Вот есть у меня старая конфа. Буду я там писать If вместо Если. Будет смешенье французского с нижегородским. Нафиг такое надо?
Хотя кроме привычки, никаких других достоинств в англоязычной транскрипции языка запросов (да и просто команд ЯП) я не вижу. А привычка она зависит от того на чем ты пишешь чаще.
Надеюсь никто не будет спорить с тем что английский язык - это в первую очередь человеческий язык, а не "язык программистов". И для алгоритмического применения он ничуть не лучше русского, немецкого или финского.
Просто они (англоговорящие) первые смогли массово внедрить компьютеры.
Слава богу что это были не китайцы... а то сейчас была бы масса комментариев типа - "Ну надо же какие 1С идиоты-патриоты - все ведь привыкли писать запросы иероглифами!" )))))
лет сто назад, международным считался французский... а английский был распространен и популярен, как сейчас болгарский.
Сто миллионов американцев, хрен знает сколько англичан и это без индусов.
http://ru.wikipedia.org/wiki/Британская_империя
Британская империя — крупнейшее из когда-либо существовавших государств за всю историю человечества с колониями на всех континентах. Наибольшей площади империя достигла в середине 30-х годов XX в., тогда земли Соединённого Королевства простирались более чем на 37 млн км², что составляет около четверти земной суши. Общая численность населения империи составляла примерно 500 млн человек (примерно одна четвёртая часть человечества).
>а английский был распространен и популярен, как сейчас болгарский.
ОГЛЫ?
отказываться от инструмента в силу сформированной ранее привычки (особенно памятуя о том, что использование этого инструмента неизбежно выработает новую привычку)... ну, это, приблизительно как отказываться от бензопилы и пользоваться молотком просто потому что молотком привычнее.
(за скобками - возможность таки юзать в той же одинэсине англо-транскрипцию во весь рост)
НЕ ПЫТАЙТЕСБ ЧТОТ0 N3МЕНИТЬ!
2. В 1с русский для русскоязычных более удобен в связи с двумя обстоятельставами: во-первых, есь код бъётся без переключения регистров (писать русскоязычному комментарии и сообщения для русскоязычных в междумордие на латинице - нухуйзнает); во-вторых именования и ключевые слова на русском понимаются и конструируются (русскоязычным прогом на русском языке) просто понятнее и проще.
ЕСЛИ есть возможность упростить процесс разработки (повысив тем самым эффективность труда) - при наличии(!) таковой возможности - то, как раз, глупее отказываться от такой возможности чем наоборот.
Прим.: и, вот, интересно, на Brainfuck апологеты англика в синтаксисе не называют весь(!) код говнокодом?..
Чтобы написать NULL - нужно переключаться в англоязычную раскладку
Чтобы поставить символ | - нужно переключаться в англоязычную раскладку
нет
нет
(шаблоны рулят)
имена объектов данных и переменных, а также комментарии комментарии ВСЕ в шаблоны забить - невозможно; при кириллической нотации встроенного языка в шаблоны забивается не так уж много замен (по кириллическим сигнатурам) для ввода некоторых(!!) ключевых лексем встроенного языка с не кириллическими символами.
кто-нибудь ведет счет защитникам 1С?
Ок.
и скорее всего этот код выполняется построчно)) радует строка; Запрос.УстановитьПараметр("Номенклатура" ,ТекущийЭлемент.ТекущаяСтрока.Номенклату ра);
Этот код я запостил как говнокод не из за того что он на 1С, а из за того как был построен запрос.
Вот что крест животворящий делает!