|
v7: Функция ВыполнитьЗапрос() в SQL работает как-то странно | ☑ | ||
---|---|---|---|---|
0
Chesnok
13.02.14
✎
12:49
|
Пример:
Есть счет "ПНБ" - Забалансовый, Субконто1: Сотрудники (только обороты), и счет 97.2 - Субконто1: Сотрудники, Субконто2 - Статьи затрат. Код: БИт = СоздатьОбъект("БухгалтерскиеИтоги"); БИт.Опции(1, 1); БИт.ИспользоватьСубконто(ВидыСубконто.Сотрудники); БИт.ИспользоватьСубконто(); БИт.ВыполнитьЗапрос(НачПредМес, КонПредМес, "97.2,ПНБ"); ОтпускПМ = 0; ПодохПМ = 0; Если БИт.ПолучитьСубконто(1,, Сотрудник) = 1 Тогда БИт.ВыбратьСчета(); Пока БИт.ПолучитьСчет() = 1 Цикл Если БИт.Счет = СчетПоКоду("97.2") Тогда Если БИт.ПолучитьСубконто(2,, Константа.СубконтоЗарплаты) = 1 Тогда ОтпускПМ = БИт.СКД(); КонецЕсли; Иначе ПодохПМ = БИт.ДО(); КонецЕсли; КонецЦикла; КонецЕсли; В DBF версии все работает правильно, а в SQL не выдает оборот по счету ПНБ. Конфигурации двух баз полностью идентичны. В чем дело? |
|||
1
varelchik
13.02.14
✎
14:58
|
для начала озвучь релиз платформы.
|
|||
2
NS
13.02.14
✎
15:01
|
БИт.ИспользоватьСубконто(); - это что такое?
|
|||
3
Chesnok
13.02.14
✎
16:39
|
(1) Релиз 27
(2) Если у счетов разные субконто можно не указывать вид субконто явно. |
|||
4
NS
13.02.14
✎
16:53
|
(3) По второй строке - гугл по твоему этому утверждению дает ссылку только на твой пост. Ты уверен что это документированная возможность, работающая под SQL?
|
|||
5
NS
13.02.14
✎
17:00
|
Для начала попробуй без этой строчки и без цикла по второму субконто в первой части условия.
|
|||
6
KishMish
13.02.14
✎
17:07
|
(4) в поиске по бухгалтерии для РК я нашел 4 упоминания ИспользоватьСубконто()
в закрытии периода, в списании товаров и сверке итогов. но (5) согласен, насчет использования с СКЛ. СКЛ к неопределенным значениям относится не так, как ДБФ. |
|||
7
Chesnok
14.02.14
✎
00:10
|
(4) А вы видели разные желтые книги "Описание встроенного языка" по DBF и SQL? ИспользоватьСубконто() есть и в типовых конфигурациях. Без второго субконто никак нельзя, поэтому запрос я давно разбил на два. Меня интересовал сам принцип, почему в DBF работает, а в SQL нет.
|
|||
8
NS
14.02.14
✎
02:34
|
(7) Зачем-же хамить?
|
|||
9
МихаилМ
14.02.14
✎
11:12
|
||||
10
Chum
14.02.14
✎
11:16
|
(2) это вполне нормально.
(0) а не пробовал перед > БИт.ПолучитьСубконто(1,, Сотрудник) добавить: БИт.ВыбратьСубконто(1); // тут как бы нужно открыть выборку для начала |
|||
11
Chum
14.02.14
✎
11:17
|
ну и перед
> Если БИт.ПолучитьСубконто(2,, Константа.СубконтоЗарплаты) = 1 Тогда добавить: БИт.ВыбратьСубконто(2); |
|||
12
Chesnok
14.02.14
✎
11:24
|
(10) Работает и без этого
|
|||
13
BarakuzA
14.02.14
✎
12:08
|
в скул и дбв - одни и теже запросы работают по разному.
|
|||
14
NS
14.02.14
✎
13:02
|
(7) В ЖКК ни слова нет о том что в режиме запроса первый параметр в использоватьсубконто() необязателен.
В типовых есть, и в регламентной отчетности есть, но я не нашел ни одного примера с балансом и забалансом в одном запросе, и ни одного примера с когда в запросе участвуют счета с количеством субконто меньше, чем число вызовов использоватьсубконто(). Хотя может просто плохо искал, ну или потому что так под SQL в принципе не будет работать. В типовых подобные случаи разбивают на несколько запросов. |
|||
15
NS
14.02.14
✎
13:02
|
(12) Если работает, зачем ветку создал?
|
|||
16
Chesnok
14.02.14
✎
13:24
|
(15) Вам просто поговорить охота?
1. Имелось ввиду что метод БИт.ПолучитьСубконто(1,, Сотрудник) работает и без предварительной выборки БИт.ВыбратьСубконто(1) 2. "но я не нашел ни одного примера с балансом и забалансом в одном запросе" - зачем тогда существует метод Опции(<ВклЗабалансСуммы>,<ВклОборотСубкСуммы>): Назначение: Устанавливает режим включения сумм в итоги. Параметры: <ВклЗабалансСуммы> - признак включения в итоги сумм по забалансовым счетам. Число: 0 - не включаются суммы по забалансовым счетам; 1 - включаются суммы по забалансовым счетам. И скажу Вам по секрету, что можно и без использования этого метода, при явном указании в параметрах бух.запроса забалансовых счетов вместе с балансовыми, все прекрасно работает. 3. "и ни одного примера с когда в запросе участвуют счета с количеством субконто меньше, чем число вызовов использоватьсубконто()" - а это практика, в DBF все прекрасно работает. |
|||
17
NS
14.02.14
✎
13:31
|
(16) Ни одного сочетания использоватьсубконто() без параметров, и выполнитьЗапрос() с балансом и забалансом одновременно.
И при чем тут ДБФ? И черные и белые запросы работают в дбф и sql по-разному, и имеют свои глюки и свои особенности работы недокументированных фич. Тебе уже только ленивый об этом не написал. |
|||
18
parasite12
14.02.14
✎
13:32
|
Проставь все запятые в запросе
БИт.ВыполнитьЗапрос(НачПредМес, КонПредМес, "97.2,ПНБ",,,,); как-то так |
|||
19
Chai Nic
14.02.14
✎
13:34
|
Бухитоги работают по разному в dbf и sql, это факт. Но это разное поведение проявляется только в "граничных" случаях, когда программист надеется на умолчания. Решение одно - указывать всё явно, и не делать "получить" без "выбрать".
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |