Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Записать элемент справочника из документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
twilight_dream
Проводится документ. Если при проведении возникает ситуация, когда документ проводить не нужно.
Эту ситуацию нужно записать - создать новый элемент в справочнике записать ошибку.
Документ ещё не записан.
Создаем элемент справочника.
ЗАполняем поля.
выполняем новЭлемент.Записать();
Выводим код справочника через сообщить. Код выводится.
Но в справочнике этого элемента нет при просмотре.

Прошу уважаемых форумчан подсказать вариант записи таких ошибок для дальнейшего отчета.
В справочник сохраняется документ, вызвавший ситуацию и описание ситуации (два реквизита)
Petre
Код получается после записи?
Запись в попытке и ошибок нет?
twilight_dream
Цитата(Petre @ 09.10.14, 10:17) необходимо зарегистрироваться для просмотра ссылки
Код получается после записи?
Запись в попытке и ошибок нет?

Да, как не странно, код получается.
ПОпытки нет и ошибки нет, что тоже очень странно.
mister-x
Запис в журнал реєстрації як при оновленні релізу не підійде? Якщо так - див. обробку ОбновлениеРелиза в типових конф-ах.
Petre
Цитата(mister-x @ 09.10.14, 11:02) необходимо зарегистрироваться для просмотра ссылки
Запис в журнал реєстрації як при оновленні релізу не підійде?

Сумнівно, враховуючи:
Цитата(twilight_dream @ 09.10.14, 10:11) необходимо зарегистрироваться для просмотра ссылки
... для дальнейшего отчета.

mister-x
тоді потрібно бачити код
sava1
подозреваю, что вместо
новЭлемент.Записать()
; надо
Спр.Записать()
Naghual
Справочник подчиненный?
twilight_dream
Процедура глВывестиОшибку(Ош,ФлагОш="",Конт="") Экспорт
Если Конт="" Тогда
  Сообщить(Ош,".");
  //Возврат;
Иначе
  Попытка
   Спр=СоздатьОбъект("Справочник.ХронологияНеПроведения");
   Спр.Новый();
   Спр.Документ=Конт.ТекущийДокумент();
   Спр.Пользователь=глПользователь;
   Спр.ДатаОш=ТекущаяДата();
   Спр.ВремяОш=""+ТекущееВремя();
   Спр.Ошибка=Ош;
   Спр.Записать();
   Сообщить(Ош,"!");
  Исключение
   Сообщить(ОписаниеОшибки());
  КонецПопытки;
КонецЕсли;
КонецПроцедуры
[11:39:10] Максим Полтавский: //-------------------------------

В исключение не заходит, записывается. На форме списка справочника появляется даже новая строка, которая пропадает, как только нажимаешь "Ок" в предупреждении "Документ не проведен"

А это в модуле проведения РН

   глВывестиОшибку("Отсрочка по "+Клиент+" превысила максимальную "+"("+МаксПросрочка+">"+Макс_СрокКредита+")."+" Отгрузка запрещена.",,Контекст); 
   Возврат 0;
НеПроводить(Контекст);
   Возврат;

//------------------------- в глобальном модул ----------------------------------
Процедура НеПроводить(Конт) Экспорт
Сообщить("Документ "+Конт.Вид()+" №"+Конт.НомерДок+" от "+Конт.ДатаДок+" не проводится!");
Конт.НеПроводитьДокумент();
КонецПроцедуры


В модуле проведения РН без "Возврат 0"
Petre
Отменилась транзакция и изменения пропали.
twilight_dream
Цитата(Petre @ 09.10.14, 12:09) необходимо зарегистрироваться для просмотра ссылки
Отменилась транзакция и изменения пропали.

а шож робыть?
Petre
Это предположение. Забыл я семерку совсем...
Домовик
в вот этом месте:
Цитата
А это в модуле проведения РН

 глВывестиОшибку("Отсрочка по "+Клиент+" превысила максимальную "+"("+МаксПросрочка+">"+Макс_СрокКредита+")."+" Отгрузка запрещена.",,Контекст); 
   Возврат 0;



в модуле проведения создаете элемент...
все, что делаете в этом модуле отменяется. документ же не проводится.

процедура глобальная, но вызывается из модуля проведения.

а если в модуле проведения запустить тихо обработку, и ею создать?




Домовик
проигрывтаю ситуацию - не записывает. интересно, что даже если запустить обработку, код который в ПриОткрытии() тоже не срабатывает, аж висит обработка далее, и только нажав на Выполнить() працює. очень коряво это все.
лучше искать пути в ПриЗаписи() в документе. до проведения. все равно потом не проведется.
Домовик
c другой стороны, саму обработку можно оформить как "предупреждение", которая остается висеть после закрытия документа, на кот единств кнопка ОК, кот выполняет запись элемента. но тут нужно предусмотреть нажатие на крестик.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.