|
Копирование элементов справочника номенклатура | ☑ | ||
---|---|---|---|---|
0
Нечай
15.03.17
✎
11:57
|
Всем привет. Подскажите пожалуйста.
Необходимо при копировании элемента справочника «Номенклатура», чтобы пользователю задавался вопрос о необходимости скопировать спецификацию, после чего если нужно скопировать он выбирал какую спецификацию копировать. Также задавался вопрос какое количество копий. |
|||
1
Нечай
15.03.17
✎
11:59
|
Конфа УПП.
|
|||
2
Мимохожий Однако
15.03.17
✎
12:01
|
Посмотри обработку события при вводе нового
|
|||
3
aka AMIGO
15.03.17
✎
12:01
|
Свою обработку не пробовал писать?
|
|||
4
Нечай
15.03.17
✎
12:07
|
Про обработку не думал, как мне подсказали нужно писать на самой форме "Номенклатуры, на форме списка или на форме элемента". Типа найти процедуру которая отвечает за копирование и там писать. Я такую процедуру не нашел, а нашел только событие перед началом добавления, начал играться, вот что написал. Но это срабатывает именно когда я в списке номенклатур нажимаю скопировать правой кнопкой. А другими способами не срабатывает.
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа) Если Копирование = Истина Тогда Ответ = Вопрос("Необходимо ли скопировать спецификацию?", РежимДиалогаВопрос.ДаНет, 0, КодВозвратаДиалога.Нет); Если Ответ = КодВозвратаДиалога.Да Тогда Сообщить("Отработало"); ФормаОбъекта = Справочники.СпецификацииНоменклатуры.ПолучитьФорму("ФормаСписка"); ФормаОбъекта.Открыть(); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
5
Нечай
15.03.17
✎
15:01
|
Ребят ну что все на этом подсказки закончились?
|
|||
6
Волшебник
модератор
15.03.17
✎
15:02
|
Процедура ПриОткрытии модуля формы
Если ЭтоНовый() Тогда |
|||
7
Нечай
15.03.17
✎
15:10
|
Хорошо, теперь форма СпецификацииНоменклатуры открывается где бы я не копировал, как мне теперь сделать отбор, чтобы открывались спецификации именно по той номенклатуре которую я и копирую. И как сделать, чтобы можно было сделать несколько копии, как я и писал выше.
Спасибо) |
|||
8
ДемонМаксвелла
15.03.17
✎
15:16
|
(0) вообще это правильно сделать обработкой. Выбирается номенклатура, заполняется основная спецификация (можно выбрать и другую). По нажатию одной кнопочки копируется номенклатура. По нажатию другой кнопки - спецификация.
Там же логично и копирование тех. карты сделать, если такое надо. |
|||
9
Timon1405
15.03.17
✎
15:33
|
(0) в модуле объекта нажмите процедуры и функции - там будет "Процедура ПриКопировании(ОбъектКопирования)". делайте там что хотите
|
|||
10
Нечай
15.03.17
✎
16:41
|
Вооот Timon это то что я хотел. Спасибо.
А как мне сделать отбор по спецификации, чтобы в списке были только те спецификации которые относятся к той номенклатуре которую я и копирую. |
|||
11
Михаил Козлов
15.03.17
✎
17:29
|
(10) Фильтр установить.
|
|||
12
sidalexsandr
15.03.17
✎
17:44
|
(10) Передать параметры перед открытием.
|
|||
13
Нечай
05.04.17
✎
15:14
|
Вот так сделал. Создал новую форму, и кнопку на форме списка номенклатуры. Спасибо кто помогал.
&НаКлиенте Процедура СкопироватьНоменклатуру(Команда) Если НЕ ЗначениеЗаполнено(Спецификация) Тогда Предупреждение("Не выбрана спецификация. Копирование невозможно!"); Возврат; КонецЕсли; НоваяНом = Номенклатура.Ссылка; Для ТекущийНомер = 1 По Количество Цикл КопияНом = НоваяНом.Скопировать(); КопияНом.Записать(); КопияЕдХран = НоваяНом.ЕдиницаХраненияОстатков.Скопировать(); КопияЕдХран.Владелец = КопияНом.Ссылка; КопияЕдХран.Записать(); Если НоваяНом.ЕдиницаХраненияОстатков <> НоваяНом.ЕдиницаДляОтчетов Тогда КопияЕдОтч = НоваяНом.ЕдиницаДляОтчетов.Скопировать(); КопияЕдОтч.Владелец = КопияНом.Ссылка; КопияЕдОтч.Записать(); КонецЕсли; КопияНом.ЕдиницаХраненияОстатков = КопияЕдХран.Ссылка; Если НоваяНом.ЕдиницаХраненияОстатков <> НоваяНом.ЕдиницаДляОтчетов Тогда КопияНом.ЕдиницаДляОтчетов = КопияЕдОтч.Ссылка; Иначе КопияНом.ЕдиницаДляОтчетов = КопияЕдХран.Ссылка; КонецЕсли; КопияНом.Записать(); Если ЗначениеЗаполнено(Спецификация) Тогда НоваяСпец = Спецификация.Ссылка; КопияСпец = НоваяСпец.Скопировать(); КопияСпец.ВыходныеИзделия.Очистить(); Стр = КопияСпец.ВыходныеИзделия.Добавить(); Стр.Номенклатура = КопияНом.Ссылка; Стр.ЕдиницаИзмерения = КопияНом.Ссылка.ЕдиницаХраненияОстатков; Стр.Количество = 1; Стр.Кратность = 1; КопияСпец.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Номенклатура = Параметры.СсылкаНом; КонецПроцедуры &НаКлиенте Процедура СпецификацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ФормаВыбораСпецификации = Справочники.СпецификацииНоменклатуры.ПолучитьФормуВыбора(, Элемент); ФормаВыбораСпецификации.Отбор.СпецификацииИзделийПоНоменклатуре.ВидСравнения = ВидСравнения.Равно; ФормаВыбораСпецификации.Отбор.СпецификацииИзделийПоНоменклатуре.Значение = Номенклатура; ФормаВыбораСпецификации.Отбор.СпецификацииИзделийПоНоменклатуре.Использование = Истина; ФормаВыбораСпецификации.Отбор.Активная.Установить(Истина); ФормаВыбораСпецификации.РежимВыбора = Истина; ФормаВыбораСпецификации.Открыть(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |