Быстрая корректировка правил обмена при добавлении реквизита.

1. user950703 07.11.20 09:16 Сейчас в теме
Доброго времени суток, уважаемые.
Буквально вчера заказчик обновил конфигурацию БП 3.
И тут же в налаженном обмене из КА 1.1. начались проблемы.
Появилось сообщение при записи в целевую базу БП 3.0:

Ошибка в обработчике события ПослеЗагрузкиОбъекта
ИмяПКО = РеализацияТоваровУслуг
ТипОбъекта = Реализация (акт, накладная, УПД)
Объект = Реализация (акт, накладная, УПД) XXXXXXX от 05.11.2020 14:00:00
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПриЗаписи': {ОбщийМодуль.ЭлектронныйДокументооборотСКонтролирующимиОрганами.Модуль(2390)}: Ошибка при вызове метода контекста (ПолучитьОбработкуЭДО): Попытка передачи мутабельного значения результата метода ПолучитьОбработкуЭДО ().

Предварительный анализ показал, что возможным источником является добавление нового поля (реквизита), для обеспечения работы системы ЭДО в БП 3.0.

Вопрос заключаетcя в следующем: Существует ли возможность, не обновляя метаданные одной из баз, добавить в правила обмена новый реквизит, содержимое которого несущественно для функционала целевой базы.
По теме из базы знаний
Найденные решения
14. user950703 07.11.20 22:01 Сейчас в теме
(6)Спасибо. Натолкнуло на решение. Действительно, если выставить Клиент, то по идее, для файловой платформы, можно поставить в приоритет работу с объектом на клиенте вместо передачи объекта на сервер, а, значит, его мутирования.
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
8. Torin 741 07.11.20 16:30 Сейчас в теме
(1)
Обработчик = ПослеЗагрузкиОбъекта

Открываем правила в блокноте и ищем
ОбщийМодуль.ЭлектронныйДокументооборотСКонтролирующимиОрганами

Накладываем
// 

и едем дальше
10. user950703 07.11.20 17:58 Сейчас в теме
(8) В обработчике После загрузки объекта директив ОбщийМодуль.ЭлектронныйДокументооборотСКонтролирующимиОрганами
в настоящее время нет, поэтому заремить (отключить) его я не имею возможности
2. user633533_encantado 11 07.11.20 09:42 Сейчас в теме
Описание ошибки не похоже на то, что был добавлен новый реквизит.

Обмен как идет, по правилам КД2 ?
3. user950703 07.11.20 11:27 Сейчас в теме
(2)Обмен идет, документы пишутся и в дальнейшем, проводятся. Гипотезу высказал клиент, и это отдельный вопрос. Но добавление реквизита без заморочек с метаданными мне интересно само по себе.
4. tetraren 26 07.11.20 12:20 Сейчас в теме
Судя по ошибке, дело не в реквизитах, а в том, что вы с сервера на клиент мутабельный объект пытаетесь передать.

Обычно вся загрузка происходит на сервере, и таких ошибок быть не может. Почему у вас код на киента попал?

Вы случайно не через COM-соединение обмен осуществляете из обычного приложения, коим является КА1 ?

Если так - как быстрое решение попробуйте вместо "Прямого соединения" поставить в параметрах соединения обмен через "сетевой/локальный каталог". Если поможет - значит оно самое.
5. user950703 07.11.20 12:49 Сейчас в теме
(4) Обмен идет не через прямое соединение а чтением/записью XML файла из локальной папки. Работают обработки Универсальный обмен данных XML. Причем БП 3. 0, куда идет запись - файловая.
9. Torin 741 07.11.20 16:40 Сейчас в теме
(5)+ у пользователя от имени которого выполняется загрузка не хватает прав на чтение констант
"Использовать внешний модуль защищенного документооборота с КО" и "Внешний модуль защищенного документооборота с КО"
11. user950703 07.11.20 18:17 Сейчас в теме
(9) Ни одной из этих констант в Конфигураторе бухгалтерии 3 я не вижу...
12. Torin 741 07.11.20 18:22 Сейчас в теме
(1)
Буквально вчера заказчик обновил конфигурацию БП 3.

(11)
Ни одной из этих констант в Конфигураторе бухгалтерии 3 я не вижу..


"Они существуют" (с) M&M’s
13. user950703 07.11.20 21:54 Сейчас в теме
(12)Извините. Действительно, не заметил.
6. tetraren 26 07.11.20 13:19 Сейчас в теме
В свойствах Общего модуля ЭлектронныйДокументооборотСКонтролирующимиОрганами галочка "Клиент" не стоит?
7. user950703 07.11.20 13:32 Сейчас в теме
(6)Нет, Только Сервер и Внешнее соединение
14. user950703 07.11.20 22:01 Сейчас в теме
(6)Спасибо. Натолкнуло на решение. Действительно, если выставить Клиент, то по идее, для файловой платформы, можно поставить в приоритет работу с объектом на клиенте вместо передачи объекта на сервер, а, значит, его мутирования.
15. tetraren 26 07.11.20 23:02 Сейчас в теме
(14) Пожалуйста. И всё же, для основательного решения проблемы я бы разобрался, как код, который должен исполняться на сервере, вдруг стал исполняться на клиенте.
16. VHS123 17.11.20 15:33 Сейчас в теме
Та же проблема, только через комконнектор.
В процессе создается обработка, и много чего еще, мягко говоря....
Решил через расширение модуля ЭлектронныйДокументооборотСКонтролирующимиОрганами.
То есть все то же, но без создания обработки.

&Вместо("СоответствиеВидовДокументовФНС")
Функция ОЭ_СоответствиеВидовДокументовФНС()
		
	Макет = Обработки.ДокументооборотСКонтролирующимиОрганами.ПолучитьМакет("ВидыПредставляемыхДокументов");
	ОбластьЯчеек = Макет.Область(1, 1, Макет.ВысотаТаблицы, Макет.ШиринаТаблицы);
	
    ПостроительЗапроса = Новый ПостроительЗапроса;
    ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
	ПостроительЗапроса.Выполнить();
	
	Виды = ПостроительЗапроса.Результат.Выгрузить();
	Виды.Колонки.Добавить("Значение");
	
	ПредобработкаВидовПредставляемыхДокументов(Виды); 
	
	Для каждого Вид Из Виды Цикл
		Вид.Значение = Перечисления.ВидыПредставляемыхДокументов[Вид.Имя];
		ОбработкаВидовПредставляемыхДокументов(Виды, Вид); 
	КонецЦикла; 
	
	ПостобработкаВидовПредставляемыхДокументов(Виды);
	
	
	СоответствиеРезультат = Новый Соответствие;
	
	Для каждого Вид Из Виды Цикл
		СоответствиеРезультат.Вставить(Вид.Имя, Вид.Значение); 
	КонецЦикла; 
	
	Возврат СоответствиеРезультат;

КонецФункции

Функция КолонкиДляПреобразованияВБулево() Экспорт

	КолонкиБулево = Новый Массив;
	КолонкиБулево.Добавить("ЭтоНДС");
	КолонкиБулево.Добавить("ЕстьЭД");
	КолонкиБулево.Добавить("ОбязательноПодтверждение");
	
	Возврат КолонкиБулево;
		
КонецФункции

Процедура ПредобработкаВидовПредставляемыхДокументов(Виды)
	
	КолонкиБулево = КолонкиДляПреобразованияВБулево();
	
	Для каждого Имя Из КолонкиБулево Цикл
		Виды.Колонки.Добавить(Имя + "_Булево");
	КонецЦикла; 
	
КонецПроцедуры

Процедура ОбработкаВидовПредставляемыхДокументов(Виды, Вид)
	
	КолонкиБулево = КолонкиДляПреобразованияВБулево();
	
	Для каждого Имя Из КолонкиБулево Цикл
		Вид[Имя + "_Булево"] = Булево(Вид[Имя]);
	КонецЦикла; 
	
КонецПроцедуры

Процедура ПостобработкаВидовПредставляемыхДокументов(Виды)
	
	КолонкиБулево = КолонкиДляПреобразованияВБулево();
	
	Для каждого Имя Из КолонкиБулево Цикл
		Виды.Колонки.Удалить(Имя);
		Виды.Колонки[Имя + "_Булево"].Имя = Имя;
	КонецЦикла; 
	
КонецПроцедуры
Показать
Kostt; smwed; smewinka; tmixsam; +4 Ответить
17. user1495698 19.11.20 12:32 Сейчас в теме
(16) БОЛЬШОЕ человеческое СПАСИБО!
Очень помог Ваш пост с кодом!!!
22. Kostt 23 27.05.21 14:57 Сейчас в теме
(16) Спасибо ваш код помог. ЕРП 2.4.13.85
18. tmixsam 55 20.11.20 14:29 Сейчас в теме
Мне тоже очень помог Ваш пост с кодом!
Спасибо
19. smwed 1 06.12.20 20:50 Сейчас в теме
Мне тоже помогло! Огромная, вам, благодарность!
20. s_captain 14.12.20 12:13 Сейчас в теме
Проблема из-за обработчика ЗаписатьИсточникВРегистрДокументыПоТребованиюФНС. Некоторые объекты теперь регистрируются в регистре сведений ДокументыПоТребованиюФНС.

Обойти это можно через установку записываемому объекту "ОбменДанными.Загрузка = Истина", но так отключаются все внутренние обработчики, которые часто полезны, например, установка вспомогательных/служебных реквизитов объектов.

В обработчике есть дополнительный обход: для записываемого объекта добавить ДополнительныеСвойства.Вставить("ГрупповоеПерепроведение", Истина). Это конечно не комильфо, но эффект такой же как и у предыдущих советов .
21. rusakov1969 26.12.20 22:43 Сейчас в теме
Чтобы не трогать саму бухгалтерию в модуле экспорта пишем так

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

Соединение.СчетаУчетаВДокументах.ЗаполнитьПередОтображениемПользователю(ДокОбъект);

// после обновления бухгалтерии
// {ОбщийМодуль.ЭлектронныйДокументооборотСКонтролирующимиОрганами.Модуль(2390)}: Ошибка при вызове метода контекста (ПолучитьОбработкуЭДО)
//Попытка передачи мутабельного значения результата метода ПолучитьОбработкуЭДО ().

ДокОбъект.ОбменДанными.Загрузка = Истина;
Показать
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)