Гость
Форумы / [игнор отключен] [закрыт для гостей] / Различное поведение при копировании документа по F9 и через OLE / 19 сообщений из 19, страница 1 из 1
01.08.2013, 19:26
    #38352103
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
Здравствуйте!

1с 8.2, Бухгалтерия 3.0

В работающей программе делаю копию (F9) документа, копия создаётся и записывается.

В иной программе, действуя через OLE, код:

Код: pascal
1.
2.
3.
4.
5.
6.
var   VDocRec, VNewWare, FormVDoc, VDocCopy: OLEVariant;
begin
 VDoc:=V.Documents.РеализацияТоваровУслуг.НайтиПоНомеру('0000-000004','20131231');
 if VDoc.Пустая() then exit;
 VDocCopy:= VDoc.Скопировать();
 VDocCopy.Записать();



в момент записи выскакивает ошибка:

Класс: EOleException
Информация: Error running processor - 'ПередЗаписью'
{Документ.РеализацияТоваровУслуг.МодульОбъекта(401)}: Object field is not writable (ДополнительныеСвойства)



если код немного изменить, и перед записью попросить показать форму не записанного документа:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var   VDocRec, VNewWare, FormVDoc, VDocCopy: OLEVariant;
begin
 VDoc:=V.Documents.РеализацияТоваровУслуг.НайтиПоНомеру('0000-000004','20131231');
 if VDoc.Пустая() then exit;
 VDocCopy:= VDoc.Скопировать();

FormVDoc:=VDocCopy.ПолучитьФорму();
 FormVDoc.Открыть();


 VDocCopy.Записать();



то видно, что копия есть, номер новый, 0000-000005. Форма правда не живая, и не стандартная для этого документа.

В чём может быть причина такого различного поведения, какие поля надо подправить, что-бы документ всё-таки записался?
...
Рейтинг: 0 / 0
01.08.2013, 21:38
    #38352192
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
zeon11В чём может быть причина такого различного поведения, какие поля надо подправить, что-бы документ всё-таки записался?
в правах
...
Рейтинг: 0 / 0
02.08.2013, 06:32
    #38352358
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
Shuhardzeon11В чём может быть причина такого различного поведения, какие поля надо подправить, что-бы документ всё-таки записался?
в правах

Вхожу через OLE как "Администратор". У него мало прав?
...
Рейтинг: 0 / 0
02.08.2013, 07:17
    #38352364
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
zeon11,
а что за код у вас в "{Документ.РеализацияТоваровУслуг.МодульОбъекта(401)}:"?
ДополнительныеСвойства-свойство действительно только для чтения, это структура.
Можно только вставлять туда значения,да читать их.
...
Рейтинг: 0 / 0
02.08.2013, 07:53
    #38352373
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
zeon11Вхожу через OLE как "Администратор"
это не роль, это пользователь
...
Рейтинг: 0 / 0
02.08.2013, 16:02
    #38353262
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
Shuhardzeon11Вхожу через OLE как "Администратор"
это не роль, это пользователь

Вот код создания объекта:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
             V:=CreateOleObject('V82.Application');  //Создание OLE объекта  
             if VarIsEmpty(V) then begin
                                    PlInterFace.AddVerbose('Нет соединения с 1С');
                                    exit;
                                   end;
             ConnectStr:='File='+P.EditPath.Text+'; Usr='+P.EditUsr.Text+'; Pwd='+P.EditPwd.Text;  
             PlInterFace.AddVerbose('Попытка соединения с БД: '+ConnectStr);
             if V.Connect(ConnectStr) then ............. Всё ОК! ;



Я вхожу через OLE с теми-же параметрами (пользователь-пароль), что и в "предприятие" по-белому. Где тут роль?
Если-бы явно определялась роль при входе через OLE, то и при входе в "предприятие" по-белому она должна определяться явно.
...
Рейтинг: 0 / 0
02.08.2013, 17:30
    #38353423
Последний выдох ГПЖ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
заполняется форма чем-то при открытии после f9 в gui, а программно - нет... ole кстати это принципиально? есть более "легкий" com
...
Рейтинг: 0 / 0
02.08.2013, 17:31
    #38353425
Последний выдох ГПЖ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
БП 3.0 под рукой нет - скопируйте тест ПередЗаписью из Бп сюда если он не сильно длинный - так возможно будет более понятно в чем проблема.
...
Рейтинг: 0 / 0
02.08.2013, 17:37
    #38353434
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
pailzeon11,
а что за код у вас в "{Документ.РеализацияТоваровУслуг.МодульОбъекта(401)}:"?
ДополнительныеСвойства-свойство действительно только для чтения, это структура.
Можно только вставлять туда значения,да читать их.

Сделал так:
Код: pascal
1.
2.
3.
4.
5.
 VDocCopy:= VDoc.Скопировать();
 i:=VDocCopy.ДополнительныеСвойства.Count;
 ShowMessage(IntToStr(i));
 VDocCopy.ДополнительныеСвойства.Clear();
 VDocCopy.Записать();



i показывает 0, на всякий случай очистил все доп. свойства, однако ошибка осталась.
...
Рейтинг: 0 / 0
02.08.2013, 17:41
    #38353442
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
Последний выдох ГПЖзаполняется форма чем-то при открытии после f9 в gui, а программно - нет... ole кстати это принципиально? есть более "легкий" com

К сожалению, у меня есть только опыт в OLE в 7.7. В других технологиях 1с, как Вы уже поняли, я не силён :-(
...
Рейтинг: 0 / 0
02.08.2013, 17:58
    #38353473
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
Последний выдох ГПЖБП 3.0 под рукой нет - скопируйте тест ПередЗаписью из Бп сюда если он не сильно длинный - так возможно будет более понятно в чем проблема.

Увы, я не знаю как это сделать ...

Да и "ПередЗаписью" найти не могу. Вот что только есть: (на рисунке)
...
Рейтинг: 0 / 0
02.08.2013, 18:43
    #38353518
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
zeon11,
Вам открытым текстом платформа про строку в МОДУЛЕ ОБЪЕКТА сказала.
Заглядывать в поисках в модуль формы? странно.....
...
Рейтинг: 0 / 0
02.08.2013, 20:09
    #38353558
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
pailzeon11,
Вам открытым текстом платформа про строку в МОДУЛЕ ОБЪЕКТА сказала.
Заглядывать в поисках в модуль формы? странно.....

Спасибо, еле нашёл. Теперь буду знать, где искать:


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

ОбщегоНазначенияБПВызовСервера.ЗафиксироватьВремяНачалаКлючевойОперации( ДополнительныеСвойства , Справочники.КлючевыеОперации.ПроведениеРеализацияТоваровИУслуг);

// Посчитать суммы документа и записать ее в соответствующий реквизит шапки для показа в журналах
СуммаДокумента = УчетНДСПереопределяемый.ПолучитьСуммуДокументаСНДС(ЭтотОбъект, "Товары")
+ УчетНДСПереопределяемый.ПолучитьСуммуДокументаСНДС(ЭтотОбъект, "Услуги")
+ УчетНДСПереопределяемый.ПолучитьСуммуДокументаСНДС(ЭтотОбъект, "АгентскиеУслуги");

// В этом случае почистим в табличных частях поля СпособСписанияОстаткаТоваров, НомерГТД и СтранаПроисхождения.
Если ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Оборудование Тогда
Для каждого СтрокаТаблицы Из ЭтотОбъект.Товары Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.НомерГТД)Тогда
СтрокаТаблицы.НомерГТД = Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицы.СтранаПроисхождения)Тогда
СтрокаТаблицы.СтранаПроисхождения = Неопределено;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Если ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности Тогда
Услуги.Очистить();
АгентскиеУслуги.Очистить();
НачислятьНДСПоОтгрузке = УчетнаяПолитика.НачислятьНДСПоОтгрузке(Организация, Дата);
Если НачислятьНДСПоОтгрузке Тогда
УчетНДСПереопределяемый.СинхронизацияПометкиНаУдалениеУСчетаФактуры(ЭтотОбъект, "СчетФактураВыданный");
Иначе
УчетНДСПереопределяемый.УстановкаПометкиНаУдалениеУСчетаФактуры(ЭтотОбъект, "СчетФактураВыданный", Истина);
КонецЕсли;
Иначе
УчетНДСПереопределяемый.СинхронизацияПометкиНаУдалениеУСчетаФактуры(ЭтотОбъект, "СчетФактураВыданный");
КонецЕсли;

Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьВозвратнуюТару")
И ВозвратнаяТара.Количество() > 0 Тогда
ВозвратнаяТара.Очистить();
КонецЕсли;

// Если передаем товар на комиссию, то услуг не может быть
ЭтоКомиссия = ОбщегоНазначения.ПолучитьЗначениеРеквизита(
ДоговорКонтрагента, "ВидДоговора") = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
ЭтоОтгрузка = ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности;
Если ЭтоКомиссия ИЛИ ЭтоОтгрузка Тогда
Услуги.Очистить();
КонецЕсли;

КонецПроцедуры
...
Рейтинг: 0 / 0
02.08.2013, 20:26
    #38353565
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
Выгрузил документ в XML, никакие ДополнительныеСвойства в нём не обнаружены
...
Рейтинг: 0 / 0
02.08.2013, 20:34
    #38353570
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
zeon11,
тут, похоже, вот какая засада (на давно которую нарывался при освоении УФ, с другими, правда, проявлениями):
по разному трактуются платформой свойства параметров при вызове серверных методов в режимах управляемого и обычного приложения.
Трудно сказать, из-за чего - но вроде как для параметров, которые только-для чтения следовало бы явно указывать ЗНАЧ (т.е. передача по значению, а не как обычно по ссылке).
В режиме УФ отсутствие ЗНАЧ для ДополнительныеСвойства прокатывает, а для обычного режима, к которому восходит OLE - нет.
БП3 написана БЕЗ учета совместимости с обычным режимом.
Попробуйте не V82.Application использовать, а V82.ComObject - не проявлялись там такие проблемы никогда.
Да и вообще - забыть OLE как страшный сон.
...
Рейтинг: 0 / 0
02.08.2013, 20:38
    #38353572
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
zeon11Выгрузил документ в XML, никакие ДополнительныеСвойства в нём не обнаружены
Это runTime свойство - никакой выгрузке не подлежит. Но оно есть,и активно используется в конфигурации
...
Рейтинг: 0 / 0
02.08.2013, 21:34
    #38353616
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
pail,

Спасибо, что уделяете мне внимание. Завтра попробую. У нас сейчас пол-первого ночи. Голова не варит. А на ногах с пол-шестого.
Ещё раз спасибо.

А что вместо ОЛЕ посоветуете?
...
Рейтинг: 0 / 0
02.08.2013, 22:04
    #38353631
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
zeon11,
Код: vbnet
1.
2.
connector:=CreateOleObject('V82.ComConnector');  //Создание COM объекта  
V:=connector.connect(ConnectStr);  // открыть соединение с базой


Далее - как с OLE, можно вызывать любые объекты, свойства и методы через переменную V. Кроме пользовательского интерфейса.
...
Рейтинг: 0 / 0
04.08.2013, 06:48
    #38354150
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различное поведение при копировании документа по F9 и через OLE
pail,

Большое спасибо, с 'V82.ComConnector' всё получилось!
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Различное поведение при копировании документа по F9 и через OLE / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]