Имя: Пароль:
1C
1C 7.7
v7: Ит.ВыбратьСубконто, а затем Ит.ВыбратьСчета, объясните чей-то такое…
,
0 Adecvator
 
18.06.12
17:10
Как понимаю я, в разрезе субконто открываем выборку, а затем открываем выборку по счетам. Сначала идет группировка в разрезе субконто, а внутри каждого субконто уже смотрим на каких счетах оно числится.
1 chief accountant
 
18.06.12
17:12
(0) ну да
2 Adecvator
 
18.06.12
17:14
ок, понял, это так как напишешь, так лучше укладывается.
3 Плот
 
18.06.12
17:15
(0) На каких счетах были обороты по субконто за указанный период.
4 Adecvator
 
18.06.12
17:17
а зачем вставлять пустой цикл, между выборками, типа такого -
Пока Ит.ПолучитьСубконто(...) = 1 Цикл
КонецЦикла;
5 Sereja
 
18.06.12
17:19
(4) Может там планировали что-то дописать ?
6 Voronve
 
18.06.12
17:20
(0) Пропуск субконто
7 Adecvator
 
18.06.12
17:21
Ит.ВыбратьСубконто();
Пока Ит.ПолучитьСубконто() = 1 Цикл
// Проверка цехов
  Ит.ВыбратьСубконто(2);
  Если Ит.ПолучитьСубконто(2) = 1 Тогда
       Расшифровка.Установить("Счет",Сч);
  КонецЕсли;

  // Не понятно зачем это делать ???????
  Пока Ит.ПолучитьСубконто(2) = 1 Цикл
  КонецЦикла;

  // Проверка субсчетов
  Ит.ВыбратьСчета();
  Пока Ит.ПолучитьСчет() = 1 Цикл
8 Плот
 
18.06.12
17:30
(7) видимо какой то мусор
9 azernot
 
18.06.12
17:38
Если не прогнать пустой цикл, в выборку счетов попадут только счета имеющие итоги для первого значения субконто2
10 Плот
 
18.06.12
17:43
(9) блин, вот были подозрения на что то. Что именно на это, не знал.
11 viktor_vv
 
18.06.12
17:44
Вместо этого можно так сделать.

  //Пока Ит.ПолучитьСубконто(2) = 1 Цикл
  //КонецЦикла;

  // Проверка субсчетов

  Ит.ВыбратьСчета(1);
  Пока Ит.ПолучитьСчет() = 1 Цикл
12 Adecvator
 
18.06.12
17:54
(11) в этом случае вы пропускаете группировку по субконто, в моем случае это ОС - сначала, а потом 10, 13 счета.
13 viktor_vv
 
18.06.12
17:56
(12) Я пропускаю вторую группировку, которая ненужна. И пишу

Ит.ВыбратьСчета(1);

Вот эта единичка и заменит пустой цикл.

Параметры:
<ФлагВсе> - число: 0 - отбирать те счета, которые имели итоги на этом уровне обхода итогов запроса; 1 - включить в выборку все счета, которые имели итоги в данном запросе; -1, -2 : включить в выборку счета, которые имели итоги в группировке n-го вышестоящего уровня. По умолчанию - 0.
14 chief accountant
 
18.06.12
17:56
(12) В (7) бред какой-то
15 viktor_vv
 
18.06.12
17:59
Хотя че-то я тоже не совсем вкурил что там надо вывести.
16 viktor_vv
 
18.06.12
18:01
И тогда уж так заменить.

 Если Ит.ВыбратьСубконто(2) =1 Тогда
//   Если Ит.ПолучитьСубконто(2) = 1 Тогда
       Расшифровка.Установить("Счет",Сч);
  КонецЕсли;
17 viktor_vv
 
18.06.12
18:06
Ну по идее вот так должно заменить тот код.

Ит.ВыбратьСубконто();
Пока Ит.ПолучитьСубконто() = 1 Цикл
// Проверка цехов

  Если Ит.ВыбратьСубконто(2) = 1 Тогда
//   Если Ит.ПолучитьСубконто(2) = 1 Тогда
       Расшифровка.Установить("Счет",Сч);
  КонецЕсли;

  // Не понятно зачем это делать ???????

 // Пока Ит.ПолучитьСубконто(2) = 1 Цикл
//   КонецЦикла;

  // Проверка субсчетов

  Ит.ВыбратьСчета(-1); // или -2
  Пока Ит.ПолучитьСчет() = 1 Цикл
18 Adecvator
 
18.06.12
18:08
Перебираем все ОС и смотрим весит ли ОС более чем на одном 10 или 13 счетах.
19 viktor_vv
 
18.06.12
18:12
(18) А второе субконто, это что ?
20 Adecvator
 
18.06.12
18:14
(19) подразделения
21 viktor_vv
 
18.06.12
18:15
Если мен не изменяет память, то вместо (17) можно и так поменять местами.

Ит.ВыбратьСубконто();
Пока Ит.ПолучитьСубконто() = 1 Цикл
     // Проверка субсчетов
  Ит.ВыбратьСчета();

  Пока Ит.ПолучитьСчет() = 1 Цикл

  КонецЦикла ;

// Проверка цехов
  Если Ит.ВыбратьСубконто(2) = 1 Тогда
//   Если Ит.ПолучитьСубконто(2) = 1 Тогда

       Расшифровка.Установить("Счет",Сч);
  КонецЕсли;

  // Не понятно зачем это делать ???????


 // Пока Ит.ПолучитьСубконто(2) = 1 Цикл

//   КонецЦикла;

То есть счета можно выбирать на любом уровне обхода субконто.
22 viktor_vv
 
18.06.12
18:17
(20) И по подразделениям надо узнать только, есть там хоть что-то или нет для конкретного ОС ?
23 Adecvator
 
18.06.12
18:19
получается что выбрали сначала по 1-ому субконто, потом по 2-ому и только потом по счету
24 Adecvator
 
18.06.12
18:20
(9) как правильно подмечено.
25 viktor_vv
 
18.06.12
18:22
Но по второму, кроме как узнать есть ли там что в выборке, больше ничего не надо ?
26 Adecvator
 
19.06.12
10:24
(25) совершенно верно, надо что бы в выборку попали все подразделение(субконто2).
27 chief accountant
 
19.06.12
10:34
(26) ну так и начинай выборку со второго субконто. Или я не догоняю что тебе нужно
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан