Size: a a a

1С, БСП, DevOps и Архитектура

2019 November 05

A

Andrey in 1С, БСП, DevOps и Архитектура
Как-то сложно было подозревать, что сугубо платформенная функциональность зависит от режима совместимости конфигурации :)
источник

VP

Vassily Poupkine in 1С, БСП, DevOps и Архитектура
А хранилище тср или хттп?
источник

D

DAnatoliy in 1С, БСП, DevOps и Архитектура
хттп
источник

VP

Vassily Poupkine in 1С, БСП, DevOps и Архитектура
Andrey
Как-то сложно было подозревать, что сугубо платформенная функциональность зависит от режима совместимости конфигурации :)
Да это много где в платформе такое
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Есть серверная процедура которая пересоздает реквизиты и элементы формы (причем элементы не удаляет).
Если клиентская процедура (ПриИзменении) в которой вызываю эту серверную.
В реквизите на форме (у которого привязан обработчик ПриИзменении) выполняю несколько переключений (выбираю разные значения).
Что приводит к попеременному созданию, и удалению одних и тех же реквизитов.

Нет ошибок что элемент с таким именем уже существуюет .... или что-то подобное
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Отладчиком становлюсь на входе в серверную процедуру пересоздания реквизитов.
И их (ранее добавленных элементов) на входе в процедуру нет. Хотя на предыдущем вызове (там где удалил реквизиты), на выходе они были.

Такое впечателение что элементы формы - отвязанные от реквизитов - при "перезде" формы на клиентскую часть - удаляются платфоромй
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Платформа 8.3.15.1565
Толстыей клиент.
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Я почему интересуюсь.
Это у меня галюцинации?
Это глюк платформы?
Это недокументированная фича и на нее можно положиться?

Или надо таки написать принудительное удаление элементов формы?
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Уважаемые спецы! Что скажете по вышеозвучченному явлению?
источник

A

Alexey Lab Sosnoviy in 1С, БСП, DevOps и Архитектура
Могу сказать, что отладчик тут не помошник. Может не показавать реквизиты после добавления, до возвращения в контекст формы(или фиг знает куда)
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Но ошибку то должно было выдать.
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
При добавлении реквизита который уже есть.
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Я точно знаю что я выполняю действие которое должно привести к возникновению ошибки.
источник

KZ

Kirill Zolotuhin in 1С, БСП, DevOps и Архитектура
Может кусок кода? Все время использую динамическое программное создание реквизитов + элементов, ошибок не возникало никогда
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
А оно не приводит. И все работает без ошибок. Как будто элементов формы и небыло создано на предыдущих итерациях
источник

KZ

Kirill Zolotuhin in 1С, БСП, DevOps и Архитектура
правда тонкий клиент и формы управляемые
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Процедура ПересоздатьДополнительныеРеквизитыДоговора()
 УстановитьПривилегированныйРежим(Истина);
 // пересоздаем реквизиты
 мсвУдаляемыеРеквизиты = Новый Массив;
 всеРеквизитыФормы = ПолучитьРеквизиты();
 Для каждого выбРеквизит из ВсеРеквизитыФормы Цикл
   Если  Лев(выбРеквизит.Имя,4) = "дрд_" Тогда
     мсвУдаляемыеРеквизиты.Добавить(выбРеквизит.Имя);
   КонецЕсли;
 КонецЦикла;
 
 мсвДобавялемыеРеквизиты = Новый Массив;
 Запрос = Новый Запрос;
 Запрос.Текст =
 "ВЫБРАТЬ
 |  тчДРД.ДопРеквизит КАК ДопРеквизит,
 |  тчДРД.Обязательный КАК Обязательный,
 |  тчДРД.ДопРеквизит.ТипЗначения КАК ТипЗначенияРеквизита,
 |  тчДРД.ДопРеквизит.Код КАК КодРеквизита,
 |  тчДРД.ДопРеквизит.Наименование КАК ПредставлениеРеквизита
 |ИЗ
 |  Справочник.ТипыДоговоров.ДополнительныеРеквизиты КАК тчДРД
 |ГДЕ
 |  тчДРД.Ссылка = &ТипДоговора";
 Запрос.УстановитьПараметр("ТипДоговора", Объект.ТипДоговора);
 
 тзДопРеквизиты = Запрос.Выполнить().Выгрузить();
 Для каждого строкаДопРеквизита из тзДопРеквизиты Цикл
   новыйРеквизиты = Новый РеквизитФормы("дрд_" + СокрЛП(строкаДопРеквизита.КодРеквизита), строкаДопРеквизита.ТипЗначенияРеквизита, , строкаДопРеквизита.ПредставлениеРеквизита, Истина);
   мсвДобавялемыеРеквизиты.Добавить(новыйРеквизиты);
 КонецЦикла;
 
 ИзменитьРеквизиты(мсвДобавялемыеРеквизиты, мсвУдаляемыеРеквизиты);
 
 // пересоздаем элементы и групы элементов
 Для каждого строкаДопРеквизита из тзДопреквизиты Цикл
   ИмяРеквизита = "дрд_" + СокрЛП(строкаДопРеквизита.КодРеквизита);
   ИмяЭлемента = "пф_" + ИмяРеквизита;
   полеНаФорме = УправлениеЭлементамиФормыВызовСервера.СоздатьПолеНаФорме(ЭтаФорма, ИмяЭлемента, ИмяРеквизита, Элементы.группаДопПараметры);
 КонецЦикла;
 
КонецПроцедуры
источник

VP

Vassily Poupkine in 1С, БСП, DevOps и Архитектура
Василий Мазурок
При добавлении реквизита который уже есть.
То ты за элементы спрашиваешь, то за реквизиты. Определись уже :)
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
1. Удаляю реквизиты с префиксом.
2. Добавляю реквизиты - если будут в выборке
3. Создаю элементы.

На пункте 3 должен ругаться - не ругается.
источник

ВМ

Василий Мазурок in 1С, БСП, DevOps и Архитектура
Речь всегда об элементах.
От волненния опечатываюсь постоянно ))).
источник