Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.02.2013, 00:11
Magistrate Magistrate вне форума
Прохожий
 
Регистрация: 24.02.2013
Сообщения: 1
Репутация: 10
По умолчанию Програмное создание договора контрагента в 1С из Delphi

Уважаемые коллеги!

Приложению Delphi требуется экспортировать данные контрагентов и их договоров в 1С.

Экспорт и импорт контрагентов происходит без ошибок, а при экспорте договоров возникает ошибка - Не удалось записать: "Договоры контрагентов"!

Фрагмент кода примерно следующий:

Код:
procedure TForm1.BtnExportDocClick(Sender: TObject);
var
 ole_Persons, ole_1C, ole_TekDoc, ole_Doc, ole_Creditor,
 ole_Temp, ole_CurrentPerson: OleVariant;
 I, R: Integer;
 S: String;
begin
 if VarIsEmpty(ole_1C) then
begin
 ole_1C := CreateOleObject('V82.COMConnector');
 ole_1C := ole_1C.Connect('File = d:ХХХ');
end;

if not VarIsEmpty(ole_1C) then
begin
 ole_Doc := ole_1C.Справочники.ДоговорыКонтрагентов;
 if not VarIsEmpty(ole_Doc) then
 begin
 ole_Temp := UnAssigned;
 for I := 0 to Form1.SG.RowCount - 1 do // SG - некий StringGrid с данными...
begin
 S := SG.Cells[0,I];
 ole_Temp := ole_Doc.НайтиПоКоду(S);
if ole_1C.XMLString(ole_Temp) = ole_1C.XMLString(ole_Doc.ПустаяСсылка()) then
begin
 ole_TekDoc := ole_Doc.СоздатьЭлемент();
 ole_TekDoc.Код := SG.Cells[0,I];
 ole_TekDoc.Наименование := SG.Cells[1,I]; // наименование Договора
 ole_TekDoc.НаименованиеДляПечати := SG.Cells[1,I];
 ole_Persons := ole_1C.Справочники.Контрагенты;
 ole_Temp := ole_Persons.НайтиПоРеквизиту('КодПоЕДРПОУ', '12345678');
 ole_TekDoc.Владелец := ole_Temp // контрагент
 ole_Persons := ole_1C.Справочники.Организации;
 ole_Temp := ole_Persons.НайтиПоКоду('000000001');
 ole_TekDoc.Организация := ole_Temp;
 ole_TekDoc.Дата := SG.Cells[6,I];
 ole_TekDoc.Номер := SG.Cells[7,I];
 ole_TekDoc.УстановленСрокОплаты := True;
 ole_TekDoc.СрокОплаты := SG.Cells[8,I];
 ole_Temp := ole_1C.Справочники.Валюты.НайтиПоКоду('980');
 ole_TekDoc.ВалютаВзаиморасчетов := ole_Temp; // валюта
 ole_Temp := ole_1C.Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
 ole_TekDoc.ВедениеВзаиморасчетов := ole_Temp;
 ole_Temp := ole_1C.Перечисления.ВидыДоговоровКонтрагентов.Прочее;
 ole_TekDoc.ВидДоговора := ole_Temp;
 ole_TekDoc.Записать(); // Здесь возникает ошибка - Не удалось записать: "Договоры контрагентов"! 
 end;
 end;
 end; end; 
MAD: Учимся правильно оформлять код!

Ввод договора и его реквизитов в самой среде 1С происходит при заполнении минимально необходимых параметров. При заполнении этих параметров во внешнем соединении через COM при попытке сохранения происходит вышеупомянутая ошибка.

Если кто-либо сталкивался с подобными вопросами прошу подсказать все ли параметры указаны для сохранения или где может быть ошибка.

Платформа 1С 8.2.15.318

Заранее благодарен.

Последний раз редактировалось M.A.D.M.A.N., 24.02.2013 в 00:20.
Ответить с цитированием
  #2  
Старый 11.03.2013, 13:41
qeos qeos вне форума
Прохожий
 
Регистрация: 11.03.2013
Сообщения: 4
Репутация: 10
По умолчанию

1С так же должна указывать причину по которой не удалось записать. В модуле 1С в функциях ПередЗаписью илиПриЗаписи происходит проверка правильности заполнения и выдается сообщение если чтото не так.
Смотрите все сообщение об ошибке.

так же можно включить Записать() внутрь конструкции try/finally и получить описание ошибки
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter