Регистрация Правила Главная форума Поиск |
0
- 10.03.2012 - 20:16
|
Не удается программно внести изменения в документ ЗАКАЗ КЛИЕНТА удаленной базы. База из которой подключаюсьПлатформа 1С 8.1.15.14 База Самописная База к которой подключаюсь Платформа 1С 8.2.15.294 Управление Торговлей 11.0.7.13 ( управляемые формы) Кусок кода программы: ИБ = Новый COMОбъект("V82.Application"); ПутьКбазе="D:\Управление торговлей11.0.7.13\"; Пользователь="Администратор"; Пароль="пароль"; //При соединении к файловой базе СтрокаСоединения = "File="""+СокрЛП(ПутьКбазе)+""";Usr="""+СокрЛП(Пол ьзователь)+""";Pwd = """ + СокрЛП(Пароль) + """;"; Открыта = ИБ.Connect(СтрокаСоединения); ИБ.visible=Ложь; Если Открыта=0 Тогда Сообщить("База не была открыта."); Возврат; КонецЕсли; МойРежимОтменаПроведенияДокумента=ИБ.РежимЗаписиДо кумента.ОтменаПроведения; МойРежимЗаписиДокумента=ИБ.РежимЗаписиДокумента.за пись; Запрос = ИБ.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | ЗаказКлиента.Ссылка как Ссылка, | ЗаказКлиента.Дата как Дата, | ЗаказКлиента.Номер как Номер, | ЗаказКлиента.Партнер как Контрагент, | ЗаказКлиента.Контрагент как Магазин, | ЗаказКлиента.ЖелаемаяДатаОтгрузки как ДатаОтгрузки, | ЗаказКлиента.Комментарий Как Комментарий |ИЗ | Документ.ЗаказКлиента КАК ЗаказКлиента | ГДЕ | ЗаказКлиента.ПометкаУдаления = ЛОЖЬ"; Результат = Запрос.Выполнить(); ВыборкаДокументы = Результат.Выбрать(); Пока ВыборкаДокументы.Следующий() Цикл ДокументЗаказКлиента=ИБ.Документы.ЗаказКлиента.Най тиПоНомеру(ВыборкаДокументы.Номер,ВыборкаДокументы .Дата); Если НЕ ДокументЗаказКлиента.Пустая() Тогда ДокументЗаказКлиентаПолучить1=ИБ.Документы.ЗаказКл иента.НайтиПоНомеру(ВыборкаДокументы.Номер,Выборка Документы.Дата).ПолучитьОбъект(); ДокументЗаказКлиентаПолучить1.Записать(МойРежимОтм енаПроведенияДокумента); ДокументЗаказКлиентаПолучить1.Комментарий="Мой комментарий"; ДокументЗаказКлиентаПолучить1.Записать(МойРежимЗап исиДокумента); КОнецЕсли; КонецЦикла; Ошибка которую получаю: {Форма.Форма(118)**: Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация (1C:Enterprise 8.2.15.294): Ошибка при выполнении обработчика - 'ПередЗаписью' {Документ.ЗаказКлиента.МодульОбъекта(792)**: Поле объекта недоступно для записи (ЭтотОбъект) ДокументЗаказКлиентаПолучить1.Записать(МойРежимОтм енаПроведенияДокумента); по причине: Произошла исключительная ситуация (1C:Enterprise 8.2.15.294): Ошибка при выполнении обработчика - 'ПередЗаписью' {Документ.ЗаказКлиента.МодульОбъекта(792)**: Поле объекта недоступно для записи (ЭтотОбъект) Что я неправильно делаю? | |
1
- 11.03.2012 - 09:10
|
Такая байда может возникнуть из-за различных режимов запуска. В режиме предприятия выполнение модуля передается в серверный контекст. При указанном коде, проведение идет в режиме внешнего соединения. А вообще, конечно, надо запускать отладчик в серверной базе и смотреть отличия в выполнении при работе через обычный интерфейс и в режиме доступа через OLE. У меня под рукой сейчас нет свежей УТ, так что протелепатить, что же там происходит в строке 792 - я не могу. | |
2
- 11.03.2012 - 12:02
|
хорошо, тогда как нужно изменить код ИБ = Новый COMОбъект("V82.Application"); ПутьКбазе="D:\Управление торговлей11.0.7.13\"; Пользователь="Администратор"; Пароль="пароль"; //При соединении к файловой базе СтрокаСоединения = "File="""+СокрЛП(ПутьКбазе)+""";Usr="""+СокрЛП (Пол ьзователь)+""";Pwd = """ + СокрЛП(Пароль) + """;"; Открыта = ИБ.Connect(СтрокаСоединения); чтобы база запускалась не управляемых формах а в обычных? что нужно прописать в коде подключения а информационной базе? | |
3
- 11.03.2012 - 12:38
|
(3) Ты в ЛЮБОМ случае подключаешься в режиме внешнего соединения, хоть через COM-коннектор, хоть через OLE-Automation. Вопрос в том, как передать исполнение на сервер, под который заточены модули проведения. Проще всего это сделать вызовом процедуры из чисто серверного модуля на стороне OLE-сервера, которая в свою очередь запишет и проведет документ. Куда это проще всего приткнуть с точки зрения УТ 11 - не скажу, надо смотреть в конфе. Кроме того, опять же, вполне вероятно, что эту проблему можно исключить значительно более простыми средствами конфы и проблема именно в ней, а не в режиме подключения. Надо запускать отладчик. ПЫСЫ: А зачем вообще 1c.Application? Почему не через COM-коннектор? | |
4
- 11.03.2012 - 16:50
| в принципе с без разницы 1c.Application или СОМ-коннектор. все равно не работает в обоих случаях | |
5
- 12.03.2012 - 15:24
|
Нашел в УТ эту строку. Код модуля записи совсем не предназначен для работы из внешнего соединения. При самом большом желании ЭтотОбъект не переедет с внешнего соединения на сервер. Изменяй из какого нить модуля серверного на стороне automation сервера | |
| Интернет-форум Краснодарского края и Краснодара |