В какой строке ошибка и что за ошибка ?
Этот код не верно сработает.
inna.innainna84 @ Сегодня, 10:29
,
предложение по коду:
1) вначале проверить на наличие необходимого документа,
если он есть и дано согласие на редактирование - отменяем проведение,
иначе - ДокМ.Новый();
2) использовать один объект "Документ.ПутевойЛистГрузовой"
и соответственно один блок заполнения реквизитов
ДокМ.Записать(); за циклом. При создании нового документа он запишется только на последней строке - т.е. правильная работа, в случае отсутствия документа для редактирования, будет только если строка в таблице одна.
10 раз переделыааю код и все равно возвращаюсь в начало
Процедура ЗаполняемПЛраб()
тз.выбратьстроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
//================создаем новый!=====================
ДокМ=СоздатьОбъект("Документ.ПутевойЛистГрузовой");
ДокМ.Новый();
глЗаполнитьШапку(ДокМ);
ДокМ.ДатаДок = ТЗ.ДатаДок;
ДокМ.Автомобиль = ТЗ.Автомобиль.ТекущийЭлемент();
Докм.ПоказанияСпидометраНаНачало=ТЗ.КоличествоНачПокСпид;
Докм.ПоказанияСпидометраНаКонец=ТЗ.КоличествоКонПокСпид;
Докм.ПробегGPS=ТЗ.GPS;
Докм.ПробегНорма=ТЗ.Км;
Докм.СуммаЗаправки=ТЗ.ПоступилоСумма;
Докм.ПоступилоГСМ=ТЗ.ПоступилоЛитр;
Докм.Автор=глПользователь;
//================создаем новый!=======================================================
//=========================проверям на наличие уже созданного пл=======================
ДокПЛ=СоздатьОбъект("Документ.ПутевойЛистГрузовой");
ДокПЛ.ВыбратьДокументы(Дата1,Дата2);
Пока ДокПл.ПолучитьДокумент()=1 Цикл
Если ДокПЛ.ПометкаУдаления() = 0 Тогда // (ДокПЛ.Проведен() = 0) И
//================находим документ и редактируем его!=====================
Если (ДокПЛ.Автомобиль=ДокМ.Автомобиль) и (ДокПЛ.ДатаДок=ДокМ.ДатаДок) Тогда
Если Вопрос("ПЛ № "+ДокПЛ+" уже записан (№ "+ДокПЛ.Номердок+"). РЕДАКТИРОВАТЬ?", "Да+Нет") = "Да" Тогда
ДокМ=ДокПЛ;
Если ДокМ.Проведен()=1 Тогда
ДокМ.СделатьНеПроведенным();
КонецЕсли;
КонецЕсли;
Докм.ПоказанияСпидометраНаНачало=ТЗ.КоличествоНачПокСпид;
Докм.ПоказанияСпидометраНаКонец=ТЗ.КоличествоКонПокСпид;
Докм.ПробегGPS=ТЗ.GPS;
Докм.ПробегНорма=ТЗ.Км;
Докм.СуммаЗаправки=ТЗ.ПоступилоСумма;
Докм.ПоступилоГСМ=ТЗ.ПоступилоЛитр;
Докм.Автор=глПользователь;
ДокМ.Записать();
Сообщить("Редактирован! "+ДокМ.ТекущийДокумент());
КонецЕсли;
//================находим документ и редактируем его!=====================
КонецЕсли;
КонецЦикла;
Попытка
ДокМ.Записать();
Сообщить("Создан новый ПЛ "+ ДокМ);
Исключение
КонецПопытки;
//===========================================================
КонецЦикла;
сообщить("Ок.");
КонецПроцедуры
попробуйте:
Процедура СоздаемПЛ()
ДокПЛ=СоздатьОбъект("Документ.ПутевойЛистГрузовой");
ТЗ.ВыбратьВтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
БудемРедактироватьСуществующий = 0;
ДокПЛ.ВыбратьДокументы(Дата1,Дата2);
Пока ДокПл.ПолучитьДокумент()=1 Цикл
Если ДокПЛ.ПометкаУдаления() = 0 Тогда // проверяем все кроме помеченных!!
Если (ДокПЛ.Автомобиль=ТЗ.Автомобиль.ТекущийЭлемент()) и (ДокПЛ.ДатаДок=ТЗ.ДатаДок) Тогда
Если Вопрос("ПЛ № "+ДокПЛ+" уже записан (№ "+ДокПЛ.Номердок+"). РЕДАКТИРОВАТЬ?", "Да+Нет") = "Да" Тогда
Если ДокПЛ.Проведен()=1 Тогда
ДокПЛ.СделатьНеПроведенным();
КонецЕсли;
БудемРедактироватьСуществующий = 1;
КонецЕсли;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если БудемРедактироватьСуществующий=0 Тогда
ДокПЛ.Новый();
глЗаполнитьШапку(ДокПЛ);
ДокПЛ.ДатаДок = ТЗ.ДатаДок;
ДокПЛ.Автомобиль = ТЗ.Автомобиль.ТекущийЭлемент();
КонецЕсли;
ДокПЛ.ПоказанияСпидометраНаНачало=ТЗ.КоличествоНачПокСпид;
ДокПЛ.ПоказанияСпидометраНаКонец=ТЗ.КоличествоКонПокСпид;
ДокПЛ.ПробегGPS=ТЗ.GPS;
ДокПЛ.ПробегНорма=ТЗ.Км;
ДокПЛ.СуммаЗаправки=ТЗ.ПоступилоСумма;
ДокПЛ.ПоступилоГСМ=ТЗ.ПоступилоЛитр;
ДокПЛ.Автор=глПользователь;
Попытка
ДокПЛ.Записать();
Исключение
КонецПопытки;
КонецЦикла
КонецПроцедуры
Огромное спасибо. Все отлично срабатывает.
inna.innainna84 @ 24.03.17, 17:36
,
Привет, все еще мучаете маршрутки ? ))) .... все по своей "прикольной" схемке...
Не хотели послушать, проанализировать, подумать...
Насколько помню Вашей "проблемке" уже наверное месяцев восемь... скоро родить пора, а еще ничего так и не придумали...
Опять те ж грабли..., те ж подходы...
Умом вас, женщин, не понять,
И иногда ничем вас не измеришь...
Жена, хозяйка, любящая мать.
Что остается? Просто верить.....
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua