Как заполнить табличную часть нового документа обработкой заполнения
1С 8.3.10.2639
БСП 2.3.5.48
Пишу обработку заполнения табличной части нового документа.
Описание: пользователь открывает форму нового документа, вводит дату, организацию и склад и по кнопке "Заполнение" (подключаемая команда БСП) заполняется табличная часть документа.
Отладчиком нашел в каком месте запускается внешняя обработка.
ИдентификаторКоманды - содержит название команды (текст)
ОбъектыНазначения - Неопределено
ПараметрыКоманды - структура, в которой содержится "ЭтаФорма" тип "УправляемаяФорма"
Далее вызывается экспортная процедура "ВыполнитьКоманду" в модуле объекта моей обработки.
А что дальше? Значит мы на сервере получили структуру в которой находится форма нового документа в которой нужно заполнить табличную часть "Товары".
Что сделал я...
Изучил состав полей табличной части "Товары" документа.
Получил результат запроса в котором название полей совпадает с названием граф заполняемой таблицы.
После заполнения в табличной части нового документе создаются новые строки с номерами строк, но графы "Товар" и "Количество" пустые.
Подскажите, плиз, что я делаю не так?
БСП 2.3.5.48
Пишу обработку заполнения табличной части нового документа.
Описание: пользователь открывает форму нового документа, вводит дату, организацию и склад и по кнопке "Заполнение" (подключаемая команда БСП) заполняется табличная часть документа.
Отладчиком нашел в каком месте запускается внешняя обработка.
ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыКоманды);
ИдентификаторКоманды - содержит название команды (текст)
ОбъектыНазначения - Неопределено
ПараметрыКоманды - структура, в которой содержится "ЭтаФорма" тип "УправляемаяФорма"
Далее вызывается экспортная процедура "ВыполнитьКоманду" в модуле объекта моей обработки.
А что дальше? Значит мы на сервере получили структуру в которой находится форма нового документа в которой нужно заполнить табличную часть "Товары".
Что сделал я...
Изучил состав полей табличной части "Товары" документа.
Получил результат запроса в котором название полей совпадает с названием граф заполняемой таблицы.
Процедура ЗаполнениеОтрицательнымиОстатками(ОбъектыНазначенияМассив,ПараметрыВыполненияКоманды)
ФормаЗаполнения=ПараметрыВыполненияКоманды.ЭтаФорма;
ОбъектФормы=ФормаЗаполнения.Объект;
//здесь запросом получаю данные заполнения
ТЗ=Запрос.Выполнить().Выгрузить();
ОбъектФормы.Товары.Загрузить(ТЗ);
КонецПроцедуры
ПоказатьПосле заполнения в табличной части нового документе создаются новые строки с номерами строк, но графы "Товар" и "Количество" пустые.
Подскажите, плиз, что я делаю не так?
По теме из базы знаний
- Обработка для заполнения табличной части "Начисления" документа "Прием на работу в организацию" (для ЗУП и ЗБУ)
- Заполнение табличной части "Товары" документа "Резервирование товаров" остатками (УПП 1.3)
- Заполнение табличной части Товары документа Поступление товаров и услуг из MS Excel (УТ 10.3)
- Заполнение табличных частей документов одного вида из табличных частей списка документов другого вида (альтернатива ввода на основании)
- Создание справочников "Номенклатура" и "Номенклатура поставщика" из внешнего файла, электронной таблицы с заполнением табличной части "Товары" документов закупки (ERP 2.4, 2.5, КА 2.4, 2.5, УТ 11)
Найденные решения
Пример. "товары" - это табличная часть заполняемого документа
....
Если ИмяКоманды = "ЗаполнитьТЧ" Тогда
ЗаполнитьТЧ(ПараметрыКоманды.ЭтаФорма);
КонецЕсли;
....
сама процедура
Процедура ЗаполнитьТЧ(форма) Экспорт
форма.объект.товары.загрузить(запрос.Выполнить().Выгрузить());
Форма.Модифицированность = Истина;
конецпроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Марина, спасибо за ответ. А где взять Данные?
У меня есть переменная "ФормаЗаполнения" с типом "УправляемаяФорма". Я отладчиком раскрыл её и не нашел "Данные".
Читал документацию БСП на ИТС. Там есть пример заполнения...
Из кода видно, как разработчик обращается
В моём случае будет так
Только в моём случае "Товары" эта таблица формы.
Так вот и вопрос, как её корректно заполнить?
У меня есть переменная "ФормаЗаполнения" с типом "УправляемаяФорма". Я отладчиком раскрыл её и не нашел "Данные".
Читал документацию БСП на ИТС. Там есть пример заполнения...
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации =ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид =ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
ПараметрыРегистрации.Версия = "1.2";
ПараметрыРегистрации.Назначение.Добавить("Справочник._ДемоКонтрагенты");
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Заполнить реквизит ""ИНН"" не записывая объект (заполнение формы)'");
НоваяКоманда.Идентификатор = "ЗаполнитьИНН";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗаполнениеФормы();
Возврат ПараметрыРегистрации;
КонецФункции
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт
Если ИмяКоманды = "ЗаполнитьИНН" Тогда
Генератор = Новый ГенераторСлучайныхЧисел;
ЭтаФорма = ПараметрыВыполнения.ЭтаФорма;
ЭтаФорма.Объект.ИНН = Формат(Генератор.СлучайноеЧисло(1, 999999999), "ЧЦ=12; ЧДЦ=0; ЧВН=; ЧГ=");
ЭтаФорма.Модифицированность = Истина;
Сообщение = Новый СообщениеПользователю();
Сообщение.Поле = "Объект.ИНН";
Сообщение.Текст = НСтр("ru = 'Поле ""ИНН"" успешно заполнено'");
Сообщение.Сообщить();
...
КонецПроцедуры
ПоказатьИз кода видно, как разработчик обращается
ЭтаФорма.Объект.ИНН = Формат(Генератор.СлучайноеЧисло(1, 999999999), "ЧЦ=12; ЧДЦ=0; ЧВН=; ЧГ=");
В моём случае будет так
ЭтаФорма.Объект.Товары = ......;
Только в моём случае "Товары" эта таблица формы.
Так вот и вопрос, как её корректно заполнить?
(3)
(3)
Только в моём случае "Товары" эта таблица формы.
Не таблица формы, а табличная часть объекта.
(3)
В моём случае будет так
ЭтаФорма.Объект.Товары = ......;
С какого перепуга? С какого перепуга заполнение табличной части объекта будет таким же, как и заполнение простого реквизита объекта? Вы не знаете как работать с табличной частью?
ЭтаФорма.Объект.Товары = ......;
Пример. "товары" - это табличная часть заполняемого документа
....
Если ИмяКоманды = "ЗаполнитьТЧ" Тогда
ЗаполнитьТЧ(ПараметрыКоманды.ЭтаФорма);
КонецЕсли;
....
сама процедура
Процедура ЗаполнитьТЧ(форма) Экспорт
форма.объект.товары.загрузить(запрос.Выполнить().Выгрузить());
Форма.Модифицированность = Истина;
конецпроцедуры
Показать
(8) Ай...мой косяк.
Формировал запрос конструктором запроса....а имена полям не присвоил, думал имя поля возьмет из названия поля регистра.
А он взял
"АналитикаУчетаНоменклатурыНоменклатура"
"АналитикаУчетаНоменклатурыХарактеристика"
"АналитикаУчетаНоменклатурыНазначение"
Все получилось! Всем спасибо!
Формировал запрос конструктором запроса....а имена полям не присвоил, думал имя поля возьмет из названия поля регистра.
А он взял
"АналитикаУчетаНоменклатурыНоменклатура"
"АналитикаУчетаНоменклатурыХарактеристика"
"АналитикаУчетаНоменклатурыНазначение"
Все получилось! Всем спасибо!
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот