|
Обработка заполнения ТЧ в УФ | ☑ | ||
---|---|---|---|---|
0
Chai Nic
17.09.13
✎
11:25
|
Задача элементарная - нужно заполнить номенклатурные группы в ТЧ из реквизита номенклатуры. Пробую сделать внешнюю обработку, подключил её к документу - команда вызывается нормально. Однако, возникает ошибка
{Форма.Форма.Форма(5)}: Поле объекта недоступно для записи (НоменклатурнаяГруппа) Строка.НоменклатурнаяГруппа=Строка.Номенклатура.НоменклатурнаяГруппа; Вот собственно код. Что тут не так? Как из этой процедуры правильно изменять содержимое открытой формы документа? Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыОбработки) Экспорт Документ=ПараметрыОбработки[0]; Для Каждого Строка из Документ.Продукция цикл Строка.НоменклатурнаяГруппа=Строка.Номенклатура.НоменклатурнаяГруппа; КонецЦикла; КонецПроцедуры |
|||
1
Chai Nic
17.09.13
✎
11:30
|
Помогите плиз!
|
|||
2
Ненавижу 1С
гуру
17.09.13
✎
11:33
|
потому что заполнять надо на сервере
|
|||
3
cw014
17.09.13
✎
11:36
|
(2)+1
|
|||
4
Chai Nic
17.09.13
✎
11:36
|
(2) Не помогает. Та же ошибка в той же операции присваивания.
&НаСервере Процедура ЗаполнитьНаСервере(Документ) Для Каждого Стр из Документ.Продукция цикл Стр.НоменклатурнаяГруппа=Стр.Номенклатура.НоменклатурнаяГруппа; КонецЦикла; КонецПроцедуры Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыОбработки) Экспорт Документ=ПараметрыОбработки[0]; ЗаполнитьНаСервере(Документ); КонецПроцедуры |
|||
5
ДенисЧ
17.09.13
✎
11:38
|
А объект получил?
|
|||
6
Chai Nic
17.09.13
✎
11:39
|
(5) А ПараметрыОбработки[0] это что, если не объект?
|
|||
7
cw014
17.09.13
✎
11:45
|
(6) Ссылка?
|
|||
8
Chai Nic
17.09.13
✎
11:46
|
(7) Однозначно нет. Ибо эта обработка может применяться и к еще не записанному документу, когда ссылки еще не существует.
|
|||
9
Chai Nic
17.09.13
✎
11:52
|
Ни у кого нет примерчика рабочей обработки по заполнению ТЧ под управляемые формы?
|
|||
10
shds
17.09.13
✎
12:19
|
&НаКлиенте
Процедура ВыполнитьКоманду(Идентификатор, ОбъектыНазначения) Экспорт ... ЗаполнитьДокументНаСервере(ОбъектыНазначения[0]); ... КонецПроцедуры &НаСервере Функция ЗаполнитьДокументНаСервере(Документ) ДокументОбъект = Документ.ПолучитьОбъект(); ...; ДокументОбъект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия"); ДокументОбъект.Комментарий = "Загрузка "+ ТекущаяДата(); ...; ДокументОбъект.Услуги.Очистить(); Для Каждого СтрТаблицы Из ТаблицаДанных Цикл ДокСтрокаТЧ = ДокументОбъект.Услуги.Добавить(); ДокСтрокаТЧ.Номенклатура = СтрТаблицы.СпрНоменклатура; ...; КонецЦикла; ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); Возврат Истина; КонецФункции |
|||
11
banco
17.09.13
✎
12:45
|
(0) неправильно делаешь, открой демо базу БСП, там есть примеры.
|
|||
12
Chai Nic
17.09.13
✎
12:50
|
(10) А мне не надо получать объект, изменять его и записывать.. мне надо вносить изменения непосредственно в открытую форму документа. Чтобы пользователь видел изменения и при необходимости мог не сохранять документ, а просто закрыть его..
|
|||
13
Chai Nic
17.09.13
✎
12:51
|
(12) В общем, так как это делалось в обычных формах
|
|||
14
Chai Nic
17.09.13
✎
13:20
|
(11) Посмотрел как в БСП - там записывается объект.. это не то..
|
|||
15
НЕА123
17.09.13
✎
13:21
|
>мне надо вносить изменения непосредственно в открытую форму документа
2.>В общем, так как это делалось в обычных формах "в общем" изменения вносятся в объект. |
|||
16
Chai Nic
17.09.13
✎
13:22
|
(15) Можно пример кода, как внести подключаемой обработкой изменения в открытый объект, отобразив эти изменения на форме, но БЕЗ записи объекта?
|
|||
17
banco
17.09.13
✎
14:39
|
(14) не там смотрел значит
|
|||
18
Chai Nic
17.09.13
✎
14:41
|
(17) "Демо пример: обработка заполнения". А где смотреть?
|
|||
19
banco
17.09.13
✎
14:50
|
(18) в этой демо обработке есть процедура ЗаполнитьИНН, там то что тебе нужно.
|
|||
20
Chai Nic
17.09.13
✎
14:56
|
(18) Нет такой процедуры в этой обработке. Демонстрационная конфигурация "Библиотека стандартных подсистем", редакция 2.0 (2.0.1.19)
|
|||
21
banco
17.09.13
✎
15:09
|
(20) потому что в редакции в 2.0 еще не было такого функционала, чтоб не записать объект в доп. обработке. Если у тебя конфа тоже на бсп 2.0, тогда тебе надо обновить бсп
|
|||
22
olegves
17.09.13
✎
15:12
|
(0) исправь на
Для каждого Объект.ИмяТЧ Цикл |
|||
23
Chai Nic
17.09.13
✎
15:14
|
(21) У меня типовая БП3.0. Версия последняя. Как в ней делать?
|
|||
24
olegves
17.09.13
✎
15:17
|
+ (22) а если тебе не надо этот реквизит в ТЧ документа хранить, то проще раскрыть (+) у реквизита ТЧ Номенклатура и перетащить мышкой нужную тебе группу в элементы формы
|
|||
25
Chai Nic
17.09.13
✎
15:24
|
(24) Речь идет не о том, что проще, а о том, что нужно. Конфигурация типовая, реквизит в ТЧ - значимый.
|
|||
26
olegves
17.09.13
✎
16:01
|
(25) кури (22) до просветления
|
|||
27
banco
17.09.13
✎
16:03
|
(26) ты не в теме
|
|||
28
banco
17.09.13
✎
16:03
|
(23) держи пример
// Возвращает сведения о внешней обработке. Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.1.3.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта(); ПараметрыРегистрации.Версия = "0.1"; ПараметрыРегистрации.БезопасныйРежим = Истина; ПараметрыРегистрации.Назначение.Добавить("Документ.ТребованиеНакладная"); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = НСтр("ru = 'Заполнить ""Номенклатурнау группу"" в таб части ""Материали"" '"); НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗаполнениеФормы(); Возврат ПараметрыРегистрации; КонецФункции // Интерфейс для выполнения команд обработки. Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт ЭтаФорма = ПараметрыВыполнения.ЭтаФорма; Объект = ЭтаФорма.Объект; ЭтаФорма.Модифицированность = Истина; Для Каждого СтрокаТЧ Из Объект.Материалы Цикл СтрокаТЧ.НоменклатурнаяГруппа = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаТч.Номенклатура, "НоменклатурнаяГруппа"); КонецЦикла; Результат = ПараметрыВыполнения.РезультатВыполнения; Результат.ВыводПредупреждения.Использование = Истина; Результат.ВыводПредупреждения.Текст = НСтр("ru = 'Поле ""Номенклатурная группа"" успешно заполнено'"); КонецПроцедуры |
|||
29
Chai Nic
17.09.13
✎
16:37
|
(28) Спасибо! Так вроде работает. А еще подскажите пожалуйста - каким образом в этой процедуре можно организовать ввод значения пользователем? Иногда требуется заполнить реквизит какой-то одной номенклатурной группой. А ВыполнитьКоманду() исполняется на сервере, на котором нельзя обращаться к пользователю..
|
|||
30
banco
17.09.13
✎
16:54
|
(29) прочитай документацию БСП
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |