|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Програмное создание договора контрагента в 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; Ввод договора и его реквизитов в самой среде 1С происходит при заполнении минимально необходимых параметров. При заполнении этих параметров во внешнем соединении через COM при попытке сохранения происходит вышеупомянутая ошибка. Если кто-либо сталкивался с подобными вопросами прошу подсказать все ли параметры указаны для сохранения или где может быть ошибка. Платформа 1С 8.2.15.318 Заранее благодарен. Последний раз редактировалось M.A.D.M.A.N., 24.02.2013 в 00:20. |
#2
|
|||
|
|||
1С так же должна указывать причину по которой не удалось записать. В модуле 1С в функциях ПередЗаписью илиПриЗаписи происходит проверка правильности заполнения и выдается сообщение если чтото не так.
Смотрите все сообщение об ошибке. так же можно включить Записать() внутрь конструкции try/finally и получить описание ошибки |