Имя: Пароль:
1C
 
Подключение к другой БД через v82.COMConnector и получение массива
,
0 Вебер
 
23.07.15
04:22
Всем привет! Верите в мистику? через раз работает v82.COMConnector, может считать данные или может закрыть платформу. Пробовал на разных платформах на разных ПК везде одна и таже песня? ЧЯДН?
Умных людей хотел спросить в БП 2 создал общий модуль который отрабатывает функцию и отдает массив. В БП 3 написал код
      
         Соединение = новый COMОбъект("v82.COMConnector");
    попытка
        V82 = Соединение.Connect("File=""D:\БАЗЫ 1с\ОАО РУС\2015\2"";Usr=""Вебер"";Pwd=");
            
    исключение
        Сообщить("Не удалось подключиться к базе!");
        возврат;
    конецПопытки;  
       ОтфактурованныеПоступления = Соединение.NG.ПолучитьТЗ();    
конецесли;

ВЫДАЕТ
который выдает
{Документ.ЗачетНДС_19_КВ.МодульОбъекта(352)}: Поле объекта не обнаружено (NG)
       ОтфактурованныеПоступления = Соединение.NG.ПолучитьТЗ();
1 Andrewww123
 
23.07.15
04:48
Так наверное нужно: "ОтфактурованныеПоступления = V82.NG.ПолучитьТЗ();"?
2 Вебер
 
23.07.15
04:57
(1) действительно как все просто
3 Вебер
 
23.07.15
04:58
(1) напоролся на еще одну проблему  {ОбщийМодуль.NG.Модуль(2,9)}: Процедура или функция с указанным именем уже определена (ПолучитьТЗ)
4 Andrewww123
 
23.07.15
05:03
(3) Код модуля в студию :) Только если не большой
5 Вебер
 
23.07.15
05:06
(4) поменял имя с ПолучитьТЗ на ПолучитьТЗМассив
теперь пишет Параметр не опциональный
6 Вебер
 
23.07.15
05:07
(4) Функция ПолучитьТЗМассив (ТЗ) Экспорт
     Организация=Справочники.Организации.НайтиПоКоду("000000002");
     ПроцентЗакрытия=100;
      ОбъектРаспределяемый=Справочники.ОбъектыСтроительства.НайтиПоКоду("000000140");
      Дата = ТекущаяДата();
    Запрос = Новый Запрос("ВЫБРАТЬ
                                   |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Поставщик,
                                   |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК СчетФактура,
                                   |    ХозрасчетныйОстаткиИОбороты.Субконто3 КАК ОбъектСтроительства,
                                   |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток * &Процент / 100 КАК СуммаБУ
                                   |ИЗ
                                   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
                                   |            ,
                                   |            &КонПериода,
                                   |            Период,
                                   |            ДвиженияИГраницыПериода,
                                   |            Счет = &Счет19_КВ,
                                   |            ,
                                   |            Организация = &Организация
                                   |                И Субконто3 = &ОбъектСтроительства) КАК ХозрасчетныйОстаткиИОбороты
                                   |
                                   |УПОРЯДОЧИТЬ ПО
                                   |    Поставщик,
                                   |    СчетФактура");
    Запрос.УстановитьПараметр("Счет19_КВ",ПланыСчетов.Хозрасчетный.НДСпоЗатратамНаКВ);
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("КонПериода", Дата);
    Запрос.УстановитьПараметр("Процент", ПроцентЗакрытия);
    Запрос.УстановитьПараметр("ОбъектСтроительства", ОбъектРаспределяемый);
    Результат19_КВ = Запрос.Выполнить().Выбрать();
    //Если НЕ Результат19_КВ.Следующий() Тогда
    //    Возврат;
    //Иначе
        Таб19_КВ = Запрос.Выполнить().Выгрузить();
    //КонецЕсли;
    Массив_СчФ = Таб19_КВ.ВыгрузитьКолонку("СчетФактура");          //СОБРАЛИ   ОПЕРАЦИИ ПО СЧЕТУ 19 И ВЫГРУЗИЛИ КОЛОНКУ СФ

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    НДСПредъявленныйОстатки.Организация,
    |    НДСПредъявленныйОстатки.СчетФактура КАК СчетФактура,
    |    НДСПредъявленныйОстатки.ВидЦенности,
    |    НДСПредъявленныйОстатки.СтавкаНДС,
    |    НДСПредъявленныйОстатки.СчетУчетаНДС,
    |    НДСПредъявленныйОстатки.Поставщик,
    |    НДСПредъявленныйОстатки.ДатаОплаты,
    |    ВЫБОР
    |        КОГДА ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.СуммаБезНДСОстаток), 0) = 0
    |            ТОГДА 0
    |        ИНАЧЕ (ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.СуммаБезНДСОстаток), 0) - ЕСТЬNULL(НДСпоОСиНМАОстатки.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.СуммаБезНДСОстаток, 0)) / ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.СуммаБезНДСОстаток), 0) * ЕСТЬNULL(НДСПредъявленныйОстатки.СуммаБезНДСОстаток, 0)
    |    КОНЕЦ КАК СуммаБезНДС,
    |    ВЫБОР
    |        КОГДА ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.НДСОстаток), 0) = 0
    |            ТОГДА 0
    |        ИНАЧЕ (ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.НДСОстаток), 0) - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.НДСОстаток, 0) - ЕСТЬNULL(НДСпоОСиНМАОстатки.НДСОстаток, 0)) / ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.НДСОстаток), 0) * ЕСТЬNULL(НДСПредъявленныйОстатки.НДСОстаток, 0)
    |    КОНЕЦ КАК НДС,
    |    ЕСТЬNULL(НДСПредъявленныйОстатки.СчетФактура.Дата, &Дата) КАК СчетФактураДата,
    |    НДСПредъявленныйОстатки.ИсправленныйСчетФактура
    |ИЗ
    |    РегистрНакопления.НДСПредъявленный.Остатки(
    |            &ДатаГраница,
    |            Организация = &Организация
    |                И НЕ ВидЦенности В (&ИсключаемыеВидыЦенностей)
    |                И ВЫБОР
    |                    КОГДА ВидЦенности В (&ВидыЦенностейОплата)
    |                        ТОГДА ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
    |                    КОГДА ВидЦенности В (&ВидыЦенностей_ОплатаПоНДССМР)
    |                        ТОГДА ВЫБОР
    |                                КОГДА ЕСТЬNULL(СчетФактура.Дата, &Дата) < ДАТАВРЕМЯ(2009, 1, 1)
    |                                    ТОГДА ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
    |                                ИНАЧЕ ИСТИНА
    |                            КОНЕЦ
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И НЕ СчетФактура ССЫЛКА Документ.КорректировкаРеализации
    |                И СчетФактура В (&Массив_СчФ)) КАК НДСПредъявленныйОстатки
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДСпоОСиНМА.Остатки(
    |                &ДатаГраница,
    |                Организация = &Организация
    |                    И НДСВключенВСтоимость = ЛОЖЬ
    |                    И НЕ ВидЦенности В (&ИсключаемыеВидыЦенностей)
    |                    И НеВлияетНаВычет = ЛОЖЬ) КАК НДСпоОСиНМАОстатки
    |        ПО НДСПредъявленныйОстатки.СчетФактура = НДСпоОСиНМАОстатки.СчетФактура
    |            И НДСПредъявленныйОстатки.ВидЦенности = НДСпоОСиНМАОстатки.ВидЦенности
    |            И НДСПредъявленныйОстатки.СтавкаНДС = НДСпоОСиНМАОстатки.СтавкаНДС
    |            И НДСПредъявленныйОстатки.СчетУчетаНДС = НДСпоОСиНМАОстатки.СчетУчетаНДС
    |            И (НДСпоОСиНМАОстатки.СуммаБезНДСОстаток + НДСпоОСиНМАОстатки.НДСОстаток > 0)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДСПредъявленныйРеализация0.Остатки(
    |                &ДатаГраница,
    |                Организация = &Организация
    |                    И НЕ ВидЦенности В (&ИсключаемыеВидыЦенностей)) КАК НДСПредъявленныйРеализация0Остатки
    |        ПО НДСПредъявленныйОстатки.СчетФактура = НДСПредъявленныйРеализация0Остатки.СчетФактура
    |            И НДСПредъявленныйОстатки.ВидЦенности = НДСПредъявленныйРеализация0Остатки.ВидЦенности
    |            И НДСПредъявленныйОстатки.СтавкаНДС = НДСПредъявленныйРеализация0Остатки.СтавкаНДС
    |            И НДСПредъявленныйОстатки.СчетУчетаНДС = НДСПредъявленныйРеализация0Остатки.СчетУчетаНДС
    |            И (НДСПредъявленныйРеализация0Остатки.СуммаБезНДСОстаток + НДСПредъявленныйРеализация0Остатки.НДСОстаток > 0)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДСПредъявленный.Остатки(
    |                &ДатаГраница,
    |                Организация = &Организация
    |                    И НЕ ВидЦенности В (&ИсключаемыеВидыЦенностей)
    |                    И ВЫБОР
    |                        КОГДА ВидЦенности В (&ВидыЦенностейОплата)
    |                            ТОГДА ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
    |                        КОГДА ВидЦенности В (&ВидыЦенностей_ОплатаПоНДССМР)
    |                            ТОГДА ВЫБОР
    |                                    КОГДА ЕСТЬNULL(СчетФактура.Дата, &Дата) < ДАТАВРЕМЯ(2009, 1, 1)
    |                                        ТОГДА ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
    |                                    ИНАЧЕ ИСТИНА
    |                                КОНЕЦ
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ) КАК НДСПредъявленныйОстаткиИтог
    |        ПО НДСПредъявленныйОстатки.СчетФактура = НДСПредъявленныйОстаткиИтог.СчетФактура
    |            И НДСПредъявленныйОстатки.ВидЦенности = НДСПредъявленныйОстаткиИтог.ВидЦенности
    |            И НДСПредъявленныйОстатки.СтавкаНДС = НДСПредъявленныйОстаткиИтог.СтавкаНДС
    |            И НДСПредъявленныйОстатки.СчетУчетаНДС = НДСПредъявленныйОстаткиИтог.СчетУчетаНДС
    |            И НДСПредъявленныйОстатки.Организация = НДСПредъявленныйОстаткиИтог.Организация
    |            И НДСПредъявленныйОстатки.Поставщик = НДСПредъявленныйОстаткиИтог.Поставщик
    |ГДЕ
    |    (НДСПредъявленныйОстатки.СуммаБезНДСОстаток > 0
    |            ИЛИ НДСПредъявленныйОстатки.НДСОстаток > 0)
    |
    |СГРУППИРОВАТЬ ПО
    |    НДСПредъявленныйОстатки.Организация,
    |    НДСПредъявленныйОстатки.СчетФактура,
    |    НДСПредъявленныйОстатки.ВидЦенности,
    |    НДСПредъявленныйОстатки.СтавкаНДС,
    |    НДСПредъявленныйОстатки.СчетУчетаНДС,
    |    НДСПредъявленныйОстатки.Поставщик,
    |    ЕСТЬNULL(НДСПредъявленныйОстатки.СчетФактура.Дата, &Дата),
    |    НДСПредъявленныйОстатки.ДатаОплаты,
    |    НДСпоОСиНМАОстатки.СуммаБезНДСОстаток,
    |    НДСПредъявленныйРеализация0Остатки.СуммаБезНДСОстаток,
    |    НДСПредъявленныйОстатки.СуммаБезНДСОстаток,
    |    НДСПредъявленныйРеализация0Остатки.НДСОстаток,
    |    НДСпоОСиНМАОстатки.НДСОстаток,
    |    НДСПредъявленныйОстатки.НДСОстаток,
    |    НДСПредъявленныйОстатки.ИсправленныйСчетФактура
    |
    |ИМЕЮЩИЕ
    |    СУММА(ЕСТЬNULL(НДСПредъявленныйОстаткиИтог.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСпоОСиНМАОстатки.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.СуммаБезНДСОстаток, 0) + ЕСТЬNULL(НДСПредъявленныйОстаткиИтог.НДСОстаток, 0) - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.НДСОстаток, 0) - ЕСТЬNULL(НДСпоОСиНМАОстатки.НДСОстаток, 0)) > 0
    |
    |УПОРЯДОЧИТЬ ПО
    |    СчетФактураДата";


        //|    И НДСПредъявленныйОстатки.СчетФактура В(&Массив_СчФ)

    Запрос.УстановитьПараметр("Организация",  Организация);
    Запрос.УстановитьПараметр("Дата", КонецДня(Дата));
    Запрос.УстановитьПараметр("ДатаГраница", новый Граница(КонецДня(Дата),ВидГраницы.Включая));
    Запрос.УстановитьПараметр("СчетКВ", ПланыСчетов.Хозрасчетный.НДСпоЗатратамНаКВ);
    Запрос.УстановитьПараметр("Массив_СчФ", Массив_СчФ);

    // Исключаемые из анализа виды ценностей
    ИсключаемыеВидыЦенностей = Новый СписокЗначений;
    ИсключаемыеВидыЦенностей.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
    ИсключаемыеВидыЦенностей.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
    ИсключаемыеВидыЦенностей.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
    
    // Виды ценностей, по которым требуется оплата
    ВидыЦенностейОплата = Новый СписокЗначений;
    ВидыЦенностейОплата.Добавить(Перечисления.ВидыЦенностей.НалоговыйАгентАренда);
    ВидыЦенностейОплата.Добавить(Перечисления.ВидыЦенностей.НалоговыйАгентРеализацияИмущества);
    ВидыЦенностейОплата.Добавить(Перечисления.ВидыЦенностей.НалоговыйАгентИностранцы);
    // Виды ценностей с особым порядком распределения оплат - по НДС выплаченному в бюджет
    ВидыЦенностей_ОплатаПоНДССМР = Новый СписокЗначений;
    ВидыЦенностей_ОплатаПоНДССМР.Добавить(Перечисления.ВидыЦенностей.СМРСобственнымиСилами);
    
    Запрос.УстановитьПараметр("ИсключаемыеВидыЦенностей", ИсключаемыеВидыЦенностей);
    Запрос.УстановитьПараметр("ВидыЦенностейОплата", ВидыЦенностейОплата);
    Запрос.УстановитьПараметр("ВидыЦенностей_ОплатаПоНДССМР", ВидыЦенностей_ОплатаПоНДССМР);
    Таблица_НДСкВычету = Запрос.Выполнить().Выгрузить();
    //СписокСчетовФактур = ОбщегоНазначенияБПВызовСервера.УдалитьПовторяющиесяЭлементыМассива(Таблица_НДСкВычету.ВыгрузитьКолонку("СчетФактура"), Истина);
    //ТаблицаСФ = УчетНДСПереопределяемый.ОпределитьНаличиеСчетовФактурПолученных(,КонецДня(Дата),Организация, СписокСчетовФактур,Ложь, Истина, Истина, КонецДня(Дата));
    СписокСчетовФактур = ОбщегоНазначения.УдалитьПовторяющиесяЭлементыМассива(Таблица_НДСкВычету.ВыгрузитьКолонку("СчетФактура"), Истина);

    ТаблицаСФ = УчетНДС.ОпределитьНаличиеСчетовФактурПолученных(,КонецДня(Дата),Организация, СписокСчетовФактур,Ложь, Истина, Истина, КонецДня(Дата));
    ОтфактурованныеПоступления = ОбщегоНазначения.УдалитьПовторяющиесяЭлементыМассива(ТаблицаСФ.ВыгрузитьКолонку("Документ"),Истина);
    

    
    
    Возврат ОтфактурованныеПоступления;
Конецфункции
7 Вебер
 
23.07.15
05:07
запросы норм отрабатывают и массив нужный мне я получаю
8 Вебер
 
23.07.15
05:09
попробовал с  Функция ПолучитьТЗМассив (ТЗ) Экспорт
на
Функция ПолучитьТЗМассив () Экспорт
выдает
Несоответствие типов (параметр номер '1')
9 Вебер
 
23.07.15
05:11
(4) спасибо, заработало
10 Andrewww123
 
23.07.15
05:12
(8) Значит вызываешь функцию с неправильным параметром