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

Тема в разделе "1C и всё что с ней связано", создана пользователем AlexeyP, 18 сен 2008.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. AlexeyP

    AlexeyP Гость

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

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

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

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

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

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



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

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

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

     
  2. SeverBap

    SeverBap Well-Known Member
    1C Team

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

    AlexeyP Гость

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

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

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

Поделиться этой страницей