Имя: Пароль:
1C
1С v8
Правила регистрации объекта в КД 2.1
0 happysan
 
06.12.23
13:18
Доброго времени суток!
Давно не работал над подобными задачами, нужна помощь.
В базе источнике есть документ Заказ покупателя и на его основании может быть введён документ товарный чек. Необходимо регистрировать к обмену только такой проведённый заказ покупателя, который имеет флаг "Выгрузка в розницу" и имеет введённый на его основании проведённый документ Товарный чек.
Подскажите, в каком обработчике события КД 2 нужно оформить запрос и нужен пример. Заранее благодарен!
1 asady
 
06.12.23
13:40
Открывай КД2 - Правила регистрации объектов - позиционирование на строке справочника "Регистрации" - Вверх кнопке "перейти к правилам" - найди (создай) свое правило - укажи в таблице отбора по свойствам объекта - нужный отбор - сохранип правила - загрузи ПРО в правила обмена своей базы
2 happysan
 
06.12.23
14:01
(1) Это всё я давно сделал. Я про код спрашивал и в каком обработчике событий.
3 happysan
 
06.12.23
14:04
(1) (2) И там я отбор сделал только по "Проведён = Истина" и "Выгрузка в розницу = Истина". А по условию наличия подчинённого реквизита нужен запрос, как я понимаю. И в документе "Товарный чек" есть реквизит "Заказ покупателя", это для информации. Либо все отборы в запросе делать с обращением к документам.
4 asady
 
06.12.23
14:18
(3) ответь когда срабатывает регистрация объекта?
5 happysan
 
06.12.23
14:24
(4) asady, регистрация Заказа покупателя должна срабатывать в момент проведения Товарного чека (в нём есть реквизиты: ДокументОснование и ЗаказПокупателя), который подчинён (введён на основании) Заказу покупателя.
6 happysan
 
06.12.23
14:28
Есть идея тогда создать регистрацию для документа "Товарный чек" в обработчике ПРОБ "После загрузки" сделать запрос по нужным заказам. Верно?
7 happysan
 
06.12.23
14:28
(6) Но тут встаёт вопрос как тогда зарегистрировать именно Заказ покупателя, а не товарный чек.
8 happysan
 
06.12.23
14:31
И нужно будет ещё отсечь товарные чеки без заказа покупателя.
9 happysan
 
06.12.23
14:41
Есть вариант регистрировать заказ покупателя, а в обработчике событий "После загрузки" указать:

УстановитьПривилегированныйРежим(Истина);

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТОРГ_ТоварныйЧек.Сделка КАК ЗаказПокупателя
ИЗ
    Документ.ТОРГ_ТоварныйЧек КАК ТОРГ_ТоварныйЧек
ГДЕ
    ТОРГ_ТоварныйЧек.Проведен = ИСТИНА
    И ТОРГ_ТоварныйЧек.Сделка.ркВыгрузкаРозница = ИСТИНА
    И ТОРГ_ТоварныйЧек.Сделка = &ЗаказПокупателя";

Запрос.УстановитьПараметр("ЗаказПокупателя",Объект.Ссылка);
ТекРезультат = Запрос.Выполнить();
ТекВыборка = ТекРезультат.Выбрать();
Пока ТекВыборка.Следующий() Цикл
    ПланыОбмена.ЗарегистрироватьИзменения(Получатели,ТекВыборка.ЗаказПокупателя);
КонецЦикла;
Получатели.Очистить();
УстановитьПривилегированныйРежим(Ложь);

Взлетит?
10 asady
 
06.12.23
14:51
ПослеОбработки (ПРО товарный чек)
Отказ = истина;
если Значениезаполнено(Объект.ДокументОснование) Тогда
Для каждого узел из Получатели Цикл
Планыобмена.ЗарегистрироватьИзменения(Узел,Объект.ДокументОснование);
КонецЦикла;
КонецЕсли;
11 happysan
 
06.12.23
14:59
(10) Спасибо, друг! Примерно, тоже в (6) размышлял об этом.
12 happysan
 
06.12.23
15:02
(10) А условия остальные по заказу покупателя (флаг "Выгрузка в розницу и "Проведён") в отборе на закладке "Основное" указать или тоже в обработчике "После загрузки" ПРО?
13 happysan
 
06.12.23
15:21
И ещё такое условие есть: если в приёмнике 1С:Розница на основании Заказа покупателя уже проведён документ Чек, то мы не должны перезаписывать этот Заказ покупателя. Как это правильнее реализовать? Это всё делается на базе Универсального плана обмена.
14 happysan
 
06.12.23
15:46
(13) Уже придумал как реализовать)
15 happysan
 
06.12.23
16:36
(4)(10) А нужно ещё и регистрировать непосредственные изменения Заказа покупателя по вышеуказанным условиям регистрации. Как это правильнее реализовать?
16 happysan
 
06.12.23
16:37
То есть, поменяли что-то в заказе покупателя и если есть подчинённый документ товарный чек, то тоже регистрировать изменения.
17 happysan
 
06.12.23
17:01
Похоже что-то из (9) можно в этом случае реализовать.