Автор: bandrah 01.10.19, 14:53
Потрібно створити кнопку і до неї додати можливість заповнювати табличну частину на основі іншого документа. Документ ПеремещениеТоваров таб часть товары потрібно заповняти на основі даних ОтчетПроизводстваЗаСмену материалы, стандартний механізм не підходить, бо нада окрему кнопку з вибором документа і його заповнити ось код по якому пробую це зробити але не спрацьовує
Код&НаСервере
Процедура Заполнить(Команда)
//1_Вариант
СписокДокументов = ПолучитьСписокДокументовНаСервере();
ДокументОснование = СписокДокументов.ВыбратьЭлемент();
Если ДокументОснование <> Неопределено Тогда
ЗаполнитьПоДокументуНаСервере(ДокументОснование.Значение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоДокументуНаСервере(ДокументОснование)
//при наличии одноименных реквизитов с одинаковыми типами в обоих документах можно прописать так
ЗаполнитьЗначенияСвойств(Объект, ДокументОснование);
КонецПроцедуры
&НаСервере
Функция ПолучитьСписокДокументовНаСервере()
Список = Новый СписокЗначений;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОтчетПроизводстваЗаСменуМатериалы.Номенклатура,
| ОтчетПроизводстваЗаСменуМатериалы.Счет,
| ОтчетПроизводстваЗаСменуМатериалы.ЕдиницаИзмерения,
| ОтчетПроизводстваЗаСменуМатериалы.Коэффициент,
| ОтчетПроизводстваЗаСменуМатериалы.Количество,
| ОтчетПроизводстваЗаСменуМатериалы.Ссылка
|ИЗ
| Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Список.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
Возврат Список;
КонецФункции
Можливо хтось має робочий механізм для реалізації такої кнопки чи є ідеї щоб підправити даний?
Автор: Макс1С 01.10.19, 15:27
bandrah @ Сегодня, 15:53
,
Советую покопать в сторону внешней обработки заполнения ТЧ.
Вот очень хороший пример:
https://pro1c.org.ua/redirect.php?https://infostart.ru/public/825702/
только вместо выбора номенклатуры, вам нужен выбор документа, потом запрос по ТЧ Материалы одного документа и заполнение ТЧ текущего документа.А в таком запросе как у вас выберутся данные из всех документов ОтчетПроизводстваЗаСмену (запросом). И ЗаполнитьЗначенияСвойств() не сработает для табличных частей, только для реквизитов "шапки". Для копирования данных из одного документа в другой, можно делать так:
РасходнаяНакладная = Документы.РасходнаяНакладная.СоздатьДокумент();
// заполняем реквизиты документа
ЗаполнитьЗначенияСвойств(РасходнаяНакладная, ПриходнаяНакладная, , "Дата, Проведен, ПометкаУдаления");
// заполняем табличную часть документа
Для каждого СтрокаСоставаПриходнойНакладной из ПриходнаяНакладная.Состав Цикл
СтрокаСоставаРасходнойНакладной = РасходнаяНакладная.Состав.Добавить();
// заполняем значения очередной строки табличной части
ЗаполнитьЗначенияСвойств(СтрокаСоставаРасходнойНакладной, СтрокаСоставаПриходнойНакладной);
КонецЦикла;
взято из https://pro1c.org.ua/redirect.php?https://its.1c.ua/db/metoddevu#content:8020842:hdoc
Автор: fly 01.10.19, 19:44
Цитата(bandrah @ 01.10.19, 15:53)
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Попробуйте методом ТабличнойЧасти Загрузить
Табличная часть (Tabular section)
Загрузить (Load)
Синтаксис:
Загрузить(<Таблица>)
Параметры:
<Таблица> (обязательный)
Тип: ТаблицаЗначений.
Таблица значений, откуда загружается табличная часть. Колонки таблиц совмещаются по именам.
Описание:
Загружает табличную часть из таблицы значений. При этом все прежние строки табличной части удаляются. При загрузке значения в колонках табличной части заполняются значениями из колонок таблицы значений с совпадающими именами.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:
Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:
Состав.Загрузить(ТаблицаСостава);
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выгрузить();
Документ.ТаблЧасть.Загрузить(ВыборкаДетальныеЗаписи);
Цитата(bandrah @ 01.10.19, 15:53)
бо нада окрему кнопку з вибором документа і його заповнити
по сути перед заполнением этот метод сразу очистит ТЧ от данных и заполнит одноименные Колонки значениями
Автор: bandrah 02.10.19, 10:07
дякую за поради, буду пробувати про результати напишу пізніше
Автор: bandrah 12.11.19, 17:37
Взяв механізм із документа Повернення товарів від покупця в кнопці заповнити є дві під кнопки заповнити по документу вцілому або додати із документа...