Возможно ли программно добавлять колонки в тч, после этого заполнить их вручную и провести их по регистру сведений???
Задача такая, в зависимости от того какое значение вводит пользователь, добавить столько колонок в тч?
Плюс в этих колонках, надо по 2 реквизита, то есть человек вводит число 3, нажимает на кнопку(команду).
Далее в тч добавляется:
как-то так? и потом значения из этих колонок провести в регистр сведений.
Плюс в этих колонках, надо по 2 реквизита, то есть человек вводит число 3, нажимает на кнопку(команду).
Далее в тч добавляется:
Колонка1 колонка2
реквизит1 реквизит1
реквизит2 реквизит2
как-то так? и потом значения из этих колонок провести в регистр сведений.
По теме из базы знаний
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Автоматизированная проверка конфигураций… и пара слов о стандартах разработки
- Интеграция сценарного тестирования в процесс разработки
- Как сдать экзамен 1С:Специалист по платформе?
- Автоматизация труда программиста. Библиотека прикладных функций
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7)Взял из своей обработки
Код УФ |
---|
&НаСервере
Процедура ЗаполнениеТаблицыНаСервере()
ТЧСписок.Очистить();
МассивУдаляемых = Новый Массив;
Для Каждого Колонка Из Элементы.ТЧСписок.ПодчиненныеЭлементы Цикл
Если Колонка.Имя = "ТЧСписокНомерПП" Тогда
Продолжить;
КонецЕсли;
//Элементы.Удалить(Элементы.Найти("ТЧСписок" + Колонка.Имя));
МассивУдаляемых.Добавить("ТЧСписок." + СтрЗаменить(Колонка.Имя, "ТЧСписок", ""));
КонецЦикла;
Если НЕ МассивУдаляемых.Количество() = 0 Тогда
ИзменитьРеквизиты(, МассивУдаляемых);
КонецЕсли;
Для Каждого Колонка Из МассивУдаляемых Цикл
ТекИмя = СтрЗаменить(Колонка, ".", "");
Если Элементы.Найти(ТекИмя) = Неопределено ИЛИ Колонка = "НомерПП" Тогда
Продолжить;
КонецЕсли;
Элементы.Удалить(Элементы.Найти(ТекИмя));
КонецЦикла;
Реквизиты = Новый Массив;
Для Каждого СтрТЧСоответствияИмен Из ТЧСоответствияИмен Цикл
СтрокаНаименованиеКолонки = Строка(СтрТЧСоответствияИмен.НаименованиеКолонки);
СоздатьИмяКолонки(СтрокаНаименованиеКолонки);
Реквизиты.Добавить(Новый РеквизитФормы(СтрокаНаименованиеКолонки, Новый ОписаниеТипов("Строка"), "ТЧСписок"));
КонецЦикла;
Реквизиты.Вставить(2, (Новый РеквизитФормы("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "ТЧСписок","Номенклатура")));
Если НЕ КолонкаКоличество = 0 Тогда
Реквизиты.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число"), "ТЧСписок"));
КонецЕсли;
мОТЕдИзмСтр = Новый Массив;
мОТЕдИзмСтр.Добавить(Тип("СправочникСсылка.ЕдиницыИзмерения"));
мОТЕдИзмСтр.Добавить(Тип("Строка"));
мОТЧислоСтр = Новый Массив;
мОТЧислоСтр.Добавить(Тип("Число"));
мОТЧислоСтр.Добавить(Тип("Строка"));
н = 1;
Для Каждого СтрТЧУпаковкиНоменклатуры Из ТЧУпаковкиНоменклатуры Цикл
Реквизиты.Добавить(Новый РеквизитФормы("ШК_" + н + "ЕдиницаИзмерения", Новый ОписаниеТипов(мОТЕдИзмСтр), "ТЧСписок"));
Реквизиты.Добавить(Новый РеквизитФормы("ШК_" + н + "Коэффициент", Новый ОписаниеТипов(мОТЧислоСтр), "ТЧСписок"));
Реквизиты.Добавить(Новый РеквизитФормы("ШК_" + н + "Штрихкод", Новый ОписаниеТипов("Строка"), "ТЧСписок"));
н = н + 1;
КонецЦикла;
н = 1;
Для Каждого СтрТЧЦены Из ТЧЦены Цикл
Реквизиты.Добавить(Новый РеквизитФормы("ЦЕН_" + н + "ВидЦены", Новый ОписаниеТипов("СправочникСсылка.ВидыЦен"), "ТЧСписок"));
Реквизиты.Добавить(Новый РеквизитФормы("ЦЕН_" + н + "Цена", Новый ОписаниеТипов(мОТЧислоСтр), "ТЧСписок"));
Реквизиты.Добавить(Новый РеквизитФормы("ЦЕН_" + н + "ЕдиницаИзмерения", Новый ОписаниеТипов(мОТЕдИзмСтр), "ТЧСписок"));
Реквизиты.Добавить(Новый РеквизитФормы("ЦЕН_" + н + "Коэффициент", Новый ОписаниеТипов(мОТЧислоСтр), "ТЧСписок"));
н = н + 1;
КонецЦикла;
// добавим реквизиты на форму
ИзменитьРеквизиты(Реквизиты);
Рек = Элементы.Добавить("ТЧСписокНоменклатура", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеВвода;
Рек.ПутьКДанным = "ТЧСписок.Номенклатура";
Рек.Видимость = Ложь;
Для Каждого СтрТЧСоответствияИмен Из ТЧСоответствияИмен Цикл
СтрокаНаименованиеКолонки = Строка(СтрТЧСоответствияИмен.НаименованиеКолонки);
СоздатьИмяКолонки(СтрокаНаименованиеКолонки);
Рек = Элементы.Добавить("ТЧСписок" + СтрокаНаименованиеКолонки, Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок" + "." + СтрокаНаименованиеКолонки;
Если Метаданные.Справочники.Номенклатура.Реквизиты.Найти(СтрокаНаименованиеКолонки) = Неопределено Тогда
Рек.Заголовок = СтрЗаменить(СтрЗаменить(СтрокаНаименованиеКолонки, "__", " "), "ДС_", "");
Иначе
Рек.Заголовок = Метаданные.Справочники.Номенклатура.Реквизиты.Найти(СтрокаНаименованиеКолонки).Синоним;
КонецЕсли;
КонецЦикла;
Если НЕ КолонкаКоличество = 0 Тогда
Рек = Элементы.Добавить("ТЧСписокКоличество", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок.Количество";
КонецЕсли;
н = 1;
Для Каждого СтрТЧУпаковкиНоменклатуры Из ТЧУпаковкиНоменклатуры Цикл
Рек = Элементы.Добавить("ТЧСписок" + "ШК_" + н + "ЕдиницаИзмерения", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок" + "." + "ШК_" + н + "ЕдиницаИзмерения";
Рек.Заголовок = "ШК " + н + " Ед.";
Рек = Элементы.Добавить("ТЧСписок" + "ШК_" + н + "Коэффициент", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок" + "." + "ШК_" + н + "Коэффициент";
Рек.Заголовок = "ШК " + н + " Коэф.";
Рек = Элементы.Добавить("ТЧСписок" + "ШК_" + н + "Штрихкод", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок" + "." + "ШК_" + н + "Штрихкод";
Рек.Заголовок = "ШК " + н + " Штрихкод";
н = н + 1;
КонецЦикла;
н = 1;
Для Каждого СтрТЧЦены Из ТЧЦены Цикл
Рек = Элементы.Добавить("ТЧСписок" + "ЦЕН_" + н + "ВидЦены", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок" + "." + "ЦЕН_" + н + "ВидЦены";
Рек.Заголовок = "Цена " + н + " Вид";
Рек = Элементы.Добавить("ТЧСписок" + "ЦЕН_" + н + "Цена", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок" + "." + "ЦЕН_" + н + "Цена";
Рек.Заголовок = "Цена " + н;
Рек = Элементы.Добавить("ТЧСписок" + "ЦЕН_" + н + "ЕдиницаИзмерения", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок" + "." + "ЦЕН_" + н + "ЕдиницаИзмерения";
Рек.Заголовок = "Цена " + н + " Ед.";
Рек = Элементы.Добавить("ТЧСписок" + "ЦЕН_" + н + "Коэффициент", Тип("ПолеФормы"), Элементы.ТЧСписок);
Рек.Вид = ВидПоляФормы.ПолеНадписи;
Рек.ПутьКДанным = "ТЧСписок" + "." + "ЦЕН_" + н + "Коэффициент";
Рек.Заголовок = "Цена " + н + " Коэф.";
н = н + 1;
КонецЦикла;
КонецПроцедуры // ЗаполнениеТаблицыНаСервере()
Показать |
&НаСервере
Процедура ДобавитьКолонкуНаСервере()
нРеквизиты = Новый Массив;
нРеквизиты.Добавить(Новый РеквизитФормы("Тест3", Новый ОписаниеТипов("Строка"), "Объект.Тест", "Тест3", Истина));
ИзменитьРеквизиты(нРеквизиты);
нЭлемент = Элементы.Добавить("Тест3", Тип("ПолеФормы"), Элементы.Тест);
нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
нЭлемент.ПутьКДанным = "Объект.Тест.Тест3";
КонецПроцедуры
Процедура ДобавитьКолонкуНаСервере()
нРеквизиты = Новый Массив;
нРеквизиты.Добавить(Новый РеквизитФормы("Тест3", Новый ОписаниеТипов("Строка"), "Объект.Тест", "Тест3", Истина));
ИзменитьРеквизиты(нРеквизиты);
нЭлемент = Элементы.Добавить("Тест3", Тип("ПолеФормы"), Элементы.Тест);
нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
нЭлемент.ПутьКДанным = "Объект.Тест.Тест3";
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот