Пытаюсь вручную из скрипта добавить ДоговорКонтрагента в 1С Сам Контрагент благополучно создался.
А договор этого контрагента выдаёт при создании следуйщую извесную ошибку
"Не удалось сохранить Договор Контрагента!"
вот код которым пытаюсь сохранить договор:
var Invoice1C = v8.Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
Invoice1C.Дата ="10.09.2012";
Invoice1C.Номер ="92837482374";
Есть подозрение, что какое-то из полей даты есть обязательным для заполнения, но:
Если в начале строки содержится что-то, что может быть проинтерпретировано как строковое представление даты в виде ДД.ММ.ГГ, где ГГ- две цифры года, ММ- числовое обозначение месяца (01, ..., 12), ДД- день месяца, то будет произведено соответствующее преобразование. В противном случае значение даты будет нулевым.
Здравствуйте Дмитрий,
спасибо что отозвались.
заменил
Contract1C.Дата = "10.09.2012";
на
Contract1C.Дата = "10.09.12";
Не помогло.
Что ещё могу предоставить для нахождения "граблей".
Может скриншоты Конфигуратора 1С? Какие?
Дмитрий,
поставил перед Contract1C.Записать(); следующий код:
[javascript]
ShowInformationDialog(
'1. '+Contract1C.Код+"\r\n"+
'2. '+Contract1C.Владелец.Наименование+"\r\n"+
'3. '+Contract1C.Наименование+"\r\n"+
'4. '+Contract1C.Номер+"\r\n"+
'5. '+Contract1C.ВидДоговора.Метаданные().Имя+"\r\n"+
'6. '+Contract1C.Дата+"\r\n"+
'7. '+Contract1C.ВалютаВзаиморасчетов.Наименование+"\r\n"+
'8. '+Contract1C.Организация.Наименование+"\r\n");
[/javascript] Update: Дата появилась после изменения:
Contract1C.Дата = '10.09.2012 0:00:00';
Но ошибка сохранения всё равно осталась.
Александр, рекомендую обратить внимание на код карточки в 1С, которая создает договор контрагента. Там хитрая штука: без основного договора нельзя создать контрагента, а без контрагента - договор. При этом если одна из записей не сохранена в базу данных, то и ссылку на нее в другой записи поставить нельзя.
Для того, чтобы скрипт корректно работал, Вам следует переписать код 1С, который решает этот логический казус, в скрипте синхронизации Terrasoft.
Здравствуйте Анна,
спасибо что отозвались на зов помощи))
[code]
без основного договора нельзя создать контрагента, а без контрагента - договор.
[/code]
Дело в том что контрагент благополучно создаётся кодом:
[javascript]
tab2 = v8.Справочники.Контрагенты.СоздатьЭлемент();
tab2.Наименование = "ТТТ";
tab2.Записать();
[/javascript]
Без указания основного договора.
После чего я его благополучно НахожуПоНаименованию в вышеуказанном скриншоте/коде создания ДоговораКонтрагента.
А вот то же самое со СчётНаОплатуПокупателю и ДоговорКонтрагента не получается.
Не подскажите хоть "в какую сторону бежать", я в разработке 1С не силён.
Во вложении код 1С по Форме элемента ДоговорКонтрагента.
"Олейник Дмитрий" написал:Правильно ли я понимаю, что Contract1C.Код = ''; т.е. пусто?
Верно, я предположил что в 1С предусмотренна автонумерация подобно СРМ.
Но даже после подстановки
[code]
Contract1C.Код = "99999999999999";
[/code]
В скриншоте начал появляться присвоенный код, но ошибка сохранения осталась.
Анна, учитывая свойства поля КОД в конфигураторе 1С(см. скриншот), по идее предложенная Вами функция должна была вернуть нечто подобное
Contract1C.Код = "000932123";
или
Contract1C.Код = "GHDEDSASW";
Ошибка сохранения осталась.
У нас 1с v.82
но предложенный
[code]
Contract1C.УстановитьНовыйКод();
[/code]
Всё таки устанавливает код.
Дмитрий,
а подскажите пожалуйста как определить что поле обязательное, в 1С не очень силён...
Выше приводил пример текстовки модуля формы элемента ДоговораКонтрагентов
там есть некие проверки на заполненность. Этих полей достаточно? или есть где-то ещё в визуальном редакторе свойств формы чекбокс что поле обязательное?
Александр, можно попробовать установить отладчик в скрипте scr_Dataflow1CUtils_V80V81V82 в функции Prepare1CQuery и посмотрите, какой запрос в итоге уходит в 1С. Нас интересует содержимое Query.Text в самом конце функции.
Можно попробовать выполнить этот запрос непосредственно в 1С и посмотреть результат.
Анна, а как мне использовать сам Prepare1CQuery в scr_Dataflow1CUtils_V80V81V82 если я работаю напрямую с ActiveXObject и даже не подключаю данный скрипт к своему...
Какие фактические параметры передать Prepare1CQuery после подключения scr_Dataflow1CUtils_V80V81V82?
Дмитрий, Анна
спасибо большое
я разобрался.
У нас в 1С есть поле СхемаНалогообложения, которое не является обязательным, но без него 1С не сохраняет ДоговорКонтрагента.
Совет изыскателям таких же граблей - Просто в СРМ заполните абсолютно все поля договора(даже необязательные) и методом исключения поймёте чего не хватало.