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

Редактирование колонки табличной части, который заполняется произвольным запросом.

Автор Thunder19888, 11 апр 2025, 12:17

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

Thunder19888

Сделал табличную часть, которая произвольным запросом заполняется нужными данными. Нужно, чтобы пользователь мог вручную редактировать 1 колонку в этой табличной части, и нажатием на кнопку заполнять новый документ получившимися данными из этой табличной части. Столкнулся с такой проблемой, что ячейки табличной части вообще не редактируются в режиме 1С:Предприятие. Добавление колонки к реквизиту табличной части формы тоже недоступно. Подскажите, пожалуйста, как реализовать задуманный функционал.

antoneus


Thunder19888


antoneus

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

Thunder19888

antoneus, Спасибо. Заменил ДС на таблицу значений, и теперь нужная колонка заполняется с возможностью редактирования. Но теперь возникла другая проблема, не открывается форма документа, которая должна частично заполняться из таблицы значений при нажатии на кнопку. Так пытаюсь создать новый документ:

&НаСервере
Функция ФункцияСозданияДокумента() 
    НовыйДокумент = Документы.ПриходТовара.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    Для Каждого СтрокаТовара Из ТЧТоварыКЗаказу Цикл
        НоваяСтрока = НовыйДокумент.Товары.Добавить();
        НоваяСтрока.Товар = СтрокаТовара["Товар"];
        НоваяСтрока.Количество = СтрокаТовара["КоличествоНаЗаказ"];
    КонецЦикла;
   Возврат  НовыйДокумент.Ссылка;
КонецФункции

 &НаКлиенте
Процедура ПроцедураОткрытияДокумента() 
    НовыйДокумент = ФункцияСозданияДокумента();
    Документ = НовыйДокумент.ПолучитьОбъект();
    Форма  = Документ.ПолучитьФорму("ФормаДокумента").Открыть();;
    Форма.Открыть();
КонецПроцедуры

&НаКлиентеНаСервере
Процедура СоздатьДокументыПрихода(Команда)
    ПроцедураОткрытияДокумента();         
КонецПроцедуры



Из функции ФункцияСозданияДокумента() ссылка передаётся пустая в процедуру ПроцедураОткрытияДокумента(). Подскажите, пожалуйста, какой должен быть правильный подход к созданию документа и открытию его формы по кнопке, чтобы в коде можно было задать значения некоторым реквизитам документа.





Thunder19888

Добился нужного результата. Код создания документа и открытия формы получился такой:

&НаСервере
Функция ФункцияСозданияДокумента() 
НовыйДокумент = Документы.ПриходТовара.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    Для Каждого СтрокаТовара Из ТЧТоварыКЗаказу Цикл
        НоваяСтрока = НовыйДокумент.Товары.Добавить();
        НоваяСтрока.Товар = СтрокаТовара["Товар"];
НоваяСтрока.Количество = СтрокаТовара["КоличествоНаЗаказ"];
КонецЦикла;
НовыйДокумент.Записать();
   Возврат  НовыйДокумент.Ссылка;
КонецФункции

&НаКлиенте
Процедура СоздатьДокументыПрихода(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", ФункцияСозданияДокумента());
    ОткрытьФорму("Документ.ПриходТовара.Форма.ФормаДокумента",ПараметрыФормы);    
КонецПроцедуры

На данном этапе всё работает, но, хотелось бы ещё реализовать динамический список с пустой колонкой. Позже конкретный вопрос задам по данной реализации.

sali


Thunder19888

antoneus, во втором варианте реализации не могу понять, зачем нужно пустое поле в запросе. Я пытаюсь вводить значения в ячейку ДС через всплывающее окошко:

2025-04-14_20-18-19.jpg

Но, хоть в коде СтрокаДинамическогоСписка.КоличествоНаЗаказ и меняет своё значение на введённое через окошко, на форме в динамическом списке ничего не меняется. Объясните, пожалуйста, как связать ДС с реквизитом формы "Табличная часть", который вы предлагали создать для хранения введённых пользователем значений. Или вы предлагали табличную часть передавать как переменную в запрос ДС? Но в таком случае, не понимаю, как тогда ДС будет обновляться динамически при скроллинге, ведь он обновляется сразу целиком при изменении запроса.

antoneus


Thunder19888


Теги:

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

Рейтинг@Mail.ru

Поиск