Имя: Пароль:
1C
1С v8
Программное редактирование проведенного документа
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) Имеются, причем в каждом документе по-разному, ну смотря сколько раз я их открывала.