helpf.pro
Регистрация

v8: Программно не устанавливается отбор по Организация

Vital_53
12.02.2014 13:16Прочитано: 2358
Бухгалтерия 2.0
Отчет: ОборотноСальдоваяВедомость, типовая конфигурация.
Надо, чтобы при открытии оборотки на морде отчета автоматически всегда появлялась конкретная организация и чтобы ее нельзя было перевыбрать.
Кроме того, надо, чтобы в отборе на морде отчета появился отбор по этой организации (и тоже, чтобы был всегда и его нельзя было менять, а другие отборы - можно, как обычно).

Снес отборы в области отборов снизу на морде:
ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();

Сделал там же отбор:
НовыйЭлементОтбора = ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ПолеОтбора = Новый ПолеКомпоновкиДанных("Организация");
НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
НовыйЭлементОтбора.Использование = Истина;
НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = Строка(Справочники.Организации.НайтиПоНаименованию("Конфетпром"));

Делается вроде как нормально.
Но сверху, где задается "Организация" (она из списка) на морде она никак не хочет задаваться (чтобы программно).

Если можно, помогите.
Yandex
Возможно, вас также заинтересует
Реклама на портале
Jonsony
12.02.2014 13:48Ответ № 1
что-то ты перекрутил сильно
в бухне 2.х в отчёте "ОборотноСальдоваяВедомость" на форме уже есть реквизит для выбора организации.
тупо при открытии заполняешь его нужным значением и делаешь реквизит недоступным, и все дела
Jonsony
12.02.2014 13:55Ответ № 2
Процедура так и названа "ПриОткрытии"
Vital_53
12.02.2014 15:26Ответ № 3
В процедуру ПриОткрытии() формы оборотки ставлю
Организация = Строка(Справочники.Организации.НайтиПоНаименованию("Конфетпром"));
либо
ПолеОрганизации = Строка(Справочники.Организации.НайтиПоНаименованию("Конфетпром"));
либо
ЭлементыФормы.Организация.Значение = Строка(Справочники.Организации.НайтиПоНаименованию("Конфетпром"));
и ... не катит (Организация пустая!)
Может что-то в компановщике указать, не могу понять
Jonsony
12.02.2014 17:03Ответ № 4
(3) Vital_53, а при чём тут вообще перевод к строке?
по сути должно быть так
Код 1C v 8.2 УП
 
Орг=Справочники.Организации;
Организация = Орг.НайтиПоНаименованию("твоё ключевое слово");

у меня аналогичным образом фирма подставляется по файлу обмена данных в своей обработке
Изменено 12.02.14 17:03:23
Vital_53
13.02.2014 17:19Ответ № 5
Наконец получилось, в принципе что хотел (см. ниже собственно код).

[// технологическая имитация: для получения Организации и ее представления

ВыбОрганизация = Справочники.Организации.НайтиПоНаименованию("Глобал Климат"); // имитация задания организации
Если ВыбОрганизация = Справочники.Организации.ПустаяСсылка() Тогда
Сообщить("организация по наименованию не обнаружена");
КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК ОрганизацияСсылка,
| Организации.Представление КАК ОрганизацияПредставление
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.Ссылка = &ВыбОрганизация";

Запрос.УстановитьПараметр("ВыбОрганизация", ВыбОрганизация);

Результат = Запрос.Выполнить();

ВыборкаЗаписи = Результат.Выбрать();

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


// собственно код

СпОрг = ЭлементыФормы.Организация.СписокВыбора;
Индекс = СпОрг.Количество() - 1;
Пока Индекс>=0 Цикл
Если ТипЗнч(СпОрг[Индекс].Значение)=Тип("Число") И (СпОрг[Индекс].Представление <> Строка(ОрганизацияПредставление)) Тогда
СпОрг.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;

ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы.Очистить();

НовыйЭлементОтбора = ОтчетОбъект.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ПолеОтбора = Новый ПолеКомпоновкиДанных("Организация");
НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
НовыйЭлементОтбора.Использование = Истина;
НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = ОрганизацияСсылка;
НовыйЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
][/c82]
Vital_53
18.02.2014 17:25Ответ № 6
Вопрос закрыт!
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.