8.х ОБМЕН OLE обмен

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем n.s.gnedash, 29 авг 2011.

  1. TopicStarter Overlay
    n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Подскажите плз!!!! 7.7 релиз 528 , БП 2.0.26.28 выгружаю выписки. Проблема при сопоставлении ТЧ... не могу понять, как сделать...

    Шапку формирует с нужным видом операции.
    Код:
    Функция СформироватьСтруктуруПараметровШапки_СписаниеСРасчетногоСчета(ДокументВИсточнике)	
    СтруктураШапки = Новый Структура();	
    ИнициализироватьСтруктуруШапки(СтруктураШапки,"СписаниеСРасчетногоСчета");	
    СтруктураШапки.Вставить("Дата" , ДокументВИсточнике.ДатаДок);
    СтруктураШапки.Вставить("Номер", ДокументВИсточнике.НомерДок);	
    СтруктураШапки.Вставить("Организация", ПолучитьОрганизацию("ВКонстантах"));	
    СтруктураШапки.Вставить("Комментарий"    , ПрефиксКомментариев + ДокументВИсточнике.Комментарий);	
    СтруктураШапки.Вставить("ВалютаДокумента", Константы.ВалютаРегламентированногоУчета.Получить()); 	
    СтруктураШапки.Вставить("СчетБанк"      , ПланыСчетов.Хозрасчетный.РасчетныеСчета);	
    СтруктураШапки.Вставить("СчетОрганизации", ПолучитьРасчетныйСчет(ДокументВИсточнике.БанковскийСчет));	
    Если Найти(Строка(ДокументВИсточнике.КоррСчет.Код),"60") > 0 Тогда
    Если СокрЛП(ДокументВИсточнике.Субконто1)<>"" Тогда
    СтруктураШапки.Вставить("ВидОперации", Перечисления.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику);
    СтруктураШапки.Вставить("Контрагент" , ПолучитьКонтрагента(ДокументВИсточнике.Субконто1));
    Если СокрЛП(ДокументВИсточнике.Субконто2)<>"" Тогда
    СтруктураШапки.Вставить("ДоговорКонтрагента", ПолучитьДоговор(ДокументВИсточнике.Субконто2,ДокументВИсточнике.Субконто1));
    
    СчетаУчета = БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом(ПолучитьОрганизацию("ВКонстантах"),  ПолучитьКонтрагента(ДокументВИсточнике.Субконто1), ПолучитьДоговор(ДокументВИсточнике.Субконто2,ДокументВИсточнике.Субконто1));
    
    СтруктураШапки.Вставить("СчетУчетаРасчетовСКонтрагентом", СчетаУчета.СчетРасчетов);
    
    КонецЕсли;
    Попытка
    СтруктураШапки.Вставить("СчетКонтрагента", ПолучитьРасчетныйСчет(ДокументВИсточнике.ПервичныйДокумент.СчетКонтрагента));
    Исключение
    СтруктураШапки.Вставить("СчетКонтрагента", ПолучитьРасчетныйСчет(ДокументВИсточнике.Субконто1.ОсновнойСчет));
    КонецПопытки;
    КонецЕсли;
    
    
    ИначеЕсли Найти(Строка(ДокументВИсточнике.КоррСчет.Код),"91") > 0 Тогда
    Если СокрЛП(ДокументВИсточнике.Субконто1)<>"" Тогда
    СтруктураШапки.Вставить("ВидОперации", Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПрочееСписание);
    СтруктураШапки.Вставить("Контрагент" , ПолучитьКонтрагента(ДокументВИсточнике.Субконто1));
    СтруктураШапки.Вставить("СчетУчетаРасчетовСКонтрагентом", ПланыСчетов.Хозрасчетный.ПрочиеРасходы);
    
    Если СокрЛП(ДокументВИсточнике.Субконто2)<>"" Тогда
    СтруктураШапки.Вставить("ДоговорКонтрагента", ПолучитьДоговор(ДокументВИсточнике.Субконто2,ДокументВИсточнике.Субконто1));
    
    СчетаУчета = БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом(ПолучитьОрганизацию("ВКонстантах"),  ПолучитьКонтрагента(ДокументВИсточнике.Субконто1), ПолучитьДоговор(ДокументВИсточнике.Субконто2,ДокументВИсточнике.Субконто1));
    
    
    КонецЕсли;
    Попытка
    СтруктураШапки.Вставить("СчетКонтрагента", ПолучитьРасчетныйСчет(ДокументВИсточнике.ПервичныйДокумент.СчетКонтрагента));
    Исключение
    СтруктураШапки.Вставить("СчетКонтрагента", ПолучитьРасчетныйСчет(ДокументВИсточнике.Субконто1.ОсновнойСчет));
    КонецПопытки;
    КонецЕсли;
    //====		  
    
    ИначеЕсли Найти(Строка(ДокументВИсточнике.КоррСчет.Код),"70") > 0 Тогда
    Если СокрЛП(ДокументВИсточнике.Субконто1)<>"" Тогда
    СтруктураШапки.Вставить("ВидОперации", Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПеречислениеЗП);
    Сотрудник =  ПолучитьСотрудника(ДокументВИсточнике.Субконто1);
    СтруктураШапки.Вставить("Контрагент" , Сотрудник.Наименование);
    СтруктураШапки.Вставить("СчетУчетаРасчетовСКонтрагентом", ПланыСчетов.Хозрасчетный.ПрочиеРасходы);
    Если СокрЛП(ДокументВИсточнике.Субконто2)<>"" Тогда
    СтруктураШапки.Вставить("ДоговорКонтрагента", ПолучитьДоговор(ДокументВИсточнике.Субконто2,ДокументВИсточнике.Субконто1));
    СчетаУчета = БухгалтерскийУчетРасчетовСКонтрагентами.ПолучитьСчетаРасчетовСКонтрагентом(ПолучитьОрганизацию("ВКонстантах"),  ПолучитьКонтрагента(ДокументВИсточнике.Субконто1), ПолучитьДоговор(ДокументВИсточнике.Субконто2,ДокументВИсточнике.Субконто1));
    КонецЕсли;
    Попытка
    СтруктураШапки.Вставить("СчетКонтрагента", ПолучитьРасчетныйСчет(ДокументВИсточнике.ПервичныйДокумент.СчетКонтрагента));
    Исключение
    СтруктураШапки.Вставить("СчетКонтрагента", ПолучитьРасчетныйСчет(ДокументВИсточнике.Субконто1.ОсновнойСчет));
    КонецПопытки;
    КонецЕсли;
    
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе	</span>
    //		СтруктураШапки.Вставить("ВидОперации", Перечисления.ВидыОперацийППИсходящее.ПрочееСписаниеБезналичныхДенежныхСредств);
    СтруктураШапки.Вставить("СчетУчетаРасчетовСКонтрагентом", ПолучитьСчет(ДокументВИсточнике.КоррСчет));	
    КонецЕсли;
    
    СтруктураШапки.Вставить("ОтражатьВНалоговомУчете", Истина);
    
    СтруктураШапки.Вставить("СуммаДокумента", ДокументВИсточнике.Расход);
    
    Возврат СтруктураШапки;
    
    КонецФункции
    
    
    А вот при заполнении не могу правильно написать, чтоб , допустим при оплате от покупателя он закидывал в ТЧ РасшифровкаПлатежа, при перечислении ЗП в ТЧ ПеречислениеЗаработнойПлаты

    Код:
    Функция СформироватьСтруктуруПараметровТЧ_СписаниеСРасчетногоСчета(ДокументВИсточнике)
    
    СтруктураТЧ = Новый Структура();
    Если Найти(Строка(ДокументВИсточнике.КоррСчет.Код),"60") > 0 Тогда
    Если СокрЛП(ДокументВИсточнике.Субконто1)<>"" Тогда
    Если СокрЛП(ДокументВИсточнике.Субконто2)<>"" Тогда
    ТЗ_ТЧ = Новый ТаблицаЗначений();
    ТЗ_ТЧ.Колонки.Добавить("ДоговорКонтрагента");
    ТЗ_ТЧ.Колонки.Добавить("КурсВзаиморасчетов");
    ТЗ_ТЧ.Колонки.Добавить("СуммаПлатежа");
    ТЗ_ТЧ.Колонки.Добавить("СуммаВзаиморасчетов");
    ТЗ_ТЧ.Колонки.Добавить("КратностьВзаиморасчетов");
    ТЗ_ТЧ.Колонки.Добавить("СтавкаНДС");
    ТЗ_ТЧ.Колонки.Добавить("СуммаНДС");
    ТЗ_ТЧ.Колонки.Добавить("СтатьяДвиженияДенежныхСредств");
    ТЗ_ТЧ.Колонки.Добавить("СчетУчетаРасчетовСКонтрагентом");
    ТЗ_ТЧ.Колонки.Добавить("СчетУчетаРасчетовПоАвансам");
    ТЗ_ТЧ.Колонки.Добавить("ПлатежныйДокумент");
    //ТЗ_ТЧ.Колонки.Добавить("СуммаПлатежа");
    //ТЗ_ТЧ.Колонки.Добавить("ФизЛицо");
    НоваяСтрока = ТЗ_ТЧ.Добавить();
    КонецЕсли;
    
    КонецЕсли;
    
    НоваяСтрока.КурсВзаиморасчетов      = 1;
    НоваяСтрока.СуммаПлатежа            = ДокументВИсточнике.Расход;
    НоваяСтрока.СуммаВзаиморасчетов     = ДокументВИсточнике.Расход;
    НоваяСтрока.КратностьВзаиморасчетов = 1;
    НоваяСтрока.СтавкаНДС               = Перечисления.СтавкиНДС.БезНДС;
    //НоваяСтрока.ПлатежныйДокумент       = ("ПустаяССылка")
    СтруктураТЧ.Вставить("ИмяТабличнойЧасти", "РасшифровкаПлатежа");
    СтруктураТЧ.Вставить("ТабличнаяЧасть"   , ТЗ_ТЧ);
    
    ИначеЕсли Найти(Строка(ДокументВИсточнике.КоррСчет.Код),"70") > 0 Тогда
    Если СокрЛП(ДокументВИсточнике.Субконто1)<>"" Тогда
    Если СокрЛП(ДокументВИсточнике.Субконто2)<>"" Тогда
    ТЗ_ТЧ = Новый ТаблицаЗначений();
    ТЗ_ТЧ.Колонки.Добавить("СуммаПлатежа");
    ТЗ_ТЧ.Колонки.Добавить("ФизЛицо");
    НоваяСтрока = ТЗ_ТЧ.Добавить();
    КонецЕсли;
    КонецЕсли;
    СтруктураТЧ.Вставить("ИмяТабличнойЧасти","ПеречислениеЗаработнойПлаты");
    СтруктураТЧ.Вставить("ТабличнаяЧасть"   , ТЗ_ТЧ);
    КонецЕсли;
    
    Возврат СтруктураТЧ;
    КонецФункции
    
    

    {ВнешняяОбработка.ОбменДаннымиМеждуТиповыми7_8_OLE.МодульОбъекта(33)}: Поле объекта не обнаружено (ИмяТабличнойЧасти)
    Если НЕ СтруктураПараметровТЧ.ИмяТабличнойЧасти = Неопределено Тогда



    НО когда убираю сопостовления,т.е. просто гружу все одну т.ч. грузит нормально....
  2. TheSerg
    Offline

    TheSerg

    Регистрация:
    17 авг 2011
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Код:
    Если СокрЛП(ДокументВИсточнике.Субконто1)<>"" Тогда
    Если СокрЛП(ДокументВИсточнике.Субконто2)<>"" Тогда 
    
    Смущают вот эти условия, и то что после нич вы пытаетесь заполнять строки объекта, которого не существует если хотя одно условие не истинно.
  3. TopicStarter Overlay
    n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Проблема решилась так: в процедуре, которая создает документ было так
    Код:
    Если НЕ СтруктураПараметровТЧ.ИмяТабличнойЧасти = Неопределено Тогда
    
    а вот так не ругается
    Код:
    Если НЕ СтруктураПараметровТЧ.количество()=0 Тогда
    

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