Загадка заполнения

1. karamazoff 123 01.05.23 15:16 Сейчас в теме
Доброго всем!
Сделал обработку для УНФ 1.6.27 которая отбирает заказы на производство, обходит отобранный список, получает объект, в тч Продукция меняет спецификацию на - по умолчанию (стандартной процедурой из модуля менеджера справочника Справочники.Спецификации.СпецификацияПоУмолчанию(спец.Номенклатура, спец.Характеристика)), после этого записывает объект в режиме проведения. База серверная постргешная.
И вот, отбирается 100 документов, запускается их обработка и у двух из них спецификация не меняется на по умолчанию, причем они перепроводятся. Если запустить второй раз - то у них все меняется как надо...
В копии в этих документах поменялось с 1-го раза, поэтому ошибку отловить не удалось...
Как так??? И дело наверно не в конкретной обработке, а как может не срабатывать с 1-го раза, но срабатывать со 2-го?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. user856012 14 01.05.23 15:55 Сейчас в теме
(1)
а как может не срабатывать с 1-го раза, но срабатывать со 2-го?
Например, если документ или таблица заблокированы в момент первого прохода.
5. karamazoff 123 01.05.23 16:40 Сейчас в теме
(4)ну тогда оно ошибку написало бы, и сейчас в базе 1 человек...
2. Said-We 01.05.23 15:31 Сейчас в теме
Чудес не бывает. Ищи ошибку. Либо в обработке, либо в своих действиях. Запуск не пересохраненной версии обработки например....
6. karamazoff 123 01.05.23 16:42 Сейчас в теме
(2)Запуск не пересохраненой версии, это вариант, теоретически возможно, можно еще кэш почистить, и если завтра такого не будет, то все ок, но вот конкретики все равно не будет, только теория
3. karamazoff 123 01.05.23 15:32 Сейчас в теме
И как предложите искать?
7. Sashares 33 01.05.23 17:07 Сейчас в теме
(3)Ну для начала можно показать код обработки тут.
Искать соответственно в отладчике - добавить лог, добавить проверку, что после проведения у документа значение реквизита поменялось. Если не поменялось, выдавать сообщение/ошибку/ставить точку останова и вот это вот все.
8. karamazoff 123 01.05.23 17:29 Сейчас в теме
(7)ну разве что проверять после проведения изменение значения... но это не объяснит, почему со 2-го раза меняет.
А код, он простой, как паровоз
Зак = стр.Заказ.ПолучитьОбъект();
Для каждого спец из Зак.Продукция цикл
	спец.Спецификация = Справочники.Спецификации.СпецификацияПоУмолчанию(спец.Номенклатура, спец.Характеристика);
КонецЦикла;

			попытка
				Зак.Записать(РежимЗаписиДокумента.Проведение);
				стр.ПерепроведенЗак = истина;
			исключение	
				//Сообщить(ОписаниеОшибки());
				Ошибки = Ошибки + "Не удалось перепровести Заказ " + ОписаниеОшибки();
				Возврат Ошибки;
			Конецпопытки;	

Показать
9. Sashares 33 01.05.23 17:33 Сейчас в теме
(8)Покажите весь код процедуры.
10. user1826630 01.05.23 17:39 Сейчас в теме
(8) А если в документе уже все спецификации установлены по умолчанию - то зачем получать объект, перезаполнять его, а потом еще и перепроводить?
Там еще и запрос в цикле, как я понимаю...

UPD. А еще очень напрягает Возврат в Исключении.
11. karamazoff 123 01.05.23 21:52 Сейчас в теме
(10) ну надо так, какая разница зачем, долго объяснять, да и не нужно, и причем здесь возврат в исключении??? Вопрос не про методику кодирования, не про оптимизацию (уже началось про запросы в цикле...) а скорее технический - получаем объект, меняем у него реквизит, проводим, ошибок нет - реквизит прежний, еще раз на ту-же кнопку - реквизит меняется.
Думаю, прав (2) по поводу пересохраненной версии, ну и кэш.
Вспомнил, что пару лет назад сталкивался с ситуацией - пишем в конфе внешнюю обработку, запускаем из под конфы 1с-ну, открываем через файл - работает, затем меняем во внешней обработке что-то, сохраняем, запускаем из под уже открытой 1с через файл - изменений нет, пока заново не перезапустить 1с-ну они не появлялись. С таким встречался всего раз - но такое бывает.
В данном случае, обработку я действительно несколько раз модернизировал и заново загружал в дополнительные, а перезапустить сеанс, под которым происходило чудо, не было возможности.
Завтра посмотрим.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот