|
БухгалтерскиеИтоги через ОЛЕ | ☑ | ||
---|---|---|---|---|
0
const1C
17.12.12
✎
11:18
|
Подключаюсь к базе через ОЛЕ - все ОК
V7 = Новый COMОбъект("V77s.Application"); Подключение = V7.Initialize(V7.RMTrade, "/d" + ПутьКБазе + " /n" + Логин + " /p" + Пароль, "NO_SPLASH_WINDOW"); Создаю бухгалтерские итоги: БухИт = V7.createobject("БухгалтерскиеИтоги"); Субконто: ВидыСубконто.Вставить("ОсновныеСредства", V7.EvalExpr("ВидыСубконто.ОсновныеСредства")); БухИт.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); Выполняю запрос - все ОК: Рез = БухИт.ВыполнитьЗапрос(НачалоДня(НачПериода), КонецДня(КонПериода), V7.EvalExpr("СчетПоКоду(""МЦ.01"")")); Обращаюсь к результату запроса: БухИт.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства); Пока БухИт.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл ... КонецЦикла Вот тут проблема. Не выбирает он ничего. Делаю аналогичный запрос в семерке: БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); БИ.ВыполнитьЗапрос(НачДата, КонДата, "МЦ.01"); БИ.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства); Пока БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл Сообщить("ОК"); Возврат; КонецЦикла; Все работает, возвращает ОК. Подскажите, пожалуйста, где я накасячил. Не вижу, хоть убейте. |
|||
1
hhhh
17.12.12
✎
11:23
|
а что такое ВидыСубконто?
|
|||
2
const1C
17.12.12
✎
11:25
|
Это Список значений, куда я сбрасываю Виды субконто. Для большего соответствия кода 8.2 и 7.7
|
|||
3
hhhh
17.12.12
✎
11:28
|
(2) просто не видно, где он определяется. Если это список значений восьмерочный, то это прикол.
|
|||
4
Ёпрст
17.12.12
✎
11:30
|
>>>БухИт.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
зачет, ага |
|||
5
Ёпрст
17.12.12
✎
11:31
|
мот того, олешны-е виды субконто будешь пихать в параметры запроса и в выборку ?
|
|||
6
const1C
17.12.12
✎
11:32
|
(3)(4) Мне приятно, что вы это оценили :)
Извиняюсь если вас это смущает. Но проблема не в этом. После выполнения запроса, в объект БухИт, определены значения: БухИт.Счет, БухИт.НачДата, БухИт.КонДата. |
|||
7
const1C
17.12.12
✎
11:32
|
(5) Да именно так я и деляю
БухИт.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства); Пока БухИт.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1 Цикл ... |
|||
8
const1C
17.12.12
✎
11:33
|
(5) Ну еще вот так:
СубконтоОЛЕ = БухИт.Субконто(ВидыСубконто.ОсновныеСредства); |
|||
9
const1C
17.12.12
✎
11:39
|
Ну так что ни у кого идей нет, где тут собака зарылась?
|
|||
10
Ёпрст
17.12.12
✎
11:46
|
ВидыСубконто-Это чей объект ?
подумай. |
|||
11
Ёпрст
17.12.12
✎
11:47
|
не надо восьмерошные объекты пихать в семерошные.
|
|||
12
Ёпрст
17.12.12
✎
11:47
|
жалко, что тебя матом еще оля не посылает за это..
Так, тихо мстит не выполнением. |
|||
13
const1C
17.12.12
✎
11:56
|
(10) Читайте выше. И я не "восьмерошные" типы пихаяю в "семерошные", а наоборот. Создаю обёртку в восьмерке, для легкого обращения к объектам в семерке. И вслучае, если я сую, что-то не так и не туда "оля", посылает и именно матами
|
|||
14
const1C
17.12.12
✎
11:57
|
(11) И да с другими счетами работает. Таким образом я штук пять подобных обработок написал. Проблем не возникало
|
|||
15
const1C
17.12.12
✎
12:03
|
Интересный факт. Написал тестовую обработку с таким кодом:
V7 = Новый COMОбъект("V77s.Application"); Подключение = V7.Initialize(V7.RMTrade, "/d" + ПутьКБазе + " /n" + Логин + " /p" + Пароль, "NO_SPLASH_WINDOW"); БухИт = V7.createobject("БухгалтерскиеИтоги"); БухИт.ИспользоватьСубконто(V7.EvalExpr("ВидыСубконто.ОсновныеСредства")); БухИт.ВыполнитьЗапрос(НачалоДня(НачПериода), КонецДня(КонПериода),"МЦ.01"); БухИт.ВыбратьСубконто(V7.EvalExpr("ВидыСубконто.ОсновныеСредства")); Пока БухИт.ПолучитьСубконто(V7.EvalExpr("ВидыСубконто.ОсновныеСредства")) Цикл Сообщить("ОК"); Прервать; КонецЦикла; Отработало как надо. Вставляю тот же код в основную обработку. Отсылают культурно в одно место. |
|||
16
Михаил Козлов
17.12.12
✎
12:17
|
Получаю остатки по 41 сч. Работает:
Ит = ОФ.БД.CreateObject("БухгалтерскиеИтоги"); Счет.НайтиПоКоду("41.1"); начДата = КонецДня(тд+1); конДата = ТекущаяДата(); итогиЕсть = Ит.Рассчитать(начДата, конДата, "41.1", 0); Если итогиЕсть=1 Тогда Ит.ИспользоватьСубконто(Счет.ВидСубконто(1),0 ,1,0); ДатаНачV7 = ФОРМАТ(начДата, "ДФ=dd.MM.yy"); ДатаКонV7 = ФОРМАТ(конДата, "ДФ=dd.MM.yy"); Ит.ВыполнитьЗапрос(ДатаНачV7, ДатаНачV7, Счет); Ит.ВыбратьСубконто(1,0,0,0,0,"",0); ПОКА Ит.ПолучитьСубконто(1) = 1 Цикл тмц = Ит.Субконто(1); начОстатокБух = Ит.СНД("К"); конОстатокБух = Ит.СКД("К"); начСтоимостьБух = Ит.СНД("С"); КонецЦикла; КонецЕсли; Если не ошибаюсь, важно, чтобы все параметры в ВыбратьСубконто были заполнены. |
|||
17
Ёпрст
17.12.12
✎
12:18
|
(13) :))))))))))))))))))))))))))))))))
>>> И я не "восьмерошные" типы пихаяю в "семерошные" ну-ну.. |
|||
18
Ёпрст
17.12.12
✎
12:18
|
(16) не ошибаетесь, только лучше пихать Неопределенно
|
|||
19
Ёпрст
17.12.12
✎
12:19
|
в не заполненые параметры.
|
|||
20
const1C
17.12.12
✎
12:19
|
Разобрался... Оказывается где-то в дебрях кода устанавливаю левый вид субконто.
|
|||
21
Ёпрст
17.12.12
✎
12:20
|
(20) не где-то в в (0)
|
|||
22
Ёпрст
17.12.12
✎
12:21
|
Не где-то, а в (0) посте
|
|||
23
const1C
17.12.12
✎
12:22
|
(17)
ВидыСубконто = Новый СписокЗначений; ВидыСубконто.Вставить("ОсновныеСредства", V7.EvalExpr("ВидыСубконто.ОсновныеСредства")); ВидыСубконто.ОсновныеСредства - ОЛЕ ВидыСубконто. Аналог V7.EvalExpr("ВидыСубконто.ОсновныеСредства"). И передает именно его. А не тип ЭлементСпискаЗначений |
|||
24
const1C
17.12.12
✎
12:22
|
(22) между строками
ВидыСубконто.Вставить("ОсновныеСредства", V7.EvalExpr("ВидыСубконто.ОсновныеСредства")); БухИт.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); И Выполняю запрос - все ОК: Рез = БухИт.ВыполнитьЗапрос(НачалоДня(НачПериода), КонецДня(КонПериода), V7.EvalExpr("СчетПоКоду(""МЦ.01"")")); |
|||
25
const1C
17.12.12
✎
12:24
|
(16)
Ит = ОФ.БД.CreateObject("БухгалтерскиеИтоги"); .... Интересная строчка, что это? |
|||
26
hhhh
17.12.12
✎
12:39
|
(24) всё-таки правильнее
ВидыСубконто = V7.createobject("СписокЗначений"); зачем лишние неприятности на свою задницу? |
|||
27
Ёпрст
17.12.12
✎
12:41
|
правильнее, это не использовать зарезервированные ключевые слова в своих поделках в качестве переменных.
|
|||
28
const1C
17.12.12
✎
13:15
|
(26) Таким образом я теряю возможность обращения к элементам списка по идентификатору. Ибо в семерки такой возможности нет.
(27) Правильно использовать зарезервированные ключевые слова - плохо. Но кто сказал что "ВидыСубконто" - это зарезервированное слово в 1С8.2? |
|||
29
const1C
17.12.12
✎
13:19
|
Такая конструкция была создана мной по двум причинам:
1. Избежать постоянного вызова функции EvalExpr, 2. Придать большее визуальное соответствие коду семерки и восьмерки (ибо привык я к ней очень и подключаюсь, всетаки, именно к оле, да и просто удобно) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |