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

Изменение табличной части выбранных пользователем документов

Автор kssh24, 19 янв 2023, 16:06

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

kssh24

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

Максим75

kssh24, 1. обходишь в цикле документы из табличной части обработки, проверяешь на то, что он выбран ("галочка" стоит, если надо такое).
2. потом получаешь объект по каждому документу (там у тебя ссылка, так что объект получается)
3. потом в объекте в цикле проходишь табличную часть, проверяешь, чтобы товар совпадал с нужным и цена попадала в диапазон, изменяешь цену. после второго цикла (цикла по табличной части нужного документа) объект записываешь и проводишь (у процедуры Записать есть режим записи, один из них записать, другой есть провести).
4. можно 3 пункт реализовать через запрос, из нужного документа выбрать нужный товар с диапазоном цен, но надо вывести номер строки документа, потом все равно через объект его находить и получать строку по номеру строки из запроса. и менять цену, записывать и проводить.
смотри, что тебе легче реализовать.

kssh24

Максим75, как же сделать такие обходы?

Для Каждого Строка Из Объект.<ИмяТаблички> Цикл  ??


как проверить, что стоит галочка?

то, что вы написали, в голове общей картинкой сложилось, а реализация непонятна, знаний видимо маловато

Максим75

kssh24, абсолютно верно
Для Каждого Строка Из Объект.<ИмяТаблички> Цикл
Строка - это и будет строка табличной части. Строка.Номенклатура - это номенклатура, Строка.Цена - это цена, и т.д.

теперь что касается галочки - на форме обработки в табличной части реализован вывод этой галочки, т.е. есть в табличной части поле типа булево (название у него типа пометка или что-то такое). вот при обходе табличной части в цикле проверяется что эта "пометка" есть Истина.

честно говоря, вывод таблицы с документами - это уже огромная часть из общей картины, она то получилась. осталось всего ничего, обработать документы. все получится.


kssh24

Максим75, спасибо за мотивацию :ehtwj:

я правильно понимаю, что это все нужно делать в модуле формы в процедуре КнопкаВыполнитьНаСервере, которая привязана к кнопке "Выполнить"?

Как проверить, что Отметка = Истина? Какой метод должен быть использован?
Объект.<НазваниеТабличкиГдеВсеДокументыИОтметки>. а дальше ничего не подходит

kssh24

и как получить объект по каждому документу?

простите за глупые вопросы, знаю, с вашей высоты они звучат абсурдно, но очень хочется разобраться

Максим75

kssh24, нормальный вопрос.
я тоже после 7-ки долго въезжал, потому как ДокументСсылка и ДокументОбъект - разные объекты.

В цикле по табличной части
Объект = Ссылка.ПолучитьОбъект(), где Ссылка - это ссылка на документ из строки табличной части (называться элемент формы может по другому) 
таким образом получаем ДокументОбъект, а уже у него есть метод Записать, потому как у ДокументСсылка нет такого метода.

kssh24


Максим75

kssh24,
цикл Для Каждого СтрокаТаблицы из ИмяТаблицыЗначений цикл

КонецЦикла

ИмяТаблицыЗначений - ну сама таблица значений
СтрокаТаблицы получает новую строку таблицы значений. Обращаться к столбцу можно СтрокаТаблицы[Индекс], где индекс - номер столбца, начинается с 0 (не с 1, это очень важно)
либо СтрокаТаблицы.Столбец - здесь имя столбца.

Важно: работа с таблицей значений доступна на сервере, на клиенте не доступна.

kssh24

Максим75, подскажите, пожалуйста, как реализовать возможность выбора нескольких номенклатурных позиций в соответствующем реквизите формы, по которому отбираются документы?

Теги:

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

Рейтинг@Mail.ru

Поиск