|
Работа с формами | ☑ | ||
---|---|---|---|---|
0
AlexeyVM
22.05.17
✎
08:28
|
Добрый день!
Только неделю учусь программировать в 1С. Застрял на формах. Задача в следующем: Есть форма документа. При создании (редактировании) даты в документе, должна открываться форма выбора (в случае, если на эту дату есть какие-либо документы). Соответственно, в форме должны быть отображены документы на выбранную дату и при выборе документа, данные должны вбиваться в форму создания (редактирования) документа. Подскажите, где можно почитать или посмотреть примеры подобных случаев (что-то не могу найти). |
|||
1
Asmody
22.05.17
✎
08:32
|
Тебе пример чего?
Как открыть другую форму при изменении данных в поле ввода? Как открыть форму выбора с установленными параметрами? Как передать значение выбора из одной фирмы в другую? Как заполнить данные объекта данными другого объекта? |
|||
2
AlexeyVM
22.05.17
✎
08:34
|
(1)
Как перенести значения из формы документа в форму выбора |
|||
3
cw014
22.05.17
✎
09:33
|
(2) ОповеститьОВыборе
|
|||
4
Ц_У
22.05.17
✎
09:36
|
||||
5
Ц_У
22.05.17
✎
09:36
|
(0) если нет доступа на итс - есть тестовый доступ на неделю, через неделю еще на неделю ну и т.д.
|
|||
6
AlexeyVM
22.05.17
✎
09:37
|
Спасибо
|
|||
7
AlexeyVM
23.05.17
✎
05:37
|
Решил сделать немного по-другому:
На форме документа есть кнопка "выбрать", при нажатии на эту кнопку должна открываться форма выбора, в которой будут только те записи, которые соответствуют введенной дате. Попробовал написать так: Форма документа: &НаКлиенте Процедура КомандаВыбрать(Команда) ДатаОтбора = ЭтаФорма.Объект.Дата; Отбор = Новый Структура; Отбор.Вставить("Дата", ДатаОтбора); Форма = ПолучитьФорму("Документ.ПериодическиеСписания.ФормаВыбора",Отбор,ЭтаФорма); Форма.Открыть(); КонецПроцедуры Форма выбора: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Отбор.Свойство("Дата") Тогда ОтборПоДате = Параметры.Отбор.ДатаОтбора; КонецЕсли; КонецПроцедуры При нажатии на кнопку все равно отображаются все документы, не могу понять в чем ошибка, помогите пожалуйста разобраться. |
|||
8
h-sp
23.05.17
✎
05:51
|
что такое ОтборПоДате?
|
|||
9
AlexeyVM
23.05.17
✎
06:00
|
Процедура в форме выбора я думаю, что вообще неправильная.
Смотрел разные примеры в интернете, много способов пробовал, в итоге ничего не получилось и совсем запутался как это делать. |
|||
10
Redkiy
23.05.17
✎
06:02
|
Отбор в форме выбора настраивается в Список.Отбор
&НаКлиенте Процедура ПриОткрытии(Отказ) ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ПравоеЗначение = ОтборПоДате; ну и т.д. |
|||
11
AlexeyVM
23.05.17
✎
06:18
|
Должно быть что-то вроде такого?
&НаКлиенте Процедура ПриОткрытии(Отказ) ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Параметры.Отбор.ДатаОтбора; КонецПроцедуры |
|||
12
Redkiy
23.05.17
✎
06:22
|
параметры формы доступны только в процедуре ПриСозданииНаСервере
|
|||
13
AlexeyVM
23.05.17
✎
06:32
|
На "ОтборПоДате" ругается, что переменная не определена. Как мне тогда ее опеределить?
|
|||
14
Мимохожий Однако
23.05.17
✎
06:39
|
Научись пользоваться отладчиком
|
|||
15
alkorolev
23.05.17
✎
06:42
|
(13) Имя ключа структуры у тебя "Дата"
ДатаОтбора = Параметры.Отбор.Дата; |
|||
16
AlexeyVM
23.05.17
✎
07:00
|
(15)
т.е. надо так? ЭлементОтбора.ПравоеЗначение = Параметры.Отбор.Дата; или так ДатаОтбора = Параметры.Отбор.Дата; ЭлементОтбора.ПравоеЗначение = Параметры.Отбор.ДатаОтбора; Что-то я совсем запутался Так все-таки можно использовать параметры формы в этой процедуре или нет, в (12) мне написали, что нет |
|||
17
Redkiy
23.05.17
✎
07:13
|
Чтоб в пустую не тратить время на форуме - открой отладчик, и посмотри где какие переменные доступны.
|
|||
18
sFAQer
23.05.17
✎
07:45
|
(17) "Чтоб в пустую не тратить время на форуме" - А зачем сюда вообще по твоему приходят?
|
|||
19
Мимохожий Однако
23.05.17
✎
07:46
|
(18) Ты хочешь поговорить об этом?
|
|||
20
Альбатрос
23.05.17
✎
07:47
|
(19) =))))
|
|||
21
sFAQer
23.05.17
✎
07:47
|
(19) Есстественно, зачем же я ещё тут)
|
|||
22
Мимохожий Однако
23.05.17
✎
07:48
|
(21) Что важнее: удочка или рыба? ИМХО, удочка. То бишь - отладчик.
|
|||
23
sFAQer
23.05.17
✎
07:51
|
(22) Так я в (18) выразил мысль что на форум как раз таки приходят время тратить... Так что не сказать что вы мне и возразили. А так то да, отладчик и мануал...
|
|||
24
Мимохожий Однако
23.05.17
✎
07:53
|
(23) Вот и консенсус пришёл
|
|||
25
Redkiy
23.05.17
✎
07:53
|
(18) Цель - направить тебя на путь истинный! Иначе, это уже впустую потраченное наше время.
|
|||
26
sFAQer
23.05.17
✎
07:54
|
(25) Не надо меня никуда направлять, и я так не плохо сижу..
|
|||
27
Redkiy
23.05.17
✎
07:56
|
(26) Ты вообще зачем тут? Есть что сказать по сабжу?
|
|||
28
Имитация работы
23.05.17
✎
08:09
|
(27) Ты чо такой дерзкий? Мысли есть? А если найду? (:
|
|||
29
alkorolev
23.05.17
✎
08:16
|
(16)
ОтборДата = Параметры.Отбор.Дата; Элементы.Список.Период.ДатаНачала = НачалоДня(ОтборДата); Элементы.Список.Период.ДатаОкончания = КонецДня(ОтборДата); |
|||
30
sFAQer
23.05.17
✎
08:21
|
(27) Расширение управляемой формы для динамического списка (Managed form extension for dynamic lists)
Отбор (Filter) Описание: Тип: Структура. Используется для установки отбора в динамическом списке. Ключ структуры - имя поля основной таблицы. Значение элемента структуры содержит значение отбора. Если значение является массивом, фиксированным массивом или списком значений с не одним элементом, то отбор будет применяться с видом сравнения ВСписке. Ему вообще нужно убрать кусок кода в при открытии, платформа уже умеет разбирать структуры "Отбор" в параметрах открытия из коробки... |
|||
31
sFAQer
23.05.17
✎
08:22
|
+ к (30) главное что бы у него в таблице было поле "Дата" на которое он отбор накладывает...
|
|||
32
alkorolev
23.05.17
✎
08:36
|
(31) и только если дата на начало дня всегда установлена
|
|||
33
AlexeyVM
23.05.17
✎
08:39
|
Ну теперь совсем запутался. точку остановы ставлю, а при открытии формы отладчик даже не лезет в эту процедуру, или я что-то делаю не так.
Так и не понял, что тут надо убрать Процедура ПриОткрытии(Отказ) ОтборДата = Параметры.Отбор.Дата; ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Параметры.Отбор.ОтборДата; КонецПроцедуры |
|||
34
sFAQer
23.05.17
✎
08:39
|
(32) Ну, тут уже есть варианты. Но он в любом случае не сделает этого ПриОткрытии на клиенте, там параметров уже и след простыл..
|
|||
35
sFAQer
23.05.17
✎
08:40
|
(33) Всё убери, и отнеси в ПриСозданииНаСервере
|
|||
36
sFAQer
23.05.17
✎
08:41
|
(33) И заодно в свойствах формы посмотри что бы твои методы были увязаны за событиями...
|
|||
37
AlexeyVM
23.05.17
✎
08:50
|
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Отбор.Свойство("Дата") Тогда ОтборПоДате = Параметры.Отбор.ДатаОтбора; КонецЕсли; ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = ОтборПоДате; КонецПроцедуры При этом форма выбора пустая |
|||
38
sFAQer
23.05.17
✎
08:52
|
(37) Бинго! а теперь примени совет из (29)
|
|||
39
Мимохожий Однако
23.05.17
✎
08:52
|
(37) В процедуру попадаешь?
|
|||
40
sFAQer
23.05.17
✎
08:53
|
(39) Попадает, пустой список это отбор на 12 ночи какого-то дня...
|
|||
41
Мимохожий Однако
23.05.17
✎
08:55
|
(40) Я это понял. Любопытно как у ТС
|
|||
42
AlexeyVM
23.05.17
✎
08:57
|
(39) да в процедуру попадаю теперь, только в условие нет
|
|||
43
1sanekmaloi1
23.05.17
✎
08:57
|
В команде открыть форму:
ПараметрыФормы = Новый Структура; Отбор = Новый Структура; Отбор.Вставить("Дата", НужнаяДата);//Где Дата-такое поле должно быть в дин списке формы выбора ПараметрыФормы.Вставить("Отбор", Отбор); ОткрытьФомуФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыФормы,ЭтаФорма); |
|||
44
AlexeyVM
23.05.17
✎
09:01
|
(38)
исходя из совета (29) ОтборДата = Параметры.Отбор.ДатаОтбора; поле объекта не обнаружено (ДатаОтбора) |
|||
45
AlexeyVM
23.05.17
✎
09:06
|
(43)
Попробовал, вот что вышло &НаКлиенте Процедура ПриОткрытии(Отказ) ПараметрыФормы = Новый Структура; Отбор = Новый Структура; Отбор.Вставить("Дата", Параметры.Отбор.ДатаОтбора); ПараметрыФормы.Вставить("Отбор", Отбор); ОткрытьФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыФормы,ЭтаФорма); КонецПроцедуры Поле объекта не обнаружено (Отбор) Отбор.Вставить("Дата", Параметры.Отбор.ДатаОтбора); |
|||
46
sFAQer
23.05.17
✎
09:06
|
(44) Ты когда структуру "Отбор" создавал, ты в неё что положил? Структуру с ключём "ДатаОтбора" ?
|
|||
47
Ц_У
23.05.17
✎
09:06
|
(44) чукча не читатель, чукча - писатель?
|
|||
48
1sanekmaloi1
23.05.17
✎
09:09
|
(45) Кто такие Параметры.Отбор.ДатаОтбора?
|
|||
49
AlexeyVM
23.05.17
✎
09:10
|
(46)
ОтборДата = Параметры.Отбор.Дата тоже самое в структуре Отбор.Вставить("Дата", ДатаОтбора); |
|||
50
sFAQer
23.05.17
✎
09:11
|
(49) Отбор.Вставить("Дата", ДатаОтбора); Вот среди этих двух параметров, Ключ это что на твой взгляд?
|
|||
51
AlexeyVM
23.05.17
✎
09:11
|
(49)
Также поле объекта не обнаружено (Дата) |
|||
52
AlexeyVM
23.05.17
✎
09:11
|
(50)
"дата" |
|||
53
sFAQer
23.05.17
✎
09:12
|
(52) Ну так и обращяйся по ключу. А если не найдено то посмотри в отладчике что у тебя вообще в "Параметры" лежит
|
|||
54
Мимохожий Однако
23.05.17
✎
09:13
|
(49)
Элементы.Список.Период.ДатаНачала = НачалоДня(ОтборДата); Элементы.Список.Период.ДатаОкончания = КонецДня(ОтборДата); |
|||
55
AlexeyVM
23.05.17
✎
09:13
|
(54)
Это написано ниже |
|||
56
dezss
23.05.17
✎
09:16
|
(7) тебе надо было просто еще одну структуру сделать при получении формы, но это сработает только если надо документы именно за одну дату и дата не содержит времени.
Процедура КомандаВыбрать(Команда) ДатаОтбора = ЭтаФорма.Объект.Дата; Отбор = Новый Структура; Отбор.Вставить("Дата", ДатаОтбора); ПараметрыОтбора = Новый Струкрута; ПараметрыОтбора.Вставить("Отбор",Отбор); Форма = ПолучитьФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыОтбора,ЭтаФорма); Форма.Открыть(); КонецПроцедуры |
|||
57
AlexeyVM
23.05.17
✎
09:21
|
(53)
Ну например я пишу строку Тест = параметры.Отбор; в отладке в параметрах значение "ДанныеФормыСтруктура", если раскрыть, то там нормально записана дата, а если я пишу Тест = параметры.Отбор.Дата; то выдает ошибку поле объекта не обнаружено (Дата) |
|||
58
AlexeyVM
23.05.17
✎
09:23
|
Все, кажется получилось
Огромное спасибо за совет (56) |
|||
59
AlexeyVM
23.05.17
✎
09:24
|
Только не до конца получилось), Теперь выводит выделенный документ
|
|||
60
AlexeyVM
23.05.17
✎
09:26
|
Вот такой пока что код
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Отбор.Свойство("Дата") Тогда ОтборПоДате = Параметры.Отбор.Дата; КонецЕсли; ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; Элементы.Список.Период.ДатаНачала = НачалоДня(ОтборПоДате); Элементы.Список.Период.ДатаОкончания = КонецДня(ОтборПоДате); ЭлементОтбора.ПравоеЗначение = ОтборПоДате; КонецПроцедуры &НаКлиенте Процедура КомандаВыбрать(Команда) ДатаОтбора = Объект.Дата; Отбор = Новый Структура; Отбор.Вставить("Дата", ДатаОтбора); ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Отбор",Отбор); Форма = ПолучитьФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыОтбора,ЭтаФорма); Форма.Открыть(); КонецПроцедуры |
|||
61
Ц_У
23.05.17
✎
09:27
|
(60) что это?????
|
|||
62
Ц_У
23.05.17
✎
09:28
|
(60) первые 12 строчек лишние - сотри
|
|||
63
AlexeyVM
23.05.17
✎
09:30
|
(62) ну да, без них работает также
|
|||
64
AlexeyVM
23.05.17
✎
09:31
|
Показывает только документ с которого нажимаю кнопку выбрать, а если изменю поле дата хотя бы на 1 секунду, то не показывает ничего
|
|||
65
dezss
23.05.17
✎
09:32
|
(60) делай 2 элемента отбора в ПриСозданииНаСервере.
Один с видом сравнения БольшеИлиРавно и значением НачалоДня(ОтборПоДате) Второй МеньшеИлиРавно и значением КонецДня(ОтборПоДате) И убери Элементы.Список.Период.ДатаНачала = НачалоДня(ОтборПоДате); Элементы.Список.Период.ДатаОкончания = КонецДня(ОтборПоДате); Либо убирай все в ПриСозданииНаСервере, кроме Элементы.Список.Период.ДатаНачала = НачалоДня(ОтборПоДате); Элементы.Список.Период.ДатаОкончания = КонецДня(ОтборПоДате); |
|||
66
sFAQer
23.05.17
✎
09:33
|
(65) Уточнение в форме ВЫБОРА документа, не оттуда откуда кнлопку жмёшь...
|
|||
67
dezss
23.05.17
✎
09:33
|
(65) +
все эти отборы запихай внутрь твоего условия, иначе будет вылетать ошибка про неинициализированную переменную ОтборПоДате |
|||
68
dezss
23.05.17
✎
09:33
|
(66) ПриСозданииНаСервере у него ж в форме выбора и так.
|
|||
69
VladZ
23.05.17
✎
09:34
|
(0) Найти толковый букварь по 1с и почитай. Сейчас книжек по 1с - вагон. Не хочешь платить за книгу - накачай в Инете. Этого добра - как дерьма за баней...
|
|||
70
Ц_У
23.05.17
✎
09:36
|
(69) у меня за баней дрова только :)
|
|||
71
alkorolev
23.05.17
✎
09:38
|
(33) в "ПриОткрытии" у тебя только ключевык параметры формы останутся. И ты точно в режиме "отладчика"?
|
|||
72
sFAQer
23.05.17
✎
09:39
|
(68) Уверен?
|
|||
73
sFAQer
23.05.17
✎
09:40
|
(70) Вот ты и останешься без ЖКК
|
|||
74
AlexeyVM
23.05.17
✎
09:41
|
(69)
Мне советовали как для новичка прочиать книгу Радченко Практическое пособие разработчика, я ее прочитал, пытался там найти ответы, ничего там толкового нет |
|||
75
AlexeyVM
23.05.17
✎
09:41
|
(72)
Да, в форме выбора |
|||
76
dezss
23.05.17
✎
09:42
|
(75) тогда сделай как в (65) + (67)
|
|||
77
sFAQer
23.05.17
✎
09:42
|
(75) Ты из формы выбора по кнопке открываешь форму выбора?
|
|||
78
dezss
23.05.17
✎
09:44
|
(77) из формы документа он открывает форму выбора.
|
|||
79
AlexeyVM
23.05.17
✎
09:44
|
(78) Ага, все правильно
|
|||
80
AlexeyVM
23.05.17
✎
09:44
|
Вот попытался сделать как в (65)
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Отбор.Свойство("Дата") Тогда ОтборПоДате = Параметры.Отбор.Дата; ОтборДата = Параметры.Отбор.Дата; ЭлементОтбора1 = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбора1.Использование = Истина; ЭлементОтбора1.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементОтбора1.ПравоеЗначение = НачалоДня(ОтборДата); ЭлементОтбора2 = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбора2.Использование = Истина; ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; ЭлементОтбора2.ПравоеЗначение = КонецДня(ОтборПоДате); КонецЕсли; КонецПроцедуры Результат такой-же |
|||
81
AlexeyVM
23.05.17
✎
09:45
|
ой
|
|||
82
AlexeyVM
23.05.17
✎
09:46
|
ЭлементОтбора2.ПравоеЗначение = КонецДня(ОтборДата);
Случайно вставил не то |
|||
83
AlexeyVM
23.05.17
✎
09:46
|
и отборподате забыл убрать)
|
|||
84
dezss
23.05.17
✎
09:48
|
(79) кстати, тебе надо бы пересмотреть саму концепцию. Если тебе нужно тупо скопировать документ, проще написать обработку, в которой выбираешь дату и показываешь список документов. Если он пустой, то создаешь новый, если нет, то выбираешь документ и его копируешь.
|
|||
85
dezss
23.05.17
✎
09:49
|
(83) так он у тебя такой же, как и ОтборДата. А ты уверен, что за этот день у тебя есть другие документы?
|
|||
86
AlexeyVM
23.05.17
✎
09:50
|
(84)
Мне надо при создании или редактировании документа, при выборе даты,я мог нажать на кнопку "Выбрать" и там отображались все документы на текущую дату (время не имеет значения) и потом когда я выберу оттуда какой-нибудь документ, его данные переносились в форму создания (редактирования) документа |
|||
87
AlexeyVM
23.05.17
✎
09:51
|
(85)
да, я забыл эту строку стереть, все равно нигде не использовалась впринципе. Да, у меня несколько документов например на 22 число, а когда я открываю редактирование 1 из этих документов и нажимаю "выбрать", то отображается в форме только он |
|||
88
Ц_У
23.05.17
✎
09:51
|
(85) у него дата со временем
|
|||
89
Мимохожий Однако
23.05.17
✎
09:53
|
(86) Добавь кнопку Заполнить с выбором даты и запросом получишь на выбор документы, по которым заполнишь открытый документ.
|
|||
90
dezss
23.05.17
✎
09:54
|
(87) Когда открывается форма выбора, зайди Все действия - Настройка списка и посмотри что у тебя там.
|
|||
91
AlexeyVM
23.05.17
✎
09:58
|
(90)
В отборе там пусто |
|||
92
dezss
23.05.17
✎
10:03
|
(91) Поставь у обоих элементов отбора
ЭлементОтбора1.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный и посмотри появится ли он в настройке списка |
|||
93
AlexeyVM
23.05.17
✎
10:07
|
(92)
нет |
|||
94
dezss
23.05.17
✎
10:08
|
(92) +
Либо убирай все в ПриСозданииНаСервере, кроме Элементы.Список.Период.ДатаНачала = НачалоДня(ОтборПоДате); Элементы.Список.Период.ДатаОкончания = КонецДня(ОтборПоДате); и посмотри как отработает. |
|||
95
AlexeyVM
23.05.17
✎
10:10
|
(94)
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОтборПоДате = Параметры.Отбор.Дата; Элементы.Список.Период.ДатаНачала = НачалоДня(ОтборПоДате); Элементы.Список.Период.ДатаОкончания = КонецДня(ОтборПоДате); КонецПроцедуры Работает точно так же |
|||
96
AlexeyVM
23.05.17
✎
10:11
|
Точно также работает и вообще без этой процедуры
|
|||
97
sFAQer
23.05.17
✎
10:12
|
Вот вы и дошли до (30). Структуру переименуй с "Отбор" на что угодно, иначе платформа сама за тебя всё будет выставлять...
|
|||
98
AlexeyVM
23.05.17
✎
10:15
|
(97)
&НаКлиенте Процедура КомандаВыбрать(Команда) ДатаОтбора = Объект.Дата; СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("Дата", ДатаОтбора); ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Отбор",СтруктураОтбора); Форма = ПолучитьФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыОтбора,ЭтаФорма); Форма.Открыть(); КонецПроцедуры Переименовал, результат тот же |
|||
99
dezss
23.05.17
✎
10:16
|
(98) тебе посоветовали
ПараметрыОтбора.Вставить("Отбор",СтруктураОтбора); переделать на ПараметрыОтбора.Вставить("МойОтбор",СтруктураОтбора); |
|||
100
Мимохожий Однако
23.05.17
✎
10:16
|
Ты в тупике. Делай как в (89)
|
|||
101
dezss
23.05.17
✎
10:17
|
(97) кстати, а можно этого как-то избежать?
(100) |
|||
102
sFAQer
23.05.17
✎
10:18
|
(101) Не использователь зарезервированные имена =)
|
|||
103
dezss
23.05.17
✎
10:19
|
(102) Да это понятно...я имею ввиду, если все же использовать)
|
|||
104
sFAQer
23.05.17
✎
10:19
|
(103) Ну, в ПриОткрытии переопределять. Оно только там появится. В ПриСоздании отбор ещё не применился...
|
|||
105
dezss
23.05.17
✎
10:20
|
(99) + в ПриСозданииНаСервере
ОтборПоДате = Параметры.МойОтбор.Дата; |
|||
106
AlexeyVM
23.05.17
✎
10:20
|
(105)
ПараметрыОтбора.Вставить("МойОтбор",СтруктураОтбора); ОтборПоДате = Параметры.МойОтбор.Дата; Результат тот же |
|||
107
dezss
23.05.17
✎
10:21
|
(104) а, т.е. сделать так?
Параметры.Отбор = Новый Структура; |
|||
108
sFAQer
23.05.17
✎
10:21
|
(107) В ПриОткрытии поздно будет. Там параметрво уже нет. В сам отбор списка лезть, и там его сносить...
|
|||
109
sFAQer
23.05.17
✎
10:22
|
(106) Ты нам что-то не договариваешь..
|
|||
110
dezss
23.05.17
✎
10:23
|
(108) тьфу...присозданиинасервере
(106) чета странное у тебя творится |
|||
111
sFAQer
23.05.17
✎
10:23
|
(110) А вот чёрт его знает. Поидее должно будет сработать, но надо проверить...
|
|||
112
dezss
23.05.17
✎
10:23
|
(106) покажи нам опять полный код кнопки и присозданиинасервере
|
|||
113
AlexeyVM
23.05.17
✎
10:25
|
Не знаю, что тут недоговорить можно.
Форма документа: &НаКлиенте Процедура КомандаВыбрать(Команда) ДатаОтбора = Объект.Дата; СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("Дата", ДатаОтбора); ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("МойОтбор",СтруктураОтбора); Форма = ПолучитьФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыОтбора,ЭтаФорма); Форма.Открыть(); КонецПроцедуры Форма Выбора: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОтборПоДате = Параметры.МойОтбор.Дата; Элементы.Список.Период.ДатаНачала = НачалоДня(ОтборПоДате); Элементы.Список.Период.ДатаОкончания = КонецДня(ОтборПоДате); КонецПроцедуры |
|||
114
Мимохожий Однако
23.05.17
✎
10:27
|
(109) Некорректное ТЗ. Поэтому советы невконякорм
|
|||
115
sFAQer
23.05.17
✎
10:28
|
(114) Ну, открывать форму с параметрами ему всё равно начится надо..
|
|||
116
sFAQer
23.05.17
✎
10:28
|
(115) *научится
|
|||
117
sFAQer
23.05.17
✎
10:29
|
(113) В отладчике в ПриСоздании что происходит?
|
|||
118
dezss
23.05.17
✎
10:31
|
(116) кстати, а заполнять период ПриСозданииНаСервере можно?
Может сохранить значение и заполнить в ПриОткрытии? (113) в отладчике посмотри что заполнено в Элементы.Список.Период? Вариант должен быть Произвольный период. |
|||
119
AlexeyVM
23.05.17
✎
10:32
|
(118)
Да, все верно Вариант - произвольный период ДатаНачала - 23.05.2017 0:00:00 ДатаОкончания - 23.05.2017 23:59:59 |
|||
120
sFAQer
23.05.17
✎
10:33
|
(118) А почему бы и не заполнять? В СП никаких ограничений по этому поводу не написано...
|
|||
121
sFAQer
23.05.17
✎
10:33
|
(119) Документы точно есть за этот период?
|
|||
122
dezss
23.05.17
✎
10:34
|
(119) а теперь посмотри в ПриОткрытии, что в этом периоде.
|
|||
123
dezss
23.05.17
✎
10:34
|
(122) + ну или в ПриАктивизацииСтроки. Там даже лучше будет.
|
|||
124
AlexeyVM
23.05.17
✎
10:35
|
(121)
2 документа 23.05.2017 11:15:11 23.05.2017 15:02:02 |
|||
125
AlexeyVM
23.05.17
✎
10:38
|
(122)
т.е. после Форма.открыть(); ? если да, то там "поле объекта не обнаружено (список)" |
|||
126
dezss
23.05.17
✎
10:40
|
(125) нет, в самой форме выбора на событие ПриОткрытии повесь обработчик. Запихни туда какую-нибудь сообщить() и отладчиком посмотри на содержимое периода.
|
|||
127
sFAQer
23.05.17
✎
10:42
|
Эххх, заставили таки код писать...
В форме выбора убирай всё. В Форме документа вставь код: &НаКлиенте Процедура КомандаВыбрать(Команда) ПараметрыФормы = Новый Структура; Настройки = Новый НастройкиКомпоновкиДанных; ЭлементОтбораДатаНачала = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораДатаНачала.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбораДатаНачала.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементОтбораДатаНачала.ПравоеЗначение = НачалоДня(Объект.Дата); ЭлементОтбораДатаНачала.Использование = Истина; ЭлементОтбораДатаОкончания = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораДатаОкончания.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата"); ЭлементОтбораДатаОкончания.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; ЭлементОтбораДатаОкончания.ПравоеЗначение = КонецДня(Объект.Дата); ЭлементОтбораДатаОкончания.Использование = Истина; ПараметрыФормы.Вставить("ФиксированныеНастройки", Настройки); ОткрытьФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыОтбора,ЭтаФорма); КонецПроцедуры |
|||
128
sFAQer
23.05.17
✎
10:43
|
* ОткрытьФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыФормы, ЭтаФорма);
|
|||
129
AlexeyVM
23.05.17
✎
10:45
|
(126)Тоже самое
|
|||
130
AlexeyVM
23.05.17
✎
10:45
|
(127) Сейчас попробую
|
|||
131
AlexeyVM
23.05.17
✎
10:48
|
(128)
Да, вот теперь все верно работает. Огромное спасибо sFAQer и dezss за активную помощь. |
|||
132
sFAQer
23.05.17
✎
10:48
|
(131) Ты главное код вдумчиво перечитай раз 30, что бы начинать понимать что тут вообще происходит...
|
|||
133
AlexeyVM
23.05.17
✎
10:52
|
(132)
Обязательно, для дальнейших доработок еще скорее всего понадобится) |
|||
134
dezss
23.05.17
✎
10:54
|
(127) а где вообще можно почитать про ФиксированныеНастройки и т.п. ништяки? А то в СП такого не видел.
|
|||
135
sFAQer
23.05.17
✎
10:56
|
(134) В СП, вбей в поиск "Расширение управляемой формы для динамического списка"
|
|||
136
sFAQer
23.05.17
✎
11:00
|
(134) В принципе в СП в индексе вбивай "Расишрение " там читать не перечитать для всего на свете..
|
|||
137
dezss
23.05.17
✎
11:02
|
(136) Спасибо.
|
|||
138
AlexeyVM
24.05.17
✎
12:00
|
Продолжил дорабатывать систему, опять возник вопрос
При выборе элемента на форме выбора не могу вернуть значения в поля формы документа в форме выбора создал команду "Выбрать", в ней вот эта процедура, не могу сделать чтоб записывались значения выделенной строки &НаКлиенте Процедура Выбрать(Команда) ВыбранноеЗначение = Новый Структура; Элементы.Получатель ВыбранноеЗначение.Вставить("Получатель",Элементы.Получатель); ВыбранноеЗначение.Вставить("Сумма", Элементы.Сумма); ВыбранноеЗначение.Вставить("Кошелек", Элементы.КошелекОтправления); Закрыть(ВыбранноеЗначение); КонецПроцедуры в форме документа дописал к прошлому варианту Закрытиее = Новый ОписаниеОповещения("ОписаниеЗакрытия",ЭтаФорма); ОткрытьФорму("Документ.ПериодическиеСписания.ФормаВыбора",ПараметрыФормы,ЭтаФорма,,,,Закрытиее); и процедуру закрытия &НаКлиенте Процедура ОписаниеЗакрытия(Результат,Параметры) экспорт Если ТипЗнч(Результат) = Тип("Структура") Тогда Результат = Результат.Значение; КонецЕсли; КонецПроцедуры Не могу понять в чем ошибки. |
|||
139
AlexeyVM
24.05.17
✎
12:01
|
(138)
"Элементы.Получатель" случайно туда попало во 2 строке |
|||
140
AlexeyVM
24.05.17
✎
12:09
|
Исправил чуть-чуть в модуле формы выбора
&НаКлиенте Процедура Выбрать(Команда) ВыбранноеЗначение = Новый Структура; ВыбранноеЗначение.Вставить("Получатель",Элементы.Список.ТекущиеДанные.Получатель); ВыбранноеЗначение.Вставить("Сумма", Элементы.Список.ТекущиеДанные.Сумма); ВыбранноеЗначение.Вставить("Кошелек", Элементы.Список.ТекущиеДанные.КошелекОтправления); Закрыть(ВыбранноеЗначение); КонецПроцедуры |
|||
141
AlexeyVM
24.05.17
✎
12:17
|
Понимаю, что процедура ОписаниеЗакрытия написана неправильно, но не пойму как исправить
|
|||
142
AlexeyVM
24.05.17
✎
12:31
|
Опять пришлось переделать, т.к. если выбрать значение двойным кликом, то просто выходило с формы. Убрал все кнопки с формы, осталась только таблица, сделал событие "ВыборЗначения".
&НаКлиенте Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка) ВыбранноеЗначение = Новый Структура; ВыбранноеЗначение.Вставить("Получатель",Элементы.Список.ТекущиеДанные.Отправитель); ВыбранноеЗначение.Вставить("Сумма", Элементы.Список.ТекущиеДанные.Сумма); ВыбранноеЗначение.Вставить("Кошелек", Элементы.Список.ТекущиеДанные.КошелекПоступления); Закрыть(ВыбранноеЗначение); КонецПроцедуры |
|||
143
AlexeyVM
24.05.17
✎
12:33
|
Осталась проблема только, чтобы загрузить данные значения в форму документа, как это сделать не пойму. Процедуру "ОписаниеЗакрытия" как-то исправить надо чтоли.
|
|||
144
Ц_У
24.05.17
✎
12:34
|
||||
145
sFAQer
25.05.17
✎
02:31
|
Ты зачем на форме выбора ерундой заниешься? У тебя же документы, оставь платформенный режим выбора, а в оповещение тебе просто ссылка на документ упадёт...
|
|||
146
AlexeyVM
25.05.17
✎
07:56
|
Для документов доделал, все работает. Но только потом понял, что мне надо использовать регистр сведений, если много документов не проведены, мне же не надо их отражать. Наверное можно сделать условие на проведение, но думаю регистр сведений использовать разумнее.
Переписал на регистр, он открывается, данные берутся и заносятся в форму, все "как-бы" хорошо, но форма списка регистра содержит много лишнего. Думал как исправить, пока пришло в голову 2 варианта. 1) Чтобы при открытии списка регистра, он открывался не в стандартной форме (убрать оттуда лишние поля, и все элементы управления). 2) Или же лучше открывать форму выбора документа, но данные туда записывать из регистра сведений? |
|||
147
AlexeyVM
26.05.17
✎
05:34
|
Создал произвольную форму и заполняю ее, теперь проблема в том, что если нет записей в регистре сведений на заданную дату, то открывается пустая форма, как это убрать, пока не пойму.
|
|||
148
AlexeyVM
26.05.17
✎
05:35
|
думаю, что надо условие делать на проверку количества записей в регистре, но куда его писать (при создании, или при открытии или еще куда) и как не пойму, подскажите кто-нибудь?
|
|||
149
AlexeyVM
29.05.17
✎
04:33
|
Все доделал, вопрос закрыт
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |