Имя: Пароль:
1C
 
Проверка регистра сведений
,
0 rapashocker
 
12.04.19
14:34
ПРивет всем, пишу проверку, нужно в Модуле объекта Заказ Покупателя , процедуре перед записью и в процедуре проведения сделать проверку на регистр сведений
Задача вот такая:и одновременно в регистре «Уведомления ORDRSP» нет ни одной записи со значением поля «Заказ покупателя» равным текущему заказу и значением поля «Отправлен вручную» равным «Истина»

Написал отдельную функцию где получаю этот регистр с соответсвующими условиями полей, но не понимаю как связать функцию с 2 мя этими процедурами, в конечном итоге при не выполнении этой проверки или других будет создаваться запись в регистр.

Моя функция:
Функция НетЗаписейУведомленияORDRSP()
    Запрос = новый Запрос();
    Запрос.УстановитьПараметр("ТекущийЗаказ",Ссылка);
    Запрос.Текст = "ВЫБРАТЬ
                   |    УведомленияORDRSP.ЗаказПокупателя
                   |ИЗ
                   |    РегистрСведений.УведомленияORDRSP КАК УведомленияORDRSP
                   |ГДЕ
                   |    УведомленияORDRSP.ЗаказПокупателя <> &ТекущийЗаказ
                   |    И УведомленияORDRSP.ОтправленВРучную <> ИСТИНА";
Выборка = Запрос.Выполнить().Пустой();
Возврат Выборка;
КонецФункции

Как связать ее с процедурой создания регистра? что бы проверка происходила при создании записи данного регистра?
Вот моя процедура создания регистра
Процедура РегистрУведомленияORDRSP()    
запись = РегистрыСведений.УведомленияORDRSP.СоздатьМенеджерЗаписи();
запись.ЗаказПокупателя = Ссылка;
запись.ЗаказEDI = ДокументОснование;
запись.УникальныйИдентификатор = СформироватьГУИД();
запись.ОтправленВРучную = Ложь;
запись.ВариантЗаполнения = Перечисления.ВариантыЗаполненияORDRSP.ПовкладкеМТСС;
запись.Состояние = Перечисления.СостоянияORDRSP.Ожидает;
запись.ДатаПостановки = ТекущаяДата();
запись.Записать();
КонецПроцедуры
1 dezss
 
12.04.19
14:39
Если НетЗаписейУведомленияORDRSP(Ссылка) Тогда
<тут делаешь то, что делал бы, если записей нет>
Иначе
<тут делаешь то, что делал бы, если записи есть>
КонецЕсли;
2 rapashocker
 
12.04.19
14:51
дело в том что в каждой процедуре, где бы не обходима данная проверка писать накладно и много кода, в каждоый из процедур, которая потом возвращает процедуру Процедура РегистрУведомленияORDRSP(), думаю лучше там как то написать эту проверку, только пока не понятно как
3 dezss
 
12.04.19
14:53
(2) >>дело в том что в каждой процедуре, где бы не обходима данная проверка писать накладно и много кода
вынеси код в модуле, будешь писать один раз
>>думаю лучше там как то написать эту проверку, только пока не понятно как
Ты хотя бы связно объяснил что ты хочешь от этой процедуры/функции получить. Может и помог бы кто-нибудь.
4 rapashocker
 
12.04.19
15:04
Есть 2 процедуры в модуле объекта Перед Записью и обработкаПроведения, в них необходимо проверить данный регистр, да бы не нагромождать и там кучу проверок там, я вынес это в отдельную функцию.
дело в том что мои проверки вот пример
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)    
//Проверка--151321    
ВремТаблица = ТоварыSFA.Выгрузить();

Если (ТорговаяТочка.АвтоматическаяОтправкаORDRSP или Контрагент.АвтоматическаяОтправкаORDRSP = Истина
и Контрагент.ВариантОтправкиORDRSP = Перечисления.ВариантыОтправкиORDRSP.ПриКаждомИзменении          
и Контрагент.ВариантЗаполненияORDRSP = Перечисления.ВариантыЗаполненияORDRSP.ПовкладкеМТСС
и НЕ (ВремТаблица.Количество() = ссылка.ТоварыSFA.Количество())  
и типзнч(ДокументОснование)= тип("ДокументСсылка.ЗаказEDI")) Тогда
РегистрУведомленияORDRSP();
КонецЕсли;
5 rapashocker
 
12.04.19
15:06
сделал отдельную процедуру по созданию записей, и что бы не писать все проверки по 500 раз 2 процедурах, хочется создать 1 проверку перед созданием записи вот здесь:
Процедура РегистрУведомленияORDRSP()    
запись = РегистрыСведений.УведомленияORDRSP.СоздатьМенеджерЗаписи();
запись.ЗаказПокупателя = Ссылка;
запись.ЗаказEDI = ДокументОснование;
запись.УникальныйИдентификатор = СформироватьГУИД();
запись.ОтправленВРучную = Ложь;
запись.ВариантЗаполнения = Перечисления.ВариантыЗаполненияORDRSP.ПовкладкеМТСС;
запись.Состояние = Перечисления.СостоянияORDRSP.Ожидает;
запись.ДатаПостановки = ТекущаяДата();
запись.Записать();
КонецПроцедуры
6 dezss
 
12.04.19
15:21
(5) И что вызывает сложности?
В чем проблема в этой процедуре эти проверки написать?
7 rapashocker
 
12.04.19
15:27
в этой процедуре я буду вызывать эту же процедуру?
8 dezss
 
12.04.19
15:30
(7) Зачем? О_О
Просто проверки в нее перенеси
9 rapashocker
 
12.04.19
15:37
мне надо только регистр проверить,зачем мне все проверки туда переносить?причем они идентичны для каждой из процедур
10 dezss
 
12.04.19
17:15
(9) ну проверки по регистру туда перенеси. Я ж не говорю, что все переносить.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший