Имя: Пароль:
1C
 
Совершенно непонятная проблема в модуле проведения документа 1С8!
0 Влад_Савин
 
20.06.24
14:37
Задача - слегка поправить движение по Рег.накопления при проведении документа (1С8 УТ10, доработанная).
Делал такое не единожды - в отладчике, модуль объекта, пошагово по Ф10 и Ф11, выводя в табло Коллекцию Движения.
Как только изменилось - находил процедуру, и место в ней, где  проводки, там вписывал требуемый алгоритм. Ок!
В этот раз - при отладке НИЧЕГО НЕ ПОЯВЛЯЛОСЬ! Доходил до конца процедуры Обработка проведения, в Движениях по данному Регисту ПУСТО, до самого конца - ВСЮ процедуру прошел по Ф11, движения пустые, вылет в ПОльзовательский (все отработало!), смотрю в меню Перейти- Движения по регистрам - там движения ЕСТЬ. ОТКУДА???
Ладно, добавил в конфу Подписки на события - При записи документа, При проведении документа - тоже, результат ноль!
Добавляю Подписку на событие - При изменении записи Регистра (того самого что мне нужен) - уж сейчас точно поймаю, из точки останова взглянув на стек вызовов.
ФИГ ВАМ! В точку (в процедуре обработчик подписки) приходит  на этапе - удалить движения документа (самое начало перепроведения). Все Движения в ДокументОбъект становятся пустыми. И далее - в обработчик подписки (должный запускаться при записи новых значений) НЕ ПОПАДАЕТ.
ЭТО ЧТО ВООБЩЕ ТАКОЕ? Никогда такого не видел в 1С8 !!
Что я делаю не так?? Где может еще быть - запись новых движений в Регистр?
(Бизнес-процесса нет. Да и Регистратор указан - именно этот документ! Да и если бы менялось из другого документа - подписка на событие должна ведь отработать?)
1 Волшебник
 
20.06.24
14:39
Паника?
Спокойствие! Только спокойствие! Дело-то житейское...
2 Влад_Савин
 
20.06.24
14:44
Так простите, проблема в том что я вообще не понимаю, ЧТО ЭТО ТАКОЕ! Ну как бы 2х2 оказалось 5. А у меня опыт в 1С8 10 лет(с самого начала в 1С франчайзи, затем с 2017 решил что стабильность лучше и работаю там же где сейчас). Работаю в совместной (с иностранцами) фирме, штатный прогер 1С8, и за 7 лет мной были довольны - это о чем-то говорит?
Но на меня уже менеджеры давят "когда будет готово". А это в первый раз что я даже не знаю теперь, как подступиться.
Перепробовал все что знал и умел!
3 Valdis2007
 
20.06.24
14:46
(0) отложенное проведение фоновым заданием
4 Смотрящий
 
20.06.24
15:01
(0) Кэш развалился. Делов-то...
5 Мультук
 
20.06.24
14:50
(2)

1) Я бы в модуле регистра  в "ПередЗаписью" написал
Сообщить("Привет мир!");
и поставил точку останова.

Затем включил бы "Замер производительности", провёл и поискал
в результатах "Привет мир"

2) Я не знаю умеет ли УТ10 в расширения, но ...стоит проверить
3) Если регистр Типовой и документ Типовой, то наверное стоит написать их имена

4) Возможно стоит почистить кэш
6 Ненавижу 1С
 
20.06.24
14:52
может через фоновое задание пишется?
7 Влад_Савин
 
20.06.24
14:58
Так вопрос - фоновое задание разве в Отладчике и Подписке не видно?
И оно запускается - при проведении документа а не по расписанию?
В моем случае - именно при проведении документа.
8 Влад_Савин
 
20.06.24
15:00
Нет, не фоновое. Заглянул в Консоль заданий (до того снова перепровел документ). В расписании никакого нового задания (и с временем минуту назад) не появилось!
9 shuhard
 
20.06.24
15:01
(7) не ипи мозг
поставь точку останова у РГ перед записью
10 Valdis2007
 
20.06.24
15:01
(7) Так вопрос - фоновое задание разве в Отладчике и Подписке не видно?
Если не стоит парметр запуска  РежимОтладки

или автоматичское подключение  = фоновые задания...то нет
11 Влад_Савин
 
20.06.24
15:01
Про расширение конфигурации - оч маловероятно. Я с этой самой конфой работаю уже 7 лет, ничего не добавлял - и мой предшественник, сдавая мне ее, ничего не говорил, что тут расширения есть
12 lEvGl
 
20.06.24
15:02
(7) есть такая типовая история как ДлительныеОперации.ВыполнениеВФоне и т д, но это в новых, попробуйте поискать, может тоже есть
13 lEvGl
 
20.06.24
15:03
(8) фоновое <> регламетное
14 lEvGl
 
20.06.24
15:04
а так да, (9)
15 Влад_Савин
 
20.06.24
15:13
Непонятка! Поставил как тут советовали
в модуле регистра  в "ПередЗаписью" написал
Сообщить
И точку останова
Остановилось. В Стеке - вижу что вызов из УДаление движений (что и было - движения пустые). Жму продолжить - и вылет.

Но в окне сообщений ДВА сообщения!!
Первое - эт понятно, в тот момент когда я смотрел.
А откуда второе взялось!?
И то есть, программа вышла на это сообщение ПРИ ТОЧКЕ ОСТАНОВА но не остановилась??
16 lEvGl
 
20.06.24
15:16
(15) набор два раза пишется, сначала пустой
там всегда надо ставить Если ЗначениеЗаполнено(Набор) Тогда
Или Набор.Количество(), кому как больше нравится
17 Kongo2019
 
20.06.24
15:19
(15) Логично. Сначала чистит свои записи, потом пишет.
18 Влад_Савин
 
20.06.24
15:30
Не. Поставил точки останова в модуле Регистра на - ВыполнитьПриход, ВыполнитьРасход, ВыполнитьДвижения - не отрабатывают!
Атрибута Набор там нет. Есть мТаблицаДвижений  - оба раза пусто (я это на Сообщение повесил)
19 Dmitrii
 
20.06.24
15:32
🤔 Топикстартер упорно не озвучивает имя регистра и документа...
20 Влад_Савин
 
20.06.24
15:33
Вопрос - программа у нас "гибрид" УТ10 и CRM. Может в ней быть какой-то "секретный код" (кусок программы) не видимый ни в конфигураторе ни в отладчике?
Этот регистр был в Поддержке - "запрещен к редактированию", причем запрет стоял от CRM
21 Dmitrii
 
20.06.24
15:33
(18) >> Атрибута Набор там нет.

В модуле набора записей Набор = ЭтотОбъект.
22 Влад_Савин
 
20.06.24
15:35
Да пожалуйста - документ Поступление из переработки, регистр ПартииПереданные.
И надо в этих партиях порядок округления поменять - где-то добавить копейки.
Так еще непонятка - есть в документе и таб часть Комплектующие, где я могу вручную эти копейки  поправить!
Но в движениях Регистра все равно будет старое значение!
Хотя в регистр Товары Переданные - попадет измененное.
23 lEvGl
 
20.06.24
15:36
Вопрос - программа у нас "гибрид" УТ10 и CRM. Может в ней быть какой-то "секретный код" (кусок программы) не видимый ни в конфигураторе ни в отладчике? 

чепуха
24 Dmitrii
 
20.06.24
15:36
(11) >> Я с этой самой конфой работаю уже 7 лет

(20) >> Может в ней быть какой-то "секретный код"...?

Я один вижу тут противоречие?...
25 lEvGl
 
20.06.24
15:37
(24) да тут все на противоречиях)
опыт колоссальный, а откуда движения берутся найти не можем
26 Механик
 
20.06.24
15:45
Знаю такую фигню. Странно, что ты с ней впервые столкнулся. Короче, теоретически объяснить не могу, что это и как работает. Что-то связанное с набором записей. Обхожу следующим образом - после проведения обхожу НаборЗаписей этого регистра с отбором по регистратору и правлю, что нужно. И ещё раз провожу.
27 Влад_Савин
 
20.06.24
15:46
Да, представьте, я 7 лет уже дописываю эту программу (под нашу фирму), и не раз уже так добавлял в проводки по регистрам - но вот с таким сталкиваюсь впервые!
Про "секретный код" мне вчера сказал приятель, тоже прогер 1С. Откуда в итоге берутся движения - ?
Я уже пытался просто доп.проводку добавлять - но тогда слетает расчет калькуляции себестоимости (там привязка к строкам документа - и лишние строки на эти копейки, этот порядок сбивают).
Стал вписывать внешней обработкой на этот документ, объект Движения, изменить строки в наборе, записать. Все работает, и калькуляция тоже - но, емое, как только ставлю "восстановить последовательность" (перепровести все документы в базе данных, с января) все изменения в строках слетают! (что интересно, дописанные строки НЕ исчезали. но они не подходят, см выше).
Итого остается - найти где формируются движения и править там. Вот и бю.сь уже вторую неделю!
28 Влад_Савин
 
20.06.24
15:50
Обхожу следующим образом - после проведения обхожу НаборЗаписей этого регистра с отбором по регистратору и правлю, что нужно. И ещё раз провожу.

Ну так я так же и делал! Внешняя обработка, выбор нужный документ (а он может быть и месяц и два и три назад), у него запросом, Движения с отбором по регистратору, нужная Номенклатура, изменить стоимость, записать.
Все Ок, включая калькуляцию!!

Но когда я восстанавливаю последовательность (все перепровожу - а это надо, иначе будут другие тараканы) то все изменения ек!

А как вы последовательность восстанавливали?
29 Dmitrii
 
20.06.24
15:50
(22) Судя по регистру и документу, проблема вряд ли связана с (20) - тем что конфа - гибрид УТ+CRM.

Ставьте точку останова в ПередЗаписью в модуле набора записей. от неё пляшите.
30 Влад_Савин
 
20.06.24
16:03
Так ставил - там ничего!

Ладно - если не выходит решить проблему в лоб, попробую обойти

Изменить процедуру восстановления последовательности - чтобы она конкретно этот тип документа проводила по иному - после стандартного проведения, тут же вставляла доп. обработку (отлаженную мной на внешней обработке).
Должно сработать - чтоб нужный результат.

Уже в поненельник если интересно, отпишусь что выйдет.
31 Garikk
 
20.06.24
16:23
кэш то пробовали чистить? два раза посоветовали уже, магия такого рода появляется почти всегда из-за этого
32 maxab72
 
21.06.24
08:28
1. Попробовать на тестовой. Если не повторилось, значит глюк - чистить кэши, проводить ТИИ. Если повторилось, значит это функционал.
2. Проверить поиском все места в коде, где этот регистр записывается. Думать. Если не помогло. Думать два раза.
3. Проверить все места в коде, где этот регистр упоминается. Думать три раза.
33 Ненавижу 1С
 
21.06.24
08:53
(30) значит фоновое событие
34 Ёпрст
 
21.06.24
09:01
(0) отложенные проведения
35 lEvGl
 
21.06.24
09:06
(18) а модуль чего зашли? модуль набора надо смотреть
и что это Выполнить приход, расход, какая то местная магия? Может в ней и дело
36 Волшебник
 
21.06.24
09:10
(19) Это ж-ж-ж неспроста...
37 Лирик
 
21.06.24
09:14
Сдается мне, что ТС ищет эту процедуру: "УправлениеЗапасамиПартионныйУчет.ПоступлениеПереданныхУпр"
38 Влад_Савин
 
05.07.24
11:25
Проблему решил - "если нельзя в лоб, то можно ее обойти".
Не получалось добавить/изменить проводки в модуле документа.
Можно было добавить движения после - но эти добавки слетали при восстановлении последовательности (там перепроведение документов).
А раз я так и смог поправить модуль документа - то я изменил код процедуры Восстановление последовательности (она регламентная, в нашей базе 1С).
Чтоб документ вида "Поступление из переработки" (если в нем установлен признак "корректировка" (булевский)) обрабатывался как мне надо.
И все стало Ок - все довольны - и бухгалтерия, и клиентский
39 Волшебник
 
05.07.24
11:27
(38) Вместо одного костыля теперь стало два костыля
40 trad
 
05.07.24
11:42
(39) на двух удобнее чем на одном
41 Влад_Савин
 
05.07.24
13:19
Ну так работает, дает тот результат что требуется - а что еще надо?
Ну а что при этом внутри программы - это сугубо моя кухня.
Пользователи ее не видят.
42 Волшебник
 
05.07.24
13:21
(41) Вы учтите, что Ваши действия пишутся Вам в карму. Вы зарядили ружьё, подложили мину. Потом это обязательно выстрелит и взорвётся.
43 dmt
 
05.07.24
15:29
(42) возможно, это у пользователей карма плохая
44 s_newbi
 
05.07.24
16:26
(41) Ты так и не смог найти откуда у тебя второй раз вызывалось "ПередЗаписью" в регистре?)
В настройках отладки надо было поставить автоподключение фоновых заданий.
45 Злопчинский
 
05.07.24
16:34
Смешно с восьмерочников ;-)
Интересная система, много возможностей накостылять
46 PLUT
 
05.07.24
16:42
(45) обычное костылестроение в типовых (ну там онлайн/оффлайн расчеты и фоновые допроведения/переотражения по ночам/при закрытиях)

всё ради удобства пользователей, чтобы не было заметных тормозов и конфликта блокировок в битве за ресурсы)
47 Chameleon1980
 
06.07.24
16:36
(2) и спустя 20 лет будешь новое находить - не перживай.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.