Помогите бестолковому!

1. ivnik 588 12.03.07 21:29 Сейчас в теме
Создал Документ. Для удобного заполнения табличной части создал обработку, которая вызывается по кнопке "Подбор". В обработке есть кнопка "ОК" и "Отмена". Кнопка "ОК" в обработке прекрасно работает, а вот кнопка "Отмена" закрывает обработку, но в табличной части оставляет пустую строку.
Вопрос: Как правильно перенести команду НоваяСтрока() с привязкой к кнопке "ОК" в обработке?

Представляю часть кода модуля формы документа:
Процедура Подбор()

Если ПроведенВПрошлом=1 Тогда
Предупреждение("Документ проведен в прошлом периоде. Его нельзя редактировать.",10);
Возврат
КонецЕсли;

Если Форма.МодальныйРежим() = 0 тогда
НоваяСтрока();
ОткрытьПодбор("Обработка.ВводЗарплВодителям", "", Контекст);
КонецЕсли;

КонецПроцедуры // Подбор

Заранее благодарю.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Abadonna 3961 13.03.07 16:33 Сейчас в теме
> Если ПроведенВПрошлом=1 Тогда
> Предупреждение("Документ проведен в прошлом
> периоде. Его нельзя редактировать.",10);
> Возврат
> КонецЕсли;
А тут зачем такие сложности?
Если ДатаДок <= Константа.ДатаЗапретаРедактирования Тогда
Форма.ТолькоПросмотр(1);
КонецЕсли;
Если нет такой константы - заведи!
2. poppy 12.03.07 23:28 Сейчас в теме
Дык, ты зачем перед вызовом метода ОткрытьПодбор вызываешь НоваяСтрока() ?
3. vladko 13.03.07 09:02 Сейчас в теме
вот-вот,
ты пиши
Если Форма.МодальныйРежим() = 0 тогда
ОткрытьПодбор("Обработка.ВводЗарплВодителям", "", Контекст);
КонецЕсли;
а уже в процедуре ОбработкаПодбора()
пиши НоваяСтрока() и т.д.
5. ivnik 588 13.03.07 20:24 Сейчас в теме
Abadonna, Меня интересует "НоваяСтрока()", а "ПроведенВПрошлом=1" - это просто кусок Типовой конфы и с ней нет проблем.

Vladko, в какое конкретно место нужно вставить эту строку???
Это часть кода самой Обработки:

Процедура Выполнить() // т.е. нажимаем кнопку ОК


k = Конт.КоличествоСтрок();
Конт.ПолучитьСтрокуПоНомеру(k);
//Конт.НоваяСтрока(); // - в какое конкретно место нужно вставить эту строку??? здесь она не работает.
Конт.Сотрудник = Сотр;
Конт.ДатаРаб = ДатаРаб;
Конт.НомПутЛиста = ПутЛист;
Конт.ВсегоЧасов = ОтрЧасов;
Конт.ЧислоЕздок = ЧислоЕздок;
Конт.Пробег = Пробег;
Конт.ПеревезеноТонн = ТоннВсего;
Конт.АсфБет = АсфБет;
Конт.ТонноКм = ТКМ;
Конт.ТопливоНД = ОстатокНД;
Конт.ТопливоВыдано = Выдано;
Конт.РасходФакт = РасхФакт;
Конт.Форма.Обновить()

КонецПроцедуры

P.S. Если дорога лучше, то пусть она будет длиннее, чем короткая, но ухабистая.
6. O-Planet 6435 13.03.07 21:48 Сейчас в теме
Я, кстати, об этом в копилке опыта писал, что не всегда 1С корректно в обработке изменяет открытый элемент справочника или документ по переданному контексту.

Выход только один: используй буфер.

Код
Сп=СоздатьОбъект("СписокЗначений");
Сп.Установить("Перем1",Рекв1);
Сп.Установить("Перем2",Рекв2);
...
Сп.Установить("Перемk",Реквk);
ОткрытьФормуМодально("Обработка.МояОбработка",Сп);
Если Сп.Получить("БылаНажатаКнопкаОк")=1 Тогда
  НоваяСтрока();
  Рекв1=Сп.Получить("Перем1");
  Рекв2=Сп.Получить("Перем2");
  ...
  Реквm=Сп.Получить("Перемm");
КонецЕсли;
Показать полностью

7. vladko 14.03.07 10:29 Сейчас в теме
Ivnik Написал:
-------------------------------------------------------
> Vladko, в какое конкретно место нужно вставить эту
> строку???
> Это часть кода самой Обработки:
>
> Процедура Выполнить() // т.е. нажимаем кнопку ОК
> k = Конт.КоличествоСтрок();
> Конт.ПолучитьСтрокуПоНомеру(k);
> //Конт.НоваяСтрока(); // -
> в какое конкретно место нужно вставить эту
> строку??? здесь она не работает.
> Конт.Сотрудник = Сотр;
А вот так не работает?
//к = Конт.КоличествоСтрок();
//Конт.ПолучитьСтрокуПоНомеру(k);
Конт.НоваяСтрока();
Конт.Сотрудник = Сотр;

Но я бы так не стал бы делать. Это очень коряво, чтобы в контекст-документ из обработки заполнять.
В документе из которого делается подбор написал бы так:
Процедура ОбработкаПодбора(ВыбЗнач)
НоваяСтрока();
Сотрудник = ВыбЗнач.Сотр;
ДатаРаб = ВыбЗнач.ДатаРаб;
НомПутЛиста = ВыбЗнач.ПутЛист;
ВсегоЧасов = ВыбЗнач.ОтрЧасов;
ЧислоЕздок = ВыбЗнач.ЧислоЕздок;
Пробег = ВыбЗнач.Пробег;
ПеревезеноТонн = ВыбЗнач.ТоннВсего;
АсфБет = ВыбЗнач.АсфБет;
ТонноКм = ВыбЗнач.ТКМ;
ТопливоНД = ВыбЗнач.ОстатокНД;
ТопливоВыдано = ВыбЗнач.Выдано;
РасходФакт = ВыбЗнач.РасхФакт;
КонецПроцедуры

Процедура Подбор()
Если Форма.МодальныйРежим() = 0 тогда
ОткрытьПодбор("Обработка.ВводЗарплВодителям", "", Контекст);
КонецЕсли;
КонецПроцедуры
8. Vitek 14.03.07 10:36 Сейчас в теме
Vladko Написал:
> Но я бы так не стал бы делать. Это очень коряво,
> чтобы в контекст-документ из обработки заполнять.
> В документе из которого делается подбор написал бы
> так:
> Процедура ОбработкаПодбора(ВыбЗнач)
> НоваяСтрока();
> Сотрудник = ВыбЗнач.Сотр;
> ДатаРаб = ВыбЗнач.ДатаРаб;
> НомПутЛиста = ВыбЗнач.ПутЛист;
> ВсегоЧасов = ВыбЗнач.ОтрЧасов;
> ЧислоЕздок = ВыбЗнач.ЧислоЕздок;
> Пробег = ВыбЗнач.Пробег;
> ПеревезеноТонн = ВыбЗнач.ТоннВсего;
> АсфБет = ВыбЗнач.АсфБет;
> ТонноКм = ВыбЗнач.ТКМ;
> ТопливоНД = ВыбЗнач.ОстатокНД;
> ТопливоВыдано = ВыбЗнач.Выдано;
> РасходФакт = ВыбЗнач.РасхФакт;
> КонецПроцедуры
>
> Процедура Подбор()
> Если Форма.МодальныйРежим() = 0 тогда
> ОткрытьПодбор("Обработка.ВводЗарплВодителям",
> "", Контекст);
> КонецЕсли;
> КонецПроцедуры
ИМХО так гораздо правильнее, чем заполнять документ из обработки через контекст.

9. ivnik 588 14.03.07 23:20 Сейчас в теме
Всем ОГРОМНОЕ СПАСИБО!!! Я попробую этим воспользоваться.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот