Имя: Пароль:
1C
1С v8
Вычислить без запроса "ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику)"
,
0 DirecTwiX
 
15.04.14
04:05
Пробовал Вычислить(), но ничего не получилось
1 SeraFim
 
15.04.14
04:09
Перечисления.ВидыОперацийРКО.ОплатаПоставщику
2 DirecTwiX
 
15.04.14
04:10
(1) ?
Я вроде задал вполне конкретный вопрос)

Если ещё конкретнее, то мне нужно по строке
"А.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику)"
наложить отбор в форме списка. Сильно париться не хочется)
3 Рэйв
 
15.04.14
04:25
(0) не проснулся что ли? Просто присваивай (1)
4 DirecTwiX
 
15.04.14
04:28
(3) Запрос собираю вручную. Есть массив условий вида "А.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику)"
Переделывать лень)
5 SeraFim
 
15.04.14
04:32
нифига не конкретно, нифига не понятно
6 SeraFim
 
15.04.14
04:38
Есть еще
ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ОплатаПоставщику")
7 DirecTwiX
 
15.04.14
04:40
(6) Не знал. Пригодится)
Спасибо всем! Тему можно закрывать)
8 Wobland
 
15.04.14
06:06
>Я вроде задал вполне конкретный вопрос)
это ты мощно задвинул
9 DirecTwiX
 
15.04.14
07:09
(8) Что не так то?)
[Вычислить без запроса "ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику)"] подразумевает вопрос [Как вычислить без запроса "ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику)"]
10 Рэйв
 
15.04.14
07:11
(9)Без запроса не надо ничего вычислять.
ЗНАЧЕНИЕ(...  - это только для запроса.
А так ,
Перечисление.ВидыОперацийРКО.ОплатаПоставщику- само по себе уже значение. Просто присваивай куда надо
11 DirecTwiX
 
15.04.14
07:13
(10) Если бы всё было так просто)
ПеречислениЕ.ВидыОперацийРКО.ОплатаПоставщику - не значение.
Поэтому пришлось заменять Е на Я и использовать Вычислить()
12 Рэйв
 
15.04.14
07:14
(11)аа.. Ну так используй ПеречислениЯ
13 Рэйв
 
15.04.14
07:14
и вообще не понятно чего ты делаешь и для каких целей эти квадратные колеса...
14 DirecTwiX
 
15.04.14
07:17
(13) Если бы было "Перечисления", то колёса в другом месте были бы квадратные)
15 Рэйв
 
15.04.14
07:19
(14)Все равно нифига не понятно
16 Cube
 
15.04.14
07:20
(11) В ПредопределенноеЗначение() пишется "ПеречислениЕ".
И это, (15) +100! ТС явно на своей волне...
17 DirecTwiX
 
15.04.14
07:27
Хотел сделать универсальную функцию, но потом заметил, что ещё придётся накладывать отбор на списки документов.
Функция СформироватьВыполнитьЗапросДляКоличества(Доки, Условия, Псевдонимы)    
    Запрос = "ВЫБРАТЬ
    |    Контрагенты.Ссылка
    |ПОМЕСТИТЬ Контрагенты
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    Контрагенты.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
    |    И НЕ Контрагенты.ЭтоГруппа
    |    И НЕ Контрагенты.ПометкаУдаления
    |;";
    
    Шаблон = "
    |ВЫБРАТЬ
    |    Контрагенты.Ссылка,
    |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ А.Ссылка) КАК %Псевдоним%
    |Поместить %Документ%
    |ИЗ
    |    Контрагенты КАК Контрагенты
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.%Документ% КАК А
    |        ПО Контрагенты.Ссылка = А.Контрагент И А.Проведен И А.Дата МЕЖДУ &НП И &КП И %Условие%
    |
    |СГРУППИРОВАТЬ ПО
    |    Контрагенты.Ссылка;";
    
    Постфикс = "";
    Соединение = "";
    Для Сч = 0 По Доки.Количество()-1 Цикл
        Часть = СтрЗаменить(Шаблон, "%Документ%", Доки[Сч]);
        Часть = СтрЗаменить(Часть, "%Условие%", Условия[Сч]);
        Часть = СтрЗаменить(Часть, "%Псевдоним%", Псевдонимы[Сч]);
        Запрос = Запрос + Часть;    
        Постфикс = Постфикс+", "+Доки[Сч]+"."+Псевдонимы[Сч];
        Соединение = Соединение+" ВНУТРЕННЕЕ СОЕДИНЕНИЕ "+Доки[Сч]+" КАК "+Доки[Сч]+
            " ПО Контрагенты.Ссылка = "+Доки[Сч]+".Ссылка"
    КонецЦикла;
    
    Итого = "ВЫБРАТЬ ЛОЖЬ КАК Пометка, Контрагенты.Ссылка КАК Контрагент" + Постфикс +
        " ИЗ Контрагенты КАК Контрагенты" + Соединение + " УПОРЯДОЧИТЬ ПО Контрагент АВТОУПОРЯДОЧИВАНИЕ";
        
        
    Текст = Запрос + Итого;    
    
    Запрос = Новый Запрос;
    Запрос.Текст = Текст;
    Запрос.УстановитьПараметр("НП", НачалоПериода);
    Запрос.УстановитьПараметр("КП", КонецПериода);

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


Процедура ВыполнитьНажатие(Кнопка)
    Если не ПроверитьЗаполнение() Тогда
        Возврат;    
    КонецЕсли;
    Доки = Новый Массив;
    Доки.Добавить("ПоступлениеТоваровУслуг");
    Доки.Добавить("РеализацияТоваровУслуг");
    Доки.Добавить("ПоступлениеНаРасчетныйСчет");
    Доки.Добавить("СписаниеСРасчетногоСчета");
    Доки.Добавить("ПриходныйКассовыйОрдер");
    Доки.Добавить("РасходныйКассовыйОрдер");
    
    Условия = Новый Массив;
    Условия.Добавить("ИСТИНА");
    Условия.Добавить("ИСТИНА");
    Условия.Добавить("А.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя)");
    Условия.Добавить("А.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику)");
    Условия.Добавить("А.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПКО.ОплатаПокупателя)");
    Условия.Добавить("А.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику)");
    //Отбор накладывается "плоско" в ТаблицаВыбор()
    
    Псевдонимы = Новый Массив;
    Псевдонимы.Добавить("ПТУ");
    Псевдонимы.Добавить("РТУ");
    Псевдонимы.Добавить("ПРС");
    Псевдонимы.Добавить("СРС");
    Псевдонимы.Добавить("ПКО");
    Псевдонимы.Добавить("РКО");
    
    РезультатЗапроса = СформироватьВыполнитьЗапросДляКоличества(Доки, Условия, Псевдонимы);
    Таблица = РезультатЗапроса.Выгрузить();
КонецПроцедуры
18 Рэйв
 
15.04.14
07:33
Жесть конечно...
Но,
Условия.Добавить("А.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя)");

Замени на  Условия.Добавить("А.ВидОперации =@Пар1");
+ в функции
Запрос.УстановитьПараметр("Пар1",Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя);

и остальные так же.

И будет тебе счастье.
19 Рэйв
 
15.04.14
07:34
вместо @ конечно &
20 Cube
 
15.04.14
07:38
(18) Лучше так:

Условия.Добавить("А.ВидОперации В (&СписокВидовОпераций)");

...

СписокВидовОпераций = Новый СписокЗначений;
СписокВидовОпераций.Добавить(Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя);
СписокВидовОпераций.Добавить(Перечисления.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику);
СписокВидовОпераций.Добавить(Перечисления.ВидыОперацийПКО.ОплатаПокупателя);
Запрос.УстановитьПараметр("СписокВидовОпераций", СписокВидовОпераций);
21 Рэйв
 
15.04.14
07:40
(20)Да, так оптимальнее.
22 DirecTwiX
 
15.04.14
07:44
(18) Сначала не хотел использовать параметры, так как так казалось быстрее. А потом увидел, что нужно отбор делать, и пожалел о своём решении. Но так тоже ничего)

Критикуйте уже до конца тогда)

//Плоско
Процедура УстановитьОтборПоУсловию(Отбор, НастройкаОтбора, Условие)
    Поз = Найти(Условие, "(");
    Если Поз<>0 Тогда
        Знч = Прав(Условие, СтрДлина(Условие)-Поз);
        Знч = Лев(Знч, СтрДлина(Знч)-1);
        Знч = СтрЗаменить(Знч, "Перечисление.", "Перечисления.");
        Значение = Вычислить(Знч);
        Отбор.ВидОперации.Установить(Значение);
        НастройкаОтбора.ВидОперации.Доступность = Ложь;
    КонецЕсли;         
КонецПроцедуры

Процедура ТаблицаВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    Инд = Псевдонимы.Найти(Колонка.Имя);
    Если Инд<>Неопределено Тогда
        СтандартнаяОбработка = Ложь;
        Менеджер = Документы[Доки[Инд]];
        Форма = Менеджер.ПолучитьФормуСписка(, ЭтаФорма);
        Форма.ЗакрыватьПриЗакрытииВладельца = Истина;
        
        Отбор = Форма.Отбор;
        НастройкаОтбора = Форма.ЭлементыФормы.ДокументСписок.НастройкаОтбора;

        Отбор.Контрагент.Установить(ВыбраннаяСтрока.Контрагент);
        НастройкаОтбора.Контрагент.Доступность = Ложь;
        
        Отбор.Дата.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы;
        Отбор.Дата.ЗначениеС = НачалоПериода;
        Отбор.Дата.ЗначениеПо = КонецПериода;    
        
        Отбор.Проведен.Установить(Истина);
        
        УстановитьОтборПоУсловию(Отбор, НастройкаОтбора, Условия[Инд]);
        
        Форма.Открыть();
    КонецЕсли;
КонецПроцедуры
23 Wobland
 
15.04.14
08:13
(9) 1. задал вполне конкретный вопрос
2. подразумевает вопрос
24 Wobland
 
15.04.14
08:15
(22) я ничо не понял. есть кусок кода, предназначенный неизвестно для чего
25 Necessitudo
 
15.04.14
08:47
(0) Я тоже не понял чего ты хочешь.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.