Имя: Пароль:
1C
1C 7.7
v7: Отличия в запросе для DBF и SQL версии
0 Балбес
 
02.04.12
19:33
Есть простенький запрос.
Ит=СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники,ВыбСотр,2);
Ит.ИспользоватьСубконто(ВидыСубконто.ИсполнительныеЛисты);
Ит.ИспользоватьСубконто(ВидыСубконто.Взыскатели);
Ит.ВыполнитьЗапрос(НачДата,КонДата,СчетПоКоду("ЗП.ПЧТ"));
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1)=1 Цикл
   Сообщить(Ит.Субконто(1));
   Ит.ВыбратьСубконто(2);
Пока Ит.ПолучитьСубконто(2)=1 Цикл
       Сообщить("         "+Строка(Ит.Субконто(2)));
           Ит.ВыбратьСубконто(3);
           Пока Ит.ПолучитьСубконто(3)=1 Цикл
               Сообщить("         "+Строка(Ит.Субконто(3))+"  "+Строка(Ит.ДО()));
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;

Для DBF версии все работает красиво. В SQL версии не выдает всех данных. Самое интересное, если убрать отбор по сотруднику, в общей куче запрос в SQL версии выдает правильные данные. Где может быть проблема?
1 Chai Nic
 
02.04.12
19:37
Ит.ВыбратьСубконто(1);
За константный номер субконто вместо вида субконто хочется убивать сразу..
2 МихаилМ
 
02.04.12
19:37
если релиз 1с 26 - то запросто.
3 Балбес
 
02.04.12
19:39
(1) Обоснуй
4 Балбес
 
02.04.12
19:39
1с 25 релиз
5 Chai Nic
 
02.04.12
19:40
Это плохой стиль и неуважение к тому, кто будет после тебя разбирать эту кашу..
6 Балбес
 
02.04.12
19:42
(5) Переделал, все по прежнему.
7 Chai Nic
 
02.04.12
19:44
Ну попробуй итоги пересчитать.
8 viktor_vv
 
02.04.12
19:46
Наверное в параметре ИспользоватьСубконто(2). Я обычно с параметром отбирать ставлю последним в перечне ИспользоватьСубконто().
Можешь поэкспериментировать. Поставь параметр 1.
9 Балбес
 
02.04.12
19:48
Попробовал накатить 27 релиз - заработало.
10 Chai Nic
 
02.04.12
19:52
(9) Ну что и требовалось доказать.. Четные релизы кстати в семерке всегда считались бажными.
11 viktor_vv
 
02.04.12
19:55
(10) Так вроде у него 25 стоял. Че-то я занервничал :).
12 Mnemonic1C
 
02.04.12
23:29
(1) Да ладно. Практически никогда не видел что бы кто то писал иначе. На производительности это никак не сказывается
13 Chai Nic
 
03.04.12
07:27
(12) Дело не в производительности, а в читаемости кода. К сожалению, синтаксис-помощник 1с сыграл тут свою нехорощую роль - в нем не написано о том, что в качестве индекса субконто можно использовать не только порядковый номер, но и вид субконто. А с видом субконто код слегка более громоздкий, но намного более легкий для понимания и намного менее ошибкоопасный.
14 zxcvb
 
03.04.12
07:35
(13) Ты что, какие субконто на счетах не помнишь?
15 Chai Nic
 
03.04.12
08:04
(14) Уважайте коллег - пишите понятный и красивый код!
16 chief accountant
 
03.04.12
08:45
(15) Одно дело красивый, другое рабочий. Мне, например, по-барабану номер или вид и так код понятен
17 Chai Nic
 
03.04.12
11:01
(16) В любом случае, если номер - то придется лишние условности запоминать и держать в голове. А это прямой путь к ошибкам в сколько-нибудь сложном коде. В случае наличия альернативной возможности написать красиво и понятно, писать индусский код, который не поддерживаем никем, кроме автора - вредительство по отношению к работодателю!
18 Галахад
 
гуру
03.04.12
11:04
(17) Работодателю пофиг.
19 Chai Nic
 
03.04.12
11:08
(18) Пофигистов у нас хватает, поэтому и самолеты падают
20 chief accountant
 
03.04.12
12:56
(17) Каким образом мой код может навредить моему работодателю?
21 Chai Nic
 
03.04.12
13:43
(20) Я уже всё сказал. Думай не только о себе сейчас, но и о том программисте, который будет в этом копаться через пару лет. Возможно это будешь ты, изрядно забывший то, чем занимался когда-то. А может твой коллега. И от красоты твоего кода _сейчас_ зависит эффективность работы _потом_.
22 chief accountant
 
03.04.12
14:19
(21) Что мне делать не тебе мне рассказывать. Если ты не можешь в своем коде разобраться - это твои проблемы.
23 Chai Nic
 
03.04.12
14:43
Ну делай как знаешь.
ЗЫ Самые кошмарные "программисты 1с" - это программисты, выросшие из бухгалтеров.
24 chief accountant
 
03.04.12
14:48
(23) У меня наоборот
25 Chai Nic
 
03.04.12
15:07
(24) Ну вот возьмем какой-нибудь модуль проведения. Бухгалтер-программист напишет процедуру на пару тысяч строк, состоящую из повторов одного и того же фрагмента более чем на 90%. А нормальный программист напишет структурированный код в 5-10 раз меньшего объема, при этом более универсальный и понятный.
26 chief accountant
 
03.04.12
15:35
(25) Хм, если ты про меня, то мимо. Чего я пишу и чем занимаюсь у тебя очень отдаленное представление, поэтому не фантазируй
27 Chai Nic
 
03.04.12
16:55
(26) Я не переходил на личности.. просто неоднократно видел продукты творчества  "бухгалтеров-программистов".
28 Эстет хренов
 
03.04.12
17:36
(25) нормальный программист часто пишет код который никому не нужен вот в чем парадокс.
А код бухгалтера-программиста будет прекрасно работать десяток лет.
(27) основное правило - работает не трожь.
29 Chai Nic
 
03.04.12
19:05
(28) Никаких десятков лет. В том то и дело, что всё меняется, возникают новые задачи - старые алгоритмы приходится менять. А после бухгалтера-программиста, как правило, приходится код переписывать с нуля, поскольку он представляет собой "закат солнца вручную", причем не самым оптимальным образом.
30 Chai Nic
 
03.04.12
19:17
Когда-то нам один франч разрабатывал подсистему производственного учета в доработанной семерочной бухгалтерии. Вот у них программист был из бухгалтеров. Алгоритмы тормозили нереально, через год работы стало невозможно работать - всё стояло в блокировках. Зато модули были большииие.. куча вложенных циклов с расчетом бухитогов внутри :) Любой вопрос бухгалтера "почему так считает, а не иначе" приводил к многочасовому квесту.
Разумеется, пришлось всё переписать фактически с нуля. И тормозить перестало, и стало всё намного прозрачнее.
31 zak555
 
03.04.12
19:18
(0) первое использовать - взад и разворачивать ненадо
32 zak555
 
03.04.12
19:19
2ая и 3ия аналитика имеют суммовые учёты ?
33 Mnemonic1C
 
03.04.12
19:52
(30) Я с тобой согласен на 100% и на счет бухов-программистов, и на счет обращения по номерам а не по видам субконто. Но дело в том что обращение по номерам стало де факто стандартом в 7.7 как в самописках так и в типовым, и когда лично я вижу код написаный иначе немного даже удивляюсь
34 Cthulhu
 
03.04.12
21:11
Есть вариант, когда без указания в выборке результатов бух.запроса кроме как номером субконто не получится.
Среди эстетов хреновых, разведших бодягу на пустом месте, объявляется конкурс:
1. Верно ли это (если да - то в каких случаях)?
35 Cthulhu
 
03.04.12
21:14
ЗЫ: кстати, навскидку: если в бух.запросе устанавливается отбор субконто-справочника по СЗ, то если в этом СЗ есть группы справочника - ДБФ и СКЛ будут работать по-разному на любом релизе. Одинаково правильно будут работать только если в СЗ отбора будут в таком случае элементы справочника. То же самое касается и черных запросов.
36 Злопчинский
 
03.04.12
21:31
Потому что правильно вместо
Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники,ВыбСотр,2);
писать
Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники,ВыбСотр,1);
37 m g r
 
03.04.12
22:03
(1) полная й-у-х-ня , я писал и так и так , но читабельнее как у топикстартера. так что не надо заливать про приятный и красивый код.
38 m g r
 
03.04.12
22:05
(30) тут сам за собой иногда переписываешь по 3 раза для оптимизации скорости, а тут франи которым надо деньги заработать, не задумываясь над скоростью работы
39 Chai Nic
 
04.04.12
07:29
(37) Нифига не читабельнее. Когда указан вид субконто - с первого взгляда на код видишь, что выбирается и получается. И не нужно прыгать назад и пересчитывать методы ИспользоватьСубконто. Это называется "самодокументируемый код".
40 Chai Nic
 
04.04.12
07:34
(34) Ну например в некоей универсальной обработке, где счет заранее неизвестен. Там, разумеется, придется использовать номер, также в цикле по количеству субконто данного счета. Только так.
41 zxcvb
 
04.04.12
08:32
(15) Да ты эстет... Код должен быть эффективным, а не понятным или же красивым для какого-то самозваного коллеги, которого ты знать не знаешь.
Код бывает максимум элегантным.
Оптимизировать если есть возможность  - другой вопрос.
42 chief accountant
 
04.04.12
09:49
(34) +100
(37) +100
Chai Nic -200
по итогам обсуждения
43 Chai Nic
 
04.04.12
10:52
(42) Вот из-за таких программистов, которым наплевать и на коллег, и на пользователей (лишь бы деньги платили) - и существует нелестное (частично заслуженное) мнение о глючности 1с и криворукости одинесников.
44 chief accountant
 
04.04.12
10:57
(43) Не поверишь, у меня 1с не глючит и бухи довольны. А на мнение каких-то виртульных коллег и пользователей
45 chief accountant
 
04.04.12
10:57
(44) мне пох
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс