|   |   | 
| 
 | Помогите улучшить код | ☑ | ||
|---|---|---|---|---|
| 0
    
        1CVERYGOOD 22.03.14✎ 12:58 | 
        Подозреваю что написано криво. Подскажите как можно оптимизировать ?
 Зап = новый Запрос; зап.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.Регистратор) как ТипДок, | ХозрасчетныйОборотыДтКт.Регистратор.Организация, | ХозрасчетныйОборотыДтКт.Регистратор, | ХозрасчетныйОборотыДтКт.СчетДт, | ХозрасчетныйОборотыДтКт.СчетКт, | ХозрасчетныйОборотыДтКт.ПодразделениеДт КАК ПодразделениеДт, | ХозрасчетныйОборотыДтКт.ПодразделениеКт КАК ПодразделениеКт, | ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаОборот | ИЗ | РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&датаначала, &датаокончания, Регистратор, , , , , ) КАК ХозрасчетныйОборотыДтКт |ГДЕ | (ХозрасчетныйОборотыДтКт.СчетДт =&СчетДт | ИЛИ ХозрасчетныйОборотыДтКт.СчетКт=&СчетКт) |//И ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.Регистратор) = ТИП(Документ.ВводНачальныхОстатков) |И ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.Регистратор) = ТИП(Документ.СписаниеСРасчетногоСчета) |//И ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.Регистратор) = ТИП(Документ.ОтражениеЗарплатыВРеглУчете) |//И ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.Регистратор) = ТИП(Документ.ОперацияБух)"; зап.Параметры.Вставить("датаначала",'20110101'); зап.Параметры.Вставить("датаокончания",'20140322'); зап.Параметры.Вставить("СчетДт",ПланыСчетов.Хозрасчетный.НайтиПоКоду("68.01")); зап.Параметры.Вставить("СчетКт",ПланыСчетов.Хозрасчетный.НайтиПоКоду("68.01")); рез = Зап.Выполнить().Выбрать(); Пока рез.Следующий() ЦИКЛ ОбработкаПрерыванияПользователя(); об = рез.Регистратор.ПолучитьОбъект(); Для каждого НаборЗаписейРегистра из об.Движения Цикл НаборЗаписейРегистра.Прочитать(); Для каждого зап из НаборЗаписейРегистра Цикл ЕСЛИ ТипЗнч(зап)= тип("РегистрБухгалтерииЗапись.Хозрасчетный") ТОГДА зап.ПодразделениеДт = об.ПодразделениеДт; Сообщить(об.ссылка); НаборЗаписейРегистра.Записать(); КОНЕЦЕСЛИ; КОНЕЦЦИКЛА; КонецЦикла; КОНЕЦЦИКЛА; | |||
| 1
    
        vicof 22.03.14✎ 13:02 | 
        ГДЕ можно удалить.
 Параметры виртуальных таблиц - классика проверять тип можно раньше | |||
| 2
    
        1CVERYGOOD 22.03.14✎ 13:02 | 
        Задача в том, чтобы проставить подразделениеДт в проводках по 68.01, где документ = СписаниеСРасчетногоСчета из соотв. реквизита.     | |||
| 3
    
        vicof 22.03.14✎ 13:03 | 
        набор записей в цикле записывать не круто     | |||
| 4
    
        1CVERYGOOD 22.03.14✎ 13:03 | 
        Запрос то быстро выполняется. Цикл очень медленно работает.     | |||
| 5
    
        Kookish 22.03.14✎ 13:17 | 
        (0), (4) Подозреваю, что без цикла вообще можно обойтись. Одним запросом.
 И да, (1). См. http://kb.1c.ru/articleView.jsp?id=44 | |||
| 6
    
        Kookish 22.03.14✎ 13:27 | 
        (4) Он и будет долго выполняться. Вы ж за три с лишним года документы перелопачиваете. А еще по-моему, можно не перебирать все движения, а сразу обратиться к движениям по хозрасчетному, через точку или квадратные скобки.     | |||
| 7
    
        mehfk 22.03.14✎ 15:03 | 
        (0) ТИПЗНАЧЕНИЯ(ХозрасчетныйОборотыДтКт.Регистратор) = ТИП(...)
 Заменить на ХозрасчетныйОборотыДтКт.Регистратор ССЫЛКА ... | |||
| 8
    
        mehfk 22.03.14✎ 15:05 | 
        (ХозрасчетныйОборотыДтКт.СчетДт =&СчетДт   
 | ИЛИ ХозрасчетныйОборотыДтКт.СчетКт=&СчетКт) Вставить в условия в виртуальной таблице | |||
| 9
    
        rphosts 22.03.14✎ 15:42 | 
        (4) тебе-ж в (3) написали что вынеси запись после цикла и пиши всего 1 раз.... запись в циткле оно как запрос в цикле     | |||
| 10
    
        1CVERYGOOD 22.03.14✎ 15:51 | 
        об = рез.Регистратор.ПолучитьОбъект();
 об.Движения["Хозрасчетный"].Прочитать(); Для каждого зап из об.Движения["Хозрасчетный"] Цикл зап.ПодразделениеКт = об.ПодразделениеОрганизации; КОНЕЦЦИКЛА; об.Движения["Хозрасчетный"].Записать(); Вот так сделал. | |||
| 11
    
        grate 22.03.14✎ 16:02 | 
        Зап = новый Запрос;
 зап.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ХозрасчетныйОбороты.Регистратор |ПОМЕСТИТЬ ВТ_Документы |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&датаначала, &датаокончания, Регистратор, Счет = &Счет6801, , , , ) КАК ХозрасчетныйОбороты |ГДЕ | ХозрасчетныйОбороты.Регистратор ССЫЛКА Документ.СписаниеСРасчетногоСчета |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_Документы.Регистратор, | СписаниеСРасчетногоСчета.ПодразделениеДт |ИЗ | ВТ_Документы КАК ВТ_Документы | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета | ПО ВТ_Документы.Регистратор = СписаниеСРасчетногоСчета.Ссылка"; зап.Параметры.Вставить("ДатаНачала",'20110101'); зап.Параметры.Вставить("ДатаОкончания",'20140322'); Счет6801 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("68.01"); зап.Параметры.Вставить("Счет6801", Счет6801); рез = Зап.Выполнить().Выбрать(); НЗ = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); Пока рез.Следующий() ЦИКЛ ОбработкаПрерыванияПользователя(); НЗ.Отбор.Регистратор.Установить(рез.Регистратор); НЗ.Прочитать(); Для Каждого зап Из НЗ Цикл Если зап.СчетДт = Счет6801 ИЛИ зап.СчетКт = Счет6801 Тогда зап.ПодразделениеДт = рез.ПодразделениеДт; КонецЕсли; КонецЦикла; НЗ.Записать(); КОНЕЦЦИКЛА; | |||
| 12
    
        jsmith82 22.03.14✎ 17:18 | 
        Почему капс перемежается с обычным кеглем     | |||
| 13
    
        jsmith82 22.03.14✎ 17:18 | 
        Наименование переменной то с маленькой, то с большой буквы
 Что за деревенский стайл? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |