Создаем документа на основе данных другой ИБ

  • Автор темы AlexeyP
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

AlexeyP

#1
Возник вопрос: Можно ли через OLE получить бух. итоги? Если да, то как?
Версия 7.7.
Я опишу свою проблему, чтобы было понятнее.

Имеется две базы (разные юр. лица):
1. "отдел сбыта", который отгружает товары;
2. "завод", который производит продаваемую продукцию.

Отдел сбыта продает товар покупателям (как-будто он уже купил его у завода). В конце квартала на "заводе" делают накладные на на отгрузку "отделу сбыта" на все товары, проданные этим "сбытом".
То есть, все, что продал сбыт, он должен купить у завода.

Задача состоит в том, чтобы автоматизировать ввод накладных у завода на отгрузку товара сбыту.

Ведь при условии, что в базах одинаковые наименования номенклатуры в справочнике, можно получить у сбыта количество отгруженных товаров. Все это дело помещаем в ТЗ, а потом в базе "завода" заполняем накладную на отгрузку на основе нащей ТЗ.

Вот тут я столкнулся с OLE.
Я хочу от программы вот что: заходим в базу завода, заполняем реквизиты, которые пойдут в РасходнуюНакладную, коннектимся через OLE к сбыту, получаем через бух. итоги кредитовые обороты по счету 41 (Товары), записываем данные в ТЗ, а потом на основе этой ТЗ заполняем табличную часть накладной в заводе.



ps. Спасибо тем, кто прочитает мой пост. Я не смог обяснить короче :(
Возможно я усложняю. Можно было бы использовать промежуточный файл, для выгрузки/загрузки ТЗ. Тогда надобности в ОЛЕ не возникнет. Но мне показалось, что так изящнее что ли :D

получение итогов в местной базе:

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

 

SeverBap

Well-known member
18.09.2007
451
0
#2
Нда тяжелый случай!
Процедура для открытия:
Код:
Процедура ОткрытьКонфигурацию()
БазаИсточник = СоздатьОбъект("V77.Application");
Открыта = БазаИсточник.Initialize(БазаИсточник.RMTrade, "/d ""C:\Program Files\ПутьКВашейБазе\"""+" /M /nИмяПользователя /pПарольПользователя" , "");
Если Открыта = 0 Тогда
Предупреждение("Ошибка открытия информационной базы");
Иначе
ЗаполнитьТаблицуДанных();
КонецЕсли;
КонецПроцедуры
Процедура для заполнения данных ТаблицыЗначений:
Код:
Процедура ЗаполнитьТаблицуДанных()
БИ=БазаИсточник.CreateObject("БухгалтерскиеИтоги");
//*********ВидыСубконто.Номенклатура - надо найти в той базе такой же аналог.....!!!!! и все остальные!!! догодаещся!!!
БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура, , );
БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения, ВыбСклад, );
БИ.ВыполнитьЗапрос(НачДата, КонДата, "41",,,,,4);
БИ.ВыбратьСубконто(1);
Пока БИ.ПолучитьСубконто(1) = 1 цикл
БИ.ВыбратьСубконто(2);
Пока БИ.ПолучитьСубконто(2) = 1 цикл
Если (БИ.ЭтоГруппа() = 0) И (БИ.КО("К")<>0) Тогда 
ТЗ.НоваяСтрока();
ТЗ.Товар=БИ.Субконто().Наименование;
ТЗ.ЕдИзм=БИ.Субконто().ЕдиницаИзмерения;
ТЗ.КредОборот=БИ.КО("К");
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
я тебе привел аналог ..... нет времени писать тебе все а так разбирешся!!!!!
... :(
 
A

AlexeyP

#3
подключение к бд можно было и не писать, это самое элементарное.
спасибо за совет. я с оле не знаком, и не знал принципов работы с такими объектами.

вот столкнулся с тем, что не выходит дать юзеру возможность в диалоге дать доступ к выбору склада:
Код:
БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения, [b]ВыбСклад[/b], );
Мы ж сидим в одной базе, а склад надо выбирать в базе ОЛЕ.

Знаю только, что склад в базе ОЛЕ можно найти программно (по названию).
Но вот просто так кинуть реквизит с типом "место хранения" на форму получится.
Вот тут я застрял. Есть мысля вставить в форму выпадающее меню, которое будет содержать названия складов в базе ОЛЕ, а потом искать склад по наименованию.
Но это коряво как-то...
Так что пока отказался от ОЛЕ - пользуюсь промежуточым файлом.
 
Статус
Закрыто для дальнейших ответов.