Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 18:22

Вывод диалога с вопросом по условию с сервера

Автор kssh24, 24 янв 2023, 10:55

0 Пользователей и 1 гость просматривают эту тему.

kssh24

Такой вопрос:

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

&НаКлиенте

Процедура КнопкаВыполнить(Команда)

Оповещение = Новый ОписаниеОповещения("ОбработатьОтветПользователя", ЭтаФорма);

ПоказатьВопрос(Оповещение, "Данные будут изменены. Продолжить изменение?", РежимДиалогаВопрос.ДаНет);
КонецЕсли;


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



&НаКлиенте
Процедура ОбработатьОтветПользователя(Ответ, ДополнительныеПараметры) Экспорт

Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;

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

&НаСервере
Процедура КнопкаВыполнитьНаСервере() 

Для Каждого СтрокаТЧ Из ДокументыПоступления Цикл

Если СтрокаТЧ.Отметка = Ложь Тогда
Продолжить;
КонецЕсли;

Док = СтрокаТЧ.Документ.ПолучитьОбъект();

Для Каждого СтрокаДок Из Док.Товары Цикл

Если СтрокаДок.Номенклатура = Объект.Номенклатура Тогда
СтрокаДок.Цена = СтрокаДок.Цена * 1.5;
КонецЕсли; 

КонецЦикла;
КонецЦикла;

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

antoneus

Процедура КнопкаВыполнить(Команда)

    Строки = ДокументыПоступления.НайтиСтроки(Новый Структура("Отметка", Истина));
    Если Строки.Количество() = 0 Тогда
        Возврат
    КонецЕсли;

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


Ну и Док.Записать() не забываем после цикла по строкам ТЧ)

LexaK

kssh24, добавлю своих 5 копеек

Процедура КнопкаВыполнить(Команда)

    Строки = ДокументыПоступления.НайтиСтроки(Новый Структура("Отметка", Истина));
    Если Строки.Количество() = 0 Тогда
        ПоказатьПредупреждение(,"Для обработки, необходимо документы отметить галочками!", 20);//так гораздо понятнее
        Возврат;
    КонецЕсли;
если помогло нажмите: Спасибо!

kssh24

antoneus, ааа, лучший, спасибо!
а еще не подскажешь
у меня на форме реквизиты, по которым отбираются документы. Как сделать так, чтобы можно было отбирать, например, только по контрагенту, или только по номенклатуре и тд?

LexaK

kssh24,
ЦитироватьКак сделать так, чтобы можно было отбирать, например, только по контрагенту, или только по номенклатуре и тд?
создать/поставить рядом с ними чекбоксы - Использовать!
ИспользоватьОтборПоКонтрагенту (можно сократить)
ИспользоватьОтборПоНоменклатуре
и т.д.
если помогло нажмите: Спасибо!

kssh24

LexaK, что-то типо такого? просто тогда надо рассмотреть все варианты комбинации различных отборов, это корректно вообще?

Запрос.Текст =
"ВЫБРАТЬ
| ПриобретениеТоваровУслугТовары.Ссылка КАК Документ
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
|ГДЕ
| ПриобретениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
| И ПриобретениеТоваровУслугТовары.Ссылка.Проведен
| И ПриобретениеТоваровУслугТовары.Цена МЕЖДУ &МинЦена И &МаксЦена
|   %Отборы%";

Запрос.УстановитьПараметр("ДатаКон", Объект.Период.ДатаОкончания);       
Запрос.УстановитьПараметр("ДатаНач", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("МаксЦена", Объект.МаксимальнаяЦена);
Запрос.УстановитьПараметр("МинЦена", Объект.МинимальнаяЦена);

Если ПоНоменклатуре Тогда
Замена = " И ПриобретениеТоваровУслугТовары.Номенклатура = &Номенклатура";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"%Отборы%",Замена);
Запрос.УстановитьПараметр("Номенклатура",Объект.Номенклатура);
ИначеЕсли ПоКонтрагенту Тогда
Замена = " И ПриобретениеТоваровУслугТовары.Ссылка.Контрагент = &Контрагент";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"%Отборы%",Замена);
Запрос.УстановитьПараметр("Контрагент",Объект.Контрагент);

LexaK

kssh24,
Цитироватьэто корректно вообще?
Еще как! в типовых сплошь и рядом, происходит динамическое формирование текста запросов с разными условиями!
если помогло нажмите: Спасибо!

antoneus


kssh24

antoneus, почему такое условие не работает?

ВЫБОР
КОГДА &ДатаНач = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И &ДатаКон = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА ИСТИНА
КОГДА &ДатаНач
ТОГДА ПриобретениеТоваровУслугТовары.Ссылка.Дата >= &ДатаНач
КОГДА &ДатаКон
ТОГДА ПриобретениеТоваровУслугТовары.Ссылка.Дата <= &ДатаКон
ИНАЧЕ ПриобретениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
КОНЕЦ

LexaK

kssh24, а вот это что за условие?
КОГДА &ДатаНач - ?
КОГДА &ДатаКон - ?
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск