Имя: Пароль:
1C
1С v8
Баг в платформе 8.3.10.2561.
0 dkonakov
 
20.09.17
09:12
Приветствую, коллеги.
В данной версии платформы обнаружился баг, который валит платформу.
Кто помнит УТ 10.3, Справочник "Контрагенты", ФормаЭлемента, Вкладка "Контакты", Табличное поле "КонтактнаяИнформация".
Так вот раньше у меня в событии ПриПолученииДанных этого табличного поля стоял такой вот код:
<code>
ЭлементыФормы.КонтактнаяИнформация.ОтборСтрок.Представление.Значение = "";
ЭлементыФормы.КонтактнаяИнформация.ОтборСтрок.Представление.ВидСравнения = ВидСравнения.Содержит;
ЭлементыФормы.КонтактнаяИнформация.ОтборСтрок.Представление.Использование = Истина;
</code>
На Windows 7 на этой платформе всё круто.
А вот на Windows 10, на Windows Server 2012 платформа валится.
Подскажите, как можно данный код попробовать переписать в другом ключе, пока 1с расследует тикет.
1 zak555
 
20.09.17
09:15
2 dkonakov
 
20.09.17
09:32
Ну может и они похожи, но настройки не сохраняются и валится платформа несколько разные вещи)
3 Rollam
 
20.09.17
09:39
Давно уже заметил проблемы с контактной информацией на УФ. Попробуй зайти в справочник "Виды контактной информации" и поменять место в списке для любого элемента в папке "Контрагенты". Элементы должны перестроиться как надо. Странно, да, но в зависимости от их положения, меняется и очередность обработки полей при выводе на форму, от чего программа может вылететь.
4 Dmitrii
 
гуру
20.09.17
09:39
Какое-то странный отбор. А почему ВидСравнения = Содержит? Почему не ВидСравнения = Равно? Какой вообще смысл этого отбора?
У меня на УФ в форме списка при установке отбора на поле "Полное наименование" по условию Содержит <пустая строка> вообще ничего не происходит.
5 Rollam
 
20.09.17
09:41
(3) А, тут УТ 10.3. Поспешил)
6 dkonakov
 
20.09.17
10:00
(4) В этом поле отображаются контактные данные. Причём там в списке помимо контактных данных еще огромная куча пустых строк, где "представление" пустое.
Данный отбор убирает эти пустые строки.
и да, разговор про обычные формы)
7 Serg_1960
 
20.09.17
10:00
Интересует тип "Представление" и как-то напрягает конструкция <Содержит "">.

Предложение на первый взгляд глупое, но: попробуйте поменять порядок строк - не "Значение - ВидСравнения - Использование", а "Использование - ВидСравнения - Значение". Интересно просто.
8 yzimin
 
20.09.17
10:04
(6) Может проще базу в порядок привести и запретить пустое представление, чем этот костыль вставлять?
9 oleg_km
 
20.09.17
10:06
(7) Это у них уже было. Поищу ссылку
10 Serg_1960
 
20.09.17
10:07
"Данный отбор убирает эти пустые строки" - эээ..., если мне память не изменяет, то достаточно было наложить "пустой" отбор (Не равно без указания значения)
11 dkonakov
 
20.09.17
14:04
(7)
Тип представления - Строка неограниченной длины.
Поменял порядок - ничего не изменилось. Валится на ВидСравнения.Содержит. Но я повторяю, в 8.3.9 и на Windows 7 этот код работает!
(8) Ну по факту это типовая 1с УТ 10.3, код работает на Windows 7. Предложите фирме 1с привести в порядок)
(10) Валится платформа аналогично. Тут похоже не устраивает платформу Строка неограниченной длины и видсравнения в принципе.
12 Йохохо
 
20.09.17
14:07
(11) а если больше поставить? или добавить сортировку тупо
13 RS2017
 
20.09.17
14:13
(6) зачем это делать в ПриПолученииДанных, очевидно установка отбора вызовет очередное обновление ТП и вызов ПриПолученииДанных. Зациклилось.
14 vtolga
 
20.09.17
14:25
Может, лучше накидать обработку, почистить пустые строки и убрать этот код ?
15 RS2017
 
20.09.17
14:28
(14) там (в регистре) нет пустых строк, они выводятся в ТП для удобства пользователя. А ТС с этим "удобством" борется какими-то извращенными методами.
16 dkonakov
 
20.09.17
14:58
(13) Если бы зациклилось, то вряд ли бы сразу свалилось. (15) Ну так подскажите ваш ход мыслей?
17 Вафель
 
20.09.17
15:00
(16) даже если не зациклилось, то так делать не надо
18 dkonakov
 
20.09.17
15:12
(17) Хорошо, если не надо, то как надо?
19 Вафель
 
20.09.17
15:13
ПередОткрытием
20 RS2017
 
20.09.17
15:17
(16) "Если бы зациклилось, то вряд ли бы сразу свалилось." Несколько десятков рекурсивных вызовов для тебя будут выглядеть как мгновение, а память кончится.

(16) Правильно поправить запрос в УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию, достаточно в одном месте вставить "ложь и ". Можно как (19)
21 dkonakov
 
20.09.17
15:44
(20) Спасибо.
Ниже публикую решение:

Чтобы в форме элемента справочника "Контрагенты" на вкладке "Контакты" не было пустых контактов, нужно в общем модуле
"УправлениеКонтактнойИнформацией" в процедуре "ПрочитатьКонтактнуюИнформацию" в первой части подзапроса в секции ГДЕ добавить "ЛОЖЬ И".

Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    ВложенныйЗапрос.Вид КАК Вид,
                   |    ВложенныйЗапрос.Тип КАК Тип,
                   |    ВложенныйЗапрос.Объект КАК Объект,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле1) КАК Поле1,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле2) КАК Поле2,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле3) КАК Поле3,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле4) КАК Поле4,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле5) КАК Поле5,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле6) КАК Поле6,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле7) КАК Поле7,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле8) КАК Поле8,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле9) КАК Поле9,
                   |    МАКСИМУМ(ВложенныйЗапрос.Поле10) КАК Поле10,
                   |    МАКСИМУМ(ВложенныйЗапрос.Представление) КАК Представление,
                   |    МАКСИМУМ(ВложенныйЗапрос.Комментарий) КАК Комментарий,
                   |    МАКСИМУМ(ВложенныйЗапрос.ЗначениеПоУмолчанию) КАК ЗначениеПоУмолчанию,
                   |    МАКСИМУМ(ВложенныйЗапрос.ТипДома) КАК ТипДома,
                   |    МАКСИМУМ(ВложенныйЗапрос.ТипКорпуса) КАК ТипКорпуса,
                   |    МАКСИМУМ(ВложенныйЗапрос.ТипКвартиры) КАК ТипКвартиры
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        &Объект КАК Объект,
                   |        ВидыКонтактнойИнформации.Тип КАК Тип,
                   |        ВидыКонтактнойИнформации.Ссылка КАК Вид,
                   |        """" КАК Представление,
                   |        """" КАК Поле1,
                   |        """" КАК Поле2,
                   |        """" КАК Поле3,
                   |        """" КАК Поле4,
                   |        """" КАК Поле5,
                   |        """" КАК Поле6,
                   |        """" КАК Поле7,
                   |        """" КАК Поле8,
                   |        """" КАК Поле9,
                   |        """" КАК Поле10,
                   |        """" КАК Комментарий,
                   |        ЛОЖЬ КАК ЗначениеПоУмолчанию,
                   |        ЗНАЧЕНИЕ(Перечисление.ТипыДомов.ПустаяСсылка) КАК ТипДома,
                   |        ЗНАЧЕНИЕ(Перечисление.ТипыКорпусов.ПустаяСсылка) КАК ТипКорпуса,
                   |        ЗНАЧЕНИЕ(Перечисление.ТипыКвартир.ПустаяСсылка) КАК ТипКвартиры
                   |    ИЗ
                   |        Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
                   |    ГДЕ
                   |        ЛОЖЬ И
               |        (НЕ ВидыКонтактнойИнформации.ПометкаУдаления)
                   |        И ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = &ВидОбъектаКонтактнойИнформации
                   |    
                   |    ОБЪЕДИНИТЬ
                   |    
                   |    ВЫБРАТЬ
                   |        РегистрСведенийКонтактнаяИнформация.Объект,
                   |        РегистрСведенийКонтактнаяИнформация.Тип,
                   |        РегистрСведенийКонтактнаяИнформация.Вид,
                   |        ВЫРАЗИТЬ(РегистрСведенийКонтактнаяИнформация.Представление КАК СТРОКА(1000)),
                   |        РегистрСведенийКонтактнаяИнформация.Поле1,
                   |        РегистрСведенийКонтактнаяИнформация.Поле2,
                   |        РегистрСведенийКонтактнаяИнформация.Поле3,
                   |        РегистрСведенийКонтактнаяИнформация.Поле4,
                   |        РегистрСведенийКонтактнаяИнформация.Поле5,
                   |        РегистрСведенийКонтактнаяИнформация.Поле6,
                   |        РегистрСведенийКонтактнаяИнформация.Поле7,
                   |        РегистрСведенийКонтактнаяИнформация.Поле8,
                   |        РегистрСведенийКонтактнаяИнформация.Поле9,
                   |        РегистрСведенийКонтактнаяИнформация.Поле10,
                   |        ВЫРАЗИТЬ(РегистрСведенийКонтактнаяИнформация.Комментарий КАК СТРОКА(1000)),
                   |        РегистрСведенийКонтактнаяИнформация.ЗначениеПоУмолчанию,
                   |        РегистрСведенийКонтактнаяИнформация.ТипДома,
                   |        РегистрСведенийКонтактнаяИнформация.ТипКорпуса,
                   |        РегистрСведенийКонтактнаяИнформация.ТипКвартиры
                   |    ИЗ
                   |        РегистрСведений.КонтактнаяИнформация КАК РегистрСведенийКонтактнаяИнформация
                   |    ГДЕ
                   |        РегистрСведенийКонтактнаяИнформация.Объект = &Объект) КАК ВложенныйЗапрос
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ВложенныйЗапрос.Вид,
                   |    ВложенныйЗапрос.Тип,
                   |    ВложенныйЗапрос.Объект
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Представление УБЫВ,
                   |    ВложенныйЗапрос.Тип.Порядок,
                   |    Вид";
22 Вафель
 
20.09.17
15:47
Для нового контрагента не введешь ничего
23 RS2017
 
20.09.17
15:48
(22) так же как и для старого: добавляй строку и заполняй руками
24 dkonakov
 
20.09.17
15:59
(22) это и не требовалось. Спасибо за участие.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс