|
Помогите передать через голбальную переменную ссылку на документ | ☑ | ||
---|---|---|---|---|
0
Yuriy78
13.12.11
✎
16:56
|
Объявил модуле объекта(документ) глобальную переменную:
Перем докПланЗакупок Экспорт; В форме документа при нажатии кнопки вызова обработки записал в эту переменную тип значения : "Документ ссылка: План закупок". Вот так: докПланЗакупок = Документы.ПланЗакупок.ПолучитьСсылку(); А вот в обработке в процедуре ПриОткрытии() не находит эту переменную. Как сделать, чтобы эта переменная была доступна в обработке? |
|||
1
YF
13.12.11
✎
16:57
|
Документы.ПланЗакупок.ПолучитьСсылку() что это?
|
|||
2
Джинн
13.12.11
✎
16:57
|
Как-то через зад ты делаешь. Через параметры не передать ссылку?
|
|||
3
Ненавижу 1С
гуру
13.12.11
✎
16:57
|
а с чего ты решил, что она ГЛОБАЛЬНАЯ?
|
|||
4
Yuriy78
13.12.11
✎
16:59
|
(1) это получил тип значения ДокументСсылка
|
|||
5
Yuriy78
13.12.11
✎
17:00
|
(3) или правильней переменная для экспорта
|
|||
6
hhhh
13.12.11
✎
17:00
|
(4) пользуйся переменной Ссылка. Зачем тебе еще свою глобальную сюда приплюсовывать?
|
|||
7
YF
13.12.11
✎
17:01
|
(4) Зачем?
|
|||
8
Yuriy78
13.12.11
✎
17:02
|
(7)что бы передать в обработку и в дальнейшем с ним работать
|
|||
9
hhhh
13.12.11
✎
17:04
|
(8) Документы.ПланЗакупок.ПолучитьСсылку() - это ты получаешь совершенно произвольную, никому не известную ссылку.
|
|||
10
Yuriy78
13.12.11
✎
17:04
|
(6)А как?
|
|||
11
GROOVY
13.12.11
✎
17:04
|
(7) Ну он пустую ссылку получил...
Модули объекта и формы - это разные модуля, и видимость переменных у них разная. Ты попробуй наоборот в форме прочитать переменную модуля. Работает? |
|||
12
GROOVY
13.12.11
✎
17:05
|
Вообще судя по контексту написанного ссылку да этот док надо бы в реквизитах документа сохранить.
|
|||
13
GROOVY
13.12.11
✎
17:05
|
да этот = на этот
|
|||
14
J_B
13.12.11
✎
17:05
|
(8) дык передать в реквизит обработки или параметром вызываемой функции этой обработки
|
|||
15
Yuriy78
13.12.11
✎
17:07
|
Я написал обработку которая изменяет количество номенклатуры в документе "План закупок" с учетом количества аналогов на складе. При этом в форме обработке имелось поле ввода из которого и бралось значение необходимого документа для изменения количества. ЭТО РАБОТАЕТ!!! НО...
Мне необходимо, чтобы из формы документа "План закупок", причем он только получен и не проведен, по нажатию кнопки(кнопку я уже добавил на форму документа) вызывалась моя обработка, изменяла количество в документе "План закупок". Вот код моей рабочей обработки: Код Процедура КнопкаВыполнитьНажатие(Кнопка) докПланЗакупок = ЭлементыФормы.ПланЗакупок.Значение; Для Каждого ТекущаяСтрока Из докПланЗакупок.СоставПлана Цикл НаимНом = ТекущаяСтрока.Номенклатура; //Выбираем аналоги из регистра сведений "Аналоги номенклатуры" НаборЗаписей = РегистрыСведений.АналогиНоменклатуры.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(НаимНом); НаборЗаписей.Прочитать(); Для Каждого ЭлемЗапись Из НаборЗаписей Цикл // Чтение и сообщение данных полей записи. Если Не ПустаяСтрока(ЭлемЗапись) Тогда ЭлемНоменклатура = ЭлемЗапись.Номенклатура; ЭлемАналог = ЭлемЗапись.Аналог; НоваяСтрока = ТабПоле.Добавить(); НоваяСтрока.Номенклатура = ЭлемНоменклатура; НоваяСтрока.АналогНоменклатуры = ЭлемАналог; Фильтр = Новый Структура; Фильтр.Вставить("Номенклатура",ЭлемАналог); Дата = ТекущаяДата(); // Параметр "н" отражает наличие товара в регистре остатков н = 0; // получение остатков будет производиться специальной функцией Остатки // для регистра накопления – возвращается таблица значений ТаблицаОстатков = РегистрыНакопления.ТоварыНаСкладах.Остатки(Дата,Фильтр,,); Для каждого СтрокаТаблицы из ТаблицаОстатков цикл // Перебор строк Сообщить("Номенклатура " + Строка(ЭлемЗапись.Номенклатура) + " Имеет аналог " + СтрокаТаблицы.Номенклатура + " с остатком на складе " + СтрокаТаблицы.Количество); н = 1; НоваяСтрока.ОстатокНаСкладе = СтрокаТаблицы.Количество; КонецЦикла; // Для товаров, отсутствующих в регистре остатков, // указываем остаток, равный 0 Если н = 0 Тогда НоваяСтрока.ОстатокНаСкладе = н; Сообщить("Аналог " + ЭлемАналог + " С остаткам на складе: 0"); КонецЕсли; Иначе Сообщить("Номенклатура " + Строка(ЭлемЗапись.Номенклатура) + " аналога не имеет!!! "); КонецЕсли; КонецЦикла; КонецЦикла; //Делаем обход занесенных данных в табличное поле обработки. //Производим вычитание остатков аналога номенклатуры. //Записываем результаты в документ и сохраняем его. Для Каждого ЭлемНомТабПоля Из ТабПоле Цикл ПерНом = ЭлемНомТабПоля.Номенклатура; ПерОстНаСкладе = ЭлемНомТабПоля.ОстатокНаСкладе; Сообщить("Номенклатура ТабПоля: "+ ПерНом + " с остатком " + ПерОстНаСкладе); Если Число(ПерОстНаСкладе) <> 0 Тогда ОбъектПланЗакупок = докПланЗакупок.ПолучитьОбъект(); Для каждого СтрТабПоля из ОбъектПланЗакупок.СоставПлана Цикл ПерНомВДок = СтрТабПоля.Номенклатура; Сообщить("Это ПерНомВДок " + ПерНомВДок); ПерКолВДок = СтрТабПоля.Количество; Сообщить("Это ПерКолВДок " + ПерКолВДок); Если СокрЛП(ПерНомВДок) = СокрЛП(ПерНом) Тогда Сообщить(Строка(ПерКолВДок) + " Старое количество!!!!!!!!!!!!!!!!!!"); НовКол = Число(ПерКолВДок - ПерОстНаСкладе); Сообщить("Рассчитано: " + Строка(НовКол)); Если НовКол < 0 тогда ОбъектПланЗакупок.СоставПлана.Удалить(СтрТабПоля); Сообщить("Номенклатура " +ПерНомВДок+ " удалена из плана закупок. Т.к. требуемое количество обеспечивают аналоги номенклатуры!!!"); Попытка ОбъектПланЗакупок.Записать(РежимЗаписиДокумента.Проведение); Исключение Предупреждение("Невозможно провести документ."); КонецПопытки; Иначе СтрТабПоля.Количество = НовКол; Сообщить(Строка(НовКол) + " Новое количество!!!!!!!!!!!!!!!!!!"); Попытка ОбъектПланЗакупок.Записать(РежимЗаписиДокумента.Проведение); Исключение Предупреждение("Невозможно провести документ."); КонецПопытки; КонецЕсли; Иначе Сообщить(ПерНом +" не найдена!!!"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
16
GROOVY
13.12.11
✎
17:10
|
(15) Ну так и передавай ссылку на документ. Нафига переменные, получение пустой ссылки?
Обработка.МояПроцедуры(ссылка); |
|||
17
Buster007
13.12.11
✎
17:15
|
в (15) что-то мало восклицательных знаков ))
|
|||
18
J_B
13.12.11
✎
17:16
|
(15) Если конфа типовая (или на базе типовой) смотри в сторону Внешних обработок заполнения ТЧ. И кнопки на форме не придется рисовать...
Процедура Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) ЭКСПОРТ Для Каждого ТекущаяСтрока Из Объект[ИмяТабличнойЧасти] Цикл НаимНом = ТекущаяСтрока.Номенклатура; // и далее по тексту с соответствующими поправками КонецПроцедуры |
|||
19
Yuriy78
13.12.11
✎
17:16
|
(16)Так я и не знаю как правильно передать ссылку на мой документ.
Куда этот код нужно записать? Обработка.МояПроцедуры(ссылка); |
|||
20
Defender aka LINN
13.12.11
✎
17:18
|
Мда... Тяжелый случай полного поражения коры и древесины головного мозга...
|
|||
21
Yuriy78
13.12.11
✎
17:19
|
(18) Я только начинаю изучать 1с и про такую возможность узнал когда написал внешнюю обработку. И чтоб не переделывать хочу ее при стегнуть, Конфигурация типовая. кнопку уже добавил.
|
|||
22
Yuriy78
13.12.11
✎
17:20
|
(20)вместо флуда дали б дельный совет!
|
|||
23
Defender aka LINN
13.12.11
✎
17:22
|
(22) Трудно давать советы когда человеку нужно неизвестно что, что он пытается сделать непонятно как.
|
|||
24
Yuriy78
13.12.11
✎
17:28
|
(22)Мне известно что нужно и об этом я написал в (15). А как реализовать это я не знаю, поэтому я на форуме пытаюсь получить помощь. А вы наверное сразу программировали с рождения?
|
|||
25
J_B
13.12.11
✎
17:29
|
Меню: Сервис - Внешние печ. формы и обработки - Обработки заполнения табл. частей там по F1 можно почитать общие принципы создания такой обработки.
Код из (18) вставить в модуль обработки, а саму обработку подключить через пункты меню выше. Тогда на форме автоматом появится в подменю "Заполнить" пункт вызова созданной обработки. Ссылку на только-что созданный и незаписанный док передать не получится т.к. ее еще не существует - надо работать непосредственно с объектом докПланЗакупок |
|||
26
Yuriy78
13.12.11
✎
17:34
|
(25) Спасибо за ответ. я понял что сразу двигался не в том направлении. Переделаю по Вашему совету. Еще раз спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |