Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE
|
|||
|---|---|---|---|
|
#18+
Знаю, что тема поднималась не один раз, но все же решения с 1С 8.2 не нашел. Итак: при переходе с 1С 7.7 на 8.2 БП 3.0 пришлось переписывать связь с внешним приложением. Интеграция с 1С 7.7 работает замечательно и много где расписана, а вот с 8.2 дела обстоят хуже – информации практически нет. Но все же: запуск 1С 8.2 реализован, чтение данных из 1С 8.2 реализовать тоже удалось. А вот с записью возникли сложности, поэтому прошу помощи. Произвожу создание и запись контрагентов следующим способом: var OneSv8Obj, Ware, ObjForm: OleVariant; ... Ware := OneSv8Obj.Справочники.Контрагенты.СоздатьЭлемент(); Ware.ЮридическоеФизическоеЛицо := OneSv8Obj.Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо; Ware.Наименование := edShortName.Text; Ware.НаименованиеПолное := edFullName.Text; Ware.ИНН := edINN.Text; Ware.КПП := edKPP.Text; Ware.КодПоОКПО := edOKPO.Text; ... Ware.Записать(); На последнюю строчку ругается: «Ошибка при выполнении обработчика – ‘ПередЗаписью’. Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода Обмен1СКЗБухгалтерия30ПередЗаписью ()» Сами данные в 1С из внешнего приложения передаются. Это можно видеть, если запустить форму следующим способом: ObjForm := Ware1.ПолучитьФорму(); ObjForm.Открыть('ФормаЭлемента'); Всю голову сломал – как побороть не знаю. По всей видимости какие-то настройки 1С. Help!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 09:28 |
|
||
|
Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE
|
|||
|---|---|---|---|
|
#18+
-=Gremlin=-, Вам же написано, что у Вас передаются мутабельные значения. Приводите сначала записываемые данные к простым типам и уже после присваивайте реквизитам объекта 1С и будет Вам щастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 09:58 |
|
||
|
Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE
|
|||
|---|---|---|---|
|
#18+
Я скорее всего чего то недопонимаю... Ткните, какой из передаваемых параметров является мутабельным? Ware.ЮридическоеФизическоеЛицо := OneSv8Obj.Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо - это ссылка на справочник Ware.Наименование := edShortName.Text - это простая строка Больше ничего не передаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 11:07 |
|
||
|
Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE
|
|||
|---|---|---|---|
|
#18+
-=Gremlin=-, Как насчет Ware.ОбменДанными.Загрузка = Истина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 11:23 |
|
||
|
Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE
|
|||
|---|---|---|---|
|
#18+
Зарегался, установка этого не влияет на результат, та же самая ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 11:35 |
|
||
|
Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE
|
|||
|---|---|---|---|
|
#18+
-=Gremlin=-, надо в Обмен1СКЗБухгалтерия30ПередЗаписью () что там делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 12:10 |
|
||
|
Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE
|
|||
|---|---|---|---|
|
#18+
К сожалению, в программировании 1С не очень силен. Вот процедуры: Процедура Обмен1СКЗБухгалтерия30ПередЗаписью(Источник, Отказ) Экспорт ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписью("Обмен1С_КАМИН_ЗарплатаБухгалтерия30", Источник, Отказ); КонецПроцедуры Процедура МеханизмРегистрацииОбъектовПередЗаписью(ИмяПланаОбмена, Источник, Отказ) Экспорт МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ); КонецПроцедуры Процедура МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Объект, Отказ, РежимЗаписи = Неопределено, Замещение = Ложь, ЭтоРегистр = Ложь, ЭтоУдалениеОбъекта = Ложь, ЭтоКонстанта = Ложь ) ОтключитьМеханизмРегистрацииОбъектов = Ложь; Если Объект.ДополнительныеСвойства.Свойство("ОтключитьМеханизмРегистрацииОбъектов", ОтключитьМеханизмРегистрацииОбъектов) И ОтключитьМеханизмРегистрацииОбъектов = Истина Тогда Возврат; // отказались от выполнения КонецЕсли; ОбъектМетаданных = Объект.Метаданные(); Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда Если Не РазделенныйПланОбмена(ИмяПланаОбмена) Тогда ВызватьИсключение НСтр("ru = 'Регистрация изменений для неразделенных планов обмена не поддерживается.'"); КонецЕсли; Если ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда Если Не РазделенныеДанные(ОбъектМетаданных) Тогда ВызватьИсключение НСтр("ru = 'Регистрация изменений неразделенных данных в разделенном режиме.'"); КонецЕсли; Иначе Если РазделенныеДанные(ОбъектМетаданных) Тогда ВызватьИсключение НСтр("ru = 'Регистрация изменений разделенных данных в неразделенном режиме.'"); Иначе // Для неразделенных данных в неразделенном режиме выполняем регистрацию изменений данных // на всех узлах разделенных планов обмена. // Использование механизма правил регистрации в этом режиме не поддерживается. ТекстЗапроса = "ВЫБРАТЬ | ПланОбмена.Ссылка КАК Получатель |ИЗ | ПланОбмена.[ИмяПланаОбмена] КАК ПланОбмена |ГДЕ | НЕ ПланОбмена.ЭтотУзел | И НЕ ПланОбмена.ПометкаУдаления"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяПланаОбмена]", ИмяПланаОбмена); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Попытка Получатели = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Получатель"); Исключение ТекстЗапроса = "ВЫБРАТЬ | ПланОбмена.Ссылка КАК Получатель |ИЗ | ПланОбмена.[ИмяПланаОбмена] КАК ПланОбмена |ГДЕ | НЕ ПланОбмена.ПометкаУдаления"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяПланаОбмена]", ИмяПланаОбмена); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Получатели = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Получатель"); КонецПопытки; Для Каждого Получатель Из Получатели Цикл Попытка Объект.ОбменДанными.Получатели.Добавить(Получатель); Исключение // Обработка исключения не требуется. // Ожидаемо наличие в параметре "Получатели" преопределенных узлов разделенных планов обмена. КонецПопытки; КонецЦикла; КонецЕсли; Возврат; // Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() КонецЕсли; КонецЕсли; // проверяем актуальность кеша сеанса для МРО ОбменДаннымиВызовСервера.ПроверитьКэшМеханизмаРегистрацииОбъектов(); Если НЕ ОбменДаннымиВызовСервера.ОбменДаннымиВключен() Тогда Возврат; КонецЕсли; // определяем необходимость регистрации объекта на узле отправителе РегистрироватьОбъектНаУзлеОтправителе = Ложь; Если Объект.ДополнительныеСвойства.Свойство("РегистрироватьОбъектНаУзлеОтправителе", РегистрироватьОбъектНаУзлеОтправителе) И РегистрироватьОбъектНаУзлеОтправителе = Истина Тогда // обнуляем ссылку на узел отправитель Объект.ОбменДанными.Отправитель = Неопределено; КонецЕсли; // при физическом удалении объекта ВРО не выполняем ЗарегистрироватьОбъектКВыгрузке = ЭтоРегистр ИЛИ ЭтоУдалениеОбъекта ИЛИ ЭтоКонстанта; ОбъектМодифицирован = ОбъектМодифицированДляПланаОбмена(Объект, ОбъектМетаданных, ИмяПланаОбмена, РежимЗаписи, ЗарегистрироватьОбъектКВыгрузке); Если Не ОбъектМодифицирован Тогда Если ОбменДаннымиПовтИсп.АвтоРегистрацияРазрешена(ИмяПланаОбмена, ОбъектМетаданных.ПолноеИмя()) Тогда // если объект не модифицирован и он регистрируется автоматически, // то удаляем все узлы по авторегистрации для текущего плана обмена СократитьПолучателей(Объект, ВсеУзлыПланаОбмена(ИмяПланаОбмена)); КонецЕсли; // объект не модифицирован относительно текущего плана обмена // регистрацию на узлах этого плана обмена не выполняем Возврат; КонецЕсли; Если Не ОбменДаннымиПовтИсп.АвтоРегистрацияРазрешена(ИмяПланаОбмена, ОбъектМетаданных.ПолноеИмя()) Тогда ПроверятьСсылку = ?(ЭтоРегистр ИЛИ ЭтоКонстанта, Ложь, Не Объект.ЭтоНовый() И Не ЭтоУдалениеОбъекта); МассивУзловРезультат = Новый Массив; ВыполнитьПравилаРегистрацииОбъектовДляПланаОбмена(МассивУзловРезультат, Объект, ИмяПланаОбмена, ОбъектМетаданных, ПроверятьСсылку, ЭтоРегистр, ЭтоУдалениеОбъекта, Замещение, РежимЗаписи); // обработчик "После определения получателей" ОбменДаннымиПереопределяемый.ПослеОпределенияПолучателей(Объект, МассивУзловРезультат, ИмяПланаОбмена); ДополнитьПолучателей(Объект, МассивУзловРезультат); КонецЕсли; КонецПроцедуры Есть подписка "Обмен1СКАМИНЗарплатаБухгалтерия30ЗарегистрироватьИзменение", где в обработчике стоит вызов: ОбменДаннымиСобытияБП.Обмен1СКЗБухгалтерия30ПередЗаписью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 12:47 |
|
||
|
Запись в 1С 8.2 БП 3.0 из внешнего приложения через OLE
|
|||
|---|---|---|---|
|
#18+
-=Gremlin=-, Какой объект используете? V82.Application или V82C.Application? Есть ли соответствующая галка (толстый или тонкий клиент) у общего модуля ОбменДаннымиСобытияБП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 20:08 |
|
||
|
|

start [/forum/topic.php?fid=28&fpage=51&tid=1520103]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
90ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 191ms |

| 0 / 0 |
