Имя: Пароль:
1C
1С v8
Выбор поля таблицы - составной тип данных
,
0 obama
 
03.04.15
15:06
Привет, помогите начинающему.

Есть таблица на форме документа, есть 2 колонки, тип справочника второй колонки зависит от первой.

Данные Колонка1 могут быть 1 или 2. (упростил)
Тип справочника Колонка 2 - контрагент или организация.

&НаКлиенте
Процедура ТаблицаКолонка2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Если Элементы.Таблица.ТекущиеДанные.Колонка1=1 тогда
        Элемент=ПустаяСсылка(1);
    ИначеЕсли Элементы.Таблица.ТекущиеДанные.Колонка1=2 тогда
        Элемент=ПустаяСсылка(2);
          КонецЕсли;    
КонецПроцедуры

Значение Элементу присваивается нормально.
Далее происходит выбор с кнопки ... в колонке2.  Но все равно открывается окно выбора двух справочников.  Галочка "Выбрать тип" у поля "Колонка2" стоит. Если ее снять, то и кнопки в ячейке не будет.

Или в этой процедуре бесполезно пытаться сменить тип и нужно мучать ПриНачалеРедактирования таблицы ?
1 DrShad
 
03.04.15
15:08
ОграничениеТипа() или присвайвай пустую ссылку нужного типа
2 obama
 
03.04.15
15:16
(1) с ограниченим типа можно пример посмотреть?   а на счет пустой ссылки я ее присваиваю элементу и в отладчике видно, что ему эта ссылка присвоилась.
3 DrShad
 
03.04.15
15:21
(2) ну так вот в составном типе если присвоена пустая ссылка, то при выборе должна открыться уже необходимая форма
4 obama
 
03.04.15
15:27
(3) я был в этом уверен час назад ) близок к сходу с ума ))
может я не так ссылку беру?   Поскольку таблица на клиенте я сделал функцию на сервере которая возвращает нужный тип справочника..

&НаСервере
Функция  ПустаяСсылка(Конт)
    Если Конт=1 тогда
        Возврат Справочники.Организации.ПустаяСсылка();
    ИначеЕсли Конт=2 тогда    
        Возврат Справочники.Контрагенты.ПустаяСсылка();
    Иначе
        сообщить("хрень какая то");
        Возврат "";
    КонецЕсли;    
КонецФункции
5 obama
 
03.04.15
16:29
последнее, что проверил накатил 8.3.5.1517 релиз.  не помогло
6 obama
 
03.04.15
16:49
Пока нашел одно решение .. ну хоть что то !
1. Снял галочку "Выбрать тип" у поля "Колонка2"
2. Поменял процедуру на клиенте, на сервере убрал.

&НаКлиенте
Процедура ТаблицаКолонка2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Если Элементы.Таблица.ТекущиеДанные.Колонка1=1 тогда
        Массив = Новый Массив();
    Массив.Добавить(Тип("СправочникСсылка.Организации"));
    Элемент.ОграничениеТипа = Новый ОписаниеТипов(Массив);    
    ИначеЕсли Элементы.Таблица.ТекущиеДанные.Колонка1=2 тогда
        Массив = Новый Массив();
    Массив.Добавить(Тип("СправочникСсылка.Контрагенты"));
    Элемент.ОграничениеТипа = Новый ОписаниеТипов(Массив);    
          КонецЕсли;    
КонецПроцедуры


Видимо указание пустой ссылки на поле составного типа больше не работает..
7 hhhh
 
03.04.15
16:54
(6) наверно -таки

Элемент.Значение = ПустаяСсылка(1);
8 DrShad
 
03.04.15
16:58
ну так у Элемента можно было отключить выбор типа, после установки ограничения или ссылки
9 obama
 
03.04.15
17:06
(7)Поле объекта не обнаружено (Значение)
10 obama
 
03.04.15
17:12
(8) честно сказать не понял чем именно отключить выбор типа после установки ссылки?  как называется метод ?

кстати с галочкой "Выбрать тип" процедура (6) тоже заработала ))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший