Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Удаление строк из ТЗ по условию , НайтиПоСсылкам(...) и оставить лишь справочники, документы          
bolobol Подменю пользователя
сообщение 10.09.13, 16:08
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени суток!

Задачка тут возникла актуальностью своей поражая:

НайтиПоСсылкам(...) возвращает ТЗ в которой третья колонка - объект метаданных, которому соответствуют данные в которых найдена ссылка.

Я могу использовать только справочники и документы, как из ТЗ правильно удалить всё остальное?

Как создать ТЗ уже без лишних данных, таких как запись регистра?

Спасибо.

Fynjy Подменю пользователя
сообщение 11.09.13, 7:18
Сообщение #2

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

Запросом.

Сообщение отредактировал Vofka - 11.09.13, 7:19


Signature

Vofka Подменю пользователя
сообщение 11.09.13, 7:22
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Если Метаданные.Справочники.Найти(МетаданныеИЗТЗ) = Неопределено И Метаданные.Документы.Найти(МетаданныеИЗТЗ) = Неопределено Тогда
   // Строка подлежит удалению
КонецЕсли;

Спасибо сказали: bolobol,

ignsv Подменю пользователя
сообщение 11.09.13, 12:24
Сообщение #4

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

вот так можно удалить сстроки ТабЗнач по условию:
Индекс = 0;
    Пока Индекс < Таблица.Количество() Цикл

        СтрокаТаблицы = Таблица.Получить(Индекс);

        Если Условие Тогда
            Индекс = Индекс + 1;
        Иначе
            Таблица.Удалить(СтрокаТаблицы);
        КонецЕсли;

         КонецЦикла;

Спасибо сказали: bolobol,

bolobol Подменю пользователя
сообщение 11.09.13, 13:34
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

Запросом, к сожалению, а может - к счастью, не получается - "Тип не может быть выбран в запросе", а красивое и правильное решение в обход данной ошибки не придумалось. А "Метаданные.Справочники.Содержит(МетаданныеИЗТЗ) = Неопределено" - это решение, спасибо!

Всем спасибо! crazy.gif

logist Подменю пользователя
сообщение 11.09.13, 13:43
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(bolobol @ 11.09.13, 14:34) *
"Тип не может быть выбран в запросе"

Запрос покажите.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

bolobol Подменю пользователя
сообщение 11.09.13, 14:26
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Fynjy @ 11.09.13, 7:18) *
Запросом.


Да, кстати, покажите - какой должен быть запрос? Может, я неверно его напрямки собираю?

logist Подменю пользователя
сообщение 11.09.13, 14:56
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(bolobol @ 11.09.13, 15:26) *
Да, кстати

Это вы покажите, какой у вас запрос, что выдает ошибку.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

bolobol Подменю пользователя
сообщение 11.09.13, 15:08
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

?

Выбрать * из &ТЗ как ТЗ

А может быть другим этот запрос?

logist Подменю пользователя
сообщение 11.09.13, 15:13
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

А дальше? Т.е. весь код давайте. Вам же надо как-то обработать таблицу...

Сообщение отредактировал logist - 11.09.13, 15:13


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Ardi Подменю пользователя
сообщение 11.09.13, 15:14
Сообщение #11

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(bolobol @ 11.09.13, 16:08) *
Выбрать * из &ТЗ как ТЗ

А с другими данными так работает?


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Vofka Подменю пользователя
сообщение 11.09.13, 15:16
Сообщение #12

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Посоны, палю тему: http://pro1c.org.ua/index.php?showtopic=4919 . bolobol, поиск по форуму - классная штука!

Petre Подменю пользователя
сообщение 11.09.13, 15:26
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(bolobol @ 11.09.13, 16:08) *
Выбрать * из &ТЗ как ТЗ

А может быть другим этот запрос?

Проблема скорее всего в самой ТЗ. Она должна иметь типизированные колонки. При создании этой ТЗ устанавливайте тип колонок принудительно.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

bolobol Подменю пользователя
сообщение 11.09.13, 15:30
Сообщение #14

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

Да какой тут код может быть, когда вся задача из двух строк(?)

    Запрос= новый Запрос;
    Запрос.Текст= "ВЫБРАТЬ
                  |    *
                  |ПОМЕСТИТЬ ВТ_ТЗ
                  |ИЗ
                  |    &ТЗ КАК ТЗ
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    1 КАК ЧЧ";
    Запрос.УстановитьПараметр("ТЗ", НайтиПоСсылкам(МассивСсылок));
    Запрос.Выполнить().Выгрузить().ВыбратьСтроку();



Кхм... кажется - проблема ясна crazy.gif Либо задачу не читаем, либо подразумеваем известным, и потому не освещаем, способ приведения ТЗ из НайтиПоСсылка(...) к ТЗ с типизированными колонками за сложность, не превышающую полный перебор этой самой ТЗ циклом.
?

Petre Подменю пользователя
сообщение 11.09.13, 15:54
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Все зависит от конкретной задачи. Может оказаться так, что проще перебрать ТЗ, или наборот, проще готовую ТЗ получить запросом...


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

logist Подменю пользователя
сообщение 11.09.13, 16:01
Сообщение #16

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

ТЗ = НайтиПоСсылкам(МассивСсылок);
Если ТЗ.Количество() Тогда
   Запрос= новый Запрос;
   МВТ = Новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = МВТ;
    Запрос.Текст= "ВЫБРАТЬ * ПОМЕСТИТЬ ВТ ИЗ ТЗ КАК ТЗ";
    Запрос.УстановитьПараметр("ТЗ", ТЗ);
   Запрос.Выполнить();

    Запрос.Текст = "ВЫБРАТЬ 1 КАК ЧЧ";
    Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
Иначе
Сообщить("В ТЗ нифига нет, поэтому запрос выполнять бессмысленно");
КонецЕсли


Signature
Личные бесплатные консультации не даю, для этого есть форум!

bolobol Подменю пользователя
сообщение 11.09.13, 16:14
Сообщение #17

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

МВТ = Новый МенеджерВременныхТаблиц;

От этой строки колонки ТЗ не становятся типизированными.


Косяк в самой возвращаемой ТЗ. Если отладчиком смотреть тип колонки, то там описание типов присутствует, но как получить состав описанных типов колонки - я не разобрался. Может, кстати, знаете?

bolobol Подменю пользователя
сообщение 12.09.13, 10:42
Сообщение #18

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

Итогом изысканий решение пришло на 6 секунд, взамен 32-ух при полном переборе от Vofka, который, в свою очередь, отправил в утиль тупой 17-ти минутный неправильный полный перебор:

    ТЗ.Колонки.Добавить("Данные1", Новый ОписаниеТипов(Справочники.ТипВсеСсылки(), Документы.ТипВсеСсылки().Типы()));
    ТЗ.ЗагрузитьКолонку(ТЗ.ВыгрузитьКолонку("Данные"), "Данные1");
    ТЗ.Свернуть("Данные1");
    МассУд= ТЗ.НайтиСтроки(новый Структура("Данные1", Неопределено));
    Для каждого Эл из МассУд Цикл
        ТЗ.Удалить(Эл);
    КонецЦикла;


ТЗ действительно работает ооочень быстро! 1С не обманывает, с чем всех и поздравляю! Всем спасибо!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 04.05.24, 4:53
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!