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

Не заполняется таблица

Автор sali, 15 дек 2025, 12:50

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

sali

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

&НаСервере
Процедура СоздатьКолонкиТаблиц()       

ДобавляемыеРеквизиты = Новый Массив;

НовыйРеквизит = Новый РеквизитФормы("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "Товары", "Номенклатура");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);   

НовыйРеквизит = Новый РеквизитФормы("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "Остатки", "Номенклатура");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);

НовыйРеквизит = Новый РеквизитФормы("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "Цены", "Номенклатура");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);

Если ЭтоБП Тогда
НовыйРеквизит = Новый РеквизитФормы("ТипЦены", Новый ОписаниеТипов("СправочникСсылка.ТипыЦенНоменклатуры"), "Цены", "Тип цены");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ИначеЕсли ЭтоУНФ Тогда
НовыйРеквизит = Новый РеквизитФормы("ТипЦены", Новый ОписаниеТипов("СправочникСсылка.ВидыЦен"), "Цены", "Вид цены");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
КонецЕсли;
// Товары.Склады/СтруктурныеЕдиницы.
Если ЭтоБП Тогда
НовыйРеквизит = Новый РеквизитФормы("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"), "Остатки", "Склад");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ИначеЕсли ЭтоУНФ Тогда
НовыйРеквизит = Новый РеквизитФормы("Склад", Новый ОписаниеТипов("СправочникСсылка.СтруктурныеЕдиницы"), "Остатки", "Склад");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
КонецЕсли;

ЭтотОбъект.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

// Таблица Товары.

// НоменклатураТовары
НовыйЭлемент = Элементы.Вставить("ТоварыНоменклатура", Тип("ПолеФормы"), Элементы.Товары);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;     
НовыйЭлемент.ПутьКДанным = "Товары.Номенклатура";   

// НоменклатураЦены
НовыйЭлемент = Элементы.Вставить("ЦеныНоменклатура", Тип("ПолеФормы"), Элементы.Цены);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;     
НовыйЭлемент.ПутьКДанным = "Цены.Номенклатура";
// ТипЦены.
НовыйЭлемент = Элементы.Вставить("ТоварыТипЦены", Тип("ПолеФормы"), Элементы.Цены);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;     
НовыйЭлемент.ПутьКДанным = "Цены.ТипЦены";

// НоменклатураОстатки
НовыйЭлемент = Элементы.Вставить("ОстаткиНоменклатура", Тип("ПолеФормы"), Элементы.Остатки);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;     
НовыйЭлемент.ПутьКДанным = "Остатки.Номенклатура";

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

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

&НаКлиенте
Асинх Процедура ЗаполнитьТаблицуОтбора(Команда)

Если Товары.Количество() > 0
ИЛИ Остатки.Количество() > 0
ИЛИ Цены.Количество() > 0 Тогда   

ТекстВопроса = НСтр("ru = 'Будет перезаполнена табличная часть. Продолжить выполнение операции?'");
Ответ = Ждать ВопросАсинх(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60);

Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;

Товары.Очистить();
Остатки.Очистить();
Цены.Очистить();     
КонецЕсли;

ЗаполнитьТаблицуПоОтборуНаСервере();

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

&НаСервере
Процедура ЗаполнитьТаблицуПоОтборуНаСервере()

ИмяМакета = ПолучитьИмяМакета(); 

СхемаКомпоновкиДанных = обработки.ЭДОН_РабочееМесто.ПолучитьМакет(ИмяМакета);
//СхемаКомпоновкиДанных = РегистрыСведений.ЭДОН_ПараметрыРегламентныхЗаданий.ПолучитьМакет(ИмяМакета);

КомпоновщикНастроек = ПолучитьКомпоновщикНастроек();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
  МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

Если Элементы.ГруппаВыгрузкиИнформацииОТоварах.ТекущаяСтраница = Элементы.СтраницаТовары Тогда
ТаблицаРезультат = Товары.Выгрузить();
ИначеЕсли Элементы.ГруппаВыгрузкиИнформацииОТоварах.ТекущаяСтраница = Элементы.СтраницаОстатки Тогда
ТаблицаРезультат = Остатки.Выгрузить();
ИначеЕсли Элементы.ГруппаВыгрузкиИнформацииОТоварах.ТекущаяСтраница = Элементы.СтраницеЦены тОГДА
ТаблицаРезультат = Цены.Выгрузить();
КонецЕсли;

ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Если Элементы.ГруппаВыгрузкиИнформацииОТоварах.ТекущаяСтраница = Элементы.СтраницаТовары Тогда
Товары.Загрузить(ТаблицаРезультат);
ИначеЕсли Элементы.ГруппаВыгрузкиИнформацииОТоварах.ТекущаяСтраница = Элементы.СтраницаОстатки Тогда
Остатки.Загрузить(ТаблицаРезультат);
ИначеЕсли Элементы.ГруппаВыгрузкиИнформацииОТоварах.ТекущаяСтраница = Элементы.СтраницеЦены Тогда 
Цены.Загрузить(ТаблицаРезультат);
КонецЕсли;

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

Максим75

sali, а само скд что выводит? может там нет остатка на складе?

sali

Максим75, скд выводит
именно что беру рабочий запрос который все выводит, хочу заполнить новую таблицу (просто создана для виду что будет выгружаться на сервер) везде все заполняется кроме этих долбанных остатков. выеживается блин

Максим75

sali, а в скд остаток на складе именно так называется, может у поля другой алиас?

sali

там два поля , оба из которых есть в скд

sali

вот серьезно одинаковые таблицы (поля числовые создаются на форме), запросы рабочие, в консоли работают, в выгрузке регламента работают, а простую таблицу не заполняет

antoneus

Ну, данные-то есть. Что в ТаблицаРезультат после ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных)?

sali

antoneus, данные по складу и номенклатуре заполняются, числовые значения не заполняются
там нули запрос выдает, почему-то, но даже если остаток - 0 должен ведь отобразиться, или нет?

antoneus

По умолчанию в числовой колонке не отображается, только если формат задать.

sali

antoneus, у меня дальше стоит таблица такая же (с одним только числовым полем -Цена), поле этой таблицы было просто создано и всё больше никаких махинаций с ним.
создал на форме реквизит дал ему имя Цены, тип - таблица значений, создал в этой таблице реквизит Цена, тип число(15,2), программно создал два поля для этой же таблицы - Номенклатура, Тип цены (потому что в расширение нельзя добавлять спр из основной конфигурации, а тип ссылки задать надо)
выполняется код , берется компоновщик настроек, выгружается ТЗ Цены, фаршируется в процессоре, загружается обратно в ТЗ Цены


почему-то как бы я не менял запрос выборки данных, на остатках он выдает нули, когда там далеко не нули . что за странности?

Теги:

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

Рейтинг@Mail.ru

Поиск