![]() |
|
подбор номенклатуры с остатками в Расходной накладной | ☑ | ||
---|---|---|---|---|
0
Ramis333
14.08.17
✎
10:07
|
в форме документа создал кнопку подбор
добавил процедуру &НаКлиенте Процедура Подбор(Команда) ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'"); Если ЗначениеЗаполнено(Объект.Ссылка) Тогда ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка); Иначе ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru = 'реализацию товаров и услуг'")); КонецЕсли; ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Склад", Объект.Склад); ПараметрыФормы.Вставить("Документ", Объект.Ссылка); ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор); КонецПроцедуры в обработке добавил табличную часть с колонками номенклатура/количество/количество для подбора. добавил ячейку склад. при указании склада запросом заполняется табличная часть. в колонке количество для подбора вручную проставляем количество. каким образом это количество можно перенести в табл.часть документа. процедурой при закрытии? |
|||
1
zvial
14.08.17
✎
10:38
|
Посмотри как это в типовой реализовано. Это ж проще, чем сотню ответов читать потом ) А так, ОповеститьОВыборе, возможно тебе поможет?
|
|||
2
Ramis333
14.08.17
✎
10:46
|
в типовой ссылается на АдресноеХранилище. туда нужно данные выгрузить и оттуда уже потом загрузить. думал, что есть способ попроще
|
|||
3
zvial
14.08.17
✎
12:07
|
Попроще - ОповеститьОВыборе при выборе в окне подбора. А в форме документа событие лови в ОбработкаВыбора
|
|||
4
Ramis333
14.08.17
✎
12:12
|
не знаю, какой код писать.
|
|||
5
zvial
14.08.17
✎
12:49
|
Синтаксис помощник тебе в помощь. Там код не сложнее, чем в (0) приведено.
|
|||
6
Ramis333
14.08.17
✎
22:55
|
может кому-то пригодится
в форме документа прописал следующий код &НаКлиенте Процедура Команда1(Команда) /// Первый параметр - полное имя формы, третий параметр - элемент формы, в который осуществляется подбор. // Последним параметром передается уникальный идентификатор формы. ОткрытьФорму("Справочник.Номенклатуры.Форма.ФормаВыбора", , Элементы.Товары, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Для Каждого Стр Из ВыбранноеЗначение Цикл РезультатПоиска = Объект.Товары.НайтиСтроки(Новый Структура("Номенклатура", Стр.Номенклатура)); Если РезультатПоиска.Количество() = 0 Тогда НовСтр = Объект.Товары.Добавить(); НовСтр.Номенклатура = Стр.Номенклатура; Иначе НовСтр = РезультатПоиска[0]; КонецЕсли; НовСтр.Количество = НовСтр.Количество + Стр.Количество; КонецЦикла; // Вставить содержимое обработчика. КонецПроцедуры в форме справочника (списокВыбора) &НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) // Проверка на наличие выбранной строки в списке ТекДанные = Элементы.Список.ТекущиеДанные; Если ТекДанные = Неопределено Тогда Возврат; КонецЕсли; // Для групп номенклатуры подбор не производится. Именно для обращения // к свойству "ЭтоГруппа" бил установлен флаг "Использовать всегда", иначе // при отсутствии колонки "Это группа" в списке вылетала бы ошибка "Поле объекта не найдено" //Если ТекДанные.ЭтоГруппа Тогда Возврат; КонецЕсли; // Отключаем стандартную обработку СтандартнаяОбработка = Ложь; // Ищем товар в таблице "Подобранные товары". Если нет - добавляем строку, иначе добавляем количество РезультатПоиска = ПодобранныеТовары.НайтиСтроки(Новый Структура("Номенклатура", ТекДанные.Ссылка)); Если РезультатПоиска.Количество() = 0 Тогда Стр = ПодобранныеТовары.Добавить(); Стр.Номенклатура = ТекДанные.Ссылка; Иначе Стр = РезультатПоиска[0]; КонецЕсли; Стр.Количество = Стр.Количество + 1; КонецПроцедуры &НаКлиенте Процедура ПеренестиВДокумент(Команда) // Передаем в родительский элемент формы "Товары" данные выбора - таблицу "Подобранные товары" ОповеститьОВыборе(ПодобранныеТовары); КонецПроцедуры &НаКлиенте Процедура СписокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) // Вставить содержимое обработчика. // Проверка на наличие выбранной строки в списке ТекДанные = Элементы.Список.ТекущиеДанные; Если ТекДанные = Неопределено Тогда Возврат; КонецЕсли; // Для групп номенклатуры подбор не производится. Именно для обращения // к свойству "ЭтоГруппа" бил установлен флаг "Использовать всегда", иначе // при отсутствии колонки "Это группа" в списке вылетала бы ошибка "Поле объекта не найдено" Если ТекДанные.ЭтоГруппа Тогда Возврат; КонецЕсли; // Отключаем стандартную обработку СтандартнаяОбработка = Ложь; // Ищем товар в таблице "Подобранные товары". Если нет - добавляем строку, иначе добавляем количество РезультатПоиска = ПодобранныеТовары.НайтиСтроки(Новый Структура("Номенклатура", ТекДанные.Ссылка)); Если РезультатПоиска.Количество() = 0 Тогда Стр = ПодобранныеТовары.Добавить(); Стр.Номенклатура = ТекДанные.Ссылка; Иначе Стр = РезультатПоиска[0]; КонецЕсли; Стр.Количество = Стр.Количество + 1; КонецПроцедуры |
|||
7
Ramis333
14.08.17
✎
22:56
|
такого, к сожалению, в синтаксис помощнике не найдешь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |