|
Программное редактирование проведенного документа |
☑ |
0
Блондинка_
23.05.14
✎
15:29
|
Сейчас столкнулась с такой непонятной для меня штукой. Это как бы мой косяк и я его исправлю, но просто интересно. Перед открытием у меня добавляется пару строчек из заранее установленных значений в справочнике. Там 2 строчки всего НоваяСтрока=Таблица.Добавить() и НоваяСтрока.Реквизит=РеквизитИзСправочника. Я никаких условий не добавила, что эти строки должны только один раз прописываться только в случае нового объекта и поэтому у меня там столько их понаписалось. Но вот что интересно, если документ проведен, еще строки не дописываются, хотя все действия те же отрабатываются. Почему так?
|
|
1
salvator
23.05.14
✎
15:30
|
Код показывай ПередОткрытием
|
|
2
Блондинка_
23.05.14
✎
15:47
|
Тут много чего, но что касается добавления строк только в конце. На всякий случай привела все, хотя не понимаю, как может быть связано.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Чтение =МоиПроцедуры.ПроверкаПраваДоступа(глЗначениеПеременной("глТекущийПользователь"), "МойДокумент", "Чтение");
Если НЕ Чтение Тогда Сообщить("Пользователю запрещено чтение объекта!");
Отказ = Истина;
Возврат;
конецЕсли;
Изменение = МоиПроцедуры.ПроверкаПраваДоступа(глЗначениеПеременной("глТекущийПользователь"), "МойДокумент", "Изменение");
Если НЕ Изменение Тогда
ЭтаФорма.ТолькоПросмотр = Истина;
КонецЕсли;
Если ЭтотОбъект.ЭтоНовый()Тогда
Ответственный=ПараметрыСеанса.ТекущийПользователь;
ПредыдущийДокумент=ПоискПредыдущегоДокумента();
Если НЕ ПредыдущийДокумент=Неопределено и ПредыдущийДокумен.Проверен=Ложь Тогда
Сообщить("Новый документ не будет создан. Предыдущий не проверен!");
Отказ=Истина;
КонецЕсли;
КонецЕсли;
Если ПараметрыСеанса.ТекущийПользователь<>Ответственный Тогда
ЭлементыФормы.Проверен.Доступность=Ложь;
ЭлементыФормы.Дата.Доступность=Ложь;
ЭлементыФормы.Менеджер.Доступность=Ложь;
ЭлементыФормы.КонтрагентыИРезультаты.Колонки.НаправитьМенеджеру.Доступность=Ложь;
ЭлементыФормы.Ответственный.Доступность=Ложь;
КонецЕсли;
Запрос=Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ
| ПричиныКонтакта.Наименование
|ИЗ
| Справочник.ПричиныКонтакта КАК ПричиныКонтакта;
ИмеющиесяПричиныКонтакта=Запрос.Выполнить().Выгрузить();
Если ИмеющиесяПричиныКонтакта.Количество()<>0 Тогда
Для каждого причина из ИмеющиесяПричиныКонтакта Цикл НоваяСтрокаНастройки=НастройкиТекущейТаблицы.Добавить();
НоваяСтрокаНастройки.ПричинаКонтакта=причина.наименование;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
|
|
3
salvator
23.05.14
✎
15:52
|
А отладчик что на этот счет говорит?
|
|
4
Блондинка_
23.05.14
✎
15:55
|
Отладчик все отлично проходит одинаково во всех случаях, только в случае проведенного документа после открытия новых строк не появляется.
|
|
5
salvator
23.05.14
✎
16:02
|
А после проведения эти строки не удаляются никак?
Посмотри документ без открытия, например групповой обработкой спр и док-тов, имеются ли в проведенном документе эти строки?
|
|
6
Блондинка_
27.05.14
✎
16:56
|
(5) Имеются, причем в каждом документе по-разному, ну смотря сколько раз я их открывала.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший