Имя: Пароль:
1C
Юмор
Оптимизация кода
0 altone1C
 
24.01.14
10:34
Помогите оптимизировать код! Конфигурация - "Бухгалтерия предприятия 2"!

        Код = "6201";
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    Хозрасчетный.Ссылка
                       |ИЗ
                       |    ПланСчетов.Хозрасчетный КАК Хозрасчетный
                       |ГДЕ
                       |    Хозрасчетный.КодБыстрогоВыбора = &Код";
        Запрос.УстановитьПараметр("Код", код);
        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        Если РезультатЗапроса.Следующий() Тогда            
            Документ.СчетУчетаРасчетовСКонтрагентом = РезультатЗапроса.Ссылка;
        КонецЕсли;
        
        Код = "6202";        
        Запрос.УстановитьПараметр("Код", код);
        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        Если РезультатЗапроса.Следующий() Тогда            
            Документ.СчетУчетаРасчетовПоАвансам = РезультатЗапроса.Ссылка;
        КонецЕсли;
1 sergey198
 
24.01.14
10:35
это шутка такая?
2 ОбычныйЧеловек
 
24.01.14
10:36
(1) пятница же
3 МойКодУныл
 
24.01.14
10:36
(0) Медетотивно. Это кто-то прочитал статью, что при любой возможности нужно использовать запрос.
4 Remark
 
24.01.14
10:36
Я думаю, что лучше перебором плана счетов на сравнение делать!
5 Vyachelsv
 
24.01.14
10:37
Зачем?
6 Radkt
 
24.01.14
10:39
Сделать цикл по всем кодам быстрого доступа)) и внутри запрос по ним:)
7 User_Agronom
 
24.01.14
10:40
Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    Хозрасчетный.Ссылка,
                       |    Хозрасчетный.КодБыстрогоВыбора,
                       |ИЗ
                       |    ПланСчетов.Хозрасчетный КАК Хозрасчетный
                       |ГДЕ
                       |    Хозрасчетный.КодБыстрогоВыбора = ""6201"" ИЛИ Хозрасчетный.КодБыстрогоВыбора = ""6202""";

        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        Пока РезультатЗапроса.Следующий() Тогда
            Если РезультатЗапроса.КодБыстрогоВыбора = "6201" тогда
                 Документ.СчетУчетаРасчетовСКонтрагентом = РезультатЗапроса.Ссылка;
            Иначе
                 Документ.СчетУчетаРасчетовПоАвансам = РезультатЗапроса.Ссылка;
            КонецЕсли;
        КонецЦикла;
Как минимум запрос всего один.
8 altone1C
 
24.01.14
10:41
Посоны, не смешно.
Мне реально в среду прислали эту обработку по обмену с EDI (от провайдера EDI), я сейчас в ней ковыряюсь, это я увидел с первых строк. Обработка писалась именно под типовую "Бухгалтерию предприятия".
9 Vyachelsv
 
24.01.14
10:41
СписокКод = новый СписокЗначений();
СписокКод.Добавить() = "6201";
СписокКод.Добавить() = "6202";

        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       | Хозрасчетный.КодБыстрогоВыбора как Код,
                       |    Хозрасчетный.Ссылка
                       |ИЗ
                       |    ПланСчетов.Хозрасчетный КАК Хозрасчетный
                       |ГДЕ
                       |    Хозрасчетный.КодБыстрогоВыбора в (&Код)";
        Запрос.УстановитьПараметр("Код", СписокКод);
        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        Пока РезультатЗапроса.Следующий() цикл
Если РезультатЗапроса.Код = "6201" тогда
                 Документ.СчетУчетаРасчетовСКонтрагентом = РезультатЗапроса.Ссылка;
            Иначе
                 Документ.СчетУчетаРасчетовПоАвансам = РезультатЗапроса.Ссылка;
            КонецЕсли;
КонецЦикла
10 altone1C
 
24.01.14
10:42
(4) Ну чуваки примерно это и реализовали :)
11 Vyachelsv
 
24.01.14
10:42
(8) А что не так то ? Ну подумаешь 2 запроса ? И переменные названы некрасиво. ИМХО не критично
12 PLUT
 
24.01.14
10:43
в плане щитов эти два щёта предопределены. нах.я запрос?
13 МойКодУныл
 
24.01.14
10:44
(8) Мы когда-то получали обработки обмена с внешней wms от "внедренцев" этой wms с процедурами типа ЗагрузкаШмона(ТаблШмон); - точно не помню, но это была загрузка инвентаризации.
14 Remark
 
24.01.14
10:46
(12) как это зачем? Это же на 30-40 строчек больше! Программист должен кодить, а так за что деньги получать...
15 х86
 
24.01.14
10:50
Документ.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками; // 6201
                 Документ.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным; // 6202
16 oslokot
 
24.01.14
10:51
(0) Нормальный код, оставь так. Хотя, можно еще в запрос добавить  Автоупорядочивание
17 х86
 
24.01.14
10:51
                 Документ.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками; // 6201
                 Документ.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным; // 6202
18 Radkt
 
24.01.14
10:52
Документ.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01"); // 6201
                 Документ.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02"); // 6202
19 х86
 
24.01.14
10:53
(18)см (12)
20 Radkt
 
24.01.14
10:54
(19)Я скопировал (17) ))
21 oslokot
 
24.01.14
11:04
ХЗ = ПланыСчетов.Хозрасчетный;
Документ.СчетУчетаРасчетовСКонтрагентом = ХЗ.РасчетыСПокупателямиИЗаказчиками; // 6201
Документ.СчетУчетаРасчетовПоАвансам = ХЗ.РасчетыПоАвансамПолученным; // 6202
22 hhhh
 
24.01.14
11:11
(21) что-то тут не так. Ведь наверняки пользователи меняли там поле счет быстрого выбора. Задавали разные счета. А у вас не получится так.
23 altone1C
 
24.01.14
11:12
(21, 22)
Да, да! То что коротко - быстрым не бывает!
24 oslokot
 
24.01.14
11:14
(22) (23) я на фикси сижу, если что переделаю :)))
25 hhhh
 
24.01.14
11:39
(23) БП 3.0?
26 Radkt
 
24.01.14
11:42
Оптимизацию запроса давали (9) кода тоже (17), выбирай и пользуйся. А юмора не получилось)