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

Отмена проведения

Автор Yamuna, 30 мая 2019, 07:59

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

Yamuna

Добрый день! При отмене проведения документа нужно снять признак в справочнике , в каком месте надо делать проверку?

LexaK

(какой справочник?)
используйте это событие
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
        //Ваш код
    КонецЕсли;
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 30 мая 2019, 09:30
(какой справочник?)
используйте это событие
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
        //Ваш код
    КонецЕсли;
Спасибо! еще вопрос, если при проведении документа создавался Справочник с сообщением, то как именно его удалить при отмене проведения?

LexaK

ну у вас и задачки! (даже не спрашиваю что из зачем все это)
примерно так (возможна куча других вариантов)

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

Yamuna

Цитата: LexaK от 30 мая 2019, 14:01

        СсылкаНаВашСправочник = НайтиКакойТоСправочникПоСсылкеНаДокумент(Ссылка);
       

извиняюсь просто не знаю как вот это "НайтиКакойТоСправочникПоСсылкеНаДокумент(Ссылка)" найти
Добавлено: 30 мая 2019, 15:52


Цитата: Yamuna от 30 мая 2019, 14:41
Цитата: LexaK от 30 мая 2019, 14:01

        СсылкаНаВашСправочник = НайтиКакойТоСправочникПоСсылкеНаДокумент(Ссылка);
       

извиняюсь просто не знаю как вот это "НайтиКакойТоСправочникПоСсылкеНаДокумент(Ссылка)" найти
вот здесь в модуле документа создаем справочник
Процедура ПроверитьПодчиненныеЭлементы(Рефер)
//Записать();
Движения.КонтрагентыОбороты.Записывать = Истина;
Движение = Движения.КонтрагентыОбороты.Добавить();
Движение.Период = Дата;
Движение.Рефер = Рефер;
Движение.Клиент = Клиент;
Движение.Активирован = 0;
Если Не Движение.Клиент.Пустая() Тогда
Движение.Количество = Количество;
Иначе
Движение.Количество = 0;
КонецЕсли;
Движения.КонтрагентыОбороты.Записать();

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(КонтрагентыОбороты.Количество) КАК КоличествоПодчиненных,
| КонтрагентыОбороты.Рефер КАК Рефер
|ИЗ
| РегистрНакопления.КонтрагентыОбороты КАК КонтрагентыОбороты
|ГДЕ
| КонтрагентыОбороты.Рефер = &Рефер
|
|СГРУППИРОВАТЬ ПО
| КонтрагентыОбороты.Рефер";

Запрос.УстановитьПараметр("Рефер", Рефер);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Если ВыборкаДетальныеЗаписи.КоличествоПодчиненных = 5 Тогда
СсылкаОбъекта = Справочники.СписокНачинающихУчастников.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Рефер).ПолучитьОбъект();
СсылкаОбъекта.Активирован = Истина;
СсылкаОбъекта.Записать();

СпрСообщениеДиректору = Справочники.СообщениеДиректоруСправочник.СоздатьЭлемент();
СпрСообщениеДиректору.Наименование = Строка(ВыборкаДетальныеЗаписи.Рефер)+" ""Активирован""";
СпрСообщениеДиректору.Сообщение  = Строка(ВыборкаДетальныеЗаписи.Рефер)+" - получил статус ""Активирован"". "+Формат(ТекущаяДата(),"ДЛФ=DD");
СпрСообщениеДиректору.Записать();

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Строка(ВыборкаДетальныеЗаписи.Рефер)+" получил статус Активирован ";
Сообщение.Сообщить();
Если Движение.Клиент.Пустая() Тогда
Движение.Активирован = 0;
Иначе
Движение.Активирован = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
  Движения.КонтрагентыОбороты.Записать();

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Строка(ВыборкаДетальныеЗаписи.Рефер)+" имеет подчиненных - "+ВыборкаДетальныеЗаписи.КоличествоПодчиненных+" человек.";
Сообщение.Сообщить();

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

и потом его надо удалить если документ перепроводится или отменяется проведение

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
СсылкаОбъекта = Справочники.СписокНачинающихУчастников.НайтиПоНаименованию(Рефер).ПолучитьОбъект();
СсылкаОбъекта.Активирован = Ложь;
СсылкаОбъекта.Развившийся = Ложь;
СсылкаОбъекта.Записать();

//СсылкаНаНашСправочник = Справочники.СообщениеДиректоруСправочник(Ссылка);
ОбъектСпр = СсылкаНаСправочник
ОбъектСпр.Удалить();
КонецЕсли;

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

LexaK

Цитироватьизвиняюсь просто не знаю как вот это "НайтиКакойТоСправочникПоСсылкеНаДокумент(Ссылка)" найти
это не искать надо, а написать свою функцию,
потому - что у вас за справочник и как он связан с вашим документом - ни кто не знает :fdbsdfbsd:
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 30 мая 2019, 15:56
Цитироватьизвиняюсь просто не знаю как вот это "НайтиКакойТоСправочникПоСсылкеНаДокумент(Ссылка)" найти
это не искать надо, а написать свою функцию,
потому - что у вас за справочник и как он связан с вашим документом - ни кто не знает :fdbsdfbsd:

ну просто  при проведении в модуле документа создаем справочник и теперь как на него получить ссылку чтобы при отмене он именно его удалил... у меня просто пока знаний не хватает если знаете помогите плиз..))

LexaK

если вы про этот справочник
Цитировать
   СпрСообщениеДиректору = Справочники.СообщениеДиректоруСправочник.СоздатьЭлемент();
            СпрСообщениеДиректору.Наименование = Строка(ВыборкаДетальныеЗаписи.Рефер)+" ""Активирован""";
            СпрСообщениеДиректору.Сообщение  = Строка(ВыборкаДетальныеЗаписи.Рефер)+" - получил статус ""Активирован"". "+Формат(ТекущаяДата(),"ДЛФ=DD");
            СпрСообщениеДиректору.Записать();

тогда так (а вообще, у вас каша такая, я уже запутался)
лкСпр = Справочники.СообщениеДиректоруСправочник.НайтиПоНаименованию(Строка(Рефер)+" ""Активирован""");
Если ЗначениеЗаполнено(лкСпр) Тогда
    лкОб = лкСпр.ПолучитьОбъект();
    лкОб.Удалить();
КонецЕсли;
если помогло нажмите: Спасибо!

Yamuna

Цитата: LexaK от 30 мая 2019, 16:33
если вы про этот справочник
Цитировать
   СпрСообщениеДиректору = Справочники.СообщениеДиректоруСправочник.СоздатьЭлемент();
            СпрСообщениеДиректору.Наименование = Строка(ВыборкаДетальныеЗаписи.Рефер)+" ""Активирован""";
            СпрСообщениеДиректору.Сообщение  = Строка(ВыборкаДетальныеЗаписи.Рефер)+" - получил статус ""Активирован"". "+Формат(ТекущаяДата(),"ДЛФ=DD");
            СпрСообщениеДиректору.Записать();



тогда так (а вообще, у вас каша такая, я уже запутался)
лкСпр = Справочники.СообщениеДиректоруСправочник.НайтиПоНаименованию(Строка(Рефер)+" ""Активирован""");
Если ЗначениеЗаполнено(лкСпр) Тогда
    лкОб = лкСпр.ПолучитьОбъект();
    лкОб.Удалить();
КонецЕсли;

Большое Вам спасибо за помощь! Сейчас проверяю))
Добавлено: 30 мая 2019, 18:01


Цитата: Yamuna от 30 мая 2019, 17:11
Цитата: LexaK от 30 мая 2019, 16:33
если вы про этот справочник
Цитировать
   СпрСообщениеДиректору = Справочники.СообщениеДиректоруСправочник.СоздатьЭлемент();
            СпрСообщениеДиректору.Наименование = Строка(ВыборкаДетальныеЗаписи.Рефер)+" ""Активирован""";
            СпрСообщениеДиректору.Сообщение  = Строка(ВыборкаДетальныеЗаписи.Рефер)+" - получил статус ""Активирован"". "+Формат(ТекущаяДата(),"ДЛФ=DD");
            СпрСообщениеДиректору.Записать();



тогда так (а вообще, у вас каша такая, я уже запутался)
лкСпр = Справочники.СообщениеДиректоруСправочник.НайтиПоНаименованию(Строка(Рефер)+" ""Активирован""");
Если ЗначениеЗаполнено(лкСпр) Тогда
    лкОб = лкСпр.ПолучитьОбъект();
    лкОб.Удалить();
КонецЕсли;

Большое Вам спасибо за помощь! Сейчас проверяю))

Ну все нормально, единственно если без отмены проведения еще раз проводить то тогда опять создает справочник, как с этим бороться?
Добавлено: 30 мая 2019, 18:44


Цитата: Yamuna от 30 мая 2019, 17:11
Цитата: LexaK от 30 мая 2019, 16:33
если вы про этот справочник
Цитировать
   СпрСообщениеДиректору = Справочники.СообщениеДиректоруСправочник.СоздатьЭлемент();
            СпрСообщениеДиректору.Наименование = Строка(ВыборкаДетальныеЗаписи.Рефер)+" ""Активирован""";
            СпрСообщениеДиректору.Сообщение  = Строка(ВыборкаДетальныеЗаписи.Рефер)+" - получил статус ""Активирован"". "+Формат(ТекущаяДата(),"ДЛФ=DD");
            СпрСообщениеДиректору.Записать();



тогда так (а вообще, у вас каша такая, я уже запутался)
лкСпр = Справочники.СообщениеДиректоруСправочник.НайтиПоНаименованию(Строка(Рефер)+" ""Активирован""");
Если ЗначениеЗаполнено(лкСпр) Тогда
    лкОб = лкСпр.ПолучитьОбъект();
    лкОб.Удалить();
КонецЕсли;

Большое Вам спасибо за помощь! Сейчас проверяю))
Добавлено: 30 мая 2019, 18:01


Цитата: Yamuna от 30 мая 2019, 17:11
Цитата: LexaK от 30 мая 2019, 16:33
если вы про этот справочник
Цитировать
   СпрСообщениеДиректору = Справочники.СообщениеДиректоруСправочник.СоздатьЭлемент();
            СпрСообщениеДиректору.Наименование = Строка(ВыборкаДетальныеЗаписи.Рефер)+" ""Активирован""";
            СпрСообщениеДиректору.Сообщение  = Строка(ВыборкаДетальныеЗаписи.Рефер)+" - получил статус ""Активирован"". "+Формат(ТекущаяДата(),"ДЛФ=DD");
            СпрСообщениеДиректору.Записать();



тогда так (а вообще, у вас каша такая, я уже запутался)
лкСпр = Справочники.СообщениеДиректоруСправочник.НайтиПоНаименованию(Строка(Рефер)+" ""Активирован""");
Если ЗначениеЗаполнено(лкСпр) Тогда
    лкОб = лкСпр.ПолучитьОбъект();
    лкОб.Удалить();
КонецЕсли;

Большое Вам спасибо за помощь! Сейчас проверяю))

Ну все нормально, единственно если без отмены проведения еще раз проводить то тогда опять создает справочник, как с этим бороться?
то есть дублируется , если три зара перепровести то будет 3 справочника

Теги:

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

Рейтинг@Mail.ru

Поиск