Всем здравствуйте. Как перебрать строки реквизита Номенклатура табличной части справочника и узнать, есть ли из этой номенклатуры помеченная на удаление? Нужно ли делать запрос и как-то его связать с переборкой номенклатуры?
07.05.2024 16:04:53
Можно попробовать использовать цикл Для Каждого или запрос. Также найдите строки с условием Номенклатура.ПометкаУдаления = Истина. Должно помочь. Сначала запросом выберите помеченные на удаление элементы, входящие в ТЧ, затем при обходе выборке формируйте сообщение. Ну и Отказ = Истина установить, если выборка не пустая. Если проверка перед записью, то в запрос должна передаётся ТЗ из ТЧ объекта. Если при записи/проведении, то можно обратиться собственно к ТЧ ссылки. |
|||
|
|
08.05.2024 12:05:10
Если нужно получить всю таблицу справочника с колонкой есть внутри проблемные номенклатуры или нет: ВЫБРАТЬ РесурсныеСпецификацииМатериалыИУслуги.Ссылка, МАКСИМУМ(РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.ПометкаУдаления) КАК НоменклатураПометкаУдаления ПОМЕСТИТЬ ТаблицаПоТЧ ИЗ Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
СГРУППИРОВАТЬ ПО РесурсныеСпецификацииМатериалыИУслуги.Ссылка ; //////////////////////////////////////////////////////////// ВЫБРАТЬ РесурсныеСпецификации.Ссылка, ЕСТЬNULL(ТаблицаПоТЧ.НоменклатураПометкаУдаления, ЛОЖЬ) КАК НоменклатураПометкаУдаления ИЗ Справочник.РесурсныеСпецификации КАК РесурсныеСпецификации ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПоТЧ КАК ТаблицаПоТЧ ПО ТаблицаПоТЧ.Ссылка = РесурсныеСпецификации.Ссылка Также можно использовать: ОбщегоНазначения.ЗначениеРеквизитаОбъектов(МассивНоменклатуры, "ПометкаУдаления ") |
|||||
|
|
11.05.2024 14:25:37
Вообще я знаю, что обход строк табличной части проще всего реализуется с помощью цикла Для Каждого СтрокаТЧ Из ТабЧасть Цикл. При этом переменной цикла будет являться не номер строки, а вся строка как объект. Если нужен еще номер строки, то можно использовать свойство НомерСтроки или добавить переменную и инкрементировать ее в теле цикла. Есть также возможность использовать обычный цикл Для ... По ... Цикл, но необходимо помнить, что индекс 1-го элемента коллекции всегда равен 0 (нулю). Если вам нужно получить только проблемные элементы справочника, можно сделать так: ВЫБРАТЬ РАЗЛИЧНЫЕ РесурсныеСпецификацииМатериалыИУслуги.Ссылка ИЗ Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги ГДЕ РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.ПометкаУдаления = ИСТИНА |
|||
|
|
13.05.2024 21:17:50
Вспомнил, что колонку то одну можно выгрузить, чтобы ВТ не создавать. Передал массив номенклатуры в параметр запроса и просто выбрал из справочника номенклатуры, только ту, что в этом параметре и помечена на удаление. Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения. Для получения перечня выделенных строк используется следующий код: ВыделенныеСтроки=ЭлементыФормы.ИмяТабличногоПоля.ВыделенныеСтроки; Чтобы программно снять выделение строк табличного поля: ЭлементыФормы.ИмяТабличногоПоля.ВыделенныйСтроки.Очистить(); Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты): НоваяСтрока=ТабличнаяЧасть.Вставить(Индекс) //Индекс - номер добавляемой строки. Нумерация строк начинается с нуля. НоваяСтрока.Реквизит1="Значение"; Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.
|
|||||
|
|
||||