Имя: Пароль:
1C
1C 7.7
v7: SQL: не срабатывают бух итоги.
,
0 Врединка
 
17.05.12
14:55
В документе при расчете используются бухитоги.
На DBF базе все работает идеально.
На SQL обращение к бухитогам показывает, что по заданным отборам результатов нет. База одна и та же.

Переписывать участок кода для получения результатов через ЗАПРОС не вариант, т.к. у всех клиентов одна конфа, но кто-то работает под дбф, кто-то под SQL.

Подскажите, где и что посмотреть?
1 chief accountant
 
17.05.12
14:58
версия платформы?
2 Врединка
 
17.05.12
15:01
(1) 27-я у всех.
3 Ёпрст
 
17.05.12
15:36
в оборотке в скуле есть хоть чего ?
4 Надсмотрщик
 
17.05.12
15:43
ВключитьSQL(1);
5 пипец
 
17.05.12
15:55
ТиИ на базу , и полныйпересчет итогов - всйо покажет
ЗЫ (4) уапервых тогда уж ВключитьSQL(0); и потом это бухзапрос тоисть бухитоги
6 Надсмотрщик
 
17.05.12
16:03
(5) Пока не поставил, у меня после черного запроса запрос по бух итогам не срабатывал.
7 Врединка
 
17.05.12
16:16
(3) В оборотке есть.
ТиИ и Пересчет не помогают.
Сейчас попробую вариант с ВключитьSQL
8 Джинн
 
17.05.12
16:19
См. ваши "заданные отборы". Они обрезают.
9 Врединка
 
17.05.12
18:01
(8) Под заданными отборами я подразумеваю выборки по субконто. На ДБФ базе они отрабатывают, на скуле нет. Хотя в стандартных бух отчетах все нормально, все цифры есть.
10 viktor_vv
 
17.05.12
18:06
(9) Ну покажи код, хоть пару строк, на которые грешишь. Может параметры какие.
11 Врединка
 
17.05.12
18:09
Вот кусок кода, который не отрабатывает.
       //Определяем наличие предоставленных имущественных вычетов
       м_БИИмущВыч = СоздатьОбъект("БухгалтерскиеИтоги");
       м_БИИмущВыч.ИспользоватьПланСчетов(ПланыСчетов.Зарплата);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, Сотрудник);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, л_СЗ_ИмВычет);
       м_БИИмущВыч.ВыполнитьЗапрос(НачГода(ДатаДок),КонМесяца(ДатаДок),"ИН2",,,,"Месяц");
       м_БИИмущВыч.ВыбратьСубконто(ВидыСубконто.Справочник1);
       Пока м_БИИмущВыч.ПолучитьСубконто(ВидыСубконто.Справочник1) = 1 Цикл
           л_Сотрудник = м_БИИмущВыч.Субконто(ВидыСубконто.Справочник1);
           м_БИИмущВыч.ВыбратьСубконто(ВидыСубконто.Справочник2);
           Пока м_БИИмущВыч.ПолучитьСубконто(ВидыСубконто.Справочник2) = 1 Цикл
               м_БИИмущВыч.ВыбратьПериоды();
               Пока м_БИИмущВыч.ПолучитьПериод() = 1 Цикл
                   Если м_БИИмущВыч.КО() > 0 Тогда
                       л_КодВычета = СокрЛП(м_БИИмущВыч.Субконто(ВидыСубконто.Справочник2).Код);
                       л_Стр = "";
                       Если м_ТаблицаИмущВычетов.НайтиЗначение(л_КодВычета,л_Стр,"КодВычета") = 1 Тогда
                           м_ТаблицаИмущВычетов.УстановитьЗначение(л_Стр,"ДатаНачала",м_БИИмущВыч.НачДата);
                           м_ТаблицаИмущВычетов.УстановитьЗначение(л_Стр,"СуммаВычета",м_БИИмущВыч.КО());
                       КонецЕсли;    
                   КонецЕсли;
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
12 Врединка
 
17.05.12
18:10
ВключитьSQL не помогло.
13 Sereja
 
17.05.12
18:19
м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, Сотрудник,2);
м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, л_СЗ_ИмВычет,2);   //А двоечек не должно часом быть ?
14 viktor_vv
 
17.05.12
18:23
(13) Да не обязательно, по умолчанию разворачивает.
(11) И как определила, что не работает ? Отладчик что говорит, в циклы хаодит ?
15 Креатив
 
17.05.12
19:45
(14)Я бы не надеялся на умолчания.
16 Врединка
 
17.05.12
20:09
(14) Запрос выполняется, но выборка пуста. Проверяла в отладчике. В ДБФ-ке этот код работает отлично.
17 Z1
 
17.05.12
21:29
(11) Повесь на форму объект счет выбери значение ИН2
и в ВыполнитьЗапрос используй идентификатор формы этого счета
ну и еще  периодичность на всякий случай в виде числа.
18 Врединка
 
17.05.12
23:04
(15)(17) Не помогло.
19 Mnemonic1C
 
17.05.12
23:25
Автор м_БИИмущВыч.ВыполнитьЗапрос(НачГода(ДатаДок),КонМесяца(ДатаДок),"ИН2",,,,"Месяц") что возвращает? Скорее всего что 0, попробуй поексперементируй с
       м_БИИмущВыч.ИспользоватьПланСчетов(ПланыСчетов.Зарплата);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, Сотрудник);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, л_СЗ_ИмВычет);
       м_БИИмущВыч.ВыполнитьЗапрос(НачГода(ДатаДок),КонМесяца(ДатаДок),"ИН2",,,,"Месяц");
20 Mnemonic1C
 
17.05.12
23:27
Попробуй вместо "ИН2", СчетПоКоду("ИН2")
21 Mnemonic1C
 
17.05.12
23:28
И ещё вот так
м_БИИмущВыч.ВыполнитьЗапрос(НачГода(ДатаДок),КонМесяца(ДатаДок),"ИН2",,,3,"Месяц");
22 Врединка
 
17.05.12
23:37
(19) ВыполнитьЗапрос возвращает 1. Уже пов сякому эксперементировала и со счетом и с параметрами. Один хрен.
выбратьСубконто() возвращает 0.
Проверяла через отладчик все параметры. Все как надо. Запрос выполняется. Но вот почему выборка пуста - никак не могу понять.
23 viktor_vv
 
18.05.12
00:03
(22) Осталось еще убрать из ИспользоватьСубконто() условия :). Ну и на всякий случай попробовать

      м_БИИмущВыч.ВыбратьСубконто(1);
       Пока м_БИИмущВыч.ПолучитьСубконто(1) = 1 Цикл
           л_Сотрудник = м_БИИмущВыч.Субконто(1);

А то прямо полтергейст какой-то получается.
24 Врединка
 
18.05.12
00:04
(23) Какие условия? что-то у меня этот скуль весь мозг съел...
25 viktor_vv
 
18.05.12
00:06
м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, ,1);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, ,1);
26 viktor_vv
 
18.05.12
00:08
(25)+ Ну это чтоб проверить, может тупо таки данных нет под условия.
27 Врединка
 
18.05.12
00:17
(26) Вы гений! Нашла на чем спотыкается. На параметре л_СЗ_ИмВычет (тип список значений). Если его не указывать, все отрабатывает.
Получается, SQL глючит, если ему в качестве отбора в бухитогах передать список значений?
28 Врединка
 
18.05.12
00:30
Всем спасибо за помощь и участие.
Проблема решена.
29 Sereja
 
18.05.12
00:54
(28) Так в чем причина то была ? Не глючит скл при списказ значений
30 viktor_vv
 
18.05.12
01:12
(29)+1 Ничего там не глючит. Скорее всего в списке были не те значения, которые в оборотах были.
31 Врединка
 
18.05.12
09:48
()29, (30) Да. Там в список значений не те значения передавались из документа. Мой косяк.
32 1Сергей
 
18.05.12
12:31
ещё возможно, что в СЗ группы справочника впихнуты
33 Врединка
 
18.05.12
14:50
(32) Туда были впихнуты коды элементов справочника. Т.к. исходный код писался не мной - не знаю чем руководствовался автор сего =)
34 Врединка
 
18.05.12
23:43
РЕБЯТА, спасайте!

Очередной маразм все в том же участке кода. Не фурычит детализация по периодам.
ВыбратьПериоды() возвращает 1. ПолучитьПериод возвращает тоже 1.
НО! Период задан "месяц"(пробовала ставить цифрой, не помогло), а в реальности период берется весь целиком из запроса, без разбивки по месяцам.
Пробовала периодичность задавать "Операция" - ноль эмоций.

Люди, помогите. Уже вешатся хочется от скуля...
35 viktor_vv
 
19.05.12
00:16
(34) Че-то мне кажется там опять не в скуле дело :).
36 viktor_vv
 
19.05.12
00:21
Так че кажет.

              м_БИИмущВыч.ВыбратьПериоды();
               Пока м_БИИмущВыч.ПолучитьПериод() = 1 Цикл
                   Если м_БИИмущВыч.КО() > 0 Тогда
                      Сообщить(""+м_БИИмущВыч.Субконто(ВидыСубконто.Справочник2) + "   "+м_БИИмущВыч.НачДата);
37 viktor_vv
 
19.05.12
00:22
Вернее даже так.

Сообщить(""+м_БИИмущВыч.Субконто(ВидыСубконто.Справочник2) + "   "+м_БИИмущВыч.НачДата+"  "+м_БИИмущВыч.КонДата);
38 zak555
 
19.05.12
00:24
(11) счет ИН2 -- забаланс ?
39 zak555
 
19.05.12
00:28
поменять использовать субконто местами и делать разворот по СЗ только
только там указать отбор
40 Врединка
 
19.05.12
10:42
(37) 311 01.01.12 01.02.12
Я грешу на скуль, т.к. в дбф версии все работает идеально.
41 zak555
 
19.05.12
10:42
(40) отвечай на мои вопросы
42 Врединка
 
19.05.12
10:46
(41) счет не забалансовый.
Поменять местами попробую, а вот дальше не поняла, что ты имеешь ввиду.
43 zak555
 
19.05.12
10:55
(42) рассказывай всю подноготную

1. что в Сотрудник и л_СЗ_ИмВычет ?
2. зачем ты смотришь КО по счету в целом ИН2, а не корДвижения ?
3. с каким другим счетом корреспондируется счет ИН2 ?
44 Врединка
 
19.05.12
11:00
(43) 1. Сотрудник - ссылка на сотрудника.
л_СЗ - список элементов справочника вычетов.
И то и то является субконто счета ИН2
2. Исходный код писался не мной, ответить не могу.
3. С самим собой.
45 zak555
 
19.05.12
11:06
(44)

1. ну так меняй местами использовать субконто и делай разворот только по ВидыСубконто.Справочник1
и ещё : везде укажи отбор

2. так зачем ты его смотришь, если он не твой ?


3. чего-чего ?
46 Врединка
 
19.05.12
11:11
(45)
1. Отбор уже указала. Попробую помеять местами.
2. По наследству досталось такое богатство.
3. И не спрашивай почему. Придумывала сие не я.
47 zak555
 
19.05.12
11:13
(46)

1. извояние не забудь показать =)
2. стирай и заново всё перепиши
3. так это глупость, если счет сам с собой корреспондируется
надо узнать у буха - зачем всё это надо
48 Врединка
 
19.05.12
11:16
(47) Переписывать не хочется, т.к. проблема с этим кодом только на SQL версии. Если одну и ту же базу сделать на дбф - то там -то все отработается как надо.
49 zak555
 
19.05.12
11:16
(48) это г@вно код - переписывай
50 zak555
 
19.05.12
11:17
+ откуда ты знаешь, что отрабатывает как надо, если ты не знаешь какие должны быть результаты и каков в них смысл ?
51 Врединка
 
19.05.12
11:20
(50) какие результаты должны быть - я знаю. Что корректно все отрабатывает, тоже знаю - смотрела через отладчик. По крайней мере детализация по месяцам там именно что проходит как надо. А в SQL версии он выдает за период вообще весь период запроса, сразу несколько месяцев.
52 zak555
 
19.05.12
11:23
(51) никто так просто не пишет - поэтому только этот код некорректно отображает выводимые данные
53 Sereja
 
19.05.12
11:33
м_БИИмущВыч = СоздатьОбъект("БухгалтерскиеИтоги");
       м_БИИмущВыч.ИспользоватьПланСчетов(ПланыСчетов.Зарплата);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, Сотрудник);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, л_СЗ_ИмВычет);
       м_БИИмущВыч.ВыполнитьЗапрос(НачГода(ДатаДок),КонМесяца(ДатаДок),"ИН2",,,,"Месяц");
       м_БИИмущВыч.ВыбратьПериоды();
       Пока м_БИИмущВыч.ПолучитьПериод() = 1 Цикл
           //Сюда данные за какой период попадают ?
       КонецЦикла;
54 Sereja
 
19.05.12
11:34
И покажи код который на данный момент имеешь
55 Врединка
 
19.05.12
11:36
(54) Чуть попозже скажу результат и выложу код, который сейчас. Мне отойти надо.
56 zak555
 
19.05.12
11:39
напиши что ли так :



м_БИИмущВыч = СоздатьОбъект("БухгалтерскиеИтоги");
м_БИИмущВыч.ИспользоватьПланСчетов(ПланыСчетов.Зарплата);
м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, л_СЗ_ИмВычет, 2);
м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, Сотрудник, 2);
м_БИИмущВыч.ВыполнитьЗапрос(НачГода(ДатаДок),КонМесяца(ДатаДок),СчетПоКоду("ИН2"),,,1,7,1);
м_БИИмущВыч.ВыбратьСубконто(1);
Пока м_БИИмущВыч.ПолучитьСубконто(1) = 1 Цикл
   л_Сотрудник = м_БИИмущВыч.Субконто(1);

   м_БИИмущВыч.ВыбратьПериоды();
   Пока м_БИИмущВыч.ПолучитьПериод() = 1 Цикл
       Если м_БИИмущВыч.КО(1) > 0 Тогда
           л_КодВычета = СокрЛП(м_БИИмущВыч.Субконто(ВидыСубконто.Справочник2).Код);
           л_Стр = "";
           Если м_ТаблицаИмущВычетов.НайтиЗначение(л_КодВычета,л_Стр,"КодВычета") = 1 Тогда
               м_ТаблицаИмущВычетов.УстановитьЗначение(л_Стр,"ДатаНачала",м_БИИмущВыч.НачДата);
               м_ТаблицаИмущВычетов.УстановитьЗначение(л_Стр,"СуммаВычета",м_БИИмущВыч.КО(1));
           КонецЕсли;    
       КонецЕсли;
   КонецЦикла;
   
КонецЦикла;
57 Врединка
 
19.05.12
14:31
(56) Не помогло. Выборка по месяцам упорно дает весь период целиком.
Сделала дополнительный цикл по перебору месяцев. Хреновая идея, но хоть работает. А то клиенты уже в клочья порвать готовы.
58 Злопчинский
 
19.05.12
14:41
(57) потому что ты бестолочь. какие тебе месяцы должно выдать? а почему не неделю? почему не квартал? почему год?.... - задай периодичность ЯВНО!
59 Злопчинский
 
19.05.12
14:43
хотя сорри, возможно я зря стрындел... но проверить - все равно стоит!
60 Злопчинский
 
19.05.12
14:45
в СП в ветек бухитогов - посмотри "Период итогов"
61 Врединка
 
19.05.12
15:00
(57) Потому что я задаю в бухитогах в режиме запроса периодичность МЕСЯЦ в соответствующем параметре. И интересуют меня обороты по месяцам с начала года на текущую дату! А ВыбратьПериоды и ПолучитьПериод дают мне весь период целиком без разбивки по заданным периодам.
62 Врединка
 
19.05.12
15:02
(57) И, пожалуйста, без оскорблений. Под фразой "выборка по месяцам" я имела ввиду методы ВыбратьПериоды и ПолучитьПериоды.
63 Злопчинский
 
20.05.12
01:11
(62) спакуха! я ж извинился...
.
галактеко ждет...
64 zak555
 
20.05.12
11:05
точно

в ДатаНач ДатаКон должен быть период больше месяца
65 Врединка
 
20.05.12
14:04
(64) В запрос параметры передают - начало года и конец месяца расчетной даты.
66 mc lammer
 
20.05.12
14:53
конфигурация - комплексная ?
67 zak555
 
20.05.12
14:53
(65) код покажи
68 ЧеловекДуши
 
20.05.12
15:42
Как всегда, все дело в коде :)
69 Врединка
 
20.05.12
21:34
(67),(68) Код приведен выше.
(66) Нет. Самописная.
70 zak555
 
20.05.12
21:44
(69) в (56) ?

а такое ДатаДок ?
71 viktor_vv
 
20.05.12
22:10
Попробу
72 viktor_vv
 
20.05.12
22:11
Попробуй так, по операциям. Че скажет?

       м_БИИмущВыч.ИспользоватьПланСчетов(ПланыСчетов.Зарплата);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, Сотрудник);
       м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, л_СЗ_ИмВычет);
       м_БИИмущВыч.ВыполнитьЗапрос(НачГода(ДатаДок),КонМесяца(ДатаДок),"ИН2",,,,"Операция");
       м_БИИмущВыч.ВыбратьСубконто(ВидыСубконто.Справочник1);
       Пока м_БИИмущВыч.ПолучитьСубконто(ВидыСубконто.Справочник1) = 1 Цикл
           л_Сотрудник = м_БИИмущВыч.Субконто(ВидыСубконто.Справочник1);
           м_БИИмущВыч.ВыбратьСубконто(ВидыСубконто.Справочник2);
           Пока м_БИИмущВыч.ПолучитьСубконто(ВидыСубконто.Справочник2) = 1 Цикл
               м_БИИмущВыч.ВыбратьПериоды();
               Пока м_БИИмущВыч.ПолучитьПериод() = 1 Цикл
Сообщить(""+м_БИИмущВыч.Операция);
                   Если м_БИИмущВыч.КО() > 0 Тогда
                       л_КодВычета = СокрЛП(м_БИИмущВыч.Субконто(ВидыСубконто.Справочник2).Код);
                       л_Стр = "";
                       Если м_ТаблицаИмущВычетов.НайтиЗначение(л_КодВычета,л_Стр,"КодВычета") = 1 Тогда
                           м_ТаблицаИмущВычетов.УстановитьЗначение(л_Стр,"ДатаНачала",м_БИИмущВыч.НачДата);
                           м_ТаблицаИмущВычетов.УстановитьЗначение(л_Стр,"СуммаВычета",м_БИИмущВыч.КО());
                       КонецЕсли;    
                   КонецЕсли;
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
73 Врединка
 
20.05.12
22:20
(70) Дата документа. Этот код вызывается в процедуре рассчета в документе.
(72) Операция пустая. По операциям выборка тоже не идет. Пробовала уже. :(
74 zak555
 
20.05.12
22:34
(73) ДатаДок чему равна ?
75 zak555
 
20.05.12
22:34
(72) фигня
76 viktor_vv
 
20.05.12
22:43
(73) Ну не может такого быть. Опять полтергейст.
77 Врединка
 
20.05.12
23:05
(74) 29.02.12, например.
(76) Остается только с бубном танцевать...
78 BlackSeaCat
 
20.05.12
23:16
(77) Еще можно фото сменить. И дождаться понедельника.
79 zak555
 
20.05.12
23:17
а так ?



м_БИИмущВыч = СоздатьОбъект("БухгалтерскиеИтоги");
м_БИИмущВыч.ИспользоватьПланСчетов(ПланыСчетов.Зарплата);
м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, л_СЗ_ИмВычет, 2);
м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, Сотрудник, 2);
м_БИИмущВыч.ВыполнитьЗапрос(НачГода(ДатаДок),КонМесяца(ДатаДок),СчетПоКоду("ИН2"),,,2,7,1);
м_БИИмущВыч.ВыбратьСубконто(1);
Пока м_БИИмущВыч.ПолучитьСубконто(1) = 1 Цикл
   л_Сотрудник = м_БИИмущВыч.Субконто(1);

   м_БИИмущВыч.ВыбратьПериоды(,,1);
   Пока м_БИИмущВыч.ПолучитьПериод(1) = 1 Цикл
       Если м_БИИмущВыч.КорДО(1) > 0 Тогда
           л_КодВычета = СокрЛП(м_БИИмущВыч.Субконто(ВидыСубконто.Справочник2).Код);
           л_Стр = "";
           Если м_ТаблицаИмущВычетов.НайтиЗначение(л_КодВычета,л_Стр,"КодВычета") = 1 Тогда
               м_ТаблицаИмущВычетов.УстановитьЗначение(л_Стр,"ДатаНачала",м_БИИмущВыч.НачДата);
               м_ТаблицаИмущВычетов.УстановитьЗначение(л_Стр,"СуммаВычета",м_БИИмущВыч.КорДО(1));
           КонецЕсли;    
       КонецЕсли;
   КонецЦикла;
   
КонецЦикла;
80 zak555
 
20.05.12
23:18
+ аналитку счета распиши
81 BlackSeaCat
 
20.05.12
23:20
(79) Накосячено с номером выборки субконто - одни единицы.
82 zak555
 
20.05.12
23:21
(81) где ? о_О
83 BlackSeaCat
 
20.05.12
23:25
(82) Там, где написал:

м_БИИмущВыч.ВыбратьСубконто(1);
Пока м_БИИмущВыч.ПолучитьСубконто(1) = 1 Цикл
   л_Сотрудник = м_БИИмущВыч.Субконто(1);

А вто же время:

м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник1, Сотрудник, 2);

поставлено ВТОРЫМ. Ы?

P.S. А еще я бы с м_БИИмущВыч.Опции() поэкспериментровал - шо там за счет "ИН2"?
84 zak555
 
20.05.12
23:26
(83) так по сотруднику отбирать только хочу => разворот не нужен
хочу отбирать/разворачивать по 1ому использоватьСубконто
85 zak555
 
20.05.12
23:27
а опции нужны, кога счетов/корСчетов нет
86 BlackSeaCat
 
20.05.12
23:30
(84) Тогда, во-первых, сбивает с толку оставшееся

л_Сотрудник = м_БИИмущВыч.Субконто(1);

А во-вторых,

м_БИИмущВыч.ИспользоватьСубконто(ВидыСубконто.Справочник2, л_СЗ_ИмВычет, 2);

какбэ исключает саму возможность разворачивать по справочнику вычетов.
87 zak555
 
20.05.12
23:39
(86)

1. в скобках 1 - это относится первому использованию субконто
2. цифра 2 - называется отбор, но по нему можно разворачивать всё равно
2 используется , чтоб получить общий "итог" до получитьСубконто
88 BlackSeaCat
 
20.05.12
23:43
(87) Похоже, у нас СП разный.
89 zak555
 
21.05.12
00:41
(88) специально проверил - всё работает
90 zak555
 
21.05.12
00:56
http://zalil.ru/33275164

вот что я сваял
91 Злопчинский
 
21.05.12
02:35
кто бы сомневался
92 zak555
 
21.05.12
08:43
(91) ????