Пустые значения в регистре сведений

1. Flipp 21.09.18 08:23 Сейчас в теме
Подскажите,пожалуйста. Есть регистр сведений НастройкаВебСерверов который содержит данные:измерение - организация (тип СправочникСсылка.Контрагенты) и ресурс- вебсервер (строка). Нужно при открытии формы выводить данные. Если в РС нет ни одной записи об юрлице то на форме заполняем колонку: организация(наименование юр.лица) и вебсервер (тип строка) ("НЕ настроен"). Если запись в регистре есть, то в колонке вебсервер (настроено). Пробую вот так, но на форме пусто. Подскажите где ошибка.

Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.Наименование,
| НастройкаВебСерверовСрезПоследних.Период,
| НастройкаВебСерверовСрезПоследних.Организация,
| НастройкаВебСерверовСрезПоследних.Рабочая,
| НастройкаВебСерверовСрезПоследних.ВебСервер
|ИЗ
| РегистрСведений.НастройкаВебСерверов.СрезПоследних КАК НастройкаВебСерверовСрезПоследних
| ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО НастройкаВебСерверовСрезПоследних.Организация = Контрагенты.Ссылка
|ГДЕ
| Контрагенты.Ссылка В ИЕРАРХИИ(&ЮрЛица)
| И Контрагенты.ЭтоГруппа = ЛОЖЬ";
// | И НастройкаВебСерверовСрезПоследних.Организация = &ПустаяС";

Запрос.УстановитьПараметр("ЮрЛица", Справочники.Контрагенты.НайтиПоКоду("У00000127"));
//Запрос.УстановитьПараметр("ПустаяС",Справочники.Контрагенты.ПустаяСсылка());

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


НовСтрока = ЭлементыФормы.ТЗ.ТекущиеДанные;

//Если в РС нет записи об этом юрлице то добавим строку

НаборЗаписей=РегистрыСведений.НастройкаВебСерверов.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТзРег = НаборЗаписей.Выгрузить();

Для Каждого Регистр Из ТзРег Цикл
Если НЕ ЗначениеЗаполнено(Регистр.Организация) Тогда

НовСтрока = ТЗ.Добавить();
НовСтрока.Организация = Регистр.Организация;
КонецЕсли;
КонецЦикла;
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. ganjaman 21.09.18 14:55 Сейчас в теме
(1), мрак какой то, задание одно, в коде совсем другим занимаемся
Запрос = Новый Запрос; 
Запрос.Текст ="ВЫБРАТЬ 
|	Контрагенты.Ссылка, 
|	Контрагенты.Наименование, 
|	НастройкаВебСерверовСрезПоследних.Период, 
|	НастройкаВебСерверовСрезПоследних.Организация, 
|	НастройкаВебСерверовСрезПоследних.Рабочая, 
|	НастройкаВебСерверовСрезПоследних.ВебСервер
|ИЗ 
|	Справочник.Контрагенты КАК Контрагенты
|	ЛЕВОЕ СОЕДИНЕНИЕ  РегистрСведений.НастройкаВебСерверов.СрезПоследних КАК НастройкаВебСерверовСрезПоследних
|	ПО Контрагенты.Ссылка = НастройкаВебСерверовСрезПоследних.Организация
|ГДЕ 
|	Контрагенты.Ссылка В ИЕРАРХИИ(&ЮрЛица) 
|	И НЕ Контрагенты.ЭтоГруппа"; 

Запрос.УстановитьПараметр("ЮрЛица", Справочники.Контрагенты.НайтиПоКоду("У00000127")); 

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

НЗ=РегистрыСведений.НастройкаВебСерверов.СоздатьНаборЗаписей();

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

почти рабочий вариант

ну и привязывать конфигурацию к данным это не есть хорошо, разве что это разовая обработка
+
2. AQR84 37 21.09.18 08:38 Сейчас в теме
Если в регистре нет записей то в цикл не зайдет, правильно
Если ТзРег .Количество()=0 Тогда
НовСтрока = ТЗ.Добавить();
НовСтрока.Организация = Регистр.Организация;
КонецЕсли;
КонецЦикла;
+
3. Flipp 21.09.18 08:46 Сейчас в теме
(2)
Если ТзРег .Количество()=0 Тогда
НовСтрока = ТЗ.Добавить();
НовСтрока.Организация = Регистр.Организация;
КонецЕсли;
КонецЦикла;

Все равно пусто на форме
+
4. AQR84 37 21.09.18 08:59 Сейчас в теме
(3)
НовСтрока.Организация = Регистр.Организация;


Ошибку должно было выдать, переменная Регистр то неопределена

Обновить данные формы потом делается?
+
5. starjevschik 21.09.18 08:59 Сейчас в теме
Для начала надо написать правильно запрос
Выбрать блабла
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБлаБла.СрезПоследних КАК СрезПоследних


Дальше читаем задание
Если в РС нет ни одной записи об юрлице то на форме заполняем колонку

в задании ничего не сказано о том, что нам нужно что-то писать в регистр, если там нет записей по контрагенту. Надо вывести на форму - ну вот и надо выводить. Из регистра уже все получили.
Как именно выводить, это зависит от того, что за форма и как на ней устроен список (упр-не упр и что там за список, динамический, ТЗ или еще что).
Если у нас упр форма и динамический список, то надо сразу писать запрос динамического списка и там все получать....
Как это бывает очень часто, невнятная постановка задачи и отсутствие достаточных входных данных приводят к проблемам в решении.
alex-l19041; +1
6. Flipp 21.09.18 09:02 Сейчас в теме
(5)Нет форма обычная, таблица значений, две колонки. то есть вот этот кусок кода
НаборЗаписей=РегистрыСведений.НастройкаВебСерверов.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТзРег = НаборЗаписей.Выгрузить();

вообще не нужен!?
+
7. starjevschik 21.09.18 09:08 Сейчас в теме
(6) вообще не нужен. Тут скорее нужен небольшой курс по программированию, причем лучше не 1с, а какой-нибудь нормальный язык, и по базам данных.

Выбрать
Контрагенты.Ссылка,
ЕстьNull(Регистр.Сервер, ""Ничего нет в регистре"") КАК ВРегистре
Из 
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ Регистр.СрезПоследних КАК Регистр

Выборка = Запрос.Выполнить.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ТаблицаНаформе.Добавить(), Выборка);
КонецЦикла;
Показать
EVKash; +1
8. Flipp 21.09.18 09:48 Сейчас в теме
(7)В итоге он мне выдал одну запись, которая есть в регистре сведений, а мне нужно было получить организации (из опр.папки) по которым Нет записей в регистре.
+
9. catena 110 21.09.18 09:56 Сейчас в теме
(8)Не может быть, в таком виде, как написано в (7) запрос делает выборку как раз по всему справочнику. Показывайте, что наадаптировали.
+
10. catena 110 21.09.18 09:57 Сейчас в теме
+(9)Только, конечно, в запросе (7) условий соединения не хватает.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот