Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 22:50
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: ПолучитьОбъект() и табличная часть справочника  (Прочитано 8890 раз)

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

Оффлайн 3030

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2012-11-08
  • Сайт: 
  • Профессия: Ученик 1С
Суть такова: есть справочник, в нем есть реквизиты и несколько табличных частей. Мне надо выбрать некоторые элементы из табличной части справочника, и заменить их. Нахожу элементы с помощью запроса, а вот получить объект, для того, чтобы произвести замену, не получается.
	Маршрут = обОпределитьМаршрутПоУмолчанию(Номенклатура,ТекущаяДата());
Запрос  = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ТехнологическиеОперации.ВспомогательныеМатериалы.(
               | Номенклатура,
               | Применяемость,
               | Ссылка
               | )
               |ИЗ
               | Справочник.ТехнологическиеОперации КАК ТехнологическиеОперации
               |ГДЕ
               | ТехнологическиеОперации.Владелец = &Владелец
               | И ТехнологическиеОперации.ПометкаУдаления = ЛОЖЬ
               | И ТехнологическиеОперации.ВспомогательныеМатериалы.Номенклатура = &ЧтоИщем";
//в запросе выбираем только Номенклатуру и Применяемость из табличной части ВспомогательныеМатериалы    
Запрос.УстановитьПараметр("Владелец", Маршрут);
Запрос.УстановитьПараметр("ЧтоИщем", ЧтоИщем);
//параметры Владелец и ЧтоИщем выбираются пользователем
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
     Вспомогательные = Строка.ВспомогательныеМатериалы;
Для Каждого СтрокаВспомогательные ИЗ Вспомогательные ЦИКЛ
Объект = СтрокаВспомогательные.Ссылка.ПолучитьОбъект();
//вот тут в качестве проверки алгоритма я писал следующее
//Сообщить (Объект.ВспомогательныеМатериалы.Номенклатура) и ничего
КонецЦикла;
КонецЦикла;    
КонецПроцедуры


Оффлайн 3030

  • *
  • Сообщений: 29
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2012-11-08
  • Сайт: 
  • Профессия: Ученик 1С
Решил проблему, но мне кажется, слишком дебильное решение и должно оно быть гораздо проще. Я получил объект и еще одним циклом и сравнением прошелся уже по объекту
    Маршрут = обОпределитьМаршрутПоУмолчанию(Номенклатура,ТекущаяДата());
    Запрос  = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТехнологическиеОперации.ВспомогательныеМатериалы.(
                   |        Номенклатура,
                   |        Применяемость,
                   |        Ссылка
                   |    )
                   |ИЗ
                   |    Справочник.ТехнологическиеОперации КАК ТехнологическиеОперации
                   |ГДЕ
                   |    ТехнологическиеОперации.Владелец = &Владелец
                   |    И ТехнологическиеОперации.ПометкаУдаления = ЛОЖЬ
                   |    И ТехнологическиеОперации.ВспомогательныеМатериалы.Номенклатура = &ЧтоИщем";
    //в запросе выбираем только Номенклатуру и Применяемость из табличной части ВспомогательныеМатериалы               
    Запрос.УстановитьПараметр("Владелец", Маршрут);
    Запрос.УстановитьПараметр("ЧтоИщем", ЧтоИщем);
    //параметры Владелец и ЧтоИщем выбираются пользователем
    Результат = Запрос.Выполнить().Выгрузить();
    Для Каждого Строка Из Результат Цикл
         Вспомогательные = Строка.ВспомогательныеМатериалы;
         Для Каждого СтрокаВспомогательные ИЗ Вспомогательные ЦИКЛ
             Объект = СтрокаВспомогательные.Ссылка.ПолучитьОбъект();
    /////Добавленный перебор
             Для Каждого Строка ИЗ Объект.ВспомогательныеМатериалы ЦИКЛ
                 ЕСЛИ Строка.Номенклатура = ЧтоИщем Тогда
                 Строка.Номенклатура = НаЧтоМеняем;
                 Объект.Записать();
                 КонецЕсли;
             КонецЦикла;
         КонецЦикла;
    КонецЦикла;                   
КонецПроцедуры

Поправьте меня, если есть решение более изящное, буду благодарен.

Оффлайн lobster13

  • *
  • Сообщений: 39
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-10-03
  • Сайт: 
  • Профессия: Программист 1С
Так а не проще было по тому же условию получить список элементов (ссылок) справочника,сгруппировав их. Затем по циклу идем получаем объект и выполняем условие
Для Каждого Строка ИЗ Объект.ВспомогательныеМатериалы ЦИКЛ
                 ЕСЛИ Строка.Номенклатура = ЧтоИщем Тогда
                 Строка.Номенклатура = НаЧтоМеняем;
                 Объект.Записать();
                 КонецЕсли;
             КонецЦикла;
Все равно чтобы что-то изменить нужно получить объект.
А вообще, судя по условиям отбора я бы не заморачивался, а использовал обработку Универсальный подбор и обработка объектов, там есть Произвольные алгоритмы, где нужно можно вставить даннный фрагмент и все выполнить - меньше писанины :)


Теги: 8.1 
 

Как вызвать "Анализ субконто" из справочника "Контрагенты"

Автор EnigManРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 6505
Последний ответ 06 Фев 2012, 10:46
от cska-fanat-kz
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4212
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 643
Последний ответ 10 Май 2017, 20:44
от ilnur75
Как сделать, чтобы поле в документе имело тип "ссылка на поле справочника"?

Автор друганРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 2051
Последний ответ 05 Мар 2017, 14:36
от Igor100500
Изменение цвета при подборе сотрудника в форме списка справочника "Сотрудники организации" для документа "Зарплата к выплате организаций" ЗУП 2.5

Автор ksander-farsРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 275
Последний ответ 12 Окт 2017, 14:02
от wise

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
AIFrame
64 Сообщений
ilyay ilyay
63 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 278
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal