Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Програмное создание договора контрагента из Delphi          
magistrate Подменю пользователя
сообщение 23.02.13, 16:24
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

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

Приложению 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С происходит при заполнении минимально необходимых параметров. При заполнении этих параметров во внешнем соединении при попытке сохранения происходит вышеупомянутая ошибка.

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

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

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


logist Подменю пользователя
сообщение 23.02.13, 17:32
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Вставьте в 1С в запись договора вывод описания ошибки в журнал регистрации. Найдете проблему за минуту.

Как вариант лажает тут:
ole_Temp := ole_Persons.НайтиПоРеквизиту('КодПоЕДРПОУ', '12345678');
ole_TekDoc.Владелец := ole_Temp // контрагент
т.к. ничего не находит (это совсем не значит что такого кода в базе нет, возможно у него там пробел, или еще чего)


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Ardi,

Zaval Подменю пользователя
сообщение 23.02.13, 18:33
Сообщение #3

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

А Контрагент к этому моменту уже записан? Или еще висит в незавершенной транзакции?

Цитата(magistrate @ 23.02.13, 16:24) *
Ввод договора и его реквизитов в самой среде 1С происходит при заполнении минимально необходимых параметров.


При интерактивном вводе учитываются настройки программы, учетная политика, значения по умолчанию и пр.
Уверены, что Договор вида "Прочее" - именно то, что нужно? smile.gif

Зря Вы на одинэснике сэкономить решили...

Сообщение отредактировал Zaval - 23.02.13, 18:24

Vofka Подменю пользователя
сообщение 23.02.13, 20:01
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

magistrate, вы же не то ищете:

Цитата(magistrate @ 23.02.13, 16:24) *
ole_Doc := ole_1C.Справочники.ДоговорыКонтрагентов;


Надо

ole_Doc := ole_1C.Справочники.Контрагенты;

Цитата(Zaval @ 23.02.13, 18:33) *
Зря Вы на одинэснике сэкономить решили...

Почему сэкономить, может это и есть одинэсник smile.gif . По крайней мере по его коду видно, что в 1С он что-то соображает.

Сообщение отредактировал Vofka - 23.02.13, 20:02

magistrate Подменю пользователя
сообщение 23.02.13, 21:21
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Контрагент или уже записан или ранее внесен. Сначала экспорт контрагентов потом договоров.

Договор вида "Прочее" используется для отладки. Какой из имеющихся в 1С видов договоров будет выбран - определит пользователь в соответствующем меню. В конфигурации (Бухгалтерия для Украины, редакция 1.2) их 6 видов. Кстати интересно с точки зрения бухгалтерии к какому виду могут быть отнесены договора займа?

Vofka Подменю пользователя
сообщение 23.02.13, 21:38
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Пожалуйста.

logist Подменю пользователя
сообщение 23.02.13, 22:27
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(magistrate @ 23.02.13, 21:21) *
с точки зрения бухгалтерии к какому виду могут быть отнесены договора займа?

Прочий


Signature
Личные бесплатные консультации не даю, для этого есть форум!

magistrate Подменю пользователя
сообщение 24.02.13, 18:25
Сообщение #8

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(logist @ 23.02.13, 17:32) *
Вставьте в 1С в запись договора вывод описания ошибки в журнал регистрации. Найдете проблему за минуту.


После вставки в отладчике под 1С ошибка выявилась. Для заполнения также обязателен реквизит ВедениеВзаиморасчетовНУ. К сожалению признаки not null в конфигураторе у реквизитов не стоят. logist-у спасибо!

Сообщение отредактировал Vofka - 24.02.13, 18:49

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 30.05.24, 9:16
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!