Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 сен 2021, 00:17

Помощь в создании внешней обработки

Автор Alasmus, 16 авг 2012, 10:14

0 Пользователей и 1 гость просматривают эту тему.

Alasmus

Доброго времени суток. Изучаю создание внешней обработки, вот с какой целью:

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

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

Процедура КнопкаВыполнитьНажатие(Кнопка)

       Запрос = Новый Запрос;
       Запрос.Текст =
               "ВЫБРАТЬ
               |        РеализацияТоваровУслуг.Ссылка КАК Реализация,
               |        РеализацияТоваровУслуг.Подразделение.Наименование КАК Подразделение,
               |        РеализацияТоваровУслуг.Дата КАК Дата
               |ИЗ
               |        Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
               |ГДЕ
               |        РеализацияТоваровУслуг.Дата МЕЖДУ &НачПериода И &КонПериода
               |        И РеализацияТоваровУслуг.Подразделение.Ссылка = &Подразделение";
       
       Запрос.УстановитьПараметр("КонПериода", КонПериода);
       Запрос.УстановитьПараметр("НачПериода", НачПериода);
       Запрос.УстановитьПараметр("Подразделение", Подразделение);
       Результат=Запрос.Выполнить().Выгрузить();
       ЭлементыФормы.ТабЧ.Значение.Загрузить(Результат);

Klyacksa

Приветствую!

1. В запросе достаточно получать само Подразделение, а не Подразделение.Наименование. Представление будет таким же, а работа запроса слегка ускорится (особенно, если данных много)
2. Как правило, все подобные манипуляции с доками делаются только с теми, которые как минимум не помечены на удаление (но это уже на Ваше усмотрение, зависит от задачи)
3. Нужно решить концептуальный вопрос - перепроводки доков, ибо при любом изменении в проводимом доке, его нужно проводить снова. Вы уверены, что все доки встанут на место после перепроведения? Нужно это контролировать.

Ну а по сабжу, чтобы изменить док, нужно получить объект, изменить его, и записать/провести обратно.
Доступ к докам такой:
ВыбранныеДоки=ТабЧ.НайтиСтроки(Новый Структура("<имя колонки-пометки>", Истина));
Для каждого Док из ВыбранныеДоки цикл
     ДокОбъект=Док.Реализация.ПолучитьОбъект();
     ДокОбъект.Подразделение=НовоеНужноеПодразделение;
     ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск