powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / V7 Бух.итоги По Ole-соединению
22 сообщений из 22, страница 1 из 1
V7 Бух.итоги По Ole-соединению
    #38148538
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите пожалуйста разобраться в использовании бух.итогов посредством OLE-соединения.
У меня есть две базы неидентичные. Из одной базы в другую подключаюсь и пытаюсь использовать бух.итоги. В базе, к которой подключаюсь, использую следующий код, который работает верно:

ВСчет = ВыбСчет79;
БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Подразделения,Подразделение);
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВыбСчет79,,,,"Проводка");
БИ.ВыбратьПериоды();
Пока БИ.ПолучитьПериод()=1 Цикл
флД=0;
флК=0;
//ДебИт - дабы не зацензурено было
Если (БИ.Операция.Дебит.Счет=Всчет) и (БИ.Операция.Кредит.Счет=Всчет) Тогда
Если БИ.Операция.Дебит.Субконто(1)<>Подразделение Тогда
флД=1;
КонецЕсли;
Если БИ.Операция.Кредит.Субконто(1)<>Подразделение Тогда
флК=1;
КонецЕсли;
КонецЕсли;
КонецЦикла;

При подключении использую следующий код:

БазаОле = СоздатьОбъект("V77.Application");
.......
ВыбСчет79 = БазаОле.CreateObject("Счет");
Если ВыбСчет79.НайтиПоКоду("79.2.1") = 1 Тогда
ВСчет = ВыбСчет79.ТекущийСчет();
КонецЕсли;
справПодр = БазаОле.CreateObject("Справочник.Подразделения");
справПодр.ВыбратьЭлементы();
Пока справПодр.ПолучитьЭлемент() = 1 Цикл
Вхожд = найти(справПодр.Наименование, "МоеПодразделение");
Если Вхожд > 0 Тогда
Подразделение = справПодр.ТекущийЭлемент();
Прервать;
КонецЕсли;
КонецЦикла;
БИ = БазаОле.CreateObject("БухгалтерскиеИтоги");
ВидСубкПодрОле = БазаОле.ВидыСубконто.Подразделения;
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение);
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,,,1,"Проводка",);
БИ.ВыбратьПериоды(0,0,0,0);
Пока БИ.ПолучитьПериод()=1 Цикл
флД=0;
флК=0;
Если (БИ.Операция.Дебит.Счет=Всчет) и (БИ.Операция.Кредит.Счет=Всчет) Тогда
Если БИ.Операция.Дебит.Субконто(1)<>Подразделение Тогда
флД=1;
КонецЕсли;
Если БИ.Операция.Кредит.Субконто(1)<>Подразделение Тогда
флК=1;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Дальше в код не вдаюсь. В базе, к которой подключаюсь, код отрабатывает по определенному подразделению. Во втором случае подразделение не проходит и перебирает все бух.итоги. Подскажите пожалуйста, где ошибка?
Заранее спасибо.
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38148547
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему нельзя справПодр.НайтиПоНаименованию()? Вместо цикла.

И глупый вопрос " МоеПодразделение" Может кавычки надо убрать?
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38148696
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1сА почему нельзя справПодр.НайтиПоНаименованию()? Вместо цикла.

И глупый вопрос " МоеПодразделение" Может кавычки надо убрать?

справПодр.НайтиПоНаименованию() нельзя потому, что неизвестно конкретное наименование и ищем по части наименования.
"МоеПодразделение" кавычки убрать нельзя, потому что это часть наименования, по которой мы ищем
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149020
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВидСубкПодрОле - передаёте из другой базы? Скорее всего тут ошибка. Обращайтесь через метаданные родной конфигурации.
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149101
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AHDPВидСубкПодрОле - передаёте из другой базы? Скорее всего тут ошибка. Обращайтесь через метаданные родной конфигурации.
Для чего обращаться через метаданные родной базы, если ВидыСубконто необходимо использовать базы Оle? Запрос же идет в ole базу с ole данными
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149221
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Родное для базы исполнения.
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149311
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще при подключении через ОЛЕ истина/ложь не всегда равны 0 и 1!
Например здесь:
Вхожд = найти(справПодр.Наименование, "МоеПодразделение");
Если Вхожд > 0 Тогда
и т.д.
Проверь через сообщить(Вхожд).

Так же при соединении через ОЛЕ лучше указывать все параметры, здесь например:
БИ = БазаОле.CreateObject("БухгалтерскиеИтоги");
ВидСубкПодрОле = БазаОле.ВидыСубконто.Подразделения;
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение);
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,,,1,"Проводка",);
в последней строке правильно надо указать все параметры, так как значения по умолчанию могут неправильно передаваться.
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149335
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AHDPРодное для базы исполнения.
Прошу прощения, не дошло сразу. Через метаданные родной базы устанавливаю ВидСубконто и использую его, но точно так же отрисовывает результат
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149343
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreontsaЕще при подключении через ОЛЕ истина/ложь не всегда равны 0 и 1!
Например здесь:
Вхожд = найти(справПодр.Наименование, "МоеПодразделение");
Если Вхожд > 0 Тогда
и т.д.
Проверь через сообщить(Вхожд).
Вхожд отрабатывает верно, справПодр.Наименование находит "МоеПодразделение" и выводит сообщение, что объект найден.

KreontsaТак же при соединении через ОЛЕ лучше указывать все параметры, здесь например:
БИ = БазаОле.CreateObject("БухгалтерскиеИтоги");
ВидСубкПодрОле = БазаОле.ВидыСубконто.Подразделения;
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение);
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,,,1,"Проводка",);
в последней строке правильно надо указать все параметры, так как значения по умолчанию могут неправильно передаваться.
Все параметры передаю, которые по умолчанию должны ставиться
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149385
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А "Подразделение" нету на форме например как реквизит?
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149403
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SaikanoВсе параметры передаю, которые по умолчанию должны ставиться
не все, важно как раз даже те что по умолчанию можно не задавать, их надо для ОЛЕ явно указывать,см.:
ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)
а в коде:
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,,,1,"Проводка",);
если все, тогда вроде что так для сумм будет:
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,"","",1,"Проводка",1);
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149429
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreontsaА "Подразделение" нету на форме например как реквизит?
нет, справочник
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149431
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kreontsaне все, важно как раз даже те что по умолчанию можно не задавать, их надо для ОЛЕ явно указывать,см.:
ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)
а в коде:
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,,,1,"Проводка",);
если все, тогда вроде что так для сумм будет:
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,"","",1,"Проводка",1);
Имею в виду, что уже пробовалось ставить все параметры
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149442
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SaikanoKreontsaА "Подразделение" нету на форме например как реквизит?
нет, справочник
То есть все таки на форме есть реквизит с именем "Подразделение"?
Если да, тогда в коде изменить Подразделение на ПодразделениеОЛЕ.
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149520
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreontsaТо есть все таки на форме есть реквизит с именем "Подразделение"?
Если да, тогда в коде изменить Подразделение на ПодразделениеОЛЕ.
нет, имею в виду (неточно написано), что на форме нет реквизитов вообще, только кнопка для соединения и подсчета =)
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149586
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь еще нету всех реквизитов:
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение);
=>
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение,1,0);
или
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение,2,0);
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149593
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreontsaВот здесь еще нету всех реквизитов:
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение);
=>
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение,1,0);
или
БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение,2,0);
да, здесь первый вариант использую
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149623
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тогда если 1-й вариант, то надо еще ВыбратьСубконто + ПолучитьСубконто для выборки использовать?
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149657
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kreontsa, уже все варианты пробую, что вижу и приходят на ум, голова перестала думать) и тот и другой варианты не проходят
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149710
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kreontsa, кстати, может быть у Вас есть icq или skype и чуть времени, чтобы общаться было проще?
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38149980
Kreontsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой код для теста проверил:

БИ = БазаОле.CreateObject("БухгалтерскиеИтоги");
ВидСубкПодрОле = БазаОле.ВидыСубконто.Контрагенты;
БИ.ИспользоватьСубконто(ВидСубкПодрОле, ТестКонтрагент,2,1);
БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,,,1,"Проводка",);
БИ.ВыбратьПериоды(0,0,0,0);
Пока БИ.ПолучитьПериод()=1 Цикл
Сообщить(БИ.Операция.Кредит.Счет);// пишет ОЛЕ, что и логично, если надо значение,
// тогда так: БИ.Операция.Кредит.Счет.Код
Сообщить(БИ.КО(1));// Выдает сумму

И работает только по одному субконто, без перебора всех в цикле.

Может аналогично все проверки переделай что б как строки сравнивать:
Если (БИ.Операция.Дебит.Счет=Всчет) и (БИ.Операция.Кредит.Счет=Всчет) Тогда
Заменить на
Если (БИ.Операция.Дебит.Счет.код="79.2.1") и (БИ.Операция.Кредит.Счет.Код="79.2.1") Тогда

скайп то я в профиль закинул, но у меня уже тоже варианты заканчиваются :))
...
Рейтинг: 0 / 0
V7 Бух.итоги По Ole-соединению
    #38150191
Saikano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kreontsa, большое спасибо за помощь) выручили)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / V7 Бух.итоги По Ole-соединению
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]