Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подбор Номенклатуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
MevMix
Добрый день!!!
Конфиг мой. 1с8.1
В документах осуществляю подбор номенклатуры
При нажатие на кнопку подбор открывается форма выбора справочника номенклатура.

На форме выбора спр Номенклатура есть поле ввода Склад
Хотелось бы чтоб при открытии этой формы выбора
брался склад из документа, не зависимо какой док открываешь
Реализации или Перемещения или Поступления товаров

как это возможно реализовать
Спасибо!!!
Batchir
Передавайте в форму ссылку на документ, проверяйте наличие реквизита "Склад" (или как он у Вас там называется) в метаданных документа и при открытии формы считывайте если реквизит имеется в документе
MevMix
Цитата(Batchir @ 03.06.11, 9:00) необходимо зарегистрироваться для просмотра ссылки
Передавайте в форму ссылку на документ, проверяйте наличие реквизита "Склад" (или как он у Вас там называется) в метаданных документа и при открытии формы считывайте если реквизит имеется в документе


Можно Вас попросить с примером
немного слжновато для новичка
Batchir
Пример чего? Я вам описал алгоритм, кодить за Вас не буду. Написанный алгоритм достаточно прост даже для новичка.
Попробую описать алгоритм проще:
1. Добавляете реквизит-структуру в форму подбора, например, ПередаваемыеПараметры
2. При нажатии кнопки подбора формируете передаваемую структуру. Заранее в нее можете добавить объект документа или сразу подготовить и закинуть склад (и прочие данные которые Вам будут нужны) . Для этого можно написать универсальную функцию, в которую будете передавать документ объект а возвращать функция будет структуру для подбора. Полученную структуру передаете в открываемую форму подбора.
3. При открытии формы подбора анализируете данные в переданной структуре и в зависимости от этих данных выполняете необходимые действия
5_kopeek
Batchir, по-моему, первое описание алгоритма было гораздо проще biggrin.gif
MevMix
Спасибо вопрос решен
при нажатии на кнопку п
одбор
ФормаПодбора.СкладОстатки = Склад;


Тему можно закрывать
Batchir
Ну то тупой алгоритм "что б работало", а если в дальнейшем будет дорабатываться (а оно таки будет), то лучше сразу делать так как будет легче.
А "проще" - я немного перепутал с "подробнее"

Цитата
Хотелось бы чтоб при открытии этой формы выбора
брался склад из документа, не зависимо какой док открываешь

А как же это? Если пишете универсальную обработку подбора в документ, то она должна быть универсальной.
Цитата
ФормаПодбора.СкладОстатки = Склад;

Выдаст ошибку, если у документа нет реквизита Склад. А в будущем возможно понадобятся и другие передаваемые парметры в форму. так и будете добавлять реквизиты? Правильнее добавить структуру в качестве реквизита обработки и в неё передавать нужные данные.
Вы должны написать такую обработку что бы она вызывалась и отрабатывала с помощью вызова одной функции.

Перейдем тогда к примеру.
Опишите в общем модуле:
Процедура ОткрытьФормуПодбора(ДокОбъект, ФормаВладелец) ЭКСПОРТ
   ФормаПодбора = <получаем форму обработки подбора>
   ФормаПодбора.ПередаваемыеПараметры = ПолучитьСтрукктурудляПодбора(ДокОбъект);
   // в форму подбора также можно передать и форму владельца. Специально добавил дополнительный реквизит в форму
   ФормаПодбора.Открыть();
КонецПроцедуры

Функция ПолучитьСтрукктурудляПодбора(ДокОбъект)
   ПередаваемыеПараметры = Новый Структура;
   // дальше накидываем в структуру все параметры которые нам нужны, пока что это склад
   Возврат ПередаваемыеПараметры;
КонецФункции


В процедуре при открытии формы подбора анализируете переданные параметры и выполняете нужные действия

а при нажатии кнопки подбор в документах достаточно будет вставлять одну процедуру
ОткрытьФормуПодбора(ЭтотОбъект, ЭтаФорма);


для передачи данных из обработки подбора в форму документа используйте функцию Оповестить(<ИмяСобытия>, <Параметр>, <Источник>) .
В форме документа это будет обрабатываться в отдельном событии ОбработкаВыбора.


но собственно Вам решать: оставить как есть или делать сразу правильно.
MevMix
Цитата(Batchir @ 03.06.11, 12:02) необходимо зарегистрироваться для просмотра ссылки
Ну то тупой алгоритм "что б работало", а если в дальнейшем будет дорабатываться (а оно таки будет), то лучше сразу делать так как будет легче.
А "проще" - я немного перепутал с "подробнее"


А как же это? Если пишете универсальную обработку подбора в документ, то она должна быть универсальной.

Выдаст ошибку, если у документа нет реквизита Склад. А в будущем возможно понадобятся и другие передаваемые парметры в форму. так и будете добавлять реквизиты? Правильнее добавить структуру в качестве реквизита обработки и в неё передавать нужные данные.
Вы должны написать такую обработку что бы она вызывалась и отрабатывала с помощью вызова одной функции.

Перейдем тогда к примеру.
Опишите в общем модуле:
Процедура ОткрытьФормуПодбора(ДокОбъект, ФормаВладелец) ЭКСПОРТ
   ФормаПодбора = <получаем форму обработки подбора>
   ФормаПодбора.ПередаваемыеПараметры = ПолучитьСтрукктурудляПодбора(ДокОбъект);
   // в форму подбора также можно передать и форму владельца. Специально добавил дополнительный реквизит в форму
   ФормаПодбора.Открыть();
КонецПроцедуры

Функция ПолучитьСтрукктурудляПодбора(ДокОбъект)
   ПередаваемыеПараметры = Новый Структура;
   // дальше накидываем в структуру все параметры которые нам нужны, пока что это склад
   Возврат ПередаваемыеПараметры;
КонецФункции


В процедуре при открытии формы подбора анализируете переданные параметры и выполняете нужные действия

а при нажатии кнопки подбор в документах достаточно будет вставлять одну процедуру
ОткрытьФормуПодбора(ЭтотОбъект, ЭтаФорма);


для передачи данных из обработки подбора в форму документа используйте функцию Оповестить(<ИмяСобытия>, <Параметр>, <Источник>) .
В форме документа это будет обрабатываться в отдельном событии ОбработкаВыбора.


но собственно Вам решать: оставить как есть или делать сразу правильно.



Спасибо Batchir
идея клевая, думал на этим что коряво написано
должно быть универсально,
но знаний не хватит для написания Вашего предложения, пока оставлю так как есть
потом буду думать как это решить
Спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.