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

Автор Тема: Выбрать из иерархии справочника  (Прочитано 1188 раз)

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

Оффлайн malvina_l

  • *
  • Сообщений: 24
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-12-08
  • Сайт: 
  • Профессия: Программист 1С
Задача: Заполнить реквизит справочника автоматически при выборе другого реквизита.
Проблема : нужно выбрать реквизит из иерархии во внешней обработке как обратиться?
вот начало:
Процедура КнопкаВыполнитьНажатие(Кнопка)
   Запрос= Новый Запрос;
   ТекстЗапроса="ВЫБРАТЬ
   |справочник.Ссылка
   |ИЗ
   |Справочник КАК Справочник";
   
   Запрос.Текст=ТекстЗапроса;
   Результат= Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
   СпрОбъект = Результат.Ссылка.ПолучитьОбъект();
        
      Если СпрОбъект.реквизит="990003451" тогда
            
      СпрОбъект.реквизитКоторыйНадоЗаполнить="555";
      СпрОбъект.Записать();
   КонецЕсли;
   КонецЦикла;
   КонецПроцедуры


Оффлайн KrivosheevEV

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 35
  • КПД: 17%
  • Регистрация: 2014-01-20
  • Сайт: 
  • Профессия: Программист 1С
Нет. Начало не правильное.
В текущем положении вы получаете все возможные элементы справочника, на каждый из них получаете объект, и сравниваете значение реквизита.
Намного правильнее было бы получить только один (или несколько) элемент, у которого "СпрОбъект.реквизит="990003451" и дальше уже работать с ним. Это нетрудно сделать в запросе, добавив конструкцию условий "ГДЕ" и передать в условие значение реквизита.

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

Оффлайн malvina_l

  • *
  • Сообщений: 24
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-12-08
  • Сайт: 
  • Профессия: Программист 1С
Нет. Начало не правильное.
В текущем положении вы получаете все возможные элементы справочника, на каждый из них получаете объект, и сравниваете значение реквизита.
Намного правильнее было бы получить только один (или несколько) элемент, у которого "СпрОбъект.реквизит="990003451" и дальше уже работать с ним. Это нетрудно сделать в запросе, добавив конструкцию условий "ГДЕ" и передать в условие значение реквизита.

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | Форма5.Ссылка
               |ИЗ
               | Документ.Форма5 КАК Форма5
               |ГДЕ
               | Форма5.Дата = &Дата
               | И НЕ Форма5.ПометкаУдаления";
Запрос.УстановитьПараметр("Дата", Дата);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
А как его обозначить если "СпрОбъект.реквизит="990003451"-это номер группы из спарвочника с иерархией.
вот например далее после запроса:
 Пока Результат.Следующий() Цикл
      
    СпрОбъект = Результат.Ссылка.ПолучитьОбъект();
   нг=СпрОбъект.реквизит;
     нг="990003451";
Если ЗначениеЗаполнено(нг) тогда
    СпрОбъект.РеквизитЗаполняемый=справочники.наимен.НайтиПоНаименованию("Наименование");
    СпрОбъект.Записать();
   КонецЕсли;
КонецЦикла;

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
А как его обозначить если "СпрОбъект.реквизит="990003451"-это номер группы из спарвочника с иерархией.
а в чем конкретно проблема то?
в первом сообщении у вас написан код
 Если СпрОбъект.реквизит="990003451" тогда
надо всего лишь это условие перенести в запрос. в чем сложность?
то есть если взять ваш первоначальный код, будет вот так:
Процедура КнопкаВыполнитьНажатие(Кнопка)
Запрос= Новый Запрос;
ТекстЗапроса="ВЫБРАТЬ
|Справочник.Ссылка
|ИЗ
| Справочник КАК Справочник
|ГДЕ
| Справочник.реквизит=&НужноеВамЗначение";

Запрос.УстановитьПараметр("НужноеВамЗначение", "990003451");

Запрос.Текст=ТекстЗапроса;
Результат= Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
СпрОбъект = Результат.Ссылка.ПолучитьОбъект();
СпрОбъект.реквизитКоторыйНадоЗаполнить="555";
СпрОбъект.Записать();
КонецЦикла;
КонецПроцедуры



Теги:
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
160 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
56 Сообщений
alex0402
46 Сообщений
andron81_81
44 Сообщений
AIFrame
35 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
28 Сообщений
BuhRust
27 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal