Имя: Пароль:
1C
1С v8
Управляемые формы. Не формируется дерево.
0 espanol
 
24.05.12
14:44
"ВЫБРАТЬ
   |    НоменклатураПрименяемость.Номенклатура
   |ПОМЕСТИТЬ врНом
   |ИЗ
   |    РегистрСведений.НоменклатураПрименяемость КАК НоменклатураПрименяемость
   |ГДЕ
   |    НоменклатураПрименяемость.Модель = &Модель
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ОстаткиИЦены.Склад КАК Склад,
   |    ОстаткиИЦены.ОстаткиНаСкладе КАК ОстаткиНаСкладе,
   |    ОстаткиИЦены.ИзНихВРезерве КАК ИзНихВРезерве,
   |    ОстаткиИЦены.СвободныйОстаток КАК СвободныйОстаток,
   |    ОстаткиИЦены.Номенклатура КАК Номенклатура,
   |    ОстаткиИЦены.Артикул КАК Артикул,
   |    ОстаткиИЦены.ЦенаПродажи КАК ЦенаПродажи,
   |    Картинки.Данные
   |ИЗ
   |    (ВЫБРАТЬ
   |        ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК Склад,
   |        СУММА(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток) КАК ОстаткиНаСкладе,
   |        СУММА(ОстаткиТоваровКомпанииОстатки.РезервОстаток) КАК ИзНихВРезерве,
   |        СУММА(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток) - СУММА(ОстаткиТоваровКомпанииОстатки.РезервОстаток) КАК СвободныйОстаток,
   |        ЕСТЬNULL(НоменклатураПрименяемость.Номенклатура, ОстаткиТоваровКомпанииОстатки.Номенклатура) КАК Номенклатура,
   |        ЕСТЬNULL(НоменклатураПрименяемость.Номенклатура.Артикул, ОстаткиТоваровКомпанииОстатки.Номенклатура.Артикул) КАК Артикул,
   |        ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0) КАК ЦенаПродажи
   |    ИЗ
   |        РегистрСведений.НоменклатураПрименяемость КАК НоменклатураПрименяемость
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки(
   |                    &Дата,
   |                    Номенклатура В
   |                        (ВЫБРАТЬ
   |                            врНом.Номенклатура
   |                        ИЗ
   |                            врНом КАК врНом)) КАК ОстаткиТоваровКомпанииОстатки
   |            ПО НоменклатураПрименяемость.Номенклатура = ОстаткиТоваровКомпанииОстатки.Номенклатура
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(
   |                    &Дата,
   |                    ТипЦен = &ТипЦен
   |                        И Номенклатура В
   |                            (ВЫБРАТЬ
   |                                врНом.Номенклатура
   |                            ИЗ
   |                                врНом КАК врНом)) КАК ЦеныСрезПоследних
   |            ПО НоменклатураПрименяемость.Номенклатура = ЦеныСрезПоследних.Номенклатура
   |    ГДЕ
   |        НоменклатураПрименяемость.Модель = &Модель
   |    
   |    СГРУППИРОВАТЬ ПО
   |        ОстаткиТоваровКомпанииОстатки.СкладКомпании,
   |        ЕСТЬNULL(НоменклатураПрименяемость.Номенклатура, ОстаткиТоваровКомпанииОстатки.Номенклатура),
   |        ЕСТЬNULL(НоменклатураПрименяемость.Номенклатура.Артикул, ОстаткиТоваровКомпанииОстатки.Номенклатура.Артикул),
   |        ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0)) КАК ОстаткиИЦены
   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
   |            КартинкиИФайлы.Данные КАК Данные,
   |            КартинкиИФайлы.Объект КАК Объект
   |        ИЗ
   |            РегистрСведений.КартинкиИФайлы КАК КартинкиИФайлы
   |        ГДЕ
   |            КартинкиИФайлы.Объект В
   |                    (ВЫБРАТЬ
   |                        врНом.Номенклатура
   |                    ИЗ
   |                        врНом КАК врНом)
   |            И КартинкиИФайлы.Картинка) КАК Картинки
   |        ПО ОстаткиИЦены.Номенклатура = Картинки.Объект
   |
   |УПОРЯДОЧИТЬ ПО
   |    Склад
   |ИТОГИ
   |    СУММА(ОстаткиНаСкладе),
   |    СУММА(ИзНихВРезерве),
   |    СУММА(СвободныйОстаток)
   |ПО
   |    Номенклатура";
   
   Запрос.УстановитьПараметр("Модель", Модель);
   Запрос.УстановитьПараметр("Дата",   ТекущаяДата());
   Запрос.УстановитьПараметр("ТипЦен", Константы.РозничнаяЦена.Получить());
   ДеревоЗН = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
   
   
   Для Каждого СтрПУ Из ДеревоЗН.Строки Цикл
       СтрВУ = СтрПУ.Строки;
       
       СтрОстПУ = Остатки.Добавить();
       ЗаполнитьЗначенияСвойств(СтрОстПУ, СтрПУ);
       
       Для Каждого СтрВУ Из СтрВУ Цикл
           СтрТУ = СтрВУ.Строки;
           
           СтрОстВУ = Остатки.Добавить();
           ЗаполнитьЗначенияСвойств(СтрОстВУ, СтрВУ);
           
           //Если ЗначениеЗаполнено(Стр.Данные) Тогда
           //    мКартинка = Стр.Данные.Получить();
           //    Если ТипЗнч(мКартинка) = Тип("Картинка") Тогда
           //        СтрОст.Изображение = Новый Картинка();
           //        СтрОст.Изображение = мКартинка;
           //        
           //    КонецЕсли;
           //Иначе
           //    СтрОст.Изображение = БиблиотекаКартинок.Скрепка;
           //КонецЕсли;
           
       КонецЦикла;
       
   КонецЦикла;
1 espanol
 
24.05.12
14:46
У таблички "Остатки" отображение поставил Дерево!
2 espanol
 
24.05.12
14:47
Выводится в виде обычной таблицы значений.
3 butterbean
 
24.05.12
14:48
во вложенном цикле надо СтрОстПУ.ДОбавить()
4 patapum
 
24.05.12
14:49
Так переменная Остатки какого типа? Где она создается?
5 patapum
 
24.05.12
14:50
и добавляешь ты в нее все строки на одном уровне
СтрОстПУ = Остатки.Добавить();
СтрОстВУ = Остатки.Добавить();
что ж ты после этого ждешь?
6 espanol
 
24.05.12
14:51
(4) это ТЗ на управляемой форме
(3) {Справочник.Номенклатура.Форма.ФормаВыбораУправляемая.Форма(239)}: Метод объекта не обнаружен (Добавить)
           СтрОстВУ = СтрОстПУ.Добавить();
7 Feanor
 
24.05.12
14:53
(6) СтрОстВУ = СтрОстПУ.Строки.Добавить();
8 espanol
 
24.05.12
14:54
(7) {Справочник.Номенклатура.Форма.ФормаВыбораУправляемая.Форма(239)}: Поле объекта не обнаружено (Строки)
           СтрОстВУ = СтрОстПУ.Строки.Добавить();

хм...
9 Feanor
 
24.05.12
14:55
(8) попутно: "Для Каждого СтрВУ Из СтрВУ Цикл" ничего странного не замечаешь? ))
10 espanol
 
24.05.12
14:57
(9) да уж, очипятался )
11 Feanor
 
24.05.12
14:59
(10) а тип у "Остатки" какой?
12 espanol
 
24.05.12
15:01
(11) ТаблицаЗначений
13 butterbean
 
24.05.12
15:01
(12) нда
14 Feanor
 
24.05.12
15:02
(12) а тебе нужно ДеревоЗначений
15 espanol
 
24.05.12
15:02
(14) да, я поменял на дерево... но чета тоже непонятно как его тогда заполнять....
16 espanol
 
24.05.12
15:03
Остатки.Строки.Добавить(); Остатки.Добавить();   - не прокатывает
17 espanol
 
24.05.12
15:06
Для Каждого СтрПУ Из ДеревоЗН.Строки Цикл
       
       СтрОстПУ = Остатки.ПолучитьЭлементы().Добавить();
       ЗаполнитьЗначенияСвойств(СтрОстПУ, СтрПУ);
       
       Для Каждого СтрВУ Из СтрПУ.Строки Цикл
           
           СтрОстВУ = СтрОстПУ.ПолучитьЭлементы().Добавить();
           ЗаполнитьЗначенияСвойств(СтрОстВУ, СтрВУ);
           
       КонецЦикла;
       
   КонецЦикла;



Работает ))
18 Feanor
 
24.05.12
15:09
(17) это не дерево значений, это "ДанныеФормыДерево" ))
19 espanol
 
24.05.12
15:23
(18) ясно... а ты не подскажешь как строки второго уровня уменьшить по высоте?
20 Feanor
 
24.05.12
15:24
(19) по-моему этого нельзя сделать
21 espanol
 
24.05.12
15:30
(20) а контекстное меню можно ли вывести по ячейке? чтобы картинка увеличилась в отдельной форме из этой ячейки?
22 Feanor
 
24.05.12
15:31
(21) моя твоя не панимать, но на всякий случай - нет :)
23 espanol
 
24.05.12
15:32
да просто в дереве в одной из колонок в первом уровне должна выводится картинка )) если она будет выводится то все строки будут высокими и это оч не красиво.... вот если бы щелкнув по картинке она могла увеличиваться было бы кульно... низя таг?
24 Feanor
 
24.05.12
15:33
(23) дак вроде можно сделать условное оформление
25 Feanor
 
24.05.12
15:33
+(24) или оно тока для динамических списков?
26 Feanor
 
24.05.12
15:34
(23) а что мешает по щелчку открывать модально форму по середине экрана с этим изображением?
27 espanol
 
24.05.12
15:34
(25) всмысле?
28 espanol
 
24.05.12
15:35
(26) можно в принципе... я хотел сделать сперва чтобы при активации строки появлялась картинка на форме гденить, но в УФ это не возможно оказалось...
29 Feanor
 
24.05.12
15:35
(27) у произвольного дерева нет условного оформления - я об этом
30 Feanor
 
24.05.12
15:36
(28) почему невозможно?
31 acsent
 
24.05.12
15:36
(29) есть, но у формы
32 Feanor
 
24.05.12
15:38
(31) у элемента формы? или о чем ты?
33 espanol
 
24.05.12
15:39
(30) при активации строки надо обращаться к серверу, а сервер обновляет форму клиента и автоматом снова срабатывает активация строки.... бесконечная рекурсия...
34 Feanor
 
24.05.12
15:40
(33) а если не использовать активизацию строки? двойной щелчок, например
35 espanol
 
24.05.12
15:43
(34) так думаю возможно, придется как-то так делать...
36 Feanor
 
24.05.12
15:44
(35) при активизации ещё можно как-то текущую строку запоминать и обращаться к серверу тока при её измении
37 espanol
 
24.05.12
15:50
(36) понятно, покапаюсь....
38 espanol
 
24.05.12
16:00
(36) Не подскажешь почему не работает такой код?


&НаКлиенте
Процедура ОстаткиПриАктивизацииСтроки(Элемент)
   
   Элементы.Картинка.КартинкаЗначений = Новый Картинка();
   Элементы.Картинка.КартинкаЗначений = Элементы.Остатки.ТекущиеДанные.Изображение;



{Справочник.Номенклатура.Форма.ФормаВыбораУправляемая.Форма(308)}: Ошибка при установке значения атрибута контекста (КартинкаЗначений)
   Элементы.Картинка.КартинкаЗначений = Элементы.Остатки.ТекущиеДанные.Изображение;
по причине:
Недопустимое значение
Недопустимое значение