1с назначить тип реквизиту табличной части

 0 

   

Распечатать

1С 8.x : Как изменить, присвоить, указать Тип Значения Ячейки табличной части?

Создаем табличную часть и в ней реквизит с разными типами значений:
title

Код 1C v 8.х

 //Создадим строки с разним типом значения
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = 12345;
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = "Это строка";
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = ТекущаяДата();
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = Истина;

// измененим тип значения в ячейке ТЧ
// Найдем Строку и заменим на Дату
НайденСтрока = ТабЧасть.Найти("Это строка", "РеквизитПроизвольный");
НайденСтрока.РеквизитПроизвольный = ТекущаяДата();
// Найдем Число и заменим на Пустую ссылку справочника Номенклатуры (полученную с Вида судконто)
Счет = ПланыСчетов.Хозрасчетный.ТоварыНаСкладе;
НайденСтрока = ТабЧасть.Найти(12345, "РеквизитПроизвольный");
// Получим первое субконто Номенклатура
Субконото1 = Счет.ВидыСубконто[1];
// Присвоим тип значения
НайденСтрока.РеквизитПроизвольный = Субконото1.ВидСубконто.ТипЗначения.ПривестиЗначение();

1с УПП, обычные формы.

В табличной части есть колонка у которой составной тип данных.

По условию мне нужно программно установить определенный тип, чтобы пользователь при некоторых условиях не выбирал тип, а сразу открывался нужный справочник для выбора элемента.

Делаю так:

Массив = Новый Массив();

Массив.Добавить(Тип(«СправочникСсылка.ОсновныеСредства»));

ОписаниеТипа = Новый ОписаниеТипов(Массив);

ЭлементыФормы.СписокОС.Колонки.ОсновноеСредство.ЭлементУправления.ОграничениеТипа = ОписаниеТипа;

//До этого момента все работает.

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

Пробовал:

ЭлементыФормы.СписокОС.Колонки.ОсновноеСредство.ЭлементУправления.ВыбиратьТип=Ложь

Это не катит, поскольку тогда вообще ничего не происходит при выборе в ячейке.

Если написать:

ЭлементыФормы.СписокОС.Колонки.ОсновноеСредство=ОписаниеТипа.ПривестиЗначение(ЭлементыФормы.СписокОС.Колонки.ОсновноеСредство);

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

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Мозголом

Дата регистрации: 27.02.2007
Сообщений: 145

Платформа: 1С 8.2<br>Конфигурация: 1С УТ 10.3, 1С: Розница<br> <br>Описание: на форме имеется табличная часть, у которой есть некоторый реквизит. Он составной. По умолчанию я его делаю Номенклатурой и документом Установка Цен. При работе просто выбираю необходимый мне тип и заполняю значение в каждой строке.<br> <br>Вопрос: как программно назначать тип реквизиту. нужно чтобы обработка была универсальна, а для этого нужно чтобы для УТ типы были Номенклатура и становка Цен, а для Розницы Номенклатура и Установка цен в магазине (это документ). Вот собственно вопрос: можно ли программно в зависимости от того, какая конфигурация загружена, назначать тип выбираемого реквизита в таблице?<br> <br>P.S.: Прошу в ответе не учитывать метод определения конфигурации, это моя проблема и я ее решил.

Prikum

активный пользователь

офлайн

Дата регистрации: 18.02.2002
Сообщений: 20842

«<pre>// установим тип Справочник.Контрагенты<br>МойРеквизит = Справочники.Контрагенты.ПустаяСсылка(); <br></pre>»

Мозголом

Дата регистрации: 27.02.2007
Сообщений: 145

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

Prikum

активный пользователь

офлайн

Дата регистрации: 18.02.2002
Сообщений: 20842

Мозголом

Дата регистрации: 27.02.2007
Сообщений: 145

При создании обработки для реквизита я могу казать, что он составного типа, и выбрать для него типы «СправочникСсылка.Номенклатура» и «ДокументСсылка.УстановкаЦенНоменклатуры». При интерактивном вводе строки я сначала выбираю значение какого типа мне нужно добавить в таблицу, а потом выбираю уже непосредственно нужный мне элемент, исходя из типа.<br>Так вот собственно вопрос: можно ли программным способом назначать, какие типы мне можно будет выбрать при добавлении строки в таблицу?<br> <br>Можно конечно просто добавить типы «СправочникСсылка» и «ДокументСсылка», но тогда конечный пользователь может запутаться при добавлении строки. Поэтому выбор типа нужно ограничить.

Мозголом

Дата регистрации: 27.02.2007
Сообщений: 145

«А все, разгадал загадку. Вот такое решение я принял:<br> <br><br><pre>Процедура ТабличнаяЧасть1Реквизит1НачалоВыбора(Элемент, СтандартнаяОбработка) // Вставить содержимое обработчика. ТипСпр = Тип(«СправочникСсылка.Номенклатура»); ТипДок = Тип(«ДокументСсылка.УстановкаЦенНоменклатуры»); Если ТипЗнч(Элемент.Значение) <> ТипСпр И ТипЗнч(Элемент.Значение) <> ТипДок Тогда       Массив = Новый Массив;       Массив.Добавить(ТипСпр);       Массив.Добавить(ТипДок);       ОписаниеТипов = Новый ОписаниеТипов(Массив);       Элемент.ОграничениеТипа = ОписаниеТипов; КонецЕсли;КонецПроцедуры </pre><br><br> <br>ТипДок могу менять в зависимости от конфигурации и настроек обработки.<br> <br>Статья, где нашел примерный метод: http://v8.1c.ru/metod/faq/answer.jsp?id=176″

Показывать по
10
20
40
сообщений

Создаем табличную часть и в ней реквизит с разными типами значений:

Код 1C v 8.х

 //Создадим строки с разним типом значения 
      
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = 12345;
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = "Это строка";
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = ТекущаяДата();
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = Истина;

// измененим тип значения в ячейке ТЧ
// Найдем Строку и заменим на Дату
НайденСтрока = ТабЧасть.Найти("Это строка", "РеквизитПроизвольный");
НайденСтрока.РеквизитПроизвольный = ТекущаяДата();
// Найдем Число и заменим на Пустую ссылку справочника Номенклатуры (полученную с Вида судконто)
Счет = ПланыСчетов.Хозрасчетный.ТоварыНаСкладе;
НайденСтрока = ТабЧасть.Найти(12345, "РеквизитПроизвольный");
// Получим первое субконто Номенклатура
Субконото1 = Счет.ВидыСубконто[1];
// Присвоим тип значения
НайденСтрока.РеквизитПроизвольный = Субконото1.ВидСубконто.ТипЗначения.ПривестиЗначение();

Информация взята с сайта http://helpf.pro

Подпишитесь на нашу рассылку новостей

Хотите узнать больше по этому вопросу?

Подпишитесь на нашу рассылку новостей

Подписаться

Чтобы задать вопрос или предложить тему статьи, нажмите на кнопку ниже:

Предложить статью

Задача.
Например, есть табличная часть с двумя колонками «ВидПоступленияДС» и «Аналитика». Поле «Аналитика» может содержать значения составного типа. Необходимо, в зависимости от введенного значения в поле «ВидПоступленияДС», установить нужный тип для поля «Аналитика».
Решение.
В событии «ПриИзменении» поля ввода «ВидПоступленияДС» пропишем следующий код:

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

Понравилась статья? Поделить с друзьями:
  • 2 боткинский проезд 3 герцена как проехать
  • 1с найти реквизит в строке табличной части
  • 2 боткинский проезд 5 корп 28 как проехать
  • 1с настройка реквизитов для уплаты налогов
  • 2303024188 ооо торговая компания ресурс юг