Имя: Пароль:
1C
 
Не удается заполнить реквизит Источника в подписке на событие..
0 evorle145
 
10.04.19
09:40
Процедура РКО_ДДСПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
        Если Источник.ВидОперации = Перечисления.ВидыОперацийРКО.Инкассация Тогда
            
            ДДСПоУмолчанию = Константы.ДДСПоУмолчанию.Получить();
    
            Если Источник.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.ПереводыВПути Тогда
                 Источник.СубконтоДт1 = ДДСПоУмолчанию;
            КонецЕсли;    
            
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

Типзнч(Источник.СубконтоДт1) равен до и после присвоения тип Статьи движения денежных средств
выражение
Типзнч(Источник.СубконтоДт1) = типЗнч(ДДСПоУмолчанию) в отладчике дает ИСТИНА

Соответственно далее когда РКО проводится, то в БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, 1, СубконтоДт1) ничего не происходит, потому что "СубконтоДт1 = Справочники.СтатьиДвиженияДенежныхСредств.пустаяссылка()" дает истина...

Код находится в подписке на событие перед записью объекта РКО.
1 Skylark
 
10.04.19
09:46
Чего ты типы то смотришь?
На выходе из этой процедуры что в нужном реквизите Источник.СубконтоДт1, какое значение?
2 evorle145
 
10.04.19
09:48
Но что интересно, когда я запускаю обмен, то этот код выполняется как надо. Значение Источник.СубконтоДт1 - присваивается. ( это видно и через отладчик, когда ставлю точку останова в этой строке, и в режиме предприятие соответственно)
(1) на выходе из этой процедуры в нужном реквизите Источник.СубконтоДт1 - никакого значение. Пустая ссылка на справочник ддс
3 Skylark
 
10.04.19
09:49
(2) первое предложение противоречит второму
4 evorle145
 
10.04.19
09:53
(3) еще раз: при обмене код отрабатывает как надо. (для этого этот код и писал). Но если я захожу в документ, и нажимаю "Записать" - то нифига не происходит. То есть подписка срабатывает, отладчик тоже проваливается на эту строку  Источник.СубконтоДт1 = ДДСПоУмолчанию; но значение не присваивает.. То есть при обмене происходит что-то такое, что этот же самый код работает как надо, если просто жму записать документ - нифига...
5 Skylark
 
10.04.19
09:53
СубконтоДт1 в БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, 1, СубконтоДт1) это реквизит объекта или данные формы или ещё что-нибудь?
6 evorle145
 
10.04.19
09:57
(5) это реквизит объекта, если я правильно понял ваш вопрос:
https://hostingkartinok.com/show-image.php?id=9176ad44431ab8195bda3cd3f4773abd
7 Skylark
 
10.04.19
10:00
Но когда нажимаешь Записать тоже ведь можно смотреть в отладчике?
До строки Источник.СубконтоДт1 = ДДСПоУмолчанию; доходит и после неё в Источник.СубконтоДт1 пустое значение, хотя в ДДСПоУмолчанию непустое значение и того же типа что и Источник.СубконтоДт1?
8 evorle145
 
10.04.19
10:04
(7) Да, нажимаю записать, смотрю отладчик и далее все как вы написали... Я понимаю, что где-то туплю, но типы значений до и после я проверил первым делом.. и это мне ничего не дало.. Собственно в теме я это и написал.
9 evorle145
 
10.04.19
10:18
Все голову сломал, не врубаюсь как такое может быть.
Что имеем:
1. в конфигураторе для реквизита СубконтоДт1 установлен тип Характеристика.ВидыСубконтоХозрасчетные.
2. Моя подписка отрабатывает и в случае обмена и в случае когда руками нажимаю "Записать". Только в случае обмена значение присваивается, а в случае когда руками - то нет.

Может когда руками- то надо предварительно для реквизита СубконтоДт1  сделать привестиЗначение? но с другой стороны, оно и так имеет значение тип справочника ДДС...

чего делать???
10 evorle145
 
10.04.19
10:19
про привестиЗначение вообще бред в (9) написал... оно же для элемента формы.. а у меня речь идет про реквизит документа..
11 PaulBC
 
10.04.19
10:24
В случае обмена не выполняются штатные обработчики ПерезЗаписью и ПриЗаписи. Видимо, где-то в них сбрасывается значение.
12 Skylark
 
10.04.19
10:29
В порядке бреда: а Типзнч(Источник) при ручной записи что показывает?
13 Skylark
 
10.04.19
10:29
А, ну да, там же есть условие выше - объект
14 Skylark
 
10.04.19
10:31
Интересный случай, коллега
Попробуйте что ли кэш очистить там, базу перерегистрировать или ещё какие-нибудь танцы с бубуном
15 evorle145
 
10.04.19
10:35
(12) вот это показывает: Документ объект: Расходный кассовый ордер
(11) так как можно сбросить то, чего не присвоилось... Отладчик же показывает что после присвоения, реквизит так и остается не заполненным.
16 evorle145
 
10.04.19
10:38
(14) Вы гений! База sql, БП 2.0. Я просто ее удалил из списка баз и добавил заново (обычно так я чищу КЭШ на файловых базах) - и заработало! ( ну как так? не первый день в 1с, и не первый раз мои проблемы решаются чисткой кэша, и опять я про это дело забыл.. сам себе я удивляюсь...)
На почту скиньте номер телефона, закину чутка в знак благодарности!
17 Skylark
 
10.04.19
11:38
(16) да ну, ерунда
Подобное ещё в семёрке происходило
18 evorle145
 
10.04.19
12:06
(17) тогда огромное вам человеческое спасибо!
Независимо от того, куда вы едете — это в гору и против ветра!