К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

УТ 8.2 Не удается программно внести изменения в документ ЗАКАЗ КЛИЕНТА удаленной базы.

Гость
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 сервера


К списку вопросов






Copyright ©, Все права защищены