Имя: Пароль:
LIFE
 
OFF: шедевр от франча
, ,
0 Skom
 
12.05.14
11:42
так просто, поржать

Процедура ОтчетПоТаре(ТабДок, НачПериода, КонПериода) Экспорт
    НачПериодаГраница = НачалоДня(НачПериода);
    КонПериодаГраница = КонецДня(КонПериода);
    ТЗ = Новый ТаблицаЗначений;
    
    тз.Колонки.Добавить("Склад");
    тз.Колонки.Добавить("Услуга");
    тз.Колонки.Добавить("Кол");
    тз.Колонки.Добавить("Сумма");
    тз.Колонки.Добавить("НДС");
    тз.Колонки.Добавить("СуммаВсего");
    КоличествоО    = 0;
    СуммаО        = 0;
    НДСО        = 0;
    ВсегоО      = 0;
    ВсегоОПров  = 0;
    Макет = ПолучитьМакет("Макет");
    Секция = Макет.ПолучитьОбласть("Заголовок");
    Секция.Параметры.ЗаголовокМакета="Отчет по Товарам за период с "+Формат(НачПериода,"ДФ=dd.MM.yyyy")+" по "+Формат(КонПериода,"ДФ=dd.MM.yyyy");
    ТабДок.Вывести(Секция);
    ДокВыбР = Документы.ОтчетОРозничныхПродажах.Выбрать(НачПериодаГраница, КонПериодаГраница);
    пока ДокВыбР.Следующий() цикл
        если ДокВыбР.Проведен тогда
        иначе
            Продолжить;
        КонецЕсли;
        для Каждого ДокРСтрока из ДокВыбР.Товары цикл
            стрТЗ                  = тз.Добавить();
            стртз.Склад          = СокрЛП(ДокВыбР.Склад);
            стртз.Услуга          = СокрЛП(ДокРСтрока.Номенклатура);
            стртз.Кол              = ДокРСтрока.количество;
            Если ДокВыбР.СуммаВключаетНДС тогда
                стртз.Сумма            = ДокРСтрока.Сумма-ДокРСтрока.СуммаНДС;
                стртз.НДС            = ДокРСтрока.СуммаНДС;
                стртз.СуммаВсего     = ДокРСтрока.Сумма;
            Иначе
                стртз.Сумма            = ДокРСтрока.Сумма;
                стртз.НДС            = ДокРСтрока.СуммаНДС;
                стртз.СуммаВсего     = ДокРСтрока.Сумма+ДокРСтрока.СуммаНДС;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    //тз.ВыбратьСтроку();
    тз.Свернуть("Склад,Услуга","Кол,сумма,ндс,СуммаВсего");
    Для каждого ТекСтрока из ТЗ цикл
        Секция = Макет.ПолучитьОбласть("Строка");
        Секция.Параметры.Склад = ТекСтрока.Склад;
        Секция.Параметры.Наименование = ТекСтрока.Услуга;
        Секция.Параметры.Количество   = ТекСтрока.Кол;
        Секция.Параметры.Сумма           = ТекСтрока.Сумма;
        Секция.Параметры.НДС           = ТекСтрока.Ндс;
        Секция.Параметры.Всего           = ТекСтрока.Ндс+ТекСтрока.Сумма;
        Секция.Параметры.ВсегоПров      = ТекСтрока.СуммаВсего;
        
        КоличествоО    = КоличествоО+ТекСтрока.Кол;
        СуммаО        = СуммаО+ТекСтрока.Сумма;
        НДСО        = НДСО+ТекСтрока.Ндс;
        ВсегоО      = ВсегоО+ТекСтрока.Ндс+ТекСтрока.Сумма;
        ВсегоОПров  = ВсегоОПров+ТекСтрока.СуммаВсего;
        ТабДок.Вывести(Секция);
    КонецЦикла;
    
    Секция = Макет.ПолучитьОбласть("Подвал");
    Секция.Параметры.КоличествоО    = КоличествоО;    
    Секция.Параметры.СуммаО            = СуммаО;            
    Секция.Параметры.НДСО            = НДСО;            
    Секция.Параметры.ВсегоО         = ВсегоО;        
    Секция.Параметры.ВсегоОПров     = ВсегоОПров;        
    
    ТабДок.Вывести(Секция);
    
КонецПроцедуры
1 Naumov
 
12.05.14
11:43
над чем ржать?
2 Maxus43
 
12.05.14
11:43
смешно, да
3 Balabass
 
12.05.14
11:43
че не так?
4 Skom
 
12.05.14
11:44
над тем что переборкой документов сделано и без итогов по складу и по бензу отдельно.
5 Лодырь
 
12.05.14
11:44
смешного тут мало, тут грустно.
6 Maxus43
 
12.05.14
11:45
религия франчей не позволяет использовать запросы, это печальней
7 Kookish
 
12.05.14
11:45
А что такого? Старый добрый семерочный код от старых добрых программистов, не имеющих отношения к бухгалтерии.
8 Balabass
 
12.05.14
11:45
(4) работает?
9 Balabass
 
12.05.14
11:45
(7) +
10 ale-sarin
 
12.05.14
11:45
По "//тз.ВыбратьСтроку();" похоже, что семерочник. Переучивается. Простите его.
11 Skom
 
12.05.14
11:45
не, ну понятно, что и так работает, но это не хорошо.
12 Лодырь
 
12.05.14
11:46
(10) Не простим, выборка не из регистров.
13 Kookish
 
12.05.14
11:46
(11) Тебе заплатят за исправление?
14 Dmitry1c
 
12.05.14
11:46
А какая разница? Вы не за красоту кода готовы доплачивать?
15 Balabass
 
12.05.14
11:46
Я когда на курсы приехал в 1 учебный изучать новые возможности 8.2, то на уроках первое вермя писал на 7рошном языке. Результата я достигал бытсрее, но вот лектор сказал что ваш код гомно и так делать нельзя, это вам не 7, а то что результат у вас правильный вообще не показатель.
16 Godofsin
 
12.05.14
11:46
(12) +1
17 Maxus43
 
12.05.14
11:49
(15) а правильно.
Программист - творческая профессия. Всё должно быть прекрасно, к этому надо стремиться всеми фибрами души
18 Любопытная
 
12.05.14
11:49
(11) Я такого "нехорошо" целую конфигурацию имею. И с этим приходится мириться и работать.
19 Skom
 
12.05.14
11:52
(13) да там исправлять то
20 Skom
 
12.05.14
11:53
ну и в целом, за исправления в этой "базе" мне как раз и доплачивают отдельно)
21 Kookish
 
12.05.14
11:55
(20) Ну тогда - меньше будешь на Мисте возмущаться, больше успеешь исправить. Больше заплатят.
22 Масянька
 
12.05.14
11:57
(20) Не забудь работодателю показать и расписать, какой ты хороший спец.
(15) Надо было у препода спросить - кто обновления пишет у Вас на курсах не были?
23 Skom
 
12.05.14
11:58
(21) в этой теме нет возмущения.
24 Kookish
 
12.05.14
11:58
(23) Да ну!
25 ifso
 
12.05.14
11:59
код подстать клиенту - чего в ТЗ нарисовали, то и получили
26 Skom
 
12.05.14
11:59
(24) ну да. с моей стороны нет
27 Skom
 
12.05.14
12:00
(25) экий ты шустрый, диагнозы по интернету ставишь)
28 Kookish
 
12.05.14
12:01
(26) А, ну да. Перепутал самолюбование с возмущением.
29 ifso
 
12.05.14
12:02
(27) по коду ^^
30 Сияющий Асинхраль
 
12.05.14
12:02
(22) Именно, помнится изучал я раньше рекомендации 1С по написанию кода и после изучал код ЗУПа и очень мне хотелось увидеть где же в ЗУПе те самые рекомендуемые подпрограммы не более 200-300 строчек :-(, там один запрос в пару тысяч строк разбирать задолбает...
31 Maxus43
 
12.05.14
12:03
(30) как ни парадоксально - но типовые не пройдут тест на 1с: Совместимо. Двойные стандарты, что уж поделать...
32 Масянька
 
12.05.14
12:03
(22) Об том и речь. Зато на курсах - песни поют соловьем, закачаешься.
33 Поpyчик-4
 
12.05.14
12:04
Ну работал бы клюшечник у нас, долго бы с таким исполнением не задержался.
34 Skom
 
12.05.14
12:05
(29) как ты по коду франча определил "подстать" клиента? О_о))))
35 Skom
 
12.05.14
12:06
(28) да я вообще о***нный :-)
36 ifso
 
12.05.14
12:11
(34) судя по (20) работа франча клиентом принята, а значит клиент получил то, чего хотел
37 PR
 
12.05.14
12:13
(0) Не торкнуло.
38 Skom
 
12.05.14
12:16
(36) да тебе впору юристом или следователем работать))
А вообще, ты не считаешь, что выбирать данные из табличной части документа а не из его движений - это очень нехорошо
39 evorle145
 
12.05.14
12:16
(37) +1 Скинь пример по интереснее.
40 Maxus43
 
12.05.14
12:16
мне больше нравяться такие перлы как в "Обработке проведения" код ЭтотОбъект.Записать();
41 Господин ПЖ
 
12.05.14
12:16
писал православный семерошник...
42 Kookish
 
12.05.14
12:18
(38) Ну все, все, успокойся. Ты прав, ты офигенно прав. Франч бяка, а у тебя, несомненно, намного толще и длиннее.
43 Pasha
 
12.05.14
12:19
(0) Ну и что такого? Обычный код адинэснега в начальном переходном периоде с 7.7 на 8... Операторы восьмерочные, но логика еще семерочная...
44 Skom
 
12.05.14
12:19
(42) слава богу. все, я спокоен)
45 unregistered
 
12.05.14
12:19
(0) Причем тут франч?...

Могу подобного хамнокода, чьим автором являются и фикси и фрилансеры, накидать сколько угодно.

Опусы подобные (0) были особенно популярны в период массового перехода с клюшек на снеговика (3-5 лет назад), когда никто из программеров (вне зависимости от формы занятости - фри/фра/фикси), особо не чурался тренироваться на кошках и кодить на снеговике методами клюшек.
46 Skom
 
12.05.14
12:21
(45) >Причем тут франч?
Очевидно при том, что этот отчет, который, кстати, обработка, а не отчет, написан франчем, который, кстати, нехилые деньги брал за абонентское обслуживание всего лишь одной.
47 unregistered
 
12.05.14
12:21
(38)>> выбирать данные из табличной части документа а не из его движений - это очень нехорошо

В (0) не озвучена постановка задачи. Может отчет назывался "Отчет по введенным в систему документам".
48 Плот
 
12.05.14
12:22
(0) Да забей ты. Многие начинали примерно из таких творений.
49 Skom
 
12.05.14
12:23
(47) строка кода
Секция.Параметры.ЗаголовокМакета="Отчет по Товарам за период с "+Формат(НачПериода,"ДФ=dd.MM.yyyy")+" по "+Формат(КонПериода,"ДФ=dd.MM.yyyy");
говорит о постановке задачи)
50 Поpyчик-4
 
12.05.14
12:24
(47) Всё равно поражает. На СКД это ляпается одной мышью.
51 unregistered
 
12.05.14
12:25
(46) >> Очевидно при том, что...

Так же очевидно, что подобную (0) ересь мог написать кто угодно, включая фри или фикса, и точно так же срубить нехило бабла.

Ваша ненависть к франчам смахивает на фанатизм. Хотя на самом деле программеры во франчах работают абсолютно точно такие же как и в любой другой форме занятости. Убеждался в этом неоднократно, как в период работы во франче, так и позже, работая как самостоятельно так и на фиксе.
52 unregistered
 
12.05.14
12:26
(50) >> На СКД...

Кто сказал, что эта обработка написана в период, когда в платформе уже существовала СКД?
53 fisher
 
12.05.14
12:27
(0) На шедевр никак не тянет.
Ну а то, что во франчах встречаются ммм... "спецы" разной ммм... квалификации - откровением не является.
А на простенькую печатную форму очевидно же, что поставят самого юного падавана.
54 Иоканаан
 
12.05.14
12:28
(0)Мне одному кажется, что разумнее тут использовать запросы?
55 Skom
 
12.05.14
12:28
(51) более того, я могу много примеров г0внокода от старшего программиста привести. я ничего против франчей не имею.
но данный отчет был написан именно франчем, поэтому в заголовке темы речь о франче. тут же прямая причинно-следственная связь.

(52) когда отчет писали, СКД уже была в платформе.
56 Skom
 
12.05.14
12:29
(54) бинго, или скд, как уже сказали
57 dmpl
 
12.05.14
12:29
(20) Вот для этого так и было сделано. А то сделаешь все хорошо - так мало того, что заплатят 1 раз, так в следующий раз еще и будут претензии высказывать, что сразу хорошо не получилось.
58 dmpl
 
12.05.14
12:30
(54) Этот код не страдает от проблемы задваивания движений. 1С уж сколько лет бьется - а задвоение нет-нет, да и происходит.
59 Поpyчик-4
 
12.05.14
12:31
(52) Ну как бы СКД была уже в 8.0
60 Skom
 
12.05.14
12:32
(58) давайте тогда все отчеты перепишем на перебор табличных частей документов и дальнейшем помещении из в ТЗ.
61 Pasha
 
12.05.14
12:33
Помнится, когда начал изучать восьмерку...
Одну обработку надо было с клюшек переделать...По мере освоения восьмерки код в 3 или 4-й версии сократился в несколько раз :)
62 fisher
 
12.05.14
12:33
(59) Не гони. В 8.0 был построитель отчетов.
63 Адинэснег
 
12.05.14
12:34
+(7) найдите его спустя 3-4 года, позовите на кружку пива, и дайте распечатку этого копра... пусть краснеет :)
64 dmpl
 
12.05.14
12:35
(59) Уверен? ;)
65 ifso
 
12.05.14
12:35
(38)
+1 к (47)
Если заказчик считает свою сторону обманутой, то пусть поднимает ТЗ/договор и вспоминает, каким образом принимал работу франча.
66 dmpl
 
12.05.14
12:35
(60) Тут все определяется ценой ошибки.
67 Classic
 
12.05.14
12:36
Дешево, быстро и не вникая в суть отчет переведен на восьмерку.
68 Grekos2
 
12.05.14
12:37
Если код работает, выдает правильные цифры и не тормозит, то ничего страшного в (0) нет.
69 Classic
 
12.05.14
12:37
Потрачена минута-две времени. Результат достигнут.
70 Skom
 
12.05.14
12:38
(65) открыто новое достижение: занудство!

Никто не говорит об обмане, я, как оказалось, многим показалось, я тут просто занимаюсь самолюбованием и писькомерством.
71 Поpyчик-4
 
12.05.14
12:38
(64) Будем считать, что не уверен. Значит настолько сжился с СКД.
72 Масянька
 
12.05.14
12:38
(70) А разве нет?
73 Skom
 
12.05.14
12:39
нет, все еще хуже.
74 fisher
 
12.05.14
12:39
(70) Присоединяюсь. А разве нет?
75 Масянька
 
12.05.14
12:40
(73) А ты уверен, что вот так же кого-то НЕ тошнит от твоего кода?
76 Happy Bear
 
12.05.14
12:41
(0) зато 4 часа закрыл вместо 2-х))))
77 ifso
 
12.05.14
12:41
(60) кое-где у нас порой по озвученной в (58) причине примерно так и делается
78 dmpl
 
12.05.14
12:42
Вообще, могло быть так:

- Ваш отчет неправильно считает! - восклицает клиент.
Франч смотрит на данные - а там бардак на бардаке бардаком заправляет.
- Так у вас данные некорректные, потому и отчет неправильный! - отвечает франч.
- Где неправильные? Вот смотрим документы - все правильно! Это ваша проблема, чтобы на основании правильных документов был правильный отчет!

Ну франч чтобы авгиевы конюшни не разгребать постоянно и переделал на документы. И все довольны.
79 fisher
 
12.05.14
12:42
В чем смысл этой ветки, как не в повышении ЧСВ?
Открыть форумчанам великую истину?
"Во франчах встречаются специалисты низкой квалификации! Шок! Видео!"
80 fisher
 
12.05.14
12:50
(78) Все довольны, как и в сабже. До поры до времени. Пока не потребуется дальнейшее сопровождение и развитие таких решений. Придумать оправданий калорешениям можно много. Только лучше они от этого не станут.
81 PR
 
12.05.14
12:52
(39) Я нечасто сталкиваюсь с чужими творениями, а мои обычно пишут грамотно :))
82 фобка
 
12.05.14
12:53
Франчи это на 90% низко-квалифицированная рабсила
83 Любопытная
 
12.05.14
12:55
(82) А фикси сплошь спецы прям, ага. Работала я с такими спецами, ага. Везде есть дятлы. И спецы не сразу спецами рождаются.
84 Поpyчик-4
 
12.05.14
12:56
(82) В первый раз слышу. Буду знать.
85 dmpl
 
12.05.14
12:57
(80) Если у клиента бардак, то что-то развивать бесполезно. Будет автоматизированный бардак. Наведение же порядка денег стоит, а платить за это не любят.
86 PR
 
12.05.14
12:59
(82) LOL
87 dmpl
 
12.05.14
12:59
(83) Дык а как франч спеца удержит? Все деньги ему отдавать будет чтоли? У франча 30-50% только исполнителю идет. Если исполнитель не дурак - он просто пойдет на вольные хлеба за 100%.
88 vqwy
 
12.05.14
13:00
(82) ну-ну
89 PR
 
12.05.14
13:01
(87) Ух ты! Адресок дашь, где фикси за 300 тысяч платят? :))
90 Skom
 
12.05.14
13:02
(79) вычислить зануд, например.
91 dmpl
 
12.05.14
13:05
(89) А причем здесь фикси? ;)
92 PR
 
12.05.14
13:08
(91) Хорошо. Готов поспорить, что фри также один на двадцать человек в лучшем случае стабильно рубят больше, чем 300 тысяч в месяц. И это вряд ли простой прогер, а минифирма в одну морду уже неинтересна в силу некоторых причин :))
93 fisher
 
12.05.14
13:11
(90) Глупое занятие. Занудство - стандартная проф-деформация у прога :)
94 dmpl
 
12.05.14
13:20
(92) Во франче что, стабильно 100-150 тыр. рубят больше? И вообще, ты не понял главного: зачем 300 тыр. если хватает 100? Заработал не напрягаясь 100 тыр. и отдыхаешь. Вместо того, чтобы во франче в 2-3 раза больше вкалывать за те же деньги.
95 ifso
 
12.05.14
13:22
(93)
> проф-деформация
скорее порог вхождения
иначе велком в креативщики
96 elCust
 
12.05.14
13:24
(0) Автор, тебя видимо кто то обидел когда то?
97 PR
 
12.05.14
13:34
(94) Ну не знаю, у меня 100 - 120 оклад, а обычно перерабатывают люди.
Про заработать 100 не напрягаясь, отработав ровно 50 часов — сказки.
А если за 100 придется и поработать не 50 часов и еще кучу бесплатной и бюрократической работы сделать, то это уже не работа по два косаря в час.
98 France
 
12.05.14
13:37
тоже хотел посмеяться...
но передумал...
зы.. над ошибками других смеются люди в себе неуверенные..
99 Sasha_1CK
 
12.05.14
13:41
(92) А чем Фри отличается от Минифирмы в 1-о лицо?
100 Господин ПЖ
 
12.05.14
13:42
(98) попался сукин сын Якин! твоих рук дело (0)?
101 ИС-2
 
naïve
12.05.14
13:45
(0)я думаю этот прог франча работал на фикси у нас
102 Sasha_1CK
 
12.05.14
13:47
(0) А я так и не понял чего смешного или криминального в этом отчете?

ну переучивался кто то с 7-ки на 8-ку - переделать 7-й код всяко быстрее - чем разбираться с 0 в конструкторе запросов.

Это после месячной практики - перестаешь понимать как ты раньше без конструктора жил.
А первые дни вхождения - старый добрый перебор ближе и понятнее, и главное быстрее.

Вот если бы он в переборе забл проверку проведения сделать - тогда был бы ламер - а так... все когда то начинали.
103 dmpl
 
12.05.14
13:48
(97) Ну ты-то ясно что будешь такое писать - иначе от тебя все более-менее грамотные сбегут ;)
104 PR
 
12.05.14
13:51
(99) Формально ничем. А вообще тем, что фри работает и получает без особого гемора свои деньги, а минифирма в одно лицо — это миниоркестр на все случаи жизни, часто имеющий ЮЛ, периодически привлекающий сторонних спецов, хоть и без выгоды для себя, составление рабочих отчетов по полной программе, ведение проекта в полноценном виде и т. д.
Таких крайне мало. Потому что в этом случае обычно получается, что на 10 оплачиваемых часов приходится 20 неоплачиваемых и обычно уже начинают брать доплюдей.
105 PR
 
12.05.14
13:52
(103) Не понял, ты о чем?
106 inspam
 
12.05.14
13:53
(0) Извини, но я по другому не могу
107 Sasha_1CK
 
12.05.14
13:57
(104) Ну то есть де-факто программирующий директор мелкого франча, которой бабло зарабатывает сам, а не путем эксплуатации наемного труда?
А фри - это ИПшник и ГПХшник одиночка.
108 dmpl
 
12.05.14
14:02
(105) Ну надо же регулярно рассказывать своим работникам, как им хорошо у тебя работается, и как им плохо будет на вольных хлебах. По факту же достаточно набрать опыт и клиентскую базу - и можно сваливать ;)
109 Euguln
 
12.05.14
14:04
(0) Писал махровый 7-ник. Тока начал видимо в 8-ке разбираться.
110 Котокот
 
12.05.14
14:07
(0) А что вообще автор хотел сказать этой веткой? Что все франчи козлы и безграмотные уроды? Или что он умеет пользоваться дешевым психологическим трюком "Подними сам себя в собственных глазах за счет опускания ближнего"? Тут у каждого второго таких "шедевров" вагон. Но козлы только франчи. А автор не франч. Значит он Дартаньян, похлопайте ему.
111 Котокот
 
12.05.14
14:08
Простите за баян (110), оказывается в (98) это уже было...
112 Котокот
 
12.05.14
14:09
Но над автором поржал, не у каждого такая неуверенность в себе, как у него.
113 AugustBlack
 
12.05.14
14:14
(0) 7рочник в своем стиле :)
114 UIV
 
12.05.14
14:22
(0) Хороший код. Красивый. Я тоже так умел 10 лет назад. Сейчас разучился. :(
115 France
 
12.05.14
14:24
(100) да при все желании не мог написать)) Не умею без запросов (и особенно, СКД) отчеты клепать))..
116 France
 
12.05.14
14:30
вот шедевральный коммент в коде "//... менялся подход к автоматизации, результат - гов.нокод." мне нравиться искренность разработчика в оценке кода)) и, даже согласен с ним - действительно сложно поддерживать онный код))
117 IamAlexy2
 
12.05.14
14:35
просто поржать: https://vk.com/k0_0t?z=video38065426_168822373%2F6cfc28c73b44d0fa60

1Сники же?
118 Господин ПЖ
 
12.05.14
14:37
>Не умею без запросов (и особенно, СКД) отчеты клепать))..

>Я тоже так умел 10 лет назад. Сейчас разучился

деградируете
119 France
 
12.05.14
14:40
(118) не, есть более правильное слово: растем, и необходимость в тотальном кодинге пропадает.. но если вдруг, и "под 100 грамм", почему бы и не покодить - опыт то не пропивается))..
120 Skom
 
13.05.14
06:16
(96), (98) )))) да вы прям в корень зрите, вам нечего делать в 1с, идите в психологи)))
черт, раскусили меня.
121 Skom
 
13.05.14
06:19
Да тут ветка просто кишит вангами, например (110), вангует неглядя.
122 Skom
 
13.05.14
06:20
Уважаемые психологи, а вы знаете, что все, что вы пишите, это лишь проекция ваших психических процессов на ситуацию. Так что, кто тут неуверен в себю, я бы поспорил!
123 Skom
 
13.05.14
06:21
*в себе
124 mishaPH
 
модератор
13.05.14
06:22
у меня 2 вопроса к автору
1. код работает?
2. Код который предложишь ты будет работать быстрее?


если ответ 1.да, 2.Нет - убейся о стену. ;)
125 Pahomich
 
13.05.14
06:54
Азы прикладного программирования: 1. Работает - не трожь!; 2. Лучшее - враг хорошего;......N.....N+n. Лень - двигатель прогресса!
126 Lexik
 
13.05.14
08:04
(124) +100500
127 NcSteel
 
13.05.14
09:09
(0) Есть большая вероятность что код написал ты.
128 mdocs
 
13.05.14
09:24
честно е нравится только СокрЛП() в колонках, в остальном нормальный семерошный код.
129 Aleksey
 
13.05.14
09:37
Смешно когда жертвы маркетинга рассказывают о том что код написан эстетически не красиво.

Завтра 1С объявит оператор "если" - прошлым веком и все будут с пеной у рта доказывать, что если в коде есть этот оператор то это овно код, потому что 1С так сказало? И будут писать 200 строк кода в том месте где можно просто написать "если..."
130 Aleksey
 
13.05.14
09:38
(128) Неявное преобразование в строку + удаления лишних пробелов
131 APXi
 
13.05.14
10:41
(0) Интересно, а автор сам всегда начинает писать как спец, даже если не знает языка?
132 StanLee
 
13.05.14
11:02
я недавно такуууую конструкцию кода нарисовал, сюда однозначно было бы стыдно выкладывать, но оно работает и менять ничо не буду :) камент там только напишу для потомков, что "// прости меня дуру грешную, индусский код написал. пьян был" :)
133 timurhv
 
13.05.14
11:07
(128) Человек правильно написал - СокрЛП() заметно отразится на производительности при выводе областей в лучшую сторону :)
134 х86
 
13.05.14
12:54
(0)запрос в цикле?
на кол
135 ИС-2
 
naïve
13.05.14
13:40
думаю это писал 1 человек:

    Для каждого СтрокаТовары из Товары цикл
        лАдрес = ПолучитьАдресНоменклатуры(СтрокаТовары.Номенклатура, СтрокаТовары.Склад);
        ПечСклад=СтрокаТовары.Номенклатура.Склад.Наименование;
        Если ПечСклад="1 склад" тогда
            СтрокаТаб=ТЗ1.Добавить();
            СтрокаТаб.НомерСтроки=ТЗ1.Количество();
            СтрокаТаб.адрес=СокрЛП(лАдрес);
            СтрокаТаб.товар=СтрокаТовары.Номенклатура.Ссылка;
            СтрокаТаб.коэффициент=СтрокаТовары.Коэффициент;
            Строкатаб.количество=СтрокаТовары.Количество;
            Строкатаб.Сумма=СтрокаТовары.Сумма;
            Строкатаб.СуммаНДС=СтрокаТовары.СуммаНДС;
        ИначеЕсли ПечСклад="2 склад" тогда
            СтрокаТаб=ТЗ2.Добавить();
            СтрокаТаб.НомерСтроки=ТЗ2.Количество();
            СтрокаТаб.адрес=СокрЛП(лАдрес);
            СтрокаТаб.товар=СтрокаТовары.Номенклатура.Ссылка;
            СтрокаТаб.коэффициент=СтрокаТовары.Коэффициент;
            Строкатаб.количество=СтрокаТовары.Количество;
            Строкатаб.Сумма=СтрокаТовары.Сумма;
....
136 Skom
 
13.05.14
13:41
(127) Ты худшая Ванга этой ветки :-)
137 Aleksey
 
13.05.14
13:52
(134)  ээ а где там запрос? или не читал, но осуждаю?
138 SanGvin
 
13.05.14
13:59
(0) зато, какой-то Вася Пупкин благодаря Вам делает первые шаги в 8.х
139 х86
 
13.05.14
14:03
(137)неявные
140 Мебиус
 
13.05.14
14:04
(0)
!!!!!
млять........
и за это платят деньги
за это убивать надо на месте
морально
141 Skom
 
13.05.14
14:09
(140) 20 тыс абонентка в месяц. за 3 месяца были консультации пользователей + 2 вот таких как в (0) отчета. и все))))
они черти релиз даже не обновили до актуального за это время.
142 Мебиус
 
13.05.14
14:18
(141)
Се ля ви
Позвоните директору франча, а не поможет  - ищите другого подрядчика.
Благо конкуренция на рынке стандартных конфигураций высокая.
Если конечно не регион, но и там удаленка вас спасет.
143 Skom
 
13.05.14
14:23
(142) На аутсорсе наше подразделение в соседнем регионе было до моего прихода на работу в эту компанию. Сейчас наш отдел их обслуживает.
144 Галахад
 
гуру
13.05.14
14:30
(141) Ну вот. Это гораздо меньше чем твоя зарплата.
Т.е. они еще и экономили :-)
145 Поpyчик-4
 
13.05.14
15:21
(140) Да, за ЭТО платят деньги, ибо конечному потребителю пое..плевать, что внутри, главное, чтобы правильно считало.
146 Sasha_1CK
 
13.05.14
15:24
(145) А кто-нибудь может внятно обяснить, чем запрос к документу лучше перебора документов?
147 Поpyчик-4
 
13.05.14
15:27
(146) Хотя бы потому что, удобнее получить нужную выборку сразу и в цикле сразу заполнять параметры в макете для вывода.
Про СКД уже говорил.
148 х86
 
13.05.14
15:27
(146)всё дело в производительности
149 Поpyчик-4
 
13.05.14
15:28
(146) Клюшечнику со стажем всё равно сразу не понять.
150 ДенисЧ
 
13.05.14
15:31
(149) Я прекрасно понимаю. Причём (вы будете смеяться) у меня и в 77 запросы нормально работали...
151 Галахад
 
гуру
13.05.14
15:33
(146) 1. Дергаем всю информацию сразу и только ту, что нужно.
2. Лезем в базу при каждом получении ссылки.
152 kanat
 
13.05.14
15:41
(55) а у меня работодатель СКД не жалует...типа чего там делать, так и я смогу....
153 Поpyчик-4
 
13.05.14
15:46
(152) Хреновый работодатель. У нас СКД одно из первых, про что спрашиваем при приёме на работу.
154 Sasha_1CK
 
13.05.14
15:46
(147) "удобнее" не аргумент.
первые 1-2 месяца переучивания с клюшек - удобнее делать перебор документов - пока не доведешь до нужного уровня навыки работы с конструктором запросов и не запомнишь основные приемы работы с запросом.

Вопрос именно в "лучше" в контексте приведенного отчета.
Никаких дополнительных отборов в отчете не используется

Что касается заполнения макета - то макет.параметры.Заполнить(Строка); работает одинаково что для строки ТЗ, что для выборки запроса.

То, что эта конструкция не использована - лишь лишний раз подтверждает, что автор кода махровый клюшечник. Но отнюдь не делает код шедевром безграмотности.

(151) Я не вижу отборов, а так же серверных директив - поэтому в данном контексте ни 1) ни 2) каких то особых преимуществ не дают.  

поэтому повторяю вопрос - в чем в данном конкретном отчете выразиться преимущество запроса к документу по сравнению с перебором.
155 ОбычныйЧеловек
 
13.05.14
15:47
(142) Деньги платят не за код а за работающую обработку (которая делает то, что нужно пользователю)... А асли (0) хочет, что бы код радовал его глаз - ну пусть заплатит франчу - уверен франч напишет именно такую (красивую) обработку.
156 RomarioAgro
 
13.05.14
15:50
(151) а если мы заранее не знаем сколько нужно? т.е. нужно будет брать по максимуму, т.е. полбазы в запрос?
157 ДенисЧ
 
13.05.14
15:53
(156) А голова у тебя дана не только, чтобы в неё есть...
158 Галахад
 
гуру
13.05.14
15:53
(154) Еще раз. Один раз - много раз.

(156) Не знаем чего надо получить? Это как?
159 RomarioAgro
 
13.05.14
15:53
+(156) в определенных ситуациях не факт что запрос будет быстрее выборки
160 ДенисЧ
 
13.05.14
15:54
(159) А. Тогда извиняюсь. Действительно - только есть...
161 КонецЦикла
 
13.05.14
15:57
Раньше меня такое злило, теперь на этом можно заработать (если попросят). Иначе пропускаю.
ЗЫ. Автор, или работать сцуко
162 RomarioAgro
 
13.05.14
15:57
(160) и как мне теперь дальше жить после твоей строгой оценки о мудрейший из людей))
163 ДенисЧ
 
13.05.14
15:58
(162) Есть ты можешь, так что с голоду не помрёшь :-)
164 Галахад
 
гуру
13.05.14
15:59
Иногда, лучше жевать :)
165 х86
 
13.05.14
15:59
(154)...
пока ДокВыбР.Следующий() цикл
        если ДокВыбР.Проведен тогда
        иначе
            Продолжить;
        КонецЕсли;
        для Каждого ДокРСтрока из ДокВыбР.Товары цикл
            стрТЗ                  = тз.Добавить();
            стртз.Склад          = СокрЛП(ДокВыбР.Склад);
            стртз.Услуга          = СокрЛП(ДокРСтрока.Номенклатура);
...

п1.вот ты как думаешь при выборке документа таб часть Товары тоже участвует в выборке?
п2. посмотри как отработает вот эта вот конструкция СокрЛП(ДокРСтрока.Номенклатура)
166 RomarioAgro
 
13.05.14
16:00
(163) ну ты то теперь полюбому на месяц дольше проживешь))
167 DexterMorgan
 
13.05.14
16:15
Как я рад, что есть 1с-ники, которые пишут код из (0). Это замечательно, что есть люди, которые пишут "работает не трожь", "ну а что? нормально все"..Спасибо, что вы есть..
168 wms
 
13.05.14
16:19
(7)"А что такого? Старый добрый семерочный код от старых добрых программистов, не имеющих отношения к бухгалтерии."
работал с одним старичком во франче 7-к хороший был, на 8-ке так и писал как в (0) изучать ее не хотел да и возраст, дедуле под 70было
для его возраста круто
169 х86
 
13.05.14
16:23
я вот могу понять код из (0), могу понять того кто это писал
но скажите мне как эти люди дорабатывают к примеру УТ 11, или точнее то что работает на УФ или вебе??? Вот наверное где треш полный
170 Поpyчик-4
 
13.05.14
16:31
(169) Я могу понять для разовой работы, сгодится чо, но не для тиражной конфы или дорабатываемой типовой.
171 Armando
 
13.05.14
16:31
(0) Выкладывай своих отчетов - вместе поржем.
172 IVT_2009
 
13.05.14
16:34
начинал когда серьезно писать под 8 ка - почище городил. В конце концов он наверное работает.
173 Hans
 
13.05.14
16:37
(0) я занимался такой херней когда нужно было тупо сделать "как в семерке было", а в логике отчета разбираться дольше чем тупо код семерочный переделать на восмерочный.
174 IVT_2009
 
13.05.14
16:43
только что ваял на управляемых формах это:

&наСервере
функция печатьДокументов()
    если объект.Проведен = ложь тогда
        ЭтотДокумент = РеквизитФормыВЗначение("Объект");
        ЭтотДокумент.Записать(РежимЗаписиДокумента.Проведение);
        ЗначениеВРеквизитФормы(ЭтотДокумент, "Объект");
    конецЕсли;
    вых = новый структура;
    Макет                                = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Договор");
    ТабДок                                 = Новый ТабличныйДокумент;
    Область                             = Макет.ПолучитьОбласть("Шапка");
    Область.Параметры.ДатаДок             = Формат(объект.Дата,"ДЛФ=DD");
    Область.Параметры.номер             = объект.Номер;
    Область.Параметры.ФиоЗаказчика         = объект.ФИО.Наименование;
    Область.Параметры.АдресЗаказчика     = объект.ФИО.Адрес;
    Область.Параметры.Паспорт             = объект.ФИО.Паспорт;
    Область.Параметры.Выдан                 = Формат(объект.ФИО.Выдан,"ДФ=dd.MM.yyyy");
    Область.Параметры.п_усл             = объект.ВидУслуги;
    ФормСтрока                             = "Л = ru_RU; ДП = Истина";
    ПарПредмета                            = "рубль,рубля,рублей,м,копейка,копейки,копеек,м,2";
    ПрописьЧисла                         =     ЧислоПрописью(объект.Услуги.Итог("Сумма"),
                                            ФормСтрока, ПарПредмета);
    Область.Параметры.с_усл             =     уп(объект.СуммаДокумента)
                                             +",("+ПрописьЧисла+")";
    ТабДок.Вывести(Область);
    ТабДок.ОтображатьСетку                = Ложь;
    ТабДок.ОриентацияСтраницы             = ОриентацияСтраницы.Портрет;
    ТабДок.АвтоМасштаб                     = Истина;
    вых.Вставить("договор",ТабДок);
    
    ////////////////////////////////////////калькуляция////////////////////////////////////////////    
    Макет                                 = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Калькуляция");
    ТабДок                                 = Новый ТабличныйДокумент;
    Область                             = Макет.ПолучитьОбласть("Шапка");
    Область.Параметры.ФиоЗаказчика         = объект.ФИО.Наименование;
    Область.Параметры.ВидУслуги            = объект.ВидУслуги.Наименование;
    Область.Параметры.Профессия            = объект.ФИО.Профессия.Наименование;
    Область.Параметры.датаДог             = Формат(объект.Дата,"ДЛФ=DD");
    Область.Параметры.номерДог             = объект.Номер;
    ТабДок.Вывести(Область);
    Для ее = 0 по объект.Услуги.Количество()-1 Цикл
        поз = объект.Услуги.Получить(ее);
        Область = Макет.ПолучитьОбласть("Строчка");
        Область.Параметры.Услуга         =  Поз.Услуга;
        Область.Параметры.Кол            =  поз.Количество;
        Область.Параметры.Сумма          =  поз.Сумма;
        ТабДок.Вывести(Область);
    КонецЦикла;    
    Область                             = Макет.ПолучитьОбласть("Итог");
    Область.Параметры.Итог                 = объект.Услуги.Итог("Сумма");
    ТабДок.Вывести(Область);
    Область                             = Макет.ПолучитьОбласть("Итог2");
    ТабДок.Вывести(Область);
    если  объект.Услуги.Количество()>12 тогда
        табДок.ВывестиГоризонтальныйРазделительСтраниц();
    иначе
        ТабДок.Вывести(Макет.ПолучитьОбласть("пропуск"));
    конецЕсли;    
    /////////
    Область                             = Макет.ПолучитьОбласть("Шапка");
    Область.Параметры.ФиоЗаказчика         = объект.ФИО.Наименование;
    Область.Параметры.ВидУслуги            = объект.ВидУслуги.Наименование;
    Область.Параметры.Профессия            = объект.ФИО.Профессия.Наименование;
    Область.Параметры.датаДог             = Формат(объект.Дата,"ДЛФ=DD");
    Область.Параметры.номерДог             = объект.Номер;
    ТабДок.Вывести(Область);
    Для ее = 0 по объект.Услуги.Количество()-1 Цикл
        поз = объект.Услуги.Получить(ее);
        Область = Макет.ПолучитьОбласть("Строчка");
        Область.Параметры.Услуга         =  Поз.Услуга;
        Область.Параметры.Кол            =  поз.Количество;
        Область.Параметры.Сумма          =  поз.Сумма;
        ТабДок.Вывести(Область);
    КонецЦикла;    
    Область                             = Макет.ПолучитьОбласть("Итог");
    Область.Параметры.Итог                 = объект.Услуги.Итог("Сумма");
    ТабДок.Вывести(Область);
    Область                             = Макет.ПолучитьОбласть("Итог2");
    ТабДок.Вывести(Область);
    ////////
    ТабДок.ОтображатьСетку                = Ложь;
    ТабДок.ОриентацияСтраницы             = ОриентацияСтраницы.Портрет;
    ТабДок.АвтоМасштаб                     = Истина;
    вых.Вставить("калькуляция",ТабДок);
    ///////////////////////////////////////////////авр////////////////////////////////////////////
    Макет                                 = РеквизитФормыВЗначение("Объект").ПолучитьМакет("АВР1");
    ТабДок                                 = Новый ТабличныйДокумент;
    Область                             = Макет.ПолучитьОбласть("АВ1");
    Область.Параметры.ДатаДок             = Формат(объект.Дата,"ДЛФ=DD");
    Область.Параметры.НомерДок             = объект.Номер;
    Область.Параметры.ФиоЗаказчика         = объект.ФИО.Наименование;
    ФормСтрока                             = "Л = ru_RU; ДП = Истина";
    ПарПредмета                            ="рубль,рубля,рублей,м,копейка,копейки,копеек,м,2";
    ПрописьЧисла                         = ЧислоПрописью(объект.Услуги.Итог("Сумма"), ФормСтрока, ПарПредмета);
    Область.Параметры.Итог                 = ПрописьЧисла;
    Область.Параметры.ФиоЗаказчика         = объект.ФИО.Наименование;
    Область.Параметры.Паспорт             = объект.ФИО.Паспорт ;
    Область.Параметры.Выдан                 = Формат(объект.ФИО.Выдан,"ДФ=dd.MM.yyyy");
    ТабДок.Вывести(Область);
    ТабДок.Вывести(Макет.ПолучитьОбласть("пропуск"));
    
    Область                             = Макет.ПолучитьОбласть("АВ1");
    Область.Параметры.ДатаДок             = Формат(объект.Дата,"ДЛФ=DD");
    Область.Параметры.НомерДок             = объект.Номер;
    Область.Параметры.ФиоЗаказчика         = объект.ФИО.Наименование;
    ФормСтрока                             = "Л = ru_RU; ДП = Истина";
    ПарПредмета                            ="рубль,рубля,рублей,м,копейка,копейки,копеек,м,2";
    ПрописьЧисла                         = ЧислоПрописью(объект.Услуги.Итог("Сумма"), ФормСтрока, ПарПредмета);
    Область.Параметры.Итог                 = ПрописьЧисла;
    Область.Параметры.ФиоЗаказчика         = объект.ФИО.Наименование;
    Область.Параметры.Паспорт             = объект.ФИО.Паспорт ;
    Область.Параметры.Выдан                 = Формат(объект.ФИО.Выдан,"ДФ=dd.MM.yyyy");
    ТабДок.Вывести(Область);
    ТабДок.ОтображатьСетку                = Ложь;
    ТабДок.ОриентацияСтраницы             = ОриентацияСтраницы.Портрет;
    вых.Вставить("авр",ТабДок);
    возврат вых;
конецФункции //функция печатьДокументов()


наверное нужно покраснеть.
175 Sasha_1CK
 
13.05.14
16:48
(165) вот это ближе к теме.
Судя по отладчику - основные потери идут на
СокрЛП(ДокРСтрока.Номенклатура) где то треть.

Затем потери на переборе документов. тоже где то треть.

Потери на переборе строк минимальны.

Разница между скоростью выполнения запроса и перебором на периоде 1-7 дней невооруженным глазом не видна.

На промежутке 1-12 месяцев уже ощутима и доходит до 10 раз
Для примера запустил отчет (только заполнение ТЗ, без вывода на экран)  в базе БП за 4 года.

1. Оригинал отчета - Док: 3 824 Строк: 352 174 Время обработки 73 сек
2. Оригинал отчета Без СокрЛП - Док: 3 824 Строк: 352 174 Время обработки 50 сек
3. Запрос - Док: 3 824 Строк: 352 174 Время обработки 5 сек
176 wowik
 
13.05.14
16:48
(0) и че такого? где ключевое слово "лопата"?
177 х86
 
13.05.14
16:51
(174)>> = объект.ФИО.Наименование

за это пожизненный эзих с гвоздями
178 х86
 
13.05.14
16:55
(175)>> ... основные потери ...

вот в этом и есть косяк, так называемый запрос в цикле
проблемма не в том что ты медленно получаешь данные, а в том что ты долбишь сервак запросами снижая производительность всей системы
179 Sasha_1CK
 
13.05.14
17:07
(178) но почему то все пеняют автору именно на отсутствие запроса.
Что как бы навевает мысли всякие на тему "не суди, и не судим будешь"
180 х86
 
13.05.14
17:08
(179)>>пеняют автору именно на отсутствие запроса

для многих это очевидно  )
181 RomarioAgro
 
13.05.14
17:28
(158) ну допустим есть определенные суммы по контрагентам на которые нужно подобрать документы из прошлого, по каждому контрагенту суммы свои и документы могли быть введены вчера, а могли быть 2 года назад, как сделать такой запрос, чтобы в него попали только документы, которые выберут сумму и не попадали другие?
182 Torquader
 
13.05.14
19:49
(181) Если в таблице документа есть индексируемое поле, которое будет участвовать в отборе, то, конечно, запрос окажется быстрее и удобнее.
Если же такого поля нет, то будет полное сканирование таблицы, и запрос не покажет хорошей скорости.
Просто, из-за того, что в восьмёрке ко всем объектам добавили табличные части - выборка перебором идёт очень и очень медленно, так как из базы загружаются данные всех табличных частей объекта при каждом переходе к следующему.
В запросе же можно указать только нужные поля - из-за этого количество выбираемых данных будет меньше и скорость исполнения - выше.
Во всё остальном - перебор ничем не хуже запроса - особенно, если мы только потом решаем, когда нам остановится (в запросе, правда, для этого есть ключевое слово ПЕРВЫЕ).
Конечно, почему-то считается, что нагрузить сервер один раз намного лучше, чем обращаться к нему по каждому поводу, но вопрос актуальности данных и отсутствие возможности сделать запрос на измерение всё-таки оставляет необходимость использования прямого перебора (запрос с вызовом функции ПолучитьОбъект для каждого результата уже быстрее не будет).
183 rsv
 
13.05.14
23:25
(0) полностью читабельный код и легко сопрвождаем.
Приемлем к быстрой доработке.
184 zak555
 
13.05.14
23:26
автор в 0 не знает о заполнитьЗначенияСвойств
185 rsv
 
13.05.14
23:28
Независим от версии платформы
186 rsv
 
13.05.14
23:29
(184)  это что то меняет ?
187 zak555
 
13.05.14
23:36
(186) код сократится в разы
188 rsv
 
13.05.14
23:38
(187)   Это  важно ?
189 zak555
 
13.05.14
23:39
(188) естественно
190 rsv
 
13.05.14
23:40
(172) а если  несерьезно  то это как ?
191 rsv
 
13.05.14
23:40
(189) для кого ?
192 rsv
 
13.05.14
23:41
Могу сказать что точно не бизнесу
193 zak555
 
13.05.14
23:43
(191) следующего смотрителю

(192) есть код прост, то его проще разбирать => меньше времени на это будет потрачено, а => деньги бизнеса будут целее
194 Armando
 
14.05.14
00:19
(174) облить себя бензином и сжечь)))
195 User_Agronom
 
14.05.14
00:21
(0) (33) А что вам собственно не нравится?
Только аргументированно. Вполне удовлетворительный код. Не было времени на оптимизацию, но стабильно работающий.
196 Злопчинский
 
14.05.14
00:50
хотел написать много, но передумал...
197 АйЭм
 
14.05.14
05:31
(0)

Хи-хи.
Когда я тут создал тему, как 30 строк заменил одной, меня забанили.
Автор - радуйся, что не забанили.
198 Skom
 
14.05.14
05:44
(197) меня за суп из младенцев на год банили) ничего. я за год из 7.7 на 8.2 перешел :-)

Я и не думал что моя ветка породит такую оживленную дискуссию.
199 Skom
 
14.05.14
05:46
(171) на, посмейся

ТекстЗапроса = "
        |SELECT
        |   Выборка.ОЦПредприятие as [ОЦПредприятие $Справочник.ОЦПредприятия],
        |    Выборка.ИД as ИД,
        |    Выборка.Код as Код,
        |    Выборка.Наименование as Наименование,
        |    Выборка.Контрагент as [Контрагент $Справочник.Контрагенты],
        |    Выборка.ВидТоплива as [ВидТоплива $Справочник.Ресурсы],
        |    Выборка.ВидЛимита as [ВидЛимита $Перечисление.ВидыЛимита],
        |    Выборка.Лимит as Лимит,
        |    Выборка.ДатаВыдачиЧипа as ДатаВыдачиЧипа,
        |    Выборка.ДатаСдачиЧипа as ДатаСдачиЧипа,
        |    Выборка.НомерКарты as НомерКарты,
        |    Выборка.УчНомер as УчНомер,
        |    Выборка.Запрет as [Запрет $Перечисление.ДаНет],
        |    Выборка.ИДЗаписи as ИДЗаписи,
        |    Выборка.ДатаДо as ДатаДо,
        |    Выборка.ПИН as ПИН
        |FROM
        |    (
        |    SELECT
        |        ОЦВодила.ParentExt as ОЦПредприятие,
        |        ОЦВодила.ID as ИД,
        |        ОЦВодила.CODE as Код,
        |        ОЦВодила.DESCR as Наименование,
        |        Период.Значение as Контрагент,
        |        $ОЦВодила.ВидТоплива as ВидТоплива,
        |        $ОЦВодила.ВидЛимита as ВидЛимита,
        |        $ОЦВодила.Лимит as Лимит,
        |        nullif($ОЦВодила.ДатаВыдачиЧипа, '17530101') as ДатаВыдачиЧипа,
        |        nullif($ОЦВодила.ДатаСдачиЧипа, '17530101') as ДатаСдачиЧипа,
        |        $ОЦВодила.НомерКарты as НомерКарты,
        |        $ОЦВодила.УчНомер as УчНомер,
        |        $ОЦВодила.Запрет as Запрет,
        |        $ОЦВодила.ИДЗаписи as ИДЗаписи,
        |        nullif($ОЦВодила.ДатаДо, '17530101') as ДатаДо,
        |        $ОЦВодила.ПИН as ПИН
        |    FROM $Справочник.ОЦВодила as ОЦВодила (NoLock)
        |        LEFT JOIN
        |        (SELECT
        |            Период.objid as objid,
        |            Период.value as Значение
        |        FROM _1SCONST as Период
        |        WHERE
        |            Период.id = 1036 AND
        |            Период.date IN
        |                        (SELECT
        |                            MAX(Константа.date)
        |                        FROM _1SCONST as Константа
        |                        WHERE (Константа.date <= :ВыбДата) AND (Константа.id = 1036) AND (Константа.objid = Период.objid))
        |        ) as Период ON Период.Objid = ОЦВодила.ID
        |    "+ФильтрКонтрагент+"
        |";
        
        ЮНИОН = "
        |UNION ALL
        |
        |SELECT
        |        ОЦВодила.ParentExt as ОЦПредприятие,
        |        ОЦВодила.ID as ИД,
        |        ОЦВодила.CODE as Код,
        |        ОЦВодила.DESCR as Наименование,
        |        isnull(Период.Значение,"+ПустойИД9+") as Контрагент,
        |        $ОЦВодила.ВидТоплива as ВидТоплива,
        |        $ОЦВодила.ВидЛимита as ВидЛимита,
        |        $ОЦВодила.Лимит as Лимит,
        |        nullif($ОЦВодила.ДатаВыдачиЧипа, '17530101') as ДатаВыдачиЧипа,
        |        nullif($ОЦВодила.ДатаСдачиЧипа, '17530101') as ДатаСдачиЧипа,
        |        $ОЦВодила.НомерКарты as НомерКарты,
        |        $ОЦВодила.УчНомер as УчНомер,
        |        $ОЦВодила.Запрет as Запрет,
        |        $ОЦВодила.ИДЗаписи as ИДЗаписи,
        |        nullif($ОЦВодила.ДатаДо, '17530101') as ДатаДо,
        |        $ОЦВодила.ПИН as ПИН
        |    FROM $Справочник.ОЦВодила as ОЦВодила (NoLock)
        |        LEFT JOIN
        |        (SELECT
        |            Период.objid as objid,
        |            Период.value as Значение
        |        FROM _1SCONST as Период
        |        WHERE
        |            Период.id = 1036 AND
        |            Период.date IN
        |                        (SELECT
        |                            MAX(Константа.date)
        |                        FROM _1SCONST as Константа
        |                        WHERE (Константа.date <= :ВыбДата) AND (Константа.id = 1036) AND (Константа.objid = Период.objid))
        |        ) as Период ON Период.Objid = ОЦВодила.ID
        |    WHERE
        |        isnull(Период.Значение,"+ПустойИД9+") = "+ПустойИД9+" AND
        |        ОЦВодила.ParentExt IN
        |                            (
        |                            Select
        |                                ОЦПредприятия.ID                                
        |                            From
        |                                $Справочник.ОЦПредприятия as ОЦПредприятия (NoLock)
        |                            LEFT JOIN
        |                                (SELECT
        |                                    Период.objid as objid,
        |                                    Период.value as Значение
        |                                FROM _1SCONST as Период
        |                                WHERE
        |                                    Период.id = 1033 AND
        |                                    Период.date IN
        |                                                (SELECT
        |                                                    MAX(Константа.date)
        |                                                FROM _1SCONST as Константа
        |                                                WHERE (Константа.date <= :ВыбДата) AND (Константа.id = 1033) AND (Константа.objid = Период.objid))
        |                                ) as Период ON Период.Objid = ОЦПредприятия.ID                                
        |                            WHERE
        |                                ОЦПредприятия.ParentExt = "+СвойОЦ+" AND Период.Значение = "+текКонтрагент+"
        |                            )
        |";
        
        
        
        ТекстЗапроса = ТекстЗапроса + ?(Контрагент.Выбран()=1,ЮНИОН,"") + "
        |) as Выборка
        |
        |WHERE
        |    1=1
        |    "+ФильтрВид+"
        |    "+фильтрСтатус+"
        |    "+ФильтрКарта+"
        |";
200 SeraFim
 
14.05.14
06:12
(200) две сотки!
201 Skom
 
14.05.14
06:15
(200) даже как-то удивительно! что ветка дожила до таких глубоких седин, я думал на 15-м ответе затухнет))
202 IVT_2009
 
14.05.14
09:33
(194) часто проще так чем долго думать и получить по голове. Система СКД мне не показалась оптимальной для отчета типа договор . По крайней мере времени уйдет много , а программу хотят вчера. Особенно если писать на УФ с которыми иметь дело примерно третий месяц.
203 rsv
 
14.05.14
10:28
(198) Цель дискуссии имхо - не важно  как вы кодите или кодинг ради кодинга :)  Суть - выполнить задачу . Методы и средства  заказчику от бизнеса параллельны.
204 rsv
 
14.05.14
10:32
(199)  Если бааааа вы написали  
ТекстЗапроса="
|Select
|*
|From
|МояТабличнаяФункция(Парм1,,)
|";

Бвло бааа короче  намного... не находите ? :)
205 Skom
 
15.05.14
06:48
нет
206 Лохматые Уши
 
15.05.14
09:59
(0) покажи свой код, может тоже поржем :)
207 Shurjk
 
15.05.14
10:01
(203) Заказчику ад - но себя тоже нужно уважать. К тому же видя такой год я обычно говорю - не жалко тебе своего труда? Ведь это не проживет долго, придет человек который просто чем разбираться в этом похерит и напишет заново.
208 Любопытная
 
15.05.14
10:03
(207) А тебе не пофиг? Если человек придет, значит он придет на твое место, значит тебя там уже нет.
209 ДенисЧ
 
15.05.14
10:05
(208) Необязательно. А если придёт дополнительный человек в команду?
210 х86
 
15.05.14
10:08
(207-208)о чём Вы?
это франч выкатил, и за это еще и деньги получил
211 Любопытная
 
15.05.14
10:11
(209)То вкусы не совпали, вы не сработались, кто-то из вас выживет другого.
(210) Я исключительно про (207). (0) Уже обсудили по-моему. Если заказчик это дело принял, то какие претензии к франчу по поводу денег?
212 ДенисЧ
 
15.05.14
10:13
(211) А вкусы причём? Я сейчас работаю в команде из 5х 1сников.
Неплохая з/п. И что, из-за того, что кто-то код не так форматирует, мне работу менять?
213 Любопытная
 
15.05.14
10:15
(212)Искренне за тебя рада. Вы ведь находите как-то компромисс? Или постоянная ругань на тему "кто так пишет?"?
214 ДенисЧ
 
15.05.14
10:24
(213) Постоянной ругани нет, постепенно адаптируются к моему восприятию :-)
Или я к ним, тут не поймёшь...
215 Shurjk
 
15.05.14
10:25
(208) Нет не пофиг, мне иногда очень приятно узнать что то что  сделал до сих пор работает.
216 Любопытная
 
15.05.14
10:35
(215)а носом в код тыкали? Вот так, как в (0)? С криком "фу, какая гадость"? В такие моменты, интересно, тоже приятно, что твой код до сих пор работает?
217 Shurjk
 
15.05.14
10:37
(216) Нет не тыкали. И сам никого не тыкал, просто матерился про себя и переделывал по своему.
218 rsv
 
15.05.14
12:58
(217) Обычно это с возрастом проходит :)
219 rsv
 
15.05.14
12:59
Переписвывание в смысле ...
220 bolobol
 
15.05.14
13:05
Всё не читал, уж простите. Про "заложиться на оптимизацию по скорости" уже писали? Двойная оплата одной работы, это же франч!
221 Shurjk
 
15.05.14
13:06
(219) Иногда проще переписать чем разгребать то что было написано.
AdBlock убивает бесплатный контент. 1Сергей