|
Ввод на основании | ☑ | ||
---|---|---|---|---|
0
ogion83
31.07.13
✎
16:43
|
На форме документа по кнопке создаю подчиненный документ. Если такой документ уже создан, то он открывается таким образом:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Если ДанныеЗаполнения.Проведен = Ложь Тогда Предупреждение("Нельзя ввести приемо-сдаточный акт на основании не проведенного акта выгрузки!"); Возврат; КонецЕсли; СтандартнаяОбработка = Ложь; Запрос = Новый Запрос; Запрос.Текст = " |Выбрать |ПСАЮр.Ссылка |Из |Документ.ПСАЮр КАК ПСАЮр |Где |ПСАЮр.ДокументОснование = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения); Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда СтандартнаяОбработка = Ложь; Выборка = Результат.Выбрать(); Выборка.Следующий(); СсылкаНаДокумент = Выборка.Ссылка; Форма = СсылкаНаДокумент.ПолучитьФорму(); Форма.Открыть(); Возврат; КонецЕсли; Но при этом открывается ещё одна пустая форма. Кто-нибудь подскажите как от этого избавиться? |
|||
1
ogion83
31.07.13
✎
16:45
|
При этом в новом пустом документе, даже не числится документ основание.
|
|||
2
Капитан О
31.07.13
✎
16:45
|
нехорошо интерфейсные вещи в модуле объекта делать
|
|||
3
Maxus43
31.07.13
✎
16:47
|
(2) + тем более в обработке заполнения.
Зачем? Это делается обычно так... Док = Документ.Траляля.СоздатьДокумент(); Док.заполнить(СсылкаНаТвойДок); Док.ПолучитьФорму и т.д. |
|||
4
Лефмихалыч
модератор
31.07.13
✎
16:48
|
(0) ужс... убери создание документа внутри обарботки заполнения.
У тебя задача не создать новый документ при создании нового документа, а установить Отказ в обработчике ПередОткрытием, если есть дубль документа. Вот эту задачу и решай (1) ну еще бы, ты же там русским языком написал СтандартнаяОБработка = Ложь |
|||
5
ogion83
31.07.13
✎
16:48
|
Может конечно, кто подскажет как по другому сделать так, чтоб по одной кнопке или создавался документ или открывался уже существующий?
|
|||
6
Капитан О
31.07.13
✎
16:49
|
(5) нехорошо такое на одну кнопку вешать
|
|||
7
ogion83
31.07.13
✎
16:49
|
(6) В 1С7 так реализовано и нормально
|
|||
8
Maxus43
31.07.13
✎
16:51
|
(7) забудь клюшки, всяк сюда входящий...
|
|||
9
ogion83
31.07.13
✎
16:51
|
(4) Где это я создаю новый документ? Ищу существующий и его открываю
|
|||
10
ogion83
31.07.13
✎
16:51
|
(8) Пользователям требуется аналогично сделать
|
|||
11
Maxus43
31.07.13
✎
16:52
|
(5) см (3) + твой запрос по поиску уже введённого.
Вобще такое реализовано, наподобие Счетов-фактур в РТУ/ПТУ |
|||
12
Капитан О
31.07.13
✎
16:52
|
(7) я слышал, в семёрке даже свой язык запросов есть
|
|||
13
Лефмихалыч
модератор
31.07.13
✎
16:53
|
(9) тогда так
// модуль объекта Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Если ТакойДокументУжеЕсть() Тогда ДополнительныеСвойства.Вставить("Отказ",истина) //модуль формы Процедура ПередОткрытием(отказ) Если ДополнительныеСвойства.Свойство("Отказ", Отказ) И отказ Тогда Возврат; |
|||
14
ogion83
31.07.13
✎
17:00
|
Хрен знает как...
|
|||
15
ogion83
31.07.13
✎
17:05
|
В каком тут месте создается лишний документ?
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Если ДанныеЗаполнения.Проведен = Ложь Тогда Предупреждение("Нельзя ввести приемо-сдаточный акт на основании не проведенного акта выгрузки!"); Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = " |Выбрать |ПСАЮр.Ссылка |Из |Документ.ПСАЮр КАК ПСАЮр |Где |ПСАЮр.ДокументОснование = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения); Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда СтандартнаяОбработка = Ложь; Выборка = Результат.Выбрать(); Выборка.Следующий(); СсылкаНаДокумент = Выборка.Ссылка; Форма = СсылкаНаДокумент.ПолучитьФорму(); Форма.Открыть(); Возврат; КонецЕсли; ДокументОснование = ДанныеЗаполнения; //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.АктВыгрузки") Тогда // Заполнение шапки Контрагент = ДанныеЗаполнения.Контрагент; МестоХранения = ДанныеЗаполнения.МестоХранения; Сотрудник = ДанныеЗаполнения.Сотрудник; Если Вопрос("Скопировать табличную часть из акта выгрузки в ПСА?",РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда Для Каждого ТекСтрокаВыгружаемоеСырьё Из ДанныеЗаполнения.ВыгружаемоеСырьё Цикл НоваяСтрока = СписокПривезенногоСырья.Добавить(); НоваяСтрока.Засор = ТекСтрокаВыгружаемоеСырьё.Засор; НоваяСтрока.КоличествоБрутто = ТекСтрокаВыгружаемоеСырьё.КоличествоБрутто; НоваяСтрока.КоличествоНетто = ТекСтрокаВыгружаемоеСырьё.КоличествоНетто; НоваяСтрока.МПЗ = ТекСтрокаВыгружаемоеСырьё.МПЗ; НоваяСтрока.Сумма = ТекСтрокаВыгружаемоеСырьё.Сумма; НоваяСтрока.Цена = ТекСтрокаВыгружаемоеСырьё.Цена; КонецЦикла; КонецЕсли; Иначе Возврат; КонецЕсли; //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ КонецПроцедуры |
|||
16
Шапокляк
31.07.13
✎
17:08
|
Нет такого места. Лишний документ создается платформой при нажатии кнопки ввода на основании. именно с ним имеет дело ОбработкаЗаполнения.
|
|||
17
Maxus43
31.07.13
✎
17:09
|
к слову, код
Если ДанныеЗаполнения.Проведен = Ложь Тогда даст ошибку при создании нового документа не на основании. Там данные заполнения = неопределено, ТИП надо проверять обязательно, до каких либо действий с ним. |
|||
18
ogion83
31.07.13
✎
17:13
|
(17) Да это то знаю, с 1 проблемой пока парюсь
|
|||
19
Лефмихалыч
модератор
31.07.13
✎
17:14
|
(18) в (13) решение
|
|||
20
Maxus43
31.07.13
✎
17:16
|
(19) решений много, автор игнорит.
(18) да сделай как в типовой, не парься |
|||
21
ogion83
31.07.13
✎
17:22
|
Сделал 2-мя кнопками, одна на другой, в зависимости от условий или "создать" или "Открыть". И гори всё ...)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |