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

Таблица значений для измученного нуба

Автор Mucmep_Mapuo, 27 фев 2018, 23:42

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

Mucmep_Mapuo

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

Mucmep_Mapuo

Походу без шансов...:dfbsdfbsdf:
Добавлено: 28 фев 2018, 00:52


Самое обидное - даже не знаю с чего начать то, блин :fdbsdfbsd::kmtu:. Откуда и каким образом взять данные для создания таблицы именно в таком виде, как требуется...
Добавлено: 28 фев 2018, 02:59


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

РезультатЗапроса = Запрос.Выполнить();

НоваяСтрока[Масс] = РезультатЗапроса;
КонецЦикла
КонецЦикла;


Добавлено: 28 фев 2018, 03:05


А, пля, неважно, все равно РезультатЗапроса это долбаная ТаблицаЗначений.
Вообще очень неплохой форум, приветливые, отзывчивые люди.

AIFrame

Цитата: Mucmep_Mapuo от 28 фев 2018, 00:29Вообще очень неплохой форум, приветливые, отзывчивые люди.
Которые только сидят и ждут, когда же ты придешь и что-то спросишь.
ЦитироватьСоздать программно таблицу значений
Процедура ВыполнитьЭто()

ТЧ = Новый ТаблицаЗначений;
Массив = Новый Массив;

// Колонка 1
Массив.Добавить(Тип("СправочникСсылка.Номенклатура"));
ТипСсылка = Новый ОписаниеТипов(Массив);
ТЧ.Колонки.Добавить("Товар", ТипСсылка);
Массив.Очистить();

// Колонка 2,3
КвалификаторЧисло_10_2 = Новый КвалификаторыЧисла(12,2);
Массив.Добавить(Тип("Число"));
ТипЧисло_10_2 = Новый ОписаниеТипов(Массив,,,КвалификаторЧисло_10_2);
ТЧ.Колонки.Добавить("ЦенаЗакупочная", ТипЧисло_10_2, "Цена закупочная");
ТЧ.Колонки.Добавить("ЦенаРозничная", ТипЧисло_10_2, "Цена розничная");

Для ИНД = 0 по 4 Цикл
СтрокаТЧ = ТЧ.Добавить();
СтрокаТЧ.Товар = Справочники.Номенклатура.ПустаяСсылка();
СтрокаТЧ.ЦенаЗакупочная = 90 + ИНД * 10;
СтрокаТЧ.ЦенаРозничная = 150 + ИНД * 10;
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЧ_Источник.Товар,
| ТЧ_Источник.ЦенаЗакупочная,
| ТЧ_Источник.ЦенаРозничная
|ПОМЕСТИТЬ Выборка
|ИЗ
| &ТЧ_Источник КАК ТЧ_Источник
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Выборка.Товар,
| Выборка.ЦенаЗакупочная,
| Выборка.ЦенаРозничная
|ИЗ
| Выборка КАК Выборка
|ГДЕ
| Выборка.ЦенаЗакупочная >= 110";

Запрос.УстановитьПараметр("ТЧ_Источник", ТЧ);
Результат = Запрос.Выполнить();
       
        ТЧ = Результат.Выгрузить();

ТД=Новый ТабличныйДокумент;
ТД.ТолькоПросмотр = Истина;
ОбластьШапки=ТД.ПолучитьОбласть(1,1,1,Результат.Колонки.Количество());
Для Счетчик=1 по Результат.Колонки.Количество() Цикл
   ОбластьЗаполнения=ОбластьШапки.Область(1,Счетчик,1,Счетчик);
   Колонка = Результат.Колонки[Счетчик-1];
   ОбластьЗаполнения.Параметр=Колонка.Имя;
   ОбластьЗаполнения.Заполнение=ТипЗаполненияОбластиТабличногоДокумента.Параметр;
КонецЦикла;
Для Счетчик=1 по Результат.Колонки.Количество() Цикл
   Колонка = Результат.Колонки[Счетчик-1];
   ОбластьШапки.Параметры[Колонка.Имя] = Колонка.Имя;
КонецЦикла;
ТД.Вывести(ОбластьШапки);

ОбластьВывода=ТД.ПолучитьОбласть(2,1,2,Результат.Колонки.Количество());
Для Счетчик=1 по Результат.Колонки.Количество() Цикл
   ОбластьЗаполнения=ОбластьВывода.Область(1,Счетчик,1,Счетчик);
   Колонка = Результат.Колонки[Счетчик-1];
   ОбластьЗаполнения.Параметр=Колонка.Имя;
   ОбластьЗаполнения.ПараметрРасшифровки = Колонка.Имя;
   ОбластьЗаполнения.Заполнение=ТипЗаполненияОбластиТабличногоДокумента.Параметр;
КонецЦикла;

Выборка=Результат.Выбрать();
Пока Выборка.Следующий() Цикл
   ОбластьВывода.Параметры.Заполнить(Выборка);
   ТД.Вывести(ОбластьВывода);
КонецЦикла;
ТД.Показать();

КонецПроцедуры

ВыполнитьЭто();

На, учись.

Mucmep_Mapuo

Спасибо преогромнейшее. Действительно, ничего сложного. Это я больше сам для себя усложнил задачу. И ведь почти доделал. Осталось только придумать как удалять строки по условию.
Процедура Задание2Нажатие(Элемент)
//Создание всех Колонок
ТабличноеПоле1.Колонки.Очистить();
ТабличноеПоле1.Колонки.Добавить("Наименование", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Масс = Справочники.ТипыЦенНоменклатуры.Выбрать();
Пока Масс.Следующий() Цикл
ТабличноеПоле1.Колонки.Добавить(Масс.Наименование);
КонецЦикла;
   
Наименов = Справочники.Номенклатура.Выбрать();
Пока Наименов.Следующий() Цикл
НоваяСтрока = ТабличноеПоле1.Добавить() ;
НоваяСтрока.Наименование = Наименов.Ссылка;
Масс = Справочники.ТипыЦенНоменклатуры.Выбрать();
Пока Масс.Следующий() Цикл
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТипЦены",Масс.Наименование);
Запрос.УстановитьПараметр("НаименованиеНум",Наименов.Наименование);
Запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатуры.Цена КАК Цена ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ГДЕ ЦеныНоменклатуры.ТипЦен.Наименование = &ТипЦены
| И ЦеныНоменклатуры.Номенклатура.Наименование = &НаименованиеНум
|
|";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Цена = Выборка.Цена;
КонецЦикла;
НоваяСтрока[Масс.Наименование] = Цена;
КонецЦикла;
КонецЦикла;

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();


КонецПроцедуры

denk32

Цитата: Mucmep_Mapuo от 28 фев 2018, 09:12
Спасибо преогромнейшее. Действительно, ничего сложного. Это я больше сам для себя усложнил задачу. И ведь почти доделал. Осталось только придумать как удалять строки по условию.
Процедура Задание2Нажатие(Элемент)
//Создание всех Колонок
ТабличноеПоле1.Колонки.Очистить();
ТабличноеПоле1.Колонки.Добавить("Наименование", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Масс = Справочники.ТипыЦенНоменклатуры.Выбрать();
Пока Масс.Следующий() Цикл
ТабличноеПоле1.Колонки.Добавить(Масс.Наименование);
КонецЦикла;
   
Наименов = Справочники.Номенклатура.Выбрать();
Пока Наименов.Следующий() Цикл
НоваяСтрока = ТабличноеПоле1.Добавить() ;
НоваяСтрока.Наименование = Наименов.Ссылка;
Масс = Справочники.ТипыЦенНоменклатуры.Выбрать();
Пока Масс.Следующий() Цикл
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТипЦены",Масс.Наименование);
Запрос.УстановитьПараметр("НаименованиеНум",Наименов.Наименование);
Запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатуры.Цена КАК Цена ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ГДЕ ЦеныНоменклатуры.ТипЦен.Наименование = &ТипЦены
| И ЦеныНоменклатуры.Номенклатура.Наименование = &НаименованиеНум
|
|";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Цена = Выборка.Цена;
КонецЦикла;
НоваяСтрока[Масс.Наименование] = Цена;
КонецЦикла;
КонецЦикла;

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();


КонецПроцедуры


А можно узнать все задание??? И на какой конфигурации это все делается?

Mucmep_Mapuo

Да, Конечно. Делается все на УТ 10.3. Все задание во вложении.
Делал, исходя из того, что в справочник мог быть добавлен еще один тип цены. Чтобы не меняя ничего в обработке он подтягивался в таблицу.

denk32

Цитата: Mucmep_Mapuo от 28 фев 2018, 09:25
Да, Конечно. Делается все на УТ 10.3. Все задание во вложении.
Делал, исходя из того, что в справочник мог быть добавлен еще один тип цены. Чтобы не меняя ничего в обработке он подтягивался в таблицу.

Можно сделать как то так:
Сч = 0;

    Пока Сч < Таблица1.Количество() Цикл
        Строка = Таблица1.Получить(Сч);
        Если Строка.ЦенаЗакупочная < 110 Тогда
            Таблица1.Удалить(Строка);
        Иначе
            Сч = Сч + 1;
        КонецЕсли;
    КонецЦикла;

AIFrame

Цитата: denk32 от 28 фев 2018, 09:46Можно сделать как то так:
А на таблице в 2000 строк или больше будем сидеть и курить?
Если условие однозначное - выгрузить в массив строки через структуру отбора и удалить по массиву.
Если неоднозначное (как тут), запрос во временную таблицу.

Теги:

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

Рейтинг@Mail.ru

Поиск