Подскажите,пожалуйста. Есть регистр сведений НастройкаВебСерверов который содержит данные:измерение - организация (тип СправочникСсылка.Контрагенты) и ресурс- вебсервер (строка). Нужно при открытии формы выводить данные. Если в РС нет ни одной записи об юрлице то на форме заполняем колонку: организация(наименование юр.лица) и вебсервер (тип строка) ("НЕ настроен"). Если запись в регистре есть, то в колонке вебсервер (настроено). Пробую вот так, но на форме пусто. Подскажите где ошибка.
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.Наименование,
| НастройкаВебСерверовСрезПоследних.Период,
| НастройкаВебСерверовСрезПоследних.Организация,
| НастройкаВебСерверовСрезПоследних.Рабочая,
| НастройкаВебСерверовСрезПоследних.ВебСервер
|ИЗ
| РегистрСведений.НастройкаВебСерверов.СрезПоследних КАК НастройкаВебСерверовСрезПоследних
| ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО НастройкаВебСерверовСрезПоследних.Организация = Контрагенты.Ссылка
|ГДЕ
| Контрагенты.Ссылка В ИЕРАРХИИ(&ЮрЛица)
| И Контрагенты.ЭтоГруппа = ЛОЖЬ";
// | И НастройкаВебСерверовСрезПоследних.Организация = &ПустаяС";
Запрос.УстановитьПараметр("ЮрЛица", Справочники.Контрагенты.НайтиПоКоду("У00000127"));
//Запрос.УстановитьПараметр("ПустаяС",Справочники.Контрагенты.ПустаяСсылка());
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
НовСтрока = ЭлементыФормы.ТЗ.ТекущиеДанные;
//Если в РС нет записи об этом юрлице то добавим строку
НаборЗаписей=РегистрыСведений.НастройкаВебСерверов.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТзРег = НаборЗаписей.Выгрузить();
Для Каждого Регистр Из ТзРег Цикл
Если НЕ ЗначениеЗаполнено(Регистр.Организация) Тогда
НовСтрока = ТЗ.Добавить();
НовСтрока.Организация = Регистр.Организация;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.Наименование,
| НастройкаВебСерверовСрезПоследних.Период,
| НастройкаВебСерверовСрезПоследних.Организация,
| НастройкаВебСерверовСрезПоследних.Рабочая,
| НастройкаВебСерверовСрезПоследних.ВебСервер
|ИЗ
| РегистрСведений.НастройкаВебСерверов.СрезПоследних КАК НастройкаВебСерверовСрезПоследних
| ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО НастройкаВебСерверовСрезПоследних.Организация = Контрагенты.Ссылка
|ГДЕ
| Контрагенты.Ссылка В ИЕРАРХИИ(&ЮрЛица)
| И Контрагенты.ЭтоГруппа = ЛОЖЬ";
// | И НастройкаВебСерверовСрезПоследних.Организация = &ПустаяС";
Запрос.УстановитьПараметр("ЮрЛица", Справочники.Контрагенты.НайтиПоКоду("У00000127"));
//Запрос.УстановитьПараметр("ПустаяС",Справочники.Контрагенты.ПустаяСсылка());
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
НовСтрока = ЭлементыФормы.ТЗ.ТекущиеДанные;
//Если в РС нет записи об этом юрлице то добавим строку
НаборЗаписей=РегистрыСведений.НастройкаВебСерверов.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТзРег = НаборЗаписей.Выгрузить();
Для Каждого Регистр Из ТзРег Цикл
Если НЕ ЗначениеЗаполнено(Регистр.Организация) Тогда
НовСтрока = ТЗ.Добавить();
НовСтрока.Организация = Регистр.Организация;
КонецЕсли;
КонецЦикла;
По теме из базы знаний
- Удаление пустых значений в регистрах сведений: Значения дополнительных прав пользователей и Настройки пользователей
- Регистры сведений 1С. Как это устроено.
- Значения по умолчанию для пользователей (Расширение)
- Регистры сведений для аналитиков
- Нюансы Конвертации данных 2.1, или как небольшая задача привела нас к восстановлению регистра сведений из нескольких миллионов строк
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1), мрак какой то, задание одно, в коде совсем другим занимаемся
почти рабочий вариант
ну и привязывать конфигурацию к данным это не есть хорошо, разве что это разовая обработка
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.Наименование,
| НастройкаВебСерверовСрезПоследних.Период,
| НастройкаВебСерверовСрезПоследних.Организация,
| НастройкаВебСерверовСрезПоследних.Рабочая,
| НастройкаВебСерверовСрезПоследних.ВебСервер
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкаВебСерверов.СрезПоследних КАК НастройкаВебСерверовСрезПоследних
| ПО Контрагенты.Ссылка = НастройкаВебСерверовСрезПоследних.Организация
|ГДЕ
| Контрагенты.Ссылка В ИЕРАРХИИ(&ЮрЛица)
| И НЕ Контрагенты.ЭтоГруппа";
Запрос.УстановитьПараметр("ЮрЛица", Справочники.Контрагенты.НайтиПоКоду("У00000127"));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
НЗ=РегистрыСведений.НастройкаВебСерверов.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ТаблицаНаформе.Добавить(), Выборка);
// если таки надо записать в регистр
Если Выборка.Организация = Неопределено Тогда
З = НЗ.Добавить();
//тут заполнили все что надо
КонецЕсли;
КонецЦикла;
НЗ.Записать();
Показатьпочти рабочий вариант
ну и привязывать конфигурацию к данным это не есть хорошо, разве что это разовая обработка
Если в регистре нет записей то в цикл не зайдет, правильно
Если ТзРег .Количество()=0 Тогда
НовСтрока = ТЗ.Добавить();
НовСтрока.Организация = Регистр.Организация;
КонецЕсли;
КонецЦикла;
Если ТзРег .Количество()=0 Тогда
НовСтрока = ТЗ.Добавить();
НовСтрока.Организация = Регистр.Организация;
КонецЕсли;
КонецЦикла;
Для начала надо написать правильно запрос
Дальше читаем задание
в задании ничего не сказано о том, что нам нужно что-то писать в регистр, если там нет записей по контрагенту. Надо вывести на форму - ну вот и надо выводить. Из регистра уже все получили.
Как именно выводить, это зависит от того, что за форма и как на ней устроен список (упр-не упр и что там за список, динамический, ТЗ или еще что).
Если у нас упр форма и динамический список, то надо сразу писать запрос динамического списка и там все получать....
Как это бывает очень часто, невнятная постановка задачи и отсутствие достаточных входных данных приводят к проблемам в решении.
Выбрать блабла
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБлаБла.СрезПоследних КАК СрезПоследних
Дальше читаем задание
Если в РС нет ни одной записи об юрлице то на форме заполняем колонку
в задании ничего не сказано о том, что нам нужно что-то писать в регистр, если там нет записей по контрагенту. Надо вывести на форму - ну вот и надо выводить. Из регистра уже все получили.
Как именно выводить, это зависит от того, что за форма и как на ней устроен список (упр-не упр и что там за список, динамический, ТЗ или еще что).
Если у нас упр форма и динамический список, то надо сразу писать запрос динамического списка и там все получать....
Как это бывает очень часто, невнятная постановка задачи и отсутствие достаточных входных данных приводят к проблемам в решении.
(5)Нет форма обычная, таблица значений, две колонки. то есть вот этот кусок кода
НаборЗаписей=РегистрыСведений.НастройкаВебСерверов.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТзРег = НаборЗаписей.Выгрузить();
вообще не нужен!?
НаборЗаписей=РегистрыСведений.НастройкаВебСерверов.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТзРег = НаборЗаписей.Выгрузить();
вообще не нужен!?
(6) вообще не нужен. Тут скорее нужен небольшой курс по программированию, причем лучше не 1с, а какой-нибудь нормальный язык, и по базам данных.
Выбрать
Контрагенты.Ссылка,
ЕстьNull(Регистр.Сервер, ""Ничего нет в регистре"") КАК ВРегистре
Из
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ Регистр.СрезПоследних КАК Регистр
Выборка = Запрос.Выполнить.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ТаблицаНаформе.Добавить(), Выборка);
КонецЦикла;
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот