Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Форма выбора. Параметр "Дата между". Реально? 2 страниц V   1 2 >          
Inkognito Подменю пользователя
сообщение 23.09.19, 10:16
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 937
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

Управляемые формы, конфигурация "УНФ". Реально ли передать в параметры открытия формы выбора документа условие: дата документа в некотором интервале.
Насколько мне известно, можно передать только точные значения...

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

ОткрытьФорму("Документ.ЗаказПоставщику.Форма.ФормаВыбора", ПараметрыОткрытияФормыВыбора,ЭтаФорма,,,,ОписаниеОповещения);

sava1 Подменю пользователя
сообщение 23.09.19, 12:29
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

А два параметра не проходит ? 1- больше А, 2- меньше Б ???

Vofka Подменю пользователя
сообщение 23.09.19, 12:57
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(sava1 @ 23.09.19, 13:29) *
А два параметра не проходит ? 1- больше А, 2- меньше Б ???

Подозреваю, что нужно это сделать без изменения кода конфигурации.

Inkognito Подменю пользователя
сообщение 23.09.19, 12:59
Сообщение #4

Ветеран
*******
Группа: Пользователи
Сообщений: 937
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

Vofka
Да, так и есть. Нужно типовыми средствами как-то сделать. Но как период всунуть в "Дату", непонятно.

fly Подменю пользователя
сообщение 23.09.19, 13:56
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 234
Спасибо сказали: 51 раз
Рейтинг: 48

Inkognito @ Сегодня, 11:16 * ,
теоретически возможно
только придется вероятнее всего получить форму
Форма = Документы.ЗаказПоставщику.ПолучитьФормуВыбора();


а потом уже работать со Списком - Форма.Список.Отбор = Отбор компоновки данных

Там уже получать отборы и потом уже открывать непосредственно форму.

Форма.Открыть();

sava1 Подменю пользователя
сообщение 23.09.19, 14:30
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(fly @ 23.09.19, 14:56) *
Там уже получать отборы и потом уже открывать непосредственно форму.

Форма.Открыть();


уважаемый, Упр. формы открываются по-другому (тем более с установкой отбора списка)

Цитата(Inkognito @ 23.09.19, 11:16) *
//сюда бы добавить период отбора документа. Например, документы за последние 2 месяца. Сейчас за все годы попадают в список, не годится так.

Цитата(Inkognito @ 23.09.19, 13:59) *
Да, так и есть. Нужно типовыми средствами как-то сделать. Но как период всунуть в "Дату", непонятно.


я в маразме ?

Vofka Подменю пользователя
сообщение 23.09.19, 14:39
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(sava1 @ 23.09.19, 15:30) *
уважаемый, Упр. формы открываются по-другому (тем более с установкой отбора списка)

В управляемых формах тоже можно получить форму, что-то с ней поделать и потом открыть.

Цитата(sava1 @ 23.09.19, 15:30) *
я в маразме ?

Не исключено. 32542460.gif

sava1 Подменю пользователя
сообщение 23.09.19, 14:40
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

вот такая фигня не проходит ? - самому впадло пробовать
Сп = Новый СписокЗначений;
Сп.Добавить(Значение1);
Сп.Добавить(Значение2);

ПараметрыОтбор = Новый Структура("Контрагент", Сп);
ПараметрыОткрытия = Новый Структура("Отбор", ПараметрыОтбор);
ОткрытьФорму("Документ.........Форма.ФормаВыбора", ПараметрыОткрытия, Элемент);

Inkognito Подменю пользователя
сообщение 23.09.19, 15:21
Сообщение #9

Ветеран
*******
Группа: Пользователи
Сообщений: 937
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

sava1
Доработав немного код выше:
Сп = Новый СписокЗначений;
Сп.Добавить(ДобавитьМесяц(НачалоДня(ТекущаяДата()), -2));
Сп.Добавить(КонецДня(ТекущаяДата()));
ПараметрыОтбор = Новый Структура("Дата", Сп);

Пустой список в результате получаем.
Также попробовал вместо "Дата" --- "Период": никаких изменений по сравнению с базовым кодом (т.е. список отображается полностью по всем годам)

fly Подменю пользователя
сообщение 23.09.19, 16:34
Сообщение #10

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 234
Спасибо сказали: 51 раз
Рейтинг: 48

Inkognito @ Сегодня, 16:21 * ,
Попробуйте так
Дата отбора = текущая дата минус 3 месяца, можете поставить свою.

    Форма = Документы.ЗаказПоставщику.ПолучитьФормуВыбора();
        
    Отбор = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
    Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    Отбор.Использование = Истина;
    Отбор.ПравоеЗначение =  ДобавитьМесяц(ТекущаяДата(),-3);
    
    Отбор = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
    Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    Отбор.Использование = Истина;
    Отбор.ПравоеЗначение =  Объект.Контрагент;

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


fly @ Сегодня, 17:11 * ,
увы проставить интервал "Между" не получиться

типа сравнения между в СКД нет для левого соединения.
увы там или больше (больше или равно) или меньше (меньше или равно), или равно, или не равное, или в списке...... и т.д.
идею получать весь список дат и сравнивать("В списке" или "Не в списке"), думаю это не очень хорошая идея - хотя если очень и очень надо, то возможно и такое.

Petre Подменю пользователя
сообщение 23.09.19, 16:36
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

fly @ Today, 16:34 * ,
Почему же? Можно добавить два условия: с "больше или равно" и "меньше или равно".


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: fly,

fly Подменю пользователя
сообщение 23.09.19, 16:42
Сообщение #12

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 234
Спасибо сказали: 51 раз
Рейтинг: 48

Petre @ Сегодня, 17:36 * ,
Цитата(Petre @ 23.09.19, 17:36) *
Почему же? Можно добавить два условия: с "больше или равно" и "меньше или равно".

может быть, теорию не настолько знаю, возможно пересечение отоборов
или
сработает...

тут надо пробовать

Цитата(Petre @ 23.09.19, 17:36) *
Почему же? Можно добавить два условия: с "больше или равно" и "меньше или равно".


сработало,
да ок

я не прав

".....увы проставить интервал "Между" не получиться...."

sava1 Подменю пользователя
сообщение 24.09.19, 8:45
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Vofka @ 23.09.19, 15:39) *
В управляемых формах тоже можно получить форму, что-то с ней поделать и потом открыть.


Не рекомендуют - [необходимо зарегистрироваться для просмотра ссылки]

по-правильному - устанавливаем фикс. настройки и открываем форму - 2 параметра (большравно и меньшеравно) - о чем и писАл в #2

кстати - по ПолучитьФорму - [необходимо зарегистрироваться для просмотра ссылки]

Inkognito Подменю пользователя
сообщение 24.09.19, 9:49
Сообщение #14

Ветеран
*******
Группа: Пользователи
Сообщений: 937
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

Если вызывать процедуру на клиенте, ругается при сохранении на 1 строку:
Переменная не определена (Документы)

Если вызывать на сервере, ругается при выполнении серверной функции:
Форма = Документы.ЗаказПоставщику.ПолучитьФормуВыбора();
по причине:
Интерактивные операции недоступны

Где ее правильно вызвать (пример кода от fly)?

sava1 Подменю пользователя
сообщение 24.09.19, 10:37
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

ФормуВыбора на сервере - вернуть на клиент - открыть

Сообщение отредактировал sava1 - 24.09.19, 10:37

Спасибо сказали: fly,

fly Подменю пользователя
сообщение 24.09.19, 10:38
Сообщение #16

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 234
Спасибо сказали: 51 раз
Рейтинг: 48

Цитата(Inkognito @ 24.09.19, 10:49) *
Где ее правильно вызвать (пример кода от fly)?



На клиенте.

Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).





sava1 Подменю пользователя
сообщение 24.09.19, 10:39
Сообщение #17

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

а по-человечески - так

ФормаВыбора = ПолучитьФорму("Справочник.ТестСправочник.Форма.ФормаВыбора"

Спасибо сказали: fly,

Inkognito Подменю пользователя
сообщение 24.09.19, 10:49
Сообщение #18

Ветеран
*******
Группа: Пользователи
Сообщений: 937
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

sava1
Работает прекрасно, спасибо. А как получить результат?
ОписаниеОповещения = Новый ОписаниеОповещения("Тест", ЭтаФорма);  
ОткрытьФорму("Документ.ЗаказПоставщику.Форма.ФормаВыбора", ПараметрыОткрытияФормыВыбора,ЭтаФорма,,,,ОписаниеОповещения);
//тут результат получаем в процедуре Тест()


//тут нет конструктора ОписаниеОповещения
Форма = ПолучитьФорму("Документ.ЗаказПоставщику.Форма.ФормаВыбора");

Petre Подменю пользователя
сообщение 24.09.19, 11:02
Сообщение #19

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Inkognito @ Today, 10:49 * ,
Так используйте ОткрытьФорму.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Inkognito Подменю пользователя
сообщение 24.09.19, 11:16
Сообщение #20

Ветеран
*******
Группа: Пользователи
Сообщений: 937
Из: Україна
Спасибо сказали: 446 раз
Рейтинг: 13.5

Всем спасибо, заработало!
Может, кому пригодится код
&НаКлиенте
Процедура ВыборДокумента(Команда)
                    
        ОписаниеОповещения = Новый ОписаниеОповещения("ПолучитьЗначениеВыбора", ЭтаФорма);  
        Форма = ОткрытьФорму("Документ.ЗаказПоставщику.Форма.ФормаВыбора",,ЭтаФорма,,,,ОписаниеОповещения);
    
        Отбор = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
        Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
        Отбор.Использование = Истина;
        Отбор.ПравоеЗначение =  ДобавитьМесяц(ТекущаяДата(),-3);
        
        Отбор = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
        Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
        Отбор.Использование = Истина;
        Отбор.ПравоеЗначение = ТекущаяДата();
        
        Отбор = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
        Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        Отбор.Использование = Истина;
        Отбор.ПравоеЗначение =  Объект.Контрагент;
        
        Отбор = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
        Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        Отбор.Использование = Истина;
        Отбор.ПравоеЗначение =  Объект.Организация;
        
        Форма.Открыть();
        
КонецПроцедуры

&НаКлиенте
Процедура ПолучитьЗначениеВыбора(Результат, ДополнительныеПараметры) Экспорт
    
    Рез = Результат;

КонецПроцедуры

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 10:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!