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

Хранилище

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

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



> Событие отмены в списке значений          
Gigi Подменю пользователя
сообщение 12.07.19, 10:11
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Всем привет!
Гууу ... Не на что уже нет настроения... Просто нет ... все ПУСТО ВОКРУГ.
Ладно пардон ... не обращайте внимание ...
Вот код простого типа:
спЗначений = Новый СписокЗначений();
спЗначений.Добавить("Значение1","Представление1");
спЗначений.Добавить("Значение2","Представление2");
ВыбранныйЭлементСписка = спЗначений .ВыбратьЭлемент();
Если ВыбранныйЭлементСписка = Неопределено Тогда  Возврат; КонецЕсли;

Но это когда без флажков. Т.е. когда нужно сделать один единственный выбор.
Теперь код для множественного выбора в списке.
//==========================    
    ствПеречень=Новый Соответствие();
    ствПеречень.Вставить("Значение1","Представление1");
    ствПеречень.Вставить("Значение2","Представление2");
    ствПеречень.Вставить("Значение3","Представление3");
    ствПеречень.Вставить("Значение4","Представление4");
//-----------------------------------------------    
    ствВыбрНеВыбрЗначения=Новый Соответствие();
    спЗначений = Новый СписокЗначений();
    Для Каждого Эл Из ствПеречень Цикл
        спЗначений.Добавить(Эл.Ключ,Эл.Значение);
    КонецЦикла;
    спЗначений.ЗаполнитьПометки(Истина);  
//-----------------------------------------------
    Если спЗначений.ОтметитьЭлементы("Выводить") Тогда
        Для Каждого знВыбор Из спЗначений Цикл
            Если знВыбор.Пометка Тогда
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Истина);
            Иначе
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Ложь);
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
//==========================    
Если Вопрос("Создать отчет данных энергосистемы в формате Excel?",РежимДиалогаВопрос.ДаНет,,,"Отчет в формате Эксель")=КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли;

Короче что надо ... опять очередная ерунда. .. с которой уже сижу час и опять ищу методом тыка.
Во втором варианте кода нужно зафиксировать событие когда пользователь нажал на кнопку отменить.
В первом простом варианте это как указано делается таким путем:
Если ВыбранныйЭлементСписка = Неопределено Тогда  Возврат; КонецЕсли;

Нужно то же самое только для второго варианта ... т.е. для списка значений с множественным выбором.
Ибо согласно выше указанного кода диалог вопроса:
Если Вопрос("Создать отчет данных энергосистемы в формате Excel?",РежимДиалогаВопрос.ДаНет,,,"Отчет в формате Эксель")=КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли;

в любом случае всплывает. Даже в случае если пользователь в окне списка значений нажал на кнопку отменить.
А нужно что бы действие переходило на следующую линию кода только тогда когда нажали на кнопку "Ок". А когда нажали на "Отменить" нужно что бы действие останавливалось.
Вот что нужно...
И вот эта вот ерунда. С которой уже сижу час.
Так что если можно строчу кода в помощь.
Буду признателен!

Gigi @ Сегодня, 10:31 * ,
Вы куда все подевались уважаемые? ))
Гууу... я вроде просил строчку кода. Всего одну строчку ..
Не думаю что больше нужно будет. Хотя от этой системы всего можно ожидать. Потому что в ней наверно "сложное всегда просто", как и все гениальное )).. а не наоборот.
Короче вопрос открыт..
Жду вашего отклика!
И буду признателен!


ed.kharkov Подменю пользователя
сообщение 12.07.19, 11:43
Сообщение #2

Говорящий
Иконка группы
Группа: Местный
Сообщений: 58
Из: Бровары
Спасибо сказали: 20 раз
Рейтинг: 0

А если попробовать так?

//-----------------------------------------------
    Если спЗначений.ОтметитьЭлементы("Выводить") Тогда
        Для Каждого знВыбор Из спЗначений Цикл
            Если знВыбор.Пометка Тогда
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Истина);
            Иначе
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Ложь);
            КонецЕсли;
        КонецЦикла;

        Если Вопрос("Создать отчет данных энергосистемы в формате Excel?",РежимДиалогаВопрос.ДаНет,,,"Отчет в формате Эксель")=КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли;
    КонецЕсли;
//==========================

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

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

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

ed.kharkov @ Сегодня, 12:43 * ,
Да можно и так но это если список значений один. А если их на пример два?
Т.е. что бы запустить процедуру до этого нужно отметить галки в двух списках всплывающих один за другим.
и в таком случае получиться так
    Если спЗначений.ОтметитьЭлементы("Выводить") Тогда
        Для Каждого знВыбор Из спЗначений Цикл
            Если знВыбор.Пометка Тогда
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Истина);
            Иначе
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Ложь);
            КонецЕсли;
        КонецЦикла;
    Если Вопрос("Создать отчет данных энергосистемы в формате Excel?",РежимДиалогаВопрос.ДаНет,,,"Отчет в формате Эксель")=КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли;
    КонецЕсли;

    ствГоды=Новый Соответствие();
    ствГодыВсе=МесяцГодДата_серв.ОтчетныеГоды_ств();
    спЗначенийГодыВсе = Новый СписокЗначений();
    //---------------------------
    Для Каждого Эл Из ствГодыВсе Цикл
        спЗначенийГодыВсе.Добавить(Эл.Ключ,Строка(Эл.Ключ));
    КонецЦикла;
    спЗначенийГодыВсе.ЗаполнитьПометки(Истина);  
    //---------------------------
    Если спЗначенийГодыВсе.ОтметитьЭлементы("Выводить") Тогда
        Для Каждого знГодыВыбор Из спЗначенийГодыВсе Цикл
            Если знГодыВыбор.Пометка Тогда
                ствГоды.Вставить(знГодыВыбор.Значение,Истина);
            КонецЕсли;
        КонецЦикла;
         Если Вопрос("Создать отчет данных энергосистемы в формате Excel?",РежимДиалогаВопрос.ДаНет,,,"Отчет в формате Эксель")=КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли;
    КонецЕсли;

И в таком случае нужно будет два раза жать да или нет.
А в таком случае проще было бы если можно было бы перехватить нажатие на кнопку "отмена" и остановить процедуру при нажатии. А в случае "Ок" в конце задать вопрос да или нет.
Так было бы лучше. Но ладно если так как хотел нельзя то хрен с ним. Хоть так.
Но если можно то опять буду признателен!

ed.kharkov Подменю пользователя
сообщение 12.07.19, 12:57
Сообщение #4

Говорящий
Иконка группы
Группа: Местный
Сообщений: 58
Из: Бровары
Спасибо сказали: 20 раз
Рейтинг: 0

Тогда так

Если спЗначений.ОтметитьЭлементы("Выводить") Тогда
        Для Каждого знВыбор Из спЗначений Цикл
            Если знВыбор.Пометка Тогда
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Истина);
            Иначе
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Ложь);
            КонецЕсли;
        КонецЦикла;
    Иначе
        Возврат;
    КонецЕсли;

    ствГоды=Новый Соответствие();
    ствГодыВсе=МесяцГодДата_серв.ОтчетныеГоды_ств();
    спЗначенийГодыВсе = Новый СписокЗначений();
    //---------------------------
    Для Каждого Эл Из ствГодыВсе Цикл
        спЗначенийГодыВсе.Добавить(Эл.Ключ,Строка(Эл.Ключ));
    КонецЦикла;
    спЗначенийГодыВсе.ЗаполнитьПометки(Истина);  
    //---------------------------
    Если спЗначенийГодыВсе.ОтметитьЭлементы("Выводить") Тогда
        Для Каждого знГодыВыбор Из спЗначенийГодыВсе Цикл
            Если знГодыВыбор.Пометка Тогда
                ствГоды.Вставить(знГодыВыбор.Значение,Истина);
            КонецЕсли;
        КонецЦикла;
    Иначе
        Возврат;        
    КонецЕсли;

    Если Вопрос("Создать отчет данных энергосистемы в формате Excel?",РежимДиалогаВопрос.ДаНет,,,"Отчет в формате Эксель")=КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли;


Сообщение отредактировал ed.kharkov - 12.07.19, 12:58

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

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

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Gigi @ Сегодня, 13:27 * ,
Стоп ...
Цитата(Gigi @ 12.07.19, 13:27) *
И в таком случае нужно будет два раза жать да или нет.

Не совсем так, а по другому. При нажатии кнопку отменить выполнение кода не останавливается и всплывает второй список значений.
И только с нажатием на отмену во втором списке выполнение кода прерывается.
Так что, все нормально кроме того что отмена в пером списке не срабатывает.
Ладно итак згодится.
Но если кто докорректирует и устранит недостаток буду признателен!


Цитата(Gigi @ 12.07.19, 13:58) *
Тогда так

Ща попробую

ed.kharkov @ Сегодня, 13:57 * ,
Вот теперь нормально.... так как надо!
Ладно ... вопрос решен!
Огромное спасибо!
Пока!

ed.kharkov Подменю пользователя
сообщение 12.07.19, 13:04
Сообщение #6

Говорящий
Иконка группы
Группа: Местный
Сообщений: 58
Из: Бровары
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(Gigi @ 12.07.19, 13:59) *
Не совсем так, а по другому. При нажатии кнопку отменить выполнение кода не останавливается и всплывает второй список значений.
И только с нажатием на отмену во втором списке выполнение кода прерывается.



Ну тогда вот так))

Если спЗначений.ОтметитьЭлементы("Выводить") Тогда
        Для Каждого знВыбор Из спЗначений Цикл
            Если знВыбор.Пометка Тогда
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Истина);
            Иначе
                ствВыбрНеВыбрЗначения.Вставить(знВыбор.Значение,Ложь);
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;

    ствГоды=Новый Соответствие();
    ствГодыВсе=МесяцГодДата_серв.ОтчетныеГоды_ств();
    спЗначенийГодыВсе = Новый СписокЗначений();
    //---------------------------
    Для Каждого Эл Из ствГодыВсе Цикл
        спЗначенийГодыВсе.Добавить(Эл.Ключ,Строка(Эл.Ключ));
    КонецЦикла;
    спЗначенийГодыВсе.ЗаполнитьПометки(Истина);  
    //---------------------------
    Если спЗначенийГодыВсе.ОтметитьЭлементы("Выводить") Тогда
        Для Каждого знГодыВыбор Из спЗначенийГодыВсе Цикл
            Если знГодыВыбор.Пометка Тогда
                ствГоды.Вставить(знГодыВыбор.Значение,Истина);
            КонецЕсли;
        КонецЦикла;
    Иначе
        Возврат;        
    КонецЕсли;

    Если Вопрос("Создать отчет данных энергосистемы в формате Excel?",РежимДиалогаВопрос.ДаНет,,,"Отчет в формате Эксель")=КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли;

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

Gigi Подменю пользователя
сообщение 12.07.19, 13:05
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(ed.kharkov @ 12.07.19, 14:04) *
Ну тогда вот так))

Да понял понял ... Спасибо )))
Ладно уважаемые... спасибо!
Век вас не забуду!!!!! ))))
Пока!

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


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

 

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