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

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

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивВсехРеквизитов = Новый Массив;
МассивРеквизитовОперации = Новый Массив;
...
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);
    
Если Не Отказ И ОбщегоНазначенияУТ.ПроверитьЗаполнениеРеквизитовОбъекта(ЭтотОбъект, ПроверяемыеРеквизиты) Тогда
    Отказ = Истина;
КонецЕсли;


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