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

  Маркет42 - Место для твоих разработок  

Присвоить значение реквизиту табличной части документа

Я
   zelenprog

25.06.12 — 11:53

друзья, подскажите плиз,

Как в 1С 8.2 в управляемой форме документа в событии по нажатию кнопки присвоить реквизиту в текущей строке табличной части какое-то значение?

Если можно, то приведите пример кода.

Сильно не ругайте за мой вопрос, я только недавно начал работать с управляемыми формами, тонкостей еще не знаю

  

Партнерская программа EFSOL Oblako

   zelenprog

1 — 25.06.12 — 12:09

Мой код не работает:

Процедура ПереформироватьШтрихКод(Команда)

   Объект.РаботникиОрганизации.ТекущиеДанные.ШтрихКод = …

КонецПроцедуры

Реквизита «ТекущиеДанные» у таблицы формы «РаботникиОрганизации» нету.

И непонятно как обратиться к текущей строке

   Rovan

2 — 25.06.12 — 12:15

(1) а так:

номстр = ЭлементыФормы.Список.ТекущаяСтрока.Номер;

Объект.РаботникиОрганизации[номстр].ШтрихКод = …

   zelenprog

3 — 25.06.12 — 12:16

сейчас попробую

   zelenprog

4 — 25.06.12 — 12:18

(2) ошибка при проверке «Переменная не определена (ЭлементыФормы)»

   AaNnDdRrEeYy

5 — 25.06.12 — 12:19

Элемент.Список.ТекущиеДанные.ШтрихКод = …

   AaNnDdRrEeYy

6 — 25.06.12 — 12:19

(5)вместо Элемент надо Элементы.

  

zelenprog

7 — 25.06.12 — 12:24

(5), (6) работает!

спасибо!

Быстрый старт в Python для 1С Разработчиков | 1s-to-python.ru

Присвоение значения табличной части документа

Автор _max_, 26 авг 2013, 16:47

0 Пользователей и 1 гость просматривают эту тему.

Добрый вечер помогите пож заполнить данными табличную часть документа. Есть документ ОтчетКомиссионераОПродажах, с табличной частью Товары, реквизитом табличной части Цена (Число) и  ЦенаПередачи (Число). Можно ли колонку ЦенаПередачи (Число) автоматически заполнить значением из колонки Цена (Число). А то вручную заполнять долго, много строк слишком.


&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.ЦенаПередачи = Элементы.Товары.ТекущиеДанные.Цена;
КонецПроцедуры


//Если УФ
Для каждого Стр Из Объект.Товары Цикл
   Стр.ЦенаПродажи = Стр.Цена;
КонецЦикла;

//Если Обычные формы
Для каждого Стр Из Товары Цикл
   Стр.ЦенаПродажи = Стр.Цена;
КонецЦикла;

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


Цитата: Dethmontt от 26 авг 2013, 22:01
//Если УФ
Для каждого Стр Из Объект.Товары Цикл
   Стр.ЦенаПродажи = Стр.Цена;
КонецЦикла;

//Если Обычные формы
Для каждого Стр Из Товары Цикл
   Стр.ЦенаПродажи = Стр.Цена;
КонецЦикла;

Процедура Кнопка1Нажатие(Элемент,Стр)
Для каждого Стр Из Товары Цикл
   Стр.ЦенаПродажи = Стр.Цена;
КонецЦикла;   
КонецПроцедуры;

Выдает ошибку «Поле объекта не обнаружено(ЦенаПродажи)»

Добавлено: 27 авг 2013, 08:51


Все с этим разобрался. Код ниже может кому пригодиться:
Процедура Кнопка1Нажатие(Элемент)
ДокВыборка = Документы.ОтчетКомиссионераОПродажах.Выбрать();
   Пока ДокВыборка.Следующий() Цикл
      ДокОбъект = ДокВыборка.ПолучитьОбъект();
   Для каждого СтрокиТабличнойЧасти из Товары  Цикл
      СтрокиТабличнойЧасти.ЦенаПередачи=СтрокиТабличнойЧасти.Цена;
КонецЦикла;
КонецЦикла;   
//ДокОбъект.Записать(?(ДокОбъект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));
КонецПроцедуры


monikamo

0 / 0 / 0

Регистрация: 05.01.2019

Сообщений: 7

1

Как присвоить реквизиту ТЧ документа значение реквизита справочника

05.01.2019, 17:55. Показов 3190. Ответов 8

Метки нет (Все метки)


Есть справочник Номенклатура, в котором реквизит «Дата выхода» типа Дата
И документ «Прием подписок» с реквизитом «Дата выдачи» тип Дата
Необходимо значение даты из справочника подставить в табличную часть «Номенклатура» документа «Прием подписок»

Пыталась сделать вот так, ничего не получается, помогите пожалуйста

1C
1
2
3
4
5
6
7
8
9
10
&НаСервере
Функция ПолучитьЗначениеРеквизитаНаСервере(ТекОбъект, ДатаВыдачи)
 Возврат ТекОбъект[ДатаВыдачи];
КонецФункции
 
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
 ТекСтрока = Элементы.Номенклатура.ТекущиеДанные;
 ТекСтрока.ДатаВыхода = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.Номенклатура, "ДатаВыхода");
КонецПроцедуры



0



polax

1808 / 1228 / 442

Регистрация: 16.01.2015

Сообщений: 5,395

05.01.2019, 20:17

2

monikamo, немного перемудрили

1C
1
2
3
4
5
6
7
8
9
10
&НаСервере
Функция ПолучитьЗначениеРеквизитаНаСервере(ТекОбъект)
Возврат ТекОбъект.ДатаВыдачи;
КонецФункции
 
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
ТекСтрока = Элементы.Номенклатура.ТекущиеДанные;
ТекСтрока.ДатаВыхода = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.Номенклатура);
КонецПроцедуры



0



0 / 0 / 0

Регистрация: 05.01.2019

Сообщений: 7

05.01.2019, 20:51

 [ТС]

3

Не получается

Миниатюры

Как присвоить реквизиту ТЧ документа значение реквизита справочника
 



0



polax

1808 / 1228 / 442

Регистрация: 16.01.2015

Сообщений: 5,395

05.01.2019, 20:55

4

monikamo, Ну да. Не обратил внимание

1C
1
ТекСтрока = Элементы.Номенклатура.ТекущиеДанные;

Это неверно. Здесь вместо Номенклатура должно быть имя ТЧ на форме. Что-то типа:

1C
1
ТекСтрока = Элементы.Запасы.ТекущиеДанные;

Где Запасы — имя ТЧ. У вас может быть другое. Но выбор, как правило, не велик. Это либо Запасы, либо Товары ))



0



0 / 0 / 0

Регистрация: 05.01.2019

Сообщений: 7

05.01.2019, 20:58

 [ТС]

5

Так у меня ТЧ номенклатура называется



0



polax

1808 / 1228 / 442

Регистрация: 16.01.2015

Сообщений: 5,395

05.01.2019, 21:15

6

monikamo, )))) Ну кажется тогда вообще все просто. Вы сами перепутали имена дат в коде. А если так?

1C
1
2
3
4
5
6
7
8
9
10
&НаСервере
Функция ПолучитьЗначениеРеквизитаНаСервере(ТекОбъект)
Возврат ТекОбъект.ДатаВыхода;
КонецФункции
 
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
ТекСтрока = Элементы.Номенклатура.ТекущиеДанные;
ТекСтрока.ДатаВыдачи = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.Номенклатура);
КонецПроцедуры



0



0 / 0 / 0

Регистрация: 05.01.2019

Сообщений: 7

05.01.2019, 21:57

 [ТС]

7

Если так, то «Поле объекта не обнаружено(Номенклатура)»
На последней строчке ругается
ТекСтрока.ДатаВыдачи = ПолучитьЗначениеРеквизитаНаСервере(ТекСтрока.Номен клатура);



0



1808 / 1228 / 442

Регистрация: 16.01.2015

Сообщений: 5,395

05.01.2019, 21:59

8

monikamo, Тяжело гадать не видя конфигурации. В вашей ТЧ Номенклатура есть поле Номенклатура? Скорее нет и называется как-то не так



0



0 / 0 / 0

Регистрация: 05.01.2019

Сообщений: 7

05.01.2019, 22:02

 [ТС]

9

Да, точно, спасибо большое!



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

05.01.2019, 22:02

9

 0 

   

Распечатать

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

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

Код 1C v 8.х

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

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

Табличные части существуют у многих объектов в 1С:

  • Справочники
  • Документы
  • Отчеты и обработки
  • Планы счетов
  • Планы видов характеристик
  • Планы видов расчета
  • Бизнес-процессы и задачи

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

Рассмотрим некоторые приемы работы с табличными частями.

Как обойти табличную часть

Для обхода табличной части можно использовать цикл Для каждого

Для каждого Строка из ТабличнаяЧасть Цикл

Сообщить(Строка.РеквизитТабличнойЧасти);

КонецЦикла;

На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.

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

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

Работа с табличной частью объектов в 1СДля получения перечня выделенных строк используется следующий код:

ВыделенныеСтроки=ЭлементыФормы.ИмяТабличногоПоля.ВыделенныеСтроки;

Для того чтобы обойти выделенные строки используется цикл Для каждого:

ВыделенныеСтроки=ЭлементыФормы.ИмяТабличногоПоля.ВыделенныеСтроки;

Для каждого Строка из ВыделенныеСтроки Цикл

//содержимое цикла

КонецЦикла;

Как программно выделить строки табличной части (табличного поля) и снять выделение

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

ЭлементыФормы.ИмяТабличногоПоля.ВыделенныйСтроки.Очистить();

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

Для каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
ЭлементыФормы.ИмяТабличногоПоля.ВыделенныеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;

Как очистить табличную часть

ТабличнаяЧасть.Очистить();

Как получить текущую строку табличной части

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

Для обычных форм код будет выглядеть так:

ЭлементыФормы.ИмяТабличногоПоля.ТекущиеДанные;

Для управляемых форм:

Элементы.ИмяТабличногоПоля.ТекущиеДанные;

Как добавить новую строку в табличную часть

Добавление новой строки в конец табличной части:

НоваяСтрока=ТабличнаяЧасть.Добавить();
НоваяСтрока.Реквизит1=«Значение»;

Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):

НоваяСтрока=ТабличнаяЧасть.Вставить(Индекс)
//Индекс — номер добавляемой строки. Нумерация строк начинается с нуля.

НоваяСтрока.Реквизит1=«Значение»;

Как программно заполнить реквизиты строки табличной части

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

Создаваемая обработчиком процедура имеет три параметра:

  • Элемент — содержит элемент управления ТабличноеПоле.
  • НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
  • Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.

Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.

Процедура ТабличнаяЧастьПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат;
КонецЕсли;

//Если же строка новая, устанавливаем счет учета
ТекСтрока = Элемент.ТекущиеДанные; //Получили текущую строку табличной части
ТекСтрока.СчетУчета = ПланыСчетов.Хозрасчетый.НужныйСчетУчета;
КонецПроцедуры

  1. 10.11.2011, 14:53


    #1

    Frob вне форума


    Гость форума


    По умолчанию установка значения реквизита в табличной части формы документа 8.2

    в одном из документов типовой конфигурации создан реквизит.
    Каким образом установить его значение? (из модуля формы) Бьюсь, уже убился почти. Форма обычная.

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

    Заранее благодарен.


  2. 10.11.2011, 15:15


    #2

    PASAHAKA вне форума


    Просто юзер


    По умолчанию

    Функция КолД(Организация) Экспорт
    Перем Кол;

    Кол=0;
    Выборка = Справочники.ОсновныеСредс� �ва.Выбрать();
    Пока Выборка.Следующий() Цикл
    Объект=Выборка.ПолучитьОбъ ект();
    Если Объект.ЭтоГруппа=Ложь Тогда

    Объект.ВидИмущества=Перечи сления.ВидыИмущества.Недви жимоеИмущество;

    КонецЕсли;
    Объект.Записать();
    Кол = Кол + 1;
    КонецЦикла;
    Сообщить(Кол);

    Возврат Кол;

    КонецФункции[COLOR=»Silver»]

    ———- Post added at 15:14 ———- Previous post was at 15:12 ———-Функция КолД(Организация) Экспорт
    Перем Кол;

    Квывол=0;
    Запрос = Новый Запрос;
    Запрос.Текст = «ВЫБРАТЬ
    | Номенклатура.Ссылка КАК Номенклатура
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.ЭтоГруппа = ЛОЖЬ»;
    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи=Ре� �ультат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Сл� �дующий() Цикл
    Элемент=ВыборкаДетальныеЗ� �писи.Номенклатура.Получит� �Объект();
    Элемент.ВидИмущества=Переч исления.ВидыИмущества.Движ имоеОсобоЦенное;
    Элемент.Записать();
    кол=кол+1;
    КонецЦикла;
    Сообщить(кол);
    Возврат Кол;

    КонецФункции

    ———- Post added at 15:14 ———- Previous post was at 15:14 ———-Функция КолД(Организация) Экспорт
    Перем Кол;

    Квывол=0;
    Запрос = Новый Запрос;
    Запрос.Текст = «ВЫБРАТЬ
    | Номенклатура.Ссылка КАК Номенклатура
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.ЭтоГруппа = ЛОЖЬ»;
    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи=Ре� �ультат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Сл� �дующий() Цикл
    Элемент=ВыборкаДетальныеЗ� �писи.Номенклатура.Получит� �Объект();
    Элемент.ВидИмущества=Переч исления.ВидыИмущества.Движ имоеОсобоЦенное;
    Элемент.Записать();
    кол=кол+1;
    КонецЦикла;
    Сообщить(кол);
    Возврат Кол;

    КонецФункции

    ———- Post added at 15:15 ———- Previous post was at 15:14 ———-Функция КолД(Организация) Экспорт
    Перем Кол;

    Квывол=0;
    Запрос = Новый Запрос;
    Запрос.Текст = «ВЫБРАТЬ
    | Номенклатура.Ссылка КАК Номенклатура
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.ЭтоГруппа = ЛОЖЬ»;
    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи=Ре� �ультат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Сл� �дующий() Цикл
    Элемент=ВыборкаДетальныеЗ� �писи.Номенклатура.Получит� �Объект();
    Элемент.ВидИмущества=Переч исления.ВидыИмущества.Движ имоеОсобоЦенное;
    Элемент.Записать();
    кол=кол+1;
    КонецЦикла;
    Сообщить(кол);
    Возврат Кол;

    КонецФункции

    ———- Post added at 15:15 ———- Previous post was at 15:15 ———-почему продублировалось не знаю


  3. 10.11.2011, 15:21


    #3

    Frob вне форума


    Гость форума


    По умолчанию

    а где реквизит формы в табличной части документа? это не на мой вопрос ответ :)


  4. 10.11.2011, 22:58


    #4

    PASAHAKA вне форума


    Просто юзер


    По умолчанию

    Цитата Сообщение от Frob
    Посмотреть сообщение

    а где реквизит формы в табличной части документа? это не на мой вопрос ответ :)

    текДанные=ЭлементыФормы.та блчасть.ТекущиеДанные;
    текДанные.Реквезит=


  5. 11.11.2011, 08:35


    #5

    Frob вне форума


    Гость форума


    По умолчанию

    нет… не прокатывает такая конструкция… говорит что нет там моего «реквизита», но я уже разобрался.

    Доступ к новой колонке, не связанной с данными документа удалось получить ТОЛЬКО через оформлениестроки в процедуре ПриВыводеСтрок.

    Всем спасибо. Тема закрыта.


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

Код 1C v 8.х

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

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

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

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

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

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

Подписаться

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

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

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