Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
07 апр 2026, 23:41

удаление строки в ТЧ

Автор sali, Сегодня в 14:14

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

sali

есть таблица значений для номенклатуры, перед выгрузкой на сервер проверяю размер картинок , если размер больше 800 КБ то нужно удалять. однако пробовал удалять строки на сервере , но писал Обращение к процедуре как к функции Удалить, пробовал через добавление в ново созданный массив, а потом следующая ошибка - Ошибка отображения типов: Отсутствует отображение для типа Строка ТАБЛИЧНОЙ ЧАСТИ
ПРОБОВАЛ ТАК на сервере
МассивУдаляемойНоменклатуры = Новый Массив;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураПрисоединенныеФайлы.Размер КАК Размер,
| НоменклатураПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
|ГДЕ
| НоменклатураПрисоединенныеФайлы.ВладелецФайла В(&ВладельцыФайлов)";

Запрос.УстановитьПараметр("ВладельцыФайлов", товары.выгрузить(,"номенклатура").выгрузитьколонку("номенклатура"));

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить();

Если ВыборкаДетальныеЗаписи.Количество() Тогда
// // проверяем размер картинки с установленым , если не подходит то выбрасываем из массива   
Для Каждого УдаляемаяНоменклатура Из ВыборкаДетальныеЗаписи Цикл
Если УдаляемаяНоменклатура.Размер > (ПараметрыРаботыССервисом.РазмерКартинок * 100) Тогда
НайденнаяНоменклатура = Товары.Выгрузить().Найти(УдаляемаяНоменклатура.ВладелецФайла, "Номенклатура"); 

//НайденнаяНоменклатура = Товары.Выгрузить().НайтиСтроки(Новый Структура("Номенклатура", УдаляемаяНоменклатура.ВладелецФайла));
Товары.Выгрузить().Удалить(НайденнаяНоменклатура);
//Сообщить("У номенклатуры '" + УдаляемаяНоменклатура.ВладелецФайла + "' изображение превышает допустимый размер");
КонецЕсли;

КонецЦикла;

КонецЕсли;
И ТАК на сервере

МассивУдаляемойНоменклатуры = Новый Массив;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураПрисоединенныеФайлы.Размер КАК Размер,
| НоменклатураПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
|ГДЕ
| НоменклатураПрисоединенныеФайлы.ВладелецФайла В(&ВладельцыФайлов)";

Запрос.УстановитьПараметр("ВладельцыФайлов", товары.выгрузить(,"номенклатура").выгрузитьколонку("номенклатура"));

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить();

Если ВыборкаДетальныеЗаписи.Количество() Тогда
// проверяем размер картинки с установленым , если не подходит то выбрасываем из массива   
Для Каждого УдаляемаяНоменклатура Из ВыборкаДетальныеЗаписи Цикл
Если УдаляемаяНоменклатура.Размер > (ПараметрыРаботыССервисом.РазмерКартинок * 100) Тогда
НайденнаяНоменклатура = Товары.Выгрузить().Найти(УдаляемаяНоменклатура.ВладелецФайла, "Номенклатура"); 
МассивУдаляемойНоменклатуры.Добавить(НайденнаяНоменклатура);

КонецЕсли;

КонецЦикла;

КонецЕсли;
Возврат МассивУдаляемойНоменклатуры;
а потом на клиенте
Если Рез.Количество() Тогда
Для Каждого СтрокаТЧ Из Рез Цикл
Товары.Выгрузить().Удалить(СтрокаТЧ);
Сообщить("У номенклатуры '" + Рез + "' изображение превышает допустимый размер");     
КонецЦикла;
КонецЕсли;

antoneus

Чувак, Товары.Выгрузить() возвращает таблицу значений, никакого отношения не имеющую к табличной части. И строки в ней никакого отношения не имеют к строкам табличной части.

sali

Цитата: sali от Сегодня в 14:14Строка ТАБЛИЧНОЙ ЧАСТИ
я просто не помнил как ошибка правильна называлась, поэтому так написал , почти похоже

sali

как мне блин удалить с ТЗ строки?, казалось бы че такого , а не фига

antoneus


sali

это ТЗ,реквизит формы
вот пробую так
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураПрисоединенныеФайлы.Размер КАК Размер,
| НоменклатураПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
|ГДЕ
| НоменклатураПрисоединенныеФайлы.ВладелецФайла В(&ВладельцыФайлов)";

Запрос.УстановитьПараметр("ВладельцыФайлов", товары.выгрузить(,"номенклатура").выгрузитьколонку("номенклатура"));

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить();

//Возврат ВыборкаДетальныеЗаписи;
Если ВыборкаДетальныеЗаписи.Количество() Тогда
// проверяем размер картинки с установленым , если не подходит то выбрасываем из массива   
Для Каждого УдаляемаяНоменклатура Из ВыборкаДетальныеЗаписи Цикл
Если УдаляемаяНоменклатура.Размер > (ПараметрыРаботыССервисом.РазмерКартинок * 100) Тогда
НайденнаяНоменклатура = Товары.Выгрузить().Найти(УдаляемаяНоменклатура.ВладелецФайла, "Номенклатура");   

//МассивУдаляемойНоменклатуры.Добавить(НайденнаяНоменклатура);   
товары.Удалить(товары.Индекс(НайденнаяНоменклатура)); // почему здесь ошибка  вылезает "Обращение к процедуре объекта как к функции (удалить)
КонецЕсли;

КонецЦикла;

КонецЕсли;
/code]

antoneus

Еще раз. Товары.Выгрузить() возвращает новую, абсолютно левую таблицу значений. Можно удалить в ней хоть все строки - на ТЗ на форме это не повлияет никак. Удалять надо непосредственно из ТЗ на форме.

Строки = Товары.НайтиСтроки(Новый Структура("Номенклатура", УдаляемаяНоменклатура.ВладелецФайла));
Если Строки.Количество() <> 0 Тогда
    Товары.Удалить(Строки[0])
КонецЕсли;

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

sali

бляяяя я баран
я товары.удалить(строка[0]) проверял в отладчике он мне естественно выдал ошибку , а дальше я не проверял , сразу прекращал и перезаписывал код
вот я дундук , йогурт без даты целый день в ж0 пе .......
пара пить магний или что там

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск