Про1С-ник
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0
Есть ТЗ с некими колонками, одна из них Номенклатура (в справочнике номенклатуры есть поле СтавкаНДС), так вот как методом ТЗ.НайтиСтроки выбрать строки с нужной мне ставкой НДС?
Личные бесплатные консультации не даю, для этого есть форум!
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Именно этим методом никак.
Цитата
НайтиСтроки (FindRows) Синтаксис:
НайтиСтроки(<ПараметрыОтбора>) Параметры:
<ПараметрыОтбора> (обязательный)
Тип: Структура. Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение.
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Вариантов "что делать" может быть несколько: 1) Я не в курсе откуда берутся данные в ТЗ. Так вот можно сделать, чтобы туда они попадали уже с определенной ставкой НДС; 2) Перебором строк смотреть на ставку НДС и если подходит - выносим эти строки куда надо и дальше с ними делаем что надо; 3) Добавить в таблицу колонку СтавкаНДС. А если сильно мозолит глаз - то просто на форме её скрыть.
Про1С-ник
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0
Цитата(Vofka @ 22.05.12, 11:42)
Я не в курсе откуда берутся данные в ТЗ. Так вот можно сделать, чтобы туда они попадали уже с определенной ставкой НДС;
Тз это ТЧ документа которая обрабатывается на сервере перед записью в форме
Цитата(Vofka @ 22.05.12, 11:42)
Перебором строк смотреть на ставку НДС и если подходит - выносим эти строки куда надо и дальше с ними делаем что надо;
Перебором строк не подходит, потому что идет перебор СтавокНДС и по ним отбор строк для формирования из них документов, ну и перебирать придется несколько раз что не вариант.
Цитата(Vofka @ 22.05.12, 11:42)
Добавить в таблицу колонку СтавкаНДС. А если сильно мозолит глаз - то просто на форме её скрыть.
Думал над этим вопросом, но считаю не лучшим решением, должны же быть какие-то другие, более гуманные варианты.
Личные бесплатные консультации не даю, для этого есть форум!
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Цитата(logist @ 22.05.12, 12:05)
Перебором строк не подходит, потому что идет перебор СтавокНДС и по ним отбор строк для формирования из них документов, ну и перебирать придется несколько раз что не вариант.
Во-первых с таким подходом вам и искать строки надо было бы несколько раз. Во-вторых, что мешает при обходе строки по разным ставкам НДС складывать отдельно и потом отдельно их обработать?
Цитата(logist @ 22.05.12, 12:05)
Думал над этим вопросом, но считаю не лучшим решением, должны же быть какие-то другие, более гуманные варианты.
Собственно, если действие происходит на сервере и эта ТЗ пользователю даже не показывается - то я вообще не вижу никаких проблем с добавлением новой колонки.
Ну и что самое интересное: задачу вы озвучили только что (в посте выше), а решение предложили в первом посте с вопросом почему оно не работает. При этом если б задачу озвучили сразу, то я бы предложил такой вариант: запрос с итогами по ставкам НДС.
Про1С-ник
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0
С запросом разобрался, мой косяк, но теперь при выгрузке результата запроса ошибка:
Цитата
Ошибка при вызове метода контекста (Выполнить) ТаблицаДляВыделения = ЗапросТЗ.Выполнить().Выгрузить(); по причине: Содержимое объекта данных может быть выбрано только во временную таблицу
Личные бесплатные консультации не даю, для этого есть форум!
Про1С-ник
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0
МВТ = Новый МенеджерВременныхТаблиц; ЗапросТЗ.МенеджерВременныхТаблиц = МВТ; ЗапросТЗ.Текст = "ВЫБРАТЬ * ПОМЕСТИТЬ ВТ ИЗ &ТЗ КАК ТЗ ГДЕ ТЗ.Номенклатура.СтавкаНДС = &СтавкаНДС"; ЗапросТЗ.УстановитьПараметр("ТЗ", ТаблицаТовары); ЗапросТЗ.УстановитьПараметр("СтавкаНДС", Выборка.СтавкаНДС); ЗапросТЗ.Выполнить();
ЗапросТЗ.Текст = "ВЫБРАТЬ * ИЗ ВТ"; ТаблицаДляВыделения = ЗапросТЗ.Выполнить().Выгрузить();
Цитата
Ошибка при вызове метода контекста (Выполнить) ЗапросТЗ.Выполнить(); по причине: {(1, 42)}: Поле не найдено "ТЗ.Номенклатура.СтавкаНДС" ВЫБРАТЬ * ПОМЕСТИТЬ ВТ ИЗ &ТЗ КАК ТЗ ГДЕ <<?>>ТЗ.Номенклатура.СтавкаНДС = &СтавкаНДС
Личные бесплатные консультации не даю, для этого есть форум!
Живет на форуме
Группа: Местный
Сообщений: 2751
Из: Проскуров
Спасибо сказали: 707 раз
Рейтинг: 686.5
Два варианта; 1) указать колонку в выборке явно , а не * 2) приджойнить к номенклатуре справочник, а фильтр накладывать при выборке из временной таблицы
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!