Имя: Пароль:
1C
 
Что вы думаете по поводу процедуры из типовых
0 Fragster
 
гуру
12.07.11
16:09
Процедура ВыполнитьДвижениеПоРегистру(НаборДвижений, ВидДвижения = Неопределено,
                                     ПустыеКолонкиСоставногоТипа = Неопределено) Экспорт

Какова цель? почему именно так сделано (обход по колонкам, потом внутри по строкам)?
1 wladimir90
 
12.07.11
16:12
Подробней пожалуйста.
2 Ненавижу 1С
 
гуру
12.07.11
16:12
универсальность типо
3 Fragster
 
гуру
12.07.11
16:13
(2) что ж так через анус?
4 Лефмихалыч
 
12.07.11
16:13
(0) пользуюсь с удовольствием
5 ice777
 
12.07.11
16:13
(0) нет у тебя в коде ни колонок ни строк )
6 Лефмихалыч
 
12.07.11
16:13
+(4) зело удобно в купе с туповой же ЗагрузитьВТаблицуЗначений()
7 Fragster
 
гуру
12.07.11
16:13
// Откопируем остальные колонки (структура таблиц совпадает).
   ПерваяКолонка = Истина;
   МассивСтрок   = Новый Массив(ТаблицаДвижений.Количество());
   Для каждого Колонка Из ТаблицаДвижений.Колонки Цикл

       ИмяКолонки = Колонка.Имя;
       Если ИмяКолонки <> "Период"
          И ИмяКолонки <> "Активность"
          И ИмяКолонки <> "НомерСтроки"
          И ИмяКолонки <> ""
          И ИмяКолонки <> "ВидДвижения"
          И ИмяКолонки <> "МоментВремени" Тогда
         
           Если ИзмеренияСостТипа.Свойство(ИмяКолонки) Тогда
               ФлагКолонкиСостТипа = Истина;
           Иначе
               ФлагКолонкиСостТипа = Ложь;
           КонецЕсли;
           
           Индекс = 0;
           Для каждого СтрокаТаблицы Из ТаблицаДвижений Цикл

               Если ПерваяКолонка Тогда
                   
                   Если ВидДвижения = ВидДвиженияНакопления.Приход Тогда
                       СтрокаДвижения = НаборДвижений.ДобавитьПриход();
                   ИначеЕсли ВидДвижения = ВидДвиженияНакопления.Расход Тогда
                       СтрокаДвижения = НаборДвижений.ДобавитьРасход();
                   Иначе
                       СтрокаДвижения = НаборДвижений.Добавить(); // Для оборотных регистров
                   КонецЕсли;
                   
                   МассивСтрок[Индекс] = СтрокаДвижения;
                   СтрокаДвижения.Период = НаборДвижений.мПериод;
                   
               Иначе
                   
                   СтрокаДвижения = МассивСтрок[Индекс];
                   
               КонецЕсли;
8 Fragster
 
гуру
12.07.11
16:14
почему не обходить сначала строки? почему не использовать "заполнитьЗначенияСвойств" (хотя бы для колонок несоставного типа)?
9 Maxus43
 
12.07.11
16:19
никогда не пользовался... Набор записей наше всё
10 apokrit
 
12.07.11
16:24
(8) Наверное, ЗаполнитьЗначенияСвойств в платформе еще не было когда этот код писали.
В оправдание странного порядка обхода ничего не скажу.
11 ice777
 
12.07.11
16:30
(7) тоже не нашел смысла. до обхода строк не делается ничего, определяющего дольнйшее заполнение.
12 IamAlexy
 
12.07.11
16:45
(0) типовую пишут люди.. простые человеческие обычне люди...

не БН лично.. а простые смерные..

вопрос "почему они делают так"? нужно в большинстве случаев перефразировать на "почему ОН сделал именно так?"

и соответственно ответ зачастую будет "а почему бы и нет, работает же"

это я к тому что не пытайтесь постичь вселенскую мудрость кода типовых..
13 Fragster
 
гуру
12.07.11
17:20
(12) переписал сейчас (поскольку надо заполнять регистратор, а он не заполняется в этой процедуре, отдается на откуп автозаполнения). получилось почти в 2 раза меньше кода, ну и побыстрее незначительно.
14 wladimir90
 
12.07.11
17:32
(13) На то они и типовые что бы не заморачиваться а использовать типовые механизмы везде пусть и в ущерб скорости исполнения, зато в плюс скорости разработки.