Конфигурации 1cv8
1С:Управление нашей фирмой 1.6
1С:Управление производственным предприятием
8.3.14
Платформа 1C v8.2
Добрый день, есть самописный документ ЗаказНужный.
УТП для Украины.
В нем табличная часть.
Есть колонка - заказ (составного типа).
Пытаюсь при выборе - ФормаВыбора.МножественныйВыбор = Истина;
Обработать выборку.
Первый не добавляет, т.к. кнопка "Добавить" изначально формирует пустую строку.
Все последующие строки добавляет без проблем.
УТП для Украины.
В нем табличная часть.
Есть колонка - заказ (составного типа).
Пытаюсь при выборе - ФормаВыбора.МножественныйВыбор = Истина;
Обработать выборку.
ТекДанные = ЭлементыФормы.ТаблицаЗаданий.ТекущиеДанные;
ПерваяСтрока = 1;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив")Тогда
Для Каждого стр ИЗ ВыбранноеЗначение Цикл
Если ПерваяСтрока = 1 Тогда
СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Получить(ТекДанные.НомерСтроки - 1);
СтрокаДок.Заказ = стр;
ПерваяСтрока = 0;
Иначе
СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Добавить();
СтрокаДок.Заказ = стр;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПоказатьПервый не добавляет, т.к. кнопка "Добавить" изначально формирует пустую строку.
Все последующие строки добавляет без проблем.
По теме из базы знаний
- Универсальные подбор и обработка объектов с установкой реквизитов табличных частей. Версия 1.9.28 (управляемое и обычное приложение) 8.2/8.3
- Составные типы — бесплатный сыр мышеловки производительности
- Групповое изменение реквизитов 8.3
- Простые радости жизни программиста 1С: выбор типа значения
- Использование дополнительных реквизитов и сведений в отчетах
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Так у вас в ветке нет кода на добавление строки, код есть в ветке "Иначе".
Если строка выделена курсором, то используйте
вместо
При чем здесь реквизит составного типа, о котором ворос?
Если ПерваяСтрока = 1 Тогда
Если строка выделена курсором, то используйте
ТекДанные.Заказ = Стр;
вместо
СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Получить(ТекДанные.НомерСтроки - 1);
СтрокаДок.Заказ = стр;
При чем здесь реквизит составного типа, о котором ворос?
(1) так?
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив")Тогда
Для Каждого стр ИЗ ВыбранноеЗначение Цикл
СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Добавить();
СтрокаДок.Заказ = стр;
КонецЕсли;
КонецЦикла;
Объект.ТаблицаЗаданий.Удалить(Элементы.ТаблицаЗаданий.ТекущаяСтрока);
КонецЕсли;
(8) а так?
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") И ВыбранноеЗначение.Количество() > 0 Тогда
Элементы.ТаблицаЗаданий.ТекущиеДанные.Заказ = ВыбранноеЗначение[0];
Для К=1 По ВыбранноеЗначение.ВГраница() Цикл
СтрТЧ = Объект.ТаблицаЗаданий.Добавить();
СтрТЧ.Заказ = ВыбранноеЗначение[К];
КонецЦикла;
КонецЕсли;
Показать
Обработка выбора, обычное приложение.
(10) ТипСтр = "СправочникСсылка.Номенклатура";
Элемент.ОграничениеТипа = Новый ОписаниеТипов(ТипСтр);
Значение = Элемент.Значение
Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
Элемент.ВыбиратьТип = Ложь;
Если 2 выбрано значения, то заполняется, как надо, если одно значение, не срабатывает(((
(10) ТипСтр = "СправочникСсылка.Номенклатура";
Элемент.ОграничениеТипа = Новый ОписаниеТипов(ТипСтр);
Значение = Элемент.Значение
Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
Элемент.ВыбиратьТип = Ложь;
Если 2 выбрано значения, то заполняется, как надо, если одно значение, не срабатывает(((
Вот код:
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив")Тогда
Для Каждого стр ИЗ ВыбранноеЗначение Цикл
Если ПерваяСтрока = 1 Тогда
Массив = Новый Массив();
Массив.Добавить("ДокументСсылка."+СтрЗаменить(ТипЗнч(стр)," ",""));
Элемент.ОграничениеТипа = Новый ОписаниеТипов(Массив);
Значение = стр;
Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
Элемент.ВыбиратьТип = Истина;
ПерваяСтрока = 0;
Иначе
СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Добавить();
СтрокаДок.Заказ = стр;
СтрокаДок.ВидЗадания = ВидЗадания;
ЭлементыФормы.ТаблицаЗаданий.ТекущаяСтрока= ТаблицаЗаданий.Найти(СтрокаДок.НомерСтроки, "НомерСтроки");
КонецЕсли;
ТаблицаЗаданийЗаказПриИзменении(Элемент);
КонецЦикла;
КонецЕсли;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив")Тогда
Для Каждого стр ИЗ ВыбранноеЗначение Цикл
Если ПерваяСтрока = 1 Тогда
Массив = Новый Массив();
Массив.Добавить("ДокументСсылка."+СтрЗаменить(ТипЗнч(стр)," ",""));
Элемент.ОграничениеТипа = Новый ОписаниеТипов(Массив);
Значение = стр;
Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
Элемент.ВыбиратьТип = Истина;
ПерваяСтрока = 0;
Иначе
СтрокаДок = ЭтотОбъект.ТаблицаЗаданий.Добавить();
СтрокаДок.Заказ = стр;
СтрокаДок.ВидЗадания = ВидЗадания;
ЭлементыФормы.ТаблицаЗаданий.ТекущаяСтрока= ТаблицаЗаданий.Найти(СтрокаДок.НомерСтроки, "НомерСтроки");
КонецЕсли;
ТаблицаЗаданийЗаказПриИзменении(Элемент);
КонецЦикла;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот