Изменение реквизита составного типа

1. fugu 23 29.03.21 13:46 Сейчас в теме
Добрый день, есть самописный документ ЗаказНужный.
УТП для Украины.
В нем табличная часть.
Есть колонка - заказ (составного типа).
Пытаюсь при выборе - ФормаВыбора.МножественныйВыбор = Истина;
Обработать выборку.
ТекДанные = ЭлементыФормы.ТаблицаЗаданий.ТекущиеДанные;
	ПерваяСтрока = 1;
	Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив")Тогда
		Для Каждого стр ИЗ ВыбранноеЗначение Цикл
			Если ПерваяСтрока = 1 Тогда
				СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Получить(ТекДанные.НомерСтроки - 1);
				СтрокаДок.Заказ = стр;
				ПерваяСтрока = 0;
			Иначе
				СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Добавить();
				СтрокаДок.Заказ = стр;
			КонецЕсли;	
		КонецЦикла;
	КонецЕсли;

Показать


Первый не добавляет, т.к. кнопка "Добавить" изначально формирует пустую строку.
Все последующие строки добавляет без проблем.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
15. fugu 23 06.04.21 16:06 Сейчас в теме +1 $m
Нашел ошибку.
Нужно установить СтандартнаяОбработка = ЛОЖЬ;
и все заработало.

Всем спасибо.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 72 29.03.21 14:00 Сейчас в теме
(1)Так у вас в ветке
Если ПерваяСтрока = 1 Тогда
нет кода на добавление строки, код есть в ветке "Иначе".

Если строка выделена курсором, то используйте

ТекДанные.Заказ = Стр;


вместо

СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Получить(ТекДанные.НомерСтроки - 1);
СтрокаДок.Заказ = стр;



При чем здесь реквизит составного типа, о котором ворос?
7. spacecraft 29.03.21 18:27 Сейчас в теме
(1) так?

Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив")Тогда
        Для Каждого стр ИЗ ВыбранноеЗначение Цикл
                СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Добавить();
                СтрокаДок.Заказ = стр;
            КонецЕсли;    
        КонецЦикла;
        Объект.ТаблицаЗаданий.Удалить(Элементы.ТаблицаЗаданий.ТекущаяСтрока);
    КонецЕсли;
8. fugu 23 29.03.21 20:45 Сейчас в теме
(7) Вариант, но хотелось бы добавить в текущую строку.
9. spacecraft 29.03.21 21:35 Сейчас в теме
(8) а так?
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") И ВыбранноеЗначение.Количество() > 0 Тогда
        Элементы.ТаблицаЗаданий.ТекущиеДанные.Заказ = ВыбранноеЗначение[0];
        Для К=1 По ВыбранноеЗначение.ВГраница() Цикл
		СтрТЧ = Объект.ТаблицаЗаданий.Добавить();
		СтрТЧ.Заказ = ВыбранноеЗначение[К];
	КонецЦикла;
    КонецЕсли;
Показать
3. AnryMc 849 29.03.21 14:02 Сейчас в теме
Вижу описание проблемы...

А в чём конкретно вопрос?
4. fugu 23 29.03.21 14:06 Сейчас в теме
(2) ТекДанные.Заказ = стр;
тоже делал - не помогает.

Вопрос, как в "первую строку" при выборе добавить Заказ, все поля добавляет кроме этого.
5. fugu 23 29.03.21 14:10 Сейчас в теме
я нажимаю "Добавить", зеленый крестик. Получается пустая строка. Потом уже пытаюсь выбрать заказ в этой строке - и болт на 42
6. fugu 23 29.03.21 17:04 Сейчас в теме
Как записать значение в текущую строку, которая уже создана, единственное различие составной тип
10. DenisVol 3 30.03.21 14:54 Сейчас в теме
11. ab_initio 95 30.03.21 18:55 Сейчас в теме
Можно чуть-чуть пояснить. Это толстый клиент, обычное приложение? В посте (1) код из обработчика события какого? Обработка выбора?
12. fugu 23 30.03.21 21:49 Сейчас в теме
Обработка выбора, обычное приложение.

(10) ТипСтр = "СправочникСсылка.Номенклатура";
Элемент.ОграничениеТипа = Новый ОписаниеТипов(ТипСтр);
Значение = Элемент.Значение
Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
Элемент.ВыбиратьТип = Ложь;

Если 2 выбрано значения, то заполняется, как надо, если одно значение, не срабатывает(((
13. fugu 23 30.03.21 21:55 Сейчас в теме
Вот код:
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив")Тогда
Для Каждого стр ИЗ ВыбранноеЗначение Цикл
Если ПерваяСтрока = 1 Тогда
Массив = Новый Массив();
Массив.Добавить("ДокументСсылка."+СтрЗаменить(ТипЗнч(стр)," ",""));
Элемент.ОграничениеТипа = Новый ОписаниеТипов(Массив);
Значение = стр;
Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
Элемент.ВыбиратьТип = Истина;
ПерваяСтрока = 0;
Иначе
СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Добавить();
СтрокаДок.Заказ = стр;
СтрокаДок.ВидЗадания = ВидЗадания;
ЭлементыФормы.ТаблицаЗаданий.ТекущаяСтрока= ТаблицаЗаданий.Найти(СтрокаДок.НомерСтроки, "НомерСтроки");
КонецЕсли;
ТаблицаЗаданийЗаказПриИзменении(Элемент);
КонецЦикла;
КонецЕсли;
14. fugu 23 30.03.21 21:56 Сейчас в теме
Когда выбираю 2 значения, все корректно. Одно значение - не заполняется.
15. fugu 23 06.04.21 16:06 Сейчас в теме +1 $m
Нашел ошибку.
Нужно установить СтандартнаяОбработка = ЛОЖЬ;
и все заработало.

Всем спасибо.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот