Попытка передачи мутабельного значения



Варианты решения проблемы на примере работы обработки 1С:Администратор.
Конфигурация: Розница 2.0. Клиент-Сервер. Обычное приложение.
Ошибка возникает при Записи/Проведении/ОтменаПроведения документа.

СПРАВКА:

Мутабельный тип (англ. Mutable type) — сложный тип данных в объектно-ориентированном программировании, значения которого (как правило — объекты) после своего создания допускают изменение своих свойств.
1С: Подробнее о типах данных 1С:Предприятие: http://v8.1c.ru/overview/CommonCommTypes.htm
1С: XML-сериализация, механизм (XML Serialization, Mechanism): http://v8.1c.ru/overview/Term_000000318.htm
tanka495: Клиент- серверные вызовы: //infostart.ru/public/86838/


Немного теории:

Попытка передачи мутабельного значения — это попытка передачи объекта на сервер(клиент), данные которого могут быть изменены на клиенте(сервере).
Попытка передачи мутабельного значения с клиента на сервер, с сервера на клиент 1С:Предприятия возникает только в клиент-серверной версии (SQL).

Передача параметров

Передача параметров функции (процедуре), выполняемой на сервере достаточно тонкий вопрос. Это в первую очередь связано с необходимостью передачи их между процессом сервера приложений и клиента. При переходе управления с клиентской части на серверную все передаваемые параметры сериализуются, передаются на сервер, где «распаковываются» и используются. При переходе с серверной части на клиентскую – обратный процесс. Здесь необходимо отметить, что данная схема корректно обрабатывает передачу параметров по ссылке и по значению. При передаче параметров действуют следующие отграничения:

Передавать между клиентом и сервером (в обе стороны) можно только немутабельные значения (т.е. значения которых не могут изменяться): примитивные типы, ссылки, универсальные коллекции, значения системных перечислений, хранилище значения. При попытке передать что-либо другое – аварийное завершение клиентского приложения (даже, если передавать некорректный параметр пытается сервер).

Не рекомендуется при передаче параметров передавать большие объёмы данных (например, строки более 1 миллиона символов), это может негативно сказаться на производительности сервера.

Нельзя передавать параметры, содержащие циклическую ссылку, причем как с сервера на клиент, так и обратно.При попытке передать такой параметр – аварийное завершение клиентского приложения (даже если передавать некорректный параметр пытается сервер).

Не рекомендуется передавать очень сложные коллекции данных. При попытке передачи параметра с очень большим уровнем вложения происходит аварийное завершение сервера.


Проблемная ситуация:

«Розница 2.0». Клиент-Сервер. Обычное приложение.
Обработка «1С:Администратор»: //infostart.ru/public/100967/

МО: {ВнешняяОбработка.КонсольАдминистратора.МодульОбъекта(658)}:
Ошибка при вызове метода контекста (Записать):
Ошибка при выполнении обработчика — ‘ПередЗаписью’:{ОбщийМодуль.ПрефиксацияОбъектовСобытия.Модуль(215)}:
Ошибка при вызове метода контекста (ДатаИлиОрганизацияОбъектаИзменена):
Попытка передачи с клиента на сервер мутабельного значения 2-го параметра метода ДатаИлиОрганизацияОбъектаИзменена().

Обработка 1С:Администратор.МодульОбъекта

     ОбъектИЗМ.Записать(?(РежимЗаписи = Неопределено, РежимЗаписиДокумента.Запись, РежимЗаписи));

ОбщийМодуль.ПрефиксацияОбъектовСобытия.Модуль(215):

Процедура ПроверитьНомерОбъектаПоДатеИОрганизации(Объект)

     Если ПрефиксацияОбъектов.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Метаданные(), Объект.Дата, Объект.Организация) Тогда


ВАРИАНТ РЕШЕНИЯ № 1: (возможный, но неоптимальный):
УСТАНОВКА СВОЙСТВА ОБЩЕГО МОДУЛЯ.

В конфигураторе:

В Свойствах ОбщийМодуль.ПрефиксацияОбъектов активизировать флажок «Клиент обычное приложение».


ВАРИАНТ РЕШЕНИЯ № 2: (рекомендуемый):
ПЕРЕДАЧА ССЫЛКИ.

В конфигураторе:

ОбщийМодуль.ПрефиксацияОбъектовСобытия

Процедура ПроверитьНомерОбъектаПоДатеИОрганизации(Объект)

// БЫЛО.
// Если
ПрефиксацияОбъектов.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Метаданные(), Объект.Дата, Объект.Организация) Тогда
// СТАЛО.
Если
ПрефиксацияОбъектов.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Дата, Объект.Организация) Тогда

ОбщийМодуль.ПрефиксацияОбъектов

Процедура ДатаИлиОрганизацияОбъектаИзменена(Ссылка, Знач ДатаПослеИзменения, Знач ОрганизацияПослеИзменения) Экспорт

// СТРОКА ДОБАВЛЕНА.
МетаданныеОбъекта = Ссылка.Метаданные();


ВАРИАНТ РЕШЕНИЯ № 3: (возможный, но не в данном случае):
ИСПОЛЬЗОВАНИЕ XML-СЕРИАЛИЗАЦИИ (предложено w-divin).

Сериализация не работает, если в качестве записываемого объекта выступают Метаданные.
(Ошибка при вызове метода контекста (ЗаписатьXML): Значения данного типа не могут быть представлены в XML).

Рекомендуется использовать при необходимости передать Объект (СправочникОбъект, ДокументОбъект и т.д.).

Использовать функции типа:

// Выгрузка ХОбъекта в XML-строку:
Функция ЗаписатьВXML(ХОбъект)
     ЗаписьXML = Новый ЗаписьXML;                            // Тонкий клиент, сервер, толстый клиент, внешнее соединение.
     ЗаписьXML.УстановитьСтроку();
     ЗаписатьXML(ЗаписьXML, ХОбъект);                      // Сервер, толстый клиент, внешнее соединение.
     Возврат ЗаписьXML.Закрыть();
КонецФункции

// Загрузка ХОбъекта из XML-строки:
Функция ПрочитатьИзXML(СтрокаXML)
     ЧтениеXML = Новый ЧтениеXML;                           // Тонкий клиент, сервер, толстый клиент, внешнее соединение.
     ЧтениеXML.УстановитьСтроку(СтрокаXML);
     ХОбъект = ПрочитатьXML(ЧтениеXML);                 // Сервер, толстый клиент, внешнее соединение.
     Возврат ХОбъект;
КонецФункции


Тестовая среда:
Операционная система: Windows XP SP3, Windows 7 SP1.
Сервер баз данных: MS SQL Server 2008 R2.
1С:Предприятие (Клиент-Сервер):
   —
Платформа 8.2.15.
   —
Конфигурация: Розница 2.0.3.17.
   —
Режим совместимости: 8.2.13/НеИспользовать.
   —
Режим запуска: Обычное приложение. Толстый клиент.

МА! С уважением к сообществу МА!


56 Comments

  1. tormozit

    Под аварийным завершением процесса (клиента или сервера) ты имеешь ввиду недопустимую операцию (Problem signature и т.д.) и завершение процесса со стороны ОС?

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

    Reply
  2. WKBAPKA

    решение, конечно — оригинальное, ничего не скажешь! я и сам до этого допер… только в этом случае, как выполнения функций и процедур в таком модуле, скажется на производительности?

    Reply
  3. w-divin

    а что делать если конфигурация работает только в режиме управляемого приложения?

    Reply
  4. StepByStep

    (1) tormozit,

    В данном случае это не ошибка платформы.

    Дело в том, что:

    У Розницы 2.0 Основной режим запуска — УПРАВЛЯЕМОЕ ПРИЛОЖЕНИЕ.

    В Управляемом приложении ЭТА ошибка не наблюдается.

    Никаких флажков в данном конкретном случае дополнительно выставлять НЕ надо.

    Конечно же, речь идет о типовой конфигурации.

    Reply
  5. tormozit

    (4) Дай четкий ответ на вопрос «Под аварийным завершением процесса (клиента или сервера) ты имеешь ввиду недопустимую операцию (Problem signature и т.д.) и завершение процесса со стороны ОС?»

    Reply
  6. StepByStep

    (2) WKBAPKA,

    Производительность не замерял.

    Но из общих соображений, а мы говорим о ТОЛСТОМ клиенте, когда он содержит в себе весь необходимый функционал не думаю, что это как-то заметно скажется на производительности.

    По своим наблюдениям, могу сказать на той же внешней обработке «КонсольАдминистратора», обычное приложение на ЛОКАЛЬНОМ SQL на хорошей машине с SSD работает шустро.

    Reply
  7. StepByStep

    (3) w-divin,

    В Управляемом приложении ЭТА ошибка не наблюдается.

    Reply
  8. StepByStep

    (5) tormozit,


    «Под аварийным завершением процесса (клиента или сервера) ты имеешь ввиду недопустимую операцию (Problem signature и т.д.) и завершение процесса со стороны ОС?»

    ЗАВЕРШЕНИЕ ПРОЦЕССА ОС НЕ ПРОИСХОДИТ. 1С-КА НЕ «ОТВАЛИВАЕТСЯ».

    Reply
  9. WKBAPKA

    логически можно предположить, что если установлен только флажок «Сервер», значит на клиенте при запуске этот модуль не компилируется?!

    Reply
  10. StepByStep

    (9) WKBAPKA,


    логически можно предположить, что если установлен только флажок «Сервер», значит на клиенте при запуске этот модуль не компилируется?!

    Если говорить об управляемом приложении, то логически ДА, ибо в этом случае Флажок «Клиент (обычное приложение)» вообще скрыт (Установка в Конфигураторе «Сервис-Параметры-Общие» выставлено Редактирование конфигурации для режимов запуска: Управляемое приложение).

    Reply
  11. WKBAPKA

    (10)

    теоретически и в обычном приложении такое должно быть, иначе смысл?

    Reply
  12. WKBAPKA

    т.е. если 1С мудабельное 🙂 значение не может обработать на сервере, значит обрабатывает его на клиенте

    Reply
  13. StepByStep

    (11) WKBAPKA,


    теоретически и в обычном приложении такое должно быть, иначе смысл?

    Как раз в обычном приложении эта проблема и возникает (в управляемом — нет проблемы), потому что происходит ПЕРЕДАЧА значения с клиента на сервер, а передача не разрешена.

    На сервере это значение может быть и должно быть обработано при условии, что оно получено сервером.


    т.е. если 1С мудабельное 🙂 значение не может обработать на сервере, значит обрабатывает его на клиенте

    На толстом клиенте это значение в принципе может быть обработано, но в данном конкретном случае производится передача на сервер, а передача не разрешена.

    Reply
  14. w-divin

    (7)

    это кто тебе такое сказал?

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

    Вот только вылечить её таким неправильным способом в УП уже не получиться.

    Reply
  15. StepByStep

    (14) w-divin,


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

    Совершенно верно.

    На сколько я понимаю ситуацию: в режиме Управляемого приложения вообще не происходит никакой передачи с клиента на Сервер, т.е. после того, как сказали Объект.Записать(…) (Обработка «КонсольАдминистратора» строка 662) причем делается это на Сервере НИКАКОЙ передачи с клиента на сервер в данном случае не происходит и, как следствие, ошибки не возникает.

    Reply
  16. w-divin

    (15)

    На сколько я понимаю ситуацию: в режиме Управляемого приложения вообще не происходит никакой передачи с клиента на Сервер

    глубокое заблуждение.

    В управляемом приложении намного больше передач с клиента на сервер и обратно.

    И многое из того что в обычном приложении отрабатывает на клиенте (как в твоем случае), в УП будет передаваться на сервер (либо платформой, либо разработчиком).

    И на самом деле твое «решение» не решение, а разрешение выполнять операцию на клиенте, что в случае УП просто не будет работать.

    Плюс выполнение операций на клиенте — ИМХО верх глупости. есть множество способов передать на сервер мутабельное значение и выполнять обработку уже на сервере.

    Reply
  17. StepByStep

    (16) w-divin,


    В управляемом приложении намного больше передач с клиента на сервер и обратно.

    Совершенно верно.

    Но я писал о конкретной ситуации: Внешняя обработка в Рознице 2.0 и о том, что «передачи с клиента на сервер в данном случае не происходит».


    разрешение выполнять операцию на клиенте

    Совершенно верно.


    … что в случае УП просто не будет работать.

    Ошибаетесь — работает — проверено неоднократно.

    Reply
  18. StepByStep

    (16) w-divin,


    есть множество способов передать на сервер мутабельное значение и выполнять обработку уже на сервере.

    ???

    Можно передать ссылку и уже в процедуре получить Метаданные и прочее (см. публикация раздел проблемная ситуация).

    Reply
  19. w-divin

    (18)

    Можно передать ссылку

    в большинстве случаев нельзя — потому как нужно передать именно измененный объект.

    самый распространенный способ — XML-сериализация.

    Reply
  20. w-divin

    (17)


    Цитата

    … что в случае УП просто не будет работать.

    Ошибаетесь — работает — проверено неоднократно.

    не работает. в УП на клиенте даже нет объекта как такового. всеголишь ДанныеФормыКоллекция и т.п.

    и даже для того чтобы получить сам объект нужно передать управление на сервер:

    УправляемаяФорма (ManagedForm)

    РеквизитФормыВЗначение (FormAttributeToValue)

    Синтаксис:

    РеквизитФормыВЗначение(<ИмяРеквизита>, <Тип>)

    Параметры:

    <ИмяРеквизита> (обязательный)

    Тип: Строка.

    Имя реквизита формы, который необходимо преобразовать.

    Может быть указан реквизит данных формы (см. описание параметра <Объект> метода ДанныеФормыВЗначение).

    <Тип> (необязательный)

    Тип: Тип.

    Тип значения, получаемого из реквизита формы (данных формы). Если данный параметр не указан, то он также получается из реквизита формы. Если реквизит является составным типом и значение параметра не указано, генерируется исключение времени выполнения.

    Возвращаемое значение:

    Тип: Произвольный.

    Описание:

    Преобразует указанный реквизит формы в объект прикладного типа.

    Доступность:

    Сервер.

    Показать

    Reply
  21. StepByStep

    (19) w-divin,

    Возможен и такой вариант.

    Reply
  22. StepByStep

    (20) w-divin,


    не работает. в УП на клиенте даже нет объекта как такового

    1. Сделал контрольную проверку — Обработка работает в Управляемом приложении без каких-либо изменения в типовой конфигурации.

    Никаких проблем с записью и проведением документа не возникает.

    А именно это и нужно.

    2. Скажите, пожалуйста, Вы какую конфигурацию смотрите ?

    Розница 2.0 или что-то другое ?

    Потому, что см. прикрепленный файл.

    Reply
  23. w-divin

    (22)

    я не смотрю конфигурацию — я говорю о проблеме, озвученной в шапке:

    Попытка передачи мутабельного значения

    Решение проблемы

    конфа у тебя как пример.

    и получается что это не решение проблемы, а «заплатка» для конретной конфы (((

    Reply
  24. StepByStep

    (23) w-divin,

    А я говорю о конкретной ситуации, т.е. Конкретная конфигурация, Конкретная обработка.

    Reply
  25. StepByStep

    (23) w-divin,

    Хорошо, если о проблеме в общем.

    Что Вы имели в иду когда


    в УП на клиенте даже нет объекта как такового
    Reply
  26. StepByStep

    (23) w-divin,

    А по большому счету эта «заплатка» и не нужна, т.к. Основной режим запуска Розница 2.0: Управляемое приложение.

    Reply
  27. w-divin

    (25)

    рекомендую ознакомиться с документацией по управляемым формам. или почитать тут для начала: СсылкО

    Reply
  28. StepByStep

    (23) w-divin,

    И, следовательно, этой проблемы и не возникает.

    Reply
  29. StepByStep

    (28) w-divin,

    Читать и перечитывать всегда полезно.

    Есть еще такое: infostart

    Reply
  30. Miha.L

    Мудабельные значения …

    Спасибо. Спасибо. Спасибо. (варианта-то три)

    2 вар. использовать.

    Reply
  31. StepByStep

    (30) Miha.L,

    Пожалуйста. Пожалуйста. Пожалуйста. (варианта-то три)

    Право на существование имеют все три, надо смотреть по конкретной ситуации.

    Reply
  32. goodwin12

    режиме Управляемого приложения вообще не происходит никакой передачи с клиента на Сервер, т.е. после того, как сказали Объект.Записать(…) (Обработка «КонсольАдминистратора» строка 662) причем делается это на Сервере НИКАКОЙ передачи с клиента на сервер в данном случае не происходит и, как следствие, ошибки не возникает.

    Reply
  33. gaglo

    Почему не попользоваться парочкой ЗначениеВСтрокуВнутр / ЗначениеИзСтрокиВнутр ?

    Reply
  34. pt_olga
    У Розницы 2.0 Основной режим запуска — УПРАВЛЯЕМОЕ ПРИЛОЖЕНИЕ.

    вот и в нашем Итилиуме на поддержке походу основной режим запуска — управляемое 🙁

    конфа на поддержке,

    ошибку сами не исправляют,

    вменяемой отчетности нет, пишем сами… а сами хорошо пишем для толстого и пока плёха под тонкого

    🙁

    ах, да! Автору статьи спасибо!)

    Reply
  35. soulsteps

    Проблема хорошая…автор молодец, четко и по делу и на «живом» мясе…Мое мнение — при правильной организации своего кода (ну или своего решения на базе 1С) таких проблем возникать не будет, в статье основные «проблемные» ситуации автор хорошо изложил…

    Reply
  36. OBEH

    Загрузка данных обработкой «Универсальный обмен данными в формате XML».

    Выдало ошибку по поводу «мутабельности». Ссылка поиска привела сюда, в том числе.

    Автору большое спасибо.

    Попробовал предложенные варианты. Помогло только — запуск приложения в файловом режиме.

    Не очень кашерно. Но, пока только этот вариант. Затем из файловой базы в SQL.

    Хочется загружать сразу в SQL

    Reply
  37. v.l.

    Можете поменять расцветку в оформлении статьи?

    Reply
  38. yuraos

    Передавать между клиентом и сервером (в обе стороны) можно только немутабельные значения (т.е. значения которых не могут изменяться):

    примитивные типы, ссылки, универсальные коллекции, значения системных перечислений, хранилище значения.

    Насчет подчеркнутого не совсем так…

    …покрайней мере под 8.1 столкнулся со следующим:

    — «Структура» канает для передачи туда — суда (хотя и может быть изменена на сервере);

    — а «ТаблицаЗначений» и «ДеревоЗначений» — уже не какнают.

    аварийного заверщения работы клиента при этом не наблюдается,

    наверное из-за того, что под 8.1 — он толстый

    Так что с мутабельностью что-то намудрили разработчики платформы.

    😉

    Reply
  39. yuraos

    (39) PS,

    Кроме передачи значений на сервер есть еще такая функция

    ЗначениеЗаполнено()

    Она тоже не жалует «мутабельные» и завершается аварийно.

    Reply
  40. StepByStep

    (39) yuraos, (40) yuraos,

    Спасибо. Да. Все так.

    Reply
  41. StepByStep

    (38) vladal,

    Переоформил.

    Reply
  42. diver.sun

    Меня периодически спасает значениевстрокувнутр и значениеизстрокивнутр

    Reply
  43. 1985Alex1985

    Столкнулся на днях с такой же пробемой в УТ3 редакция 3.0.4.3

    Ошибку получаем при записи объектов (элемент справочника, новый документ) программно в обычном приложении в серверном варианте хранения БД.

    Записываю примерно так:

    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Док = Документы.ЗаказКлиента.СоздатьДокумент();
    Док.Дата = ТекущаяДата();
    Док.Записать();
    КонецПроцедуры
    

    Получаю ошибку примерно такую:

    Скрытый текст

    Решений найдено 2.

    1. Если вам не критично снять конфу с поддержки то в свойствах модуля на который ругается отлажчик надо

    выставить свойство(Клиент обычное приложение).

    З.Ы.: <Совет от КЭПА>: Если у вас в ОМ нет такого свойства зайдите в отладчике Сервис-Параметры — установите вариант «Управляемое и Обычное приложение» и св-во появится.

    2. Если снимать конфу с поддержки не позволяет религия, нужно процелуру записи переделать под управляемый вариант, примерно так:

    &НаКлиенте
    Процедура ВыполнитьКлиент(Команда)
    
    ВыполнитьСервер();
    Ссылка = ВыполнитьСервер();
    ОповеститьОбИзменении(Ссылка);
    
    КонецПроцедуры
    
    &НаСервере
    Функция ВыполнитьСервер();
    
    Док = Документы.ЗаказКлиента.СоздатьДокумент();
    Док.Дата = ТекущаяДата();
    Док.Записать();
    
    Возврат Док.Ссылка;
    
    КонецФункции
    

    Показать

    Reply
  44. lsd_777

    Читал, читал, ничего не понял. Подскажите по моей проблеме Розница 2.0.8.11 обычное приложение можно ли как то безболезненно это решить?

    Reply
  45. StepByStep

    (44) 1985Alex1985,

    Да флажок или ссылка, ссылка предпочтительней.

    Reply
  46. StepByStep

    (45) lsd_777,

    Поздравляю, Вы решили проблему самостоятельно.

    Только вот, что странно. У меня в Рознице 2.0.8.11 (РМК — обычное приложение) такого не было и нет.

    Скидки используются. По отладчику не смотрел.

    Reply
  47. lsd_777

    (47) У меня как пошло с версии 8.6, так и до 8.11 оставалось, пока не исправил. Времени уходит очень много на поиск решения.

    Reply
  48. bagirma

    «ВАРИАНТ РЕШЕНИЯ № 3:» очень помог.

    Спасибо.

    Reply
  49. tormozit

    (8) Думаю термин «аварийное завершение» в статье применяется неверно. Вместо него следует применить «исключение» или «ошибка».

    В подсистеме Инструменты разработчика (и в ее портативном варианте в сочетании с БСП) я реализовал более универсальный вариант метода №3. В общем модуле ирОбщий сделано 2 функции: ЗапистьОбъектЛкс и УдалитьОбъектЛкс, имеющих параметр НаСервере. Эти функции передают более полное, однако не все содержимое мутабельного объекта на сервер в отличие от описанного здесь способа через ЗаписатьXML. Во всех инструментах, выполняющих запись данных, сделан флажок «Запись на сервере» для перенаправления записи объекта на сервер.

    По сути мутабельностью называют все то, что платформа не умеет сериализовать и десериализовать при вызовах клиент-сервер, однако это еще не значит что сериализовать это невозможно. В случае объектов БД кроме содержимого, имеющего штатную сериализацию, мы имеем еще свойства ОбменДанными типа ПараметрыОбменаДанными и ДополнительныеСвойства типа Структура, но самое главное у объекта имеется модуль, допускающий объявление переменных. Поэтому для полной сериализации такого объекта потребуется сериализовать рекурсивно

    1. Данные. Сериализация реализована например методом ЗаписатьXML.

    2. Свойство ОбменДанными. Все используемые внутри типы просто сериализуются.

    3. Свойство ДополнительныеСвойства. Тут могут быть произвольные значения. Поэтому существует риски зацикливания и прочее.

    4. Все переменные модуля объекта. Тут могут быть произвольные значения. Поэтому существует риски зацикливания и прочее.

    Вот п.4 и есть изначальная причина обзывания объекта данных мутабельным. Потом к нему уже добавился п.3.

    В моей реализации п.4 не сериализуется, т.к. надежного способа в рантайме перечислить все переменные модуля мне неизвестно. А остальные 3 пункта у меня сериализуются при передаче на сервер и обратно.

    Reply
  50. valek82

    Спасибо.

    Reply
  51. kiyamov

    А чем ХранилищеЗначения не канает?

    Reply
  52. Rans

    Была похожая проблема в Рознице 2.2 при вызове метода Записать() во внешней обработке через COM соединение. Причина оказалась в обработчике события при записи, код которого был в не типовом общем модуле без флага «Внешнее соединение».

    Reply
  53. kare

    (53)это сплошь и рядом, сегодня тоже наткнулся.

    Reply
  54. ccserg

    С Новым годом !

    ЗУП КОРП 2,5 порадовали этой ошибкой , в справках 2 НДФЛ ,

    применил 1 способ

    Reply
  55. Alex7774

    Спасибо. Способ изменения свойства сработал в УПП на одном из общих модулей.

    Reply
  56. miha0713

    (47) Андрей М. Скажите пожалуйста, как по вашему мнению лучше всего развиваться программисту 1с? Я имею ввиду что читать, или ходить на курсы, или практиковаться? И в какой последовательности?

    Понимаю, что это не в тему статьи, но там не поймешь от кого получаешь совет, от еще одного стажера или от профи. Извините, если нужно могу удалить комент

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *