Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Так как все-таки правильно сделать подписку ПриПроведении для типовых УТ/КА/ERP ?

Так как все-таки правильно сделать подписку ПриПроведении для типовых УТ/КА/ERP ?
Я
   triviumfan
 
12.09.18 - 11:24
Доброго дня, коллеги.

Наткнулся на закрытую тему Подписка на событие обработка проведения
в комментарии (31) указано решение, но! Это ведь в корне неверно!
Есть поясняющая картинка https://курсы-по-1с.рф/wp-content/uploads/2017/04/document-posting-scheme-pict01-2.gif

Типичный обработчик ОбработкаПроведения():
ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.КорректировкаРеализации.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
...
// тут доработки движений, которые я хочу перенести в подписку!

...
ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);
ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);



И как же мне изменить движения в подписке, если контроль уже прошёл? Что, заново инициализировать доп.свойства, изменить движения конкретного регистра, записать и снова выполнить контроль? Что-то это дико звучит с точки зрения производительности.
 
 
   Вафель
 
1 - 12.09.18 - 11:25
подпиской не обойдешься.
нужно кудато вклиниваться
   triviumfan
 
2 - 12.09.18 - 11:57
(1) Но ребята из указанной темы как-то обходятся))) Или они просто не в курсе, что контроля нет?
   vyaz
 
3 - 12.09.18 - 12:23
(0) Никто не мешает реализовать контроль отрицательных остатков в подписке, но, как всегда, есть нюанс - при использовании подписки на события будет страдать производительность.
   triviumfan
 
4 - 12.09.18 - 12:29
Так у меня вопрос, как вы лично реализуете подписку (ну или каким образом выполняете адаптацию типовой конфы) в данном случае? Куда ни глянь - везде подписки, 2 курса уже посмотрел - все гладко, все легко и просто. А начинаешь делать - опять какие-то грабли и камни!
   triviumfan
 
5 - 12.09.18 - 12:30
Посмотрел курсы "Адаптация и доработка типовых конфигураций" и "Курсы по расширениям" ресурса "курсы-по-1с", но там ни малейшего намёка на эту ситуёвину. Поиск по форумам тоже ничего полезного не дал.
   shuhard
 
6 - 12.09.18 - 12:33
(5) заведи бложек (с)
   vyaz
 
7 - 12.09.18 - 12:34
(5) Модуль 3, задача 4, урок 16 "Проведение через подписку на событие".
Вот сам курс https://xn----1-bedvffifm4g.xn--p1ai/ut11/trade-confs-dev/
   vyaz
 
8 - 12.09.18 - 12:42
(4)
Процедура ОбработкаПроведенияРеализацияТоваровУслугОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    
    Ссылка = Источник.Ссылка;
    ДополнительныеСвойства = Источник.ДополнительныеСвойства;
    Движения = Источник.Движения;
    
    ДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

    ВзаиморасчетыСервер.ОтразитьРасчетыСПоставщиками(ДополнительныеСвойства, Движения, Отказ);
    ДоходыИРасходыСервер.ОтразитьПрочиеРасходы(ДополнительныеСвойства, Движения, Отказ);
    ДоходыИРасходыСервер.ОтразитьПартииПрочихРасходов(ДополнительныеСвойства, Движения, Отказ);
    УправленческийУчетПроведениеСервер.ОтразитьДвиженияКонтрагентДоходыРасходы(ДополнительныеСвойства, Движения, Отказ);
        
    ЕстьДвиженияПрочиеАктивыПассивы = Источник.Движения.Найти("ПрочиеАктивыПассивы") <> Неопределено;
    Если  ЕстьДвиженияПрочиеАктивыПассивы 
        И ПолучитьФункциональнуюОпцию("ФормироватьУправленческийБаланс") Тогда
        УправленческийУчетПроведениеСервер.ДобавитьДвиженияАктивовПассивов(Источник);
    КонецЕсли;
    
КонецПроцедуры
   Вафель
 
9 - 12.09.18 - 13:04
если нужно менять текущие движения, то подпиской не обойдешься
   MaxS
 
10 - 12.09.18 - 13:12
(9) Всё не читал.
Делал подпиской на событие. Если нужно исправить имеющиеся движения, исправлял в своей подписке на событие. Нерешаемых проблем не припоминаю.
 
 Рекламное место пустует
   triviumfan
 
11 - 12.09.18 - 13:44
(7) Благодарю! Как-то я пропустил этот урок! Думал, что ничего нового!
Ппц там моловина модуля менеджера нужно в подписке использовать, потому что все процедуры неэкспортные!
(8) Замеры делал?) секунд 10 проводится?
   triviumfan
 
12 - 12.09.18 - 13:46
Пожалуй, после все увиденного, я ничего делать не буду, оставлю в ОП() как оно имеется сейчас.
   DSSS
 
13 - 12.09.18 - 13:49
(3)
>>  Никто не мешает реализовать контроль отрицательных остатков в подписке, но, как всегда, есть нюанс - при использовании подписки на события будет страдать производительность.

Почему?
   vyaz
 
14 - 12.09.18 - 13:57
(11) мне замеры без надобности, понадобится сделаю)
(13) Количество обращений к БД на чтение и на запись увеличилось и при определенной "удаче" и криворукости возможно влететь на взаимоблокировки
   MaxS
 
15 - 12.09.18 - 14:14
(11) так результаты работы типового проведения можно увидеть в том числе в дополнительных свойствах документа объекта.
Подготовил свою таблицу с данными и типовой процедурой отправил в регистр.
   triviumfan
 
16 - 12.09.18 - 16:50
(14) вы случайно не Вячеслав Вязигин – тренер сего курса?)
   triviumfan
 
17 - 12.09.18 - 16:51
Раз так хорошо знаете материал...:)
   vyaz
 
18 - 12.09.18 - 17:59
(16) Вы очень догадливы :)
   triviumfan
 
19 - 14.09.18 - 12:00
Оказывается, что подписку на событие ОбработкаПроверкиЗаполнения() Тоже не сделать.
Потому то в типовом варианте все программно обрабатывается:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
...
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);
    
Если Не Отказ И ОбщегоНазначенияУТ.ПроверитьЗаполнениеРеквизитовОбъекта(ЭтотОбъект, ПроверяемыеРеквизиты) Тогда
    Отказ = Истина;
КонецЕсли;


Получается, что разработчики специально срут нам, поддержке/сопровождению? Это я ещё молчу про то, что они пробелы и точки проставляют в описании процедур, чтобы я, блять, сравнивал каждую из них в модуле из 100500 процедур!
   triviumfan
 
20 - 14.09.18 - 12:01
(19) "сравнивал каждую из них в модуле из 100500 процедур", - при сравнении/объединении обновления конфы.
   vyaz
 
21 - 14.09.18 - 15:13
(19) разработчики дают нам работу, усложняя типовые, повышают стоимость специалистов 1С, это ведь прекрасно :)
   triviumfan
 
22 - 14.09.18 - 15:28
(21) у меня оклад! :)
   Вафель
 
23 - 14.09.18 - 15:31
(22) ну так и оклады на рынке из-за этого растут
   Byasha
 
24 - 14.09.18 - 15:36
(0) Все зависит от задачи которую ты решаешь. Если нужно добавить движения по дополнительным регистрам - то через подписку на событие обработки проведения. Если нужно изменить или добавить движения регистров которые формируются типовым функционалом - то только через подписку на событие "ПриЗаписи" или "ПередЗаписью" набора записей регистра. Через какой-именно обработчик - нужно смотреть по коду, потому что, как правило, у 1С перед записью выполняется контроль данных.
Это резкое снижение производительности.
Если нужна скорость то нужно вклиниваться в процедуры заполнения дополнительных свойств для проведения - там формируются таблицы, которые будут загружены в наборы записей, и в процедуры контроля отрицательных остатков. Как правило достаточно аккуратно, парой строчек, в нужном месте вклиниться в процедуры заполнения дополнительных свойств для проведения.
Если скорость на втором плане - то через подписку на событие "При записи" набора записей регистра. Это самый безболезненный вариант в части сохранения типового кода.
   Cyberhawk
 
25 - 14.09.18 - 15:38
(9) Ты про что, когда есть подписка на регистр?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует