Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

БУ2.0 - непонятное поведение алгоритма в базе под SQL

БУ2.0 - непонятное поведение алгоритма в базе под SQL
Я
   ksergey
 
04.06.19 - 13:16
Бухгалтерия для Украины, редакция 2.0.15.1
Платформа 8.3.10.2772

Имею сложную в алгоритме и оформлении обработку загрузки данных под старой версию Бухгалтерия для Украины 1.2 под 8.2

В связи с переходом на БУ 2.0 пришлось ее переделать, учитывая сложность переделал только сам алгоритм под нюансы новой БУ 2.0
т.е. новая обработка в оформлении осталась такой же, а для работы в 2.0 запускаю её под специальным пользователем в толстом клиенте.

Суть проблемы заключается в том, что в файловой версии данный алгоритм работает (проверено на нескольких базах),
а в SQL-версии падает с ошибкой в момент записи с проведением документа


Ошибка при вызове метода контекста (Записать):
Ошибка при выполнении обработчика - 'ОбработкаПроведения':
{ОбщийМодуль.НалоговыйУчет.Модуль(591)}: Ошибка при вызове метода контекста (УстановитьУправляемуюБлокировку):
Попытка передачи с клиента на сервер мутабельного значения 2-го параметра метода УстановитьУправляемуюБлокировку ()

В чем причина нашел быстро (там действительно в вызове с толстого клиента на сервер передается в параметре структуры ТаблицаЗначений,
но мне не понятно - почему же этот алгоритм работает в файловой версии ?
И как разрешить эту проблему под SQL?

Буду балгодарен за любую помощь и дельный совет  :)
 
 
   Провинциальный 1сник
 
1 - 04.06.19 - 13:20
Потому что в файловой версии не происходит передачи мутабельного объекта на сервер за неимением сервера)
   ЛЮС
 
2 - 04.06.19 - 13:27
вместо таблицы можете передавать массив структур
   ksergey
 
3 - 06.06.19 - 10:52
Добрый день коллеги.
Решил немного освежить тему, в связи с вновь открывшимися обстоятельствами  :)

Оказалось, что на самом деле ошибка передачи мутабельного значения вызывала вот эта структура
содержащая Новый Диапазон

СтруктураЗначенийБлокировки = Новый Структура("Период", Новый Диапазон(, ДокументОбъект.Дата)); 

Вопрос: почему передача этого пар-ра Новый Диапазон  вызывает такую ошибку передачи мутабельного значения?
   ksergey
 
4 - 06.06.19 - 11:00
Собственно само решение нашел - обернул через ЗначениеВСтрокуВнутр(Новый Диапазон )
а в вызываемой процедуре вывернул и подсунул снова в алгоритм - всё заработало

Но вопрос у меня остался: почему передача пар-ра Новый Диапазон вызывает такую ошибку передачи мутабельного значения?
   ptiz
 
5 - 06.06.19 - 11:12
(4) А хз. Судя по СП - должно передаваться.
Доступность:

Сервер, толстый клиент, внешнее соединение.
Возможен обмен с сервером. Сериализуется.
   Провинциальный 1сник
 
6 - 07.06.19 - 08:05
(4) ДокументОбъект в ЗначениеВСтрокуВнутр? Ну-ну.. Возможность сериализации несериализуемого через структуру - багоюз. Серверных процессов может быть больше одного, вы это понимаете хоть?
   ksergey
 
7 - 10.06.19 - 11:22
Отвечу в надежде, что привлеку еще какое-либо мнение

>>ДокументОбъект в ЗначениеВСтрокуВнутр? Ну-ну.
уважаемый Провинциальный, у меня речь идет о том, что пришлось оборачивать вот этот код
Новый Диапазон(, ДокументОбъект.Дата)  а не сам ДокументОбъект 

>>Серверных процессов может быть больше одного, вы это понимаете хоть?
пож-та, поясните - это каким-то образом связано с Новый Диапазон(, ДокументОбъект.Дата) 

ну и таки снова спрошу - почему этот алгоритм в файловой версии работает?
   Провинциальный 1сник
 
8 - 14.06.19 - 11:04
(7) Может 1с реквизит объекта передает по ссылке, а не по значению, в целях оптимизации.. Попробуйте для интереса передать именно значение типа "дата" (для надежности можно его пропустить через сериализацию), а не реквизит объекта.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.