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

Хранилище

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

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



> Выборка из запроса          
MrLOLs Подменю пользователя
сообщение 09.09.15, 16:40
Сообщение #1

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

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

    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(ВыборкаДетальныеЗаписи.НоменклатураСсылка1);
    КонецЦикла;

Нужно получить ссылку на ячейку ТЧ через запрос, чтобы в подальшем изменить ее содержимое.
Ошибка: Поле объекта не обнаружено (НоменклатураСсылка1)
Вопрос: Как достучаться до НоменклатураСсылка1
Пробовал так:
- ВыборкаДетальныеЗаписи.НоменклатураСсылка1 - Ошибка: Поле объекта не обнаружено (НоменклатураСсылка1)
- ВыборкаДетальныеЗаписи.Товары.НоменклатураСсылка1 - Ошибка: Поле объекта не обнаружено (НоменклатураСсылка1)
- ВыборкаДетальныеЗаписи.Товары.Номенклатура.Ссылка - Ошибка: Поле объекта не обнаружено (Номенклатура)
- ВыборкаДетальныеЗаписи.Товары.Ссылка - Ошибка: Поле объекта не обнаружено (Ссылка)
- ВВыборкаДетальныеЗаписи.Ссылка - Ошибка: Поле объекта не обнаружено (Ссылка)
В консоли запросов дело выглядит так:

logist Подменю пользователя
сообщение 09.09.15, 17:44
Сообщение #2

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

Цитата(MrLOLs @ 09.09.15, 17:40) *
Нужно получить ссылку на ячейку ТЧ через запрос, чтобы в подальшем изменить ее содержимое.

Запрос для этого не подходит, запросом можно найти документ, а затем уже получить ДокументОбъект и в его ТЧ уже менять необходимую строку.
Запросы в 1С не выполняют изменений данных объектов.


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

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

MrLOLs Подменю пользователя
сообщение 09.09.15, 18:01
Сообщение #3

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

Я так и понял, вот решение, если кому понадобиться:
Если ЗначениеЗаполнено(ЭтаФорма.ЧтоЗаменить) И ЗначениеЗаполнено(ЭтаФорма.НаЧтоЗаменить) Тогда
        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
        // Данный фрагмент построен конструктором.
        // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
        
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    ПоступлениеТоваровУслуг.Проведен,
            |    ПоступлениеТоваровУслуг.Товары.(
            |        Номенклатура
            |    ),
            |    ПоступлениеТоваровУслуг.Ссылка
            |ИЗ
            |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
            |ГДЕ
            |    ПоступлениеТоваровУслуг.Проведен = &Проведен
            |    И ПоступлениеТоваровУслуг.Товары.Номенклатура = &Номенклатура";
        
        Запрос.УстановитьПараметр("Номенклатура", ЭтаФорма.ЧтоЗаменить);
        Запрос.УстановитьПараметр("Проведен", Истина);
        
        РезультатЗапроса = Запрос.Выполнить();
        
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
        СчетчикДокументов = 0;
        СчетчикТоваров = 0;
        
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            // Вставить обработку выборки ВыборкаДетальныеЗаписи
            Сообщить("1");
            ДокументПоступлениеТоваровУслуг = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
            Для Каждого СтрокаТабличнойЧасти Из ДокументПоступлениеТоваровУслуг.Товары Цикл
                Если СтрокаТабличнойЧасти.Номенклатура = ЭтаФорма.ЧтоЗаменить Тогда
                    СтрокаТабличнойЧасти.Номенклатура = ЭтаФорма.НаЧтоЗаменить;
                    СчетчикТоваров = СчетчикТоваров + 1;
                КонецЕсли;
            КонецЦикла;
            ДокументПоступлениеТоваровУслуг.Записать();
        СчетчикДокументов = СчетчикДокументов + 1;
        КонецЦикла;
        //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
        Сообщить("Заменено " + СчетчикТоваров + " товаров в " + СчетчикДокументов + " документах.");
    Иначе
        Сообщить("Заполните все поля!!!");
    КонецЕсли;

logist Подменю пользователя
сообщение 09.09.15, 18:53
Сообщение #4

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

Думаю, перебирать весь документ для "СтрокаТабличнойЧасти.Номенклатура = ЭтаФорма.ЧтоЗаменить" не стоит, запоросом можно получить нужные номера строк и затем сразу работать с нужными строками.

upd: в запросе работайте с табличной частью а не с документом.


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

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

Vofka Подменю пользователя
сообщение 10.09.15, 8:31
Сообщение #5

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

MrLOLs, ЛЕВОЕ СОЕДИНЕНИЕ из запроса можно убрать. А добраться к свойству Проведен можно через ПоступлениеТоваровУслугТовары.Ссылка.Проведен.

Запрос.Текст = 
"ВЫБРАТЬ
|    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
|   ПоступлениеТоваровУслуг.Ссылка
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|ГДЕ
|    ПоступлениеТоваровУслуг.Ссылка.Проведен
|    И ПоступлениеТоваровУслуг.Товары.Номенклатура = &Номенклатура
|";

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

andr_andrey Подменю пользователя
сообщение 10.09.15, 10:28
Сообщение #6

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 626
Спасибо сказали: 166 раз
Рейтинг: 130.8

Цитата(Vofka @ 10.09.15, 9:31) *
MrLOLs, ЛЕВОЕ СОЕДИНЕНИЕ из запроса можно убрать. А добраться к свойству Проведен можно через ПоступлениеТоваровУслугТовары.Ссылка.Проведен.

Запрос.Текст = 
"ВЫБРАТЬ
|    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
|   ПоступлениеТоваровУслуг.Ссылка
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|ГДЕ
|    ПоступлениеТоваровУслуг.Ссылка.Проведен
|    И ПоступлениеТоваровУслуг.Товары.Номенклатура = &Номенклатура
|";


Дал маху в коде, надеюсь, автор темы поймёт это как направление и не буквально.


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

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

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


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

 

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