Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0
Доброго времени суток. Конфигурация УПП 2 , версия 8.3.
Есть такая задача: необходимо заполнить табличную часть "Товары" документа ПоступленияТоваровУслуг, через обработку ЧтениеЭксель, где в табличной части "Данные" заполнены определенные реквизиты которые могут отличаться от порядка реквизитов в табличной части "Товары".
Вопрос: Как в обработке получить данные о документе, который вызвал обработку, и как заполнить подходящие поля из таблицы "Данные" в таблицу "Товары" документа, при условии что документ может быть еще не проведен или же записан.
Если ДиалогВыбора.Выбрать() Тогда Объект.Файл = ДиалогВыбора.ПолноеИмяФайла; КонецЕсли;
КонецПроцедуры
&НаКлиенте Процедура Прочитать(Команда)
Объект.Данные.Очистить();
//подключаемся к эксель Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(Объект.Файл); Состояние("Обработка файла Microsoft Excel..."); Исключение Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!"); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки;
//Открываем необходимый лист Попытка Excel.Sheets(1).Select(); // лист 1, по умолчанию Исключение //Закрываем Excel Excel.ActiveWorkbook.Close(); Excel = 0; Сообщить("Файл "+Строка(Объект.Файл)+" не соответствует необходимому формату! Первый лист не найден!"); Excel.ОтменитьТранзакцию(); Возврат; КонецПопытки;
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0
denis84 @ Сегодня, 13:49
, Да, Управляемые формы. Я тут чутка вроде уже начал разбираться и осталась финальная часть вопроса. "Как добавить данные из таблицы Обработки в Таблицу Документа". Вот код кнопки обработчика, который сделал чтобы найти объект документа.
Группа: Местный
Сообщений: 457
Из: Украина
Спасибо сказали: 150 раз
Рейтинг: 150.5
DmitryPushkarev @ Сегодня, 14:41
, У меня естьтакая процедура(функция), заполнение(корректировка) ТЧ документа Заказ клиента. На форме обработки кнопка с этой командой.
&НаСервере Процедура ВыполнитьКоманду(Команда, ОбъектыНазначения) Для каждого ЗаказКлиента из ОбъектыНазначения Цикл ЗаказКлиентаОбъект = ЗаказКлиента.ПолучитьОбъект(); Для каждого СтрокаТЗ из ЗаказКлиентаОбъект.Товары Цикл СтрокаТЗ.ПроцентРучнойСкидки = 5; СтрокаТЗ.СуммаРучнойСкидки = СтрокаТЗ.Сумма * 0.95; КонецЦикла; ЗаказКлиентаОбъект.Записать(); КонецЦикла; КонецПроцедуры
А в модуле обработки вот это:
Функция СведенияОВнешнейОбработке() Экспорт
ДокументНазначение = Новый Массив; ДокументНазначение.Добавить("Документ.ЗаказКлиента");
ПараметрыОбработки = Новый Структура; ПараметрыОбработки.Вставить("Вид","ЗаполнениеОбъекта"); ПараметрыОбработки.Вставить("Назначение", ДокументНазначение); ПараметрыОбработки.Вставить("Наименование","Установить скидки"); ПараметрыОбработки.Вставить("Версия","1.0"); ПараметрыОбработки.Вставить("Информация","Установка ручных скидок в заказе клиента"); ПараметрыОбработки.Вставить("БезопасныйРежим",Истина);
КомандыОбработки = ПолучитьКомандыОбработки (); ДобавитьКомандуОбработки (КомандыОбработки, " Установить скидки ","ВыполнитьКоманду","ВызовКлиентскогоМетода",Ложь,);
Функция ПолучитьКомандыОбработки () КомандыОбработки = Новый ТаблицаЗначений; КомандыОбработки.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); КомандыОбработки.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); КомандыОбработки.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); КомандыОбработки.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); КомандыОбработки.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат КомандыОбработки; КонецФункции
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0
denis84 @ Сегодня, 15:07
,
&НаСервере Процедура ВыполнитьКоманду(Команда, ОбъектыНазначения) // ОбъектыНазначения - как берется переменная? Для каждого ЗаказКлиента из ОбъектыНазначения Цикл ЗаказКлиентаОбъект = ЗаказКлиента.ПолучитьОбъект(); //Инициализируется объект для каждой итерации объекта назначения - это для всех заказов клиента? Для каждого СтрокаТЗ из ЗаказКлиентаОбъект.Товары Цикл СтрокаТЗ.ПроцентРучнойСкидки = 5; СтрокаТЗ.СуммаРучнойСкидки = СтрокаТЗ.Сумма * 0.95; КонецЦикла; ЗаказКлиентаОбъект.Записать(); КонецЦикла; КонецПроцедуры
У Вас получается весь код для существующих документов "ЗаказКлиента", который записывает ручные скидки через обработку? Попробую что-нибудь использовать из приведенного кода.
Группа: Местный
Сообщений: 457
Из: Украина
Спасибо сказали: 150 раз
Рейтинг: 150.5
DmitryPushkarev @ Сегодня, 15:22
, Вот ещё вариант: На форме кнопка с командой:
&НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт Для каждого ТекущаяСтрока из ВладелецФормы.Объект.Материалы Цикл //наш откртый документ "требование" ТекущаяСтрока.Количество = 100; Сообщить(ТекущаяСтрока.Количество); КонецЦикла; КонецПроцедуры
и в модуле:
Функция СведенияОВнешнейОбработке() Экспорт Назначения = Новый Массив; Назначения.Добавить("Документ.ТребованиеНакладная");
ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта"); ПараметрыРегистрации.Вставить("Назначение",Назначения); ПараметрыРегистрации.Вставить("Наименование","Заполнить Документ"); ПараметрыРегистрации.Вставить("Версия","1.0"); ПараметрыРегистрации.Вставить("Информация","Дополнительная обработка табличной части требования"); ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
Команды = ПолучитьТаблицуКоманд(); ДобавитьКоманду(Команды, "Заполнить документ","ЗаполнитьДокумент","ВызовКлиентскогоМетода",Ложь,);
ПараметрыРегистрации.Вставить("Команды",Команды);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!