Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010) Помогите в документе заполненном поменять значение реквизитов местами: МестоХранения и МестоХраненияВЭксплуатации. Начала писать обработку:
Процедура Выполнить() Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(НачДата,КонДата); Пока Док.ПолучитьДокумент()=1 Цикл Если (Док.Вид() = "ВводВЭксплуатацию") Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(Док.МестоХранения) = 0 Тогда Док.МестоХранения=Док.МестоХраненияВЭксплуатации; Док.МестоХраненияВЭксплуатации=Док.МестоХранения; КонецЕсли; ГлПользователь=Док.Автор; КонецЦикла; Док.Записать(); Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку()=1 Цикл КонецЦикла; КонецЕсли; КонецЦикла; Предупреждение("Обработка завершена!"); КонецПроцедуры
В результате в МестоХранения записывается значение реквизита МестоХраненияВЭксплуатации, а значение МестоХраненияВЭксплуатации не меняется.
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Так вы же записываете одно и тоже значение в две переменных. Введите доп переменную и в нее вносите МестоХраненияВЭксплуатации. А потом уже из нее присваивайте значение нужному реквизиту
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
Создала дополнительную переменную МестоХр, но почему то не все переносится, не соображу почему некоторые не меняются:
Процедура Выполнить() Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(НачДата,КонДата); Пока Док.ПолучитьДокумент()=1 Цикл Если (Док.Вид() = "ВводВЭксплуатацию") Тогда Сообщить("Обрабатываю документ "+Док.ТекущийДокумент()); Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(Док.МестоХранения) = 0 Тогда Док.МестоХр=Док.МестоХранения; Док.Записать(); Док.МестоХранения=Док.МестоХраненияВЭксплуатации; Док.МестоХраненияВЭксплуатации=Док.МестоХр; КонецЕсли; ГлПользователь=Док.Автор; КонецЦикла; Док.Записать(); Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку()=1 Цикл КонецЦикла; КонецЕсли; КонецЦикла; Предупреждение("Обработка завершена!"); КонецПроцедуры
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Группа: Местный
Сообщений: 56
Из: Киевская обл.
Спасибо сказали: 20 раз
Рейтинг: 0
Отладчиком смотрите. Если одни и те же документы не записываются, то как посоветовал alex040269. Если нет, то без условия Сообщить("что-то"). Кстати зачем Вы перебыраете строки документа после его записи? Вряд ли это решит проблему, но я бы убрал перебор строк. Ну и на всякий случай. Может Вы запускаете свою обработку в то время, когда есть открытые документы кем-то? Тогда они не запишутся.
Группа: Пользователи
Сообщений: 294
Спасибо сказали: 1 раз
Рейтинг: 0
убрала перебор строк, все то же. В общем в итоге код сейчас выглядит таким образом:
Процедура Выполнить() Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(НачДата,КонДата); Пока Док.ПолучитьДокумент()=1 Цикл Если (Док.Вид() = "ВводВЭксплуатацию") Тогда Сообщить("Обрабатываю документ "+Док.ТекущийДокумент()); Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(Док.МестоХраненияВЭксплуатации) = 0 Тогда СтарМестоХранения = Док.МестоХранения; СтарМестоХраненияВЭксплуатации = Док.МестоХраненияВЭксплуатации; Док.МестоХранения=СтарМестоХраненияВЭксплуатации; Док.МестоХраненияВЭксплуатации=СтарМестоХранения;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!