|
Ввод на основании | ☑ | ||
---|---|---|---|---|
0
ogion83
30.05.13
✎
15:20
|
Всем здрасте.
Есть два дока АктВыгрузки и ПСА. Из Акта можно создавать ПСА. Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.АктВыгрузки") Тогда // Заполнение шапки Контрагент = ДанныеЗаполнения.Контрагент; МестоХранения = ДанныеЗаполнения.МестоХранения; Сотрудник = ДанныеЗаполнения.Сотрудник; Для Каждого ТекСтрокаВыгружаемоеСырьё Из ДанныеЗаполнения.ВыгружаемоеСырьё Цикл НоваяСтрока = СписокПривезенногоСырья.Добавить(); НоваяСтрока.Засор = ТекСтрокаВыгружаемоеСырьё.Засор; НоваяСтрока.КоличествоБрутто = ТекСтрокаВыгружаемоеСырьё.КоличествоБрутто; НоваяСтрока.КоличествоНетто = ТекСтрокаВыгружаемоеСырьё.КоличествоНетто; НоваяСтрока.МПЗ = ТекСтрокаВыгружаемоеСырьё.МПЗ; НоваяСтрока.Сумма = ТекСтрокаВыгружаемоеСырьё.Сумма; НоваяСтрока.Цена = ТекСтрокаВыгружаемоеСырьё.Цена; КонецЦикла; КонецЕсли; //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ КонецПроцедуры Как сделать так чтобы, если уже был создан ПСА из Акта, то открывался уже ранее созданный а не новый? |
|||
1
Mitriy
30.05.13
✎
15:29
|
1. Добавить реквизит ДокументОснование, в который ту будешь записывать ссылку на документ - основание...
2. В обработке заполнения анализировать запросом, есть ли уже документ со ссылкой из ДанныеЗаполнения и если есть, то устанавливать СтандартнаяОбработка в Ложь и открывать форму найденного документа... |
|||
2
Mitriy
30.05.13
✎
15:30
|
"со ссылкой из ДанныеЗаполнения" читай, как "с основанием из ДанныеЗаполнения"
|
|||
3
ogion83
30.05.13
✎
15:34
|
Ок. Благодарствую. Попробуем.
|
|||
4
Mitriy
30.05.13
✎
15:35
|
а вообще подход неверный изначально...
документ, введенный на основании можно откорректировать и он будет содержать только часть данных, а остальные данные нужно будет учесть другим документом, в этом случае правильно анализировать уже введенные данные и заполнять документ остатками, либо выводить пустым, а не запрещать ввод на основании... |
|||
5
ogion83
30.05.13
✎
15:39
|
А запросом то каждый раз все документы перебирать не долго будет?
|
|||
6
Mitriy
30.05.13
✎
15:40
|
(5) откуда все перебирать, если у тебя будет ссылка и реквизит для поиска по этой ссылке?
|
|||
7
MKZM
30.05.13
✎
15:41
|
(5) Можно из регистров...
|
|||
8
Михаил Козлов
30.05.13
✎
15:41
|
(5) Можно из критериев отбора.
|
|||
9
ogion83
30.05.13
✎
16:17
|
Кто-нибудь может код показать или ссылку на хороший пример?
|
|||
10
Mitriy
30.05.13
✎
16:23
|
Запрос = Новый Запрос;
Запрос.Текст = " |Выбор |ТвойДокумент.Ссылка |Из |Документы.ТвойДокумент КАК ТвойДокумент |Где |ТвойДокумент.ДокументОснование = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения); Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда СтандартнаяОбработка = Ложь; Выборка = Результат.Выбрать(); Выборка.Следующий(); СсылкаНаДокумент = Выборка.Ссылка; // тут открываешь форму Возврат; КонецЕсли; |
|||
11
ogion83
30.05.13
✎
16:30
|
Этот код в начало процедуры ОбработкаЗаполнения?
|
|||
12
Mitriy
30.05.13
✎
16:38
|
(11) да, только со стандартной обработкой я напутал, она не отменяет открытие документа...
|
|||
13
Nenaviwu1c20
30.05.13
✎
16:42
|
Может все таки КритерийОтбора заюзаешь?
|
|||
14
Nenaviwu1c20
30.05.13
✎
16:42
|
удобная вещь я тебе скажу
|
|||
15
Nenaviwu1c20
30.05.13
✎
16:43
|
То есть если ты захочешь отобразить иерархию ввода на основании тебе будет удобно воспользоватся критерием
|
|||
16
Mitriy
30.05.13
✎
16:51
|
(0) формы управляемые или обычные?
|
|||
17
ogion83
30.05.13
✎
16:54
|
(12) Завтра опробую.
(13) А это с чем едят?) |
|||
18
ogion83
30.05.13
✎
16:54
|
Формы обычные
|
|||
19
Mitriy
30.05.13
✎
17:03
|
(18) тогда проще, объявляешь эспортную процедуру модуля объекта мДокумент, которой присваиваешь и пишешь в нее ссылку на нужный документ, если Не Результат.Пустой(). Потом в ПередОткрытием анализируешь, если Не ЗначениеЗаполнено(мДокумент), ничего не делаешь, иначе выставляешь Отказ = Истина и открываешь форму ссылки в мДокумент...
|
|||
20
ogion83
31.05.13
✎
09:26
|
Вот что получилось:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = " |Выбрать |ПСАЮр.Ссылка |Из |Документ.ПСАЮр КАК ПСАЮр |Где |ПСАЮр.ДокументОснование = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения); Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда СтандартнаяОбработка = Ложь; Выборка = Результат.Выбрать(); Выборка.Следующий(); СсылкаНаДокумент = Выборка.Ссылка; Форма = СсылкаНаДокумент.ПолучитьФорму(); Форма.Открыть(); Возврат; КонецЕсли; ДокументОснование = ДанныеЗаполнения; //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.АктВыгрузки") Тогда // Заполнение шапки Контрагент = ДанныеЗаполнения.Контрагент; МестоХранения = ДанныеЗаполнения.МестоХранения; Сотрудник = ДанныеЗаполнения.Сотрудник; Для Каждого ТекСтрокаВыгружаемоеСырьё Из ДанныеЗаполнения.ВыгружаемоеСырьё Цикл НоваяСтрока = СписокПривезенногоСырья.Добавить(); НоваяСтрока.Засор = ТекСтрокаВыгружаемоеСырьё.Засор; НоваяСтрока.КоличествоБрутто = ТекСтрокаВыгружаемоеСырьё.КоличествоБрутто; НоваяСтрока.КоличествоНетто = ТекСтрокаВыгружаемоеСырьё.КоличествоНетто; НоваяСтрока.МПЗ = ТекСтрокаВыгружаемоеСырьё.МПЗ; НоваяСтрока.Сумма = ТекСтрокаВыгружаемоеСырьё.Сумма; НоваяСтрока.Цена = ТекСтрокаВыгружаемоеСырьё.Цена; КонецЦикла; КонецЕсли; //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ КонецПроцедуры Открывает форму если уже был документ на основании, но тут же открывает новый документ, как от этого избавиться? |
|||
21
ogion83
31.05.13
✎
10:35
|
Что в 8-ке подобнее сделать сложнее чем в 7-ке? Ндаааа, улучшили...
|
|||
22
ogion83
31.05.13
✎
10:51
|
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если ДокументОснование.Пустая() = Истина Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры Добавил это в ПСА. Всё пашет как хотел. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |