powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Проверка заполнения поля
23 сообщений из 23, страница 1 из 1
Проверка заполнения поля
    #38360492
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Есть процедура проведения документа "ПланированиеОказанияУслуг" . Требуется в обработку проведения этого документа добавить проверку того, чтобы поле СервисМенеджер и ОтветственныйМенеджер были обязательно заполненными. В табличной части документа поля ОтветственныйМенеджер нет. Поэтому в обработку проведения добавил запрос. Вот получившийся текст (вместе с запросом) обработки проведения.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
Процедура ОбработкаПроведения(Отказ, Режим)
	//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

	// регистр ПланированиеОказаниеУслуг
	
	  	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ПланированиеОказанияУслуг.ОтветственныйМенеджер КАК ОтветственныйМенеджер
		|ИЗ
		|	Документ.ПланированиеОказанияУслуг КАК ПланированиеОказанияУслуг
		|ГДЕ
		|	ПланированиеОказанияУслуг.Ссылка = &Ссылка";

	Запрос.УстановитьПараметр("Ссылка", Ссылка);

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

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

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

	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

	
	
	Движения.ПланированиеОказаниеУслуг.Записывать = Истина;
	Для Каждого ТекСтрокаСостав Из Состав Цикл
		Движение = Движения.ПланированиеОказаниеУслуг.Добавить();
		Движение.Период = Дата;
		Движение.СервисМенеджер = ТекСтрокаСостав.СервисМенеджер; //также нужно проверить, что и это поле не пустое 
		Движение.Услуга = ТекСтрокаСостав.Услуга;
		Движение.Контрагент = ТекСтрокаСостав.Контрагент;
		Движение.ДокументОснование = ТекСтрокаСостав.ДокументОснование;
		Движение.ПланируемаяДатаВыполнения = ТекСтрокаСостав.ПланируемаяДатаВыполнения;
	КонецЦикла;

	//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры


Как я понимаю, после запроса необходимо проверить содержание поля ОтветственныйМенеджер . Если значение этого поля NULL, тогда нужно отказать в проведении документа и вывести пользователю сообщение.
Код: sql
1.
2.
3.
4.
5.
Если Запрос.Параметры.Ссылка.ОтветственныйМенеджер  Тогда
	
		//здесь мне нужно проверить, что поле ОтветственныйМенеджер не пустое
	
	КонецЕсли; 


Поле СервисМенеджер присутствует в табличной части документа. Если его значение NULL, то также требуется отказать в проведении документа и вывести сообщение пользователю.
Код: sql
1.
Движение.СервисМенеджер = ТекСтрокаСостав.СервисМенеджер; //также нужно проверить, что и это поле не пустое


Спасибо!
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38360559
deadng
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexander4321,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Если Не ЗначениеЗаполнено(ОтветственныйМенеджер) Тогда
    // Выводим сообщение пользователю
    Отказ = Истина;
КонецЕсли;
...
Для Каждого ТекСтрокаСостав Из Состав Цикл
    Если Не ЗначениеЗаполнено(ТекСтрокаСостав.СервисМенеджер) Тогда
        // Выводим сообщение пользователю
        Отказ = Истина;
        Прервать;
КонецЕсли;
...
Если Отказ Тогда
    Возврат;
КонецЕсли;
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38360628
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
deadng,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Процедура ОбработкаПроведения(Отказ, Режим)
Если Не ЗначениеЗаполнено(ОтветственныйМенеджер) Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не выбран ответственный менеджер";
		Сообщение.Сообщить();
		Отказ = Истина;
    КонецЕсли;
	
	Движения.ПланированиеОказаниеУслуг.Записывать = Истина;
	Для Каждого ТекСтрокаСостав Из Состав Цикл
		Если Не ЗначениеЗаполнено(ТекСтрокаСостав.СервисМенеджер) Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не выбран СервисМенеджер";
		Сообщение.Сообщить();
        Отказ = Истина;
        Прервать;
		КонецЕсли;
		Движение = Движения.ПланированиеОказаниеУслуг.Добавить();
		Движение.Период = Дата;
		Движение.СервисМенеджер = ТекСтрокаСостав.СервисМенеджер;
		Движение.Услуга = ТекСтрокаСостав.Услуга;
		Движение.Контрагент = ТекСтрокаСостав.Контрагент;
		Движение.ДокументОснование = ТекСтрокаСостав.ДокументОснование;
		Движение.ПланируемаяДатаВыполнения = ТекСтрокаСостав.ПланируемаяДатаВыполнения;
		
	КонецЦикла;
	
	Если Отказ Тогда
           Возврат;
    КонецЕсли;
КонецПроцедуры



Так все работает. Спасибо!
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361054
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В документе «ОказаниеУслугСервисМенеджером» требуется добавить команду "Заполнить сегодняшними" - при нажатии на кнопку надо заполнять табличную часть услугами, запланированными на сервис-менеджера, указанного в шапке документа, теми заданиями, которые запланированы на сегодняшний день и еще не выполнены.
Добавил такую команду, составил запрос в модуле команды:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
&НаКлиенте
Процедура ЗаполнитьСегодняшними(Команда)
	ЗаданияНаСегодня();
КонецПроцедуры


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

	Запрос.УстановитьПараметр("НаСегодня", ДатСег);
	Запрос.УстановитьПараметр("СервисМенеджер", СервисМенеджер);

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

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

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

	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

	
КонецПроцедуры // ЗаданияНаСегодня()



Строку запроса для получения даты выполнения услуги
Код: sql
1.
ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения

включил с тем расчетом, что можно проверить ее на соответствие NULL: если не NULL, то услуга была выполнена, соответственно данную услугу не нужно выводить в результате выполнения запроса. Проверку на NULL нужно в запросе делать или в обработке результата запроса?

Также возникли вопросы по параметрам запроса.
Так как список нужно выводить на сегодня, то ввел соответствующий параметр. Значением параметра установил значение переменной ДатСег , которая получает значение текущей дата (во всяком случае нашел в интернете такую функцию):
Код: sql
1.
2.
3.
ДатСег = РабочаяДата();
.............
Запрос.УстановитьПараметр("НаСегодня", ДатСег);



Вторым параметром является выбранный в шапке документа менеджер
Код: sql
1.
Запрос.УстановитьПараметр("СервисМенеджер", СервисМенеджер);


Как правильно записать, чтобы СервисМенеджер выбирался из шапки документа?
Спасибо!
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361091
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер,
| ПланированиеОказаниеУслугСрезПоследних.Услуга,
| ПланированиеОказаниеУслугСрезПоследних.Контрагент,
| ПланированиеОказаниеУслугСрезПоследних.ДокументОснование,
| ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения,
| ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения
|ИЗ
| РегистрСведений.ПланированиеОказаниеУслуг.СрезПоследних(&НаСегодня, ) КАК ПланированиеОказаниеУслугСрезПоследних
|ГДЕ
| ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер = &СервисМенеджер";

и

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

могут дать разные результаты - уверены что №1?

>ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения включил с тем расчетом, что можно проверить ее на соответствие NULL

null в ней откуда возьмется? результат запроса пустой?
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361132
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний выдох ГПЖnull в ней откуда возьмется? результат запроса пустой?
Мне нужно вывести запланированные, но еще не исполненные услуги. Соответственно, у исполненных услуг РеальнаяДатаВыполнения будет заполнена, а у только запланированных не заполнена.
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361158
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний выдох ГПЖ,

по поводу вариантов запросов...
При запуске конфигурации выдает ошибку
Код: sql
1.
2.
3.
4.
{Документ.ОказаниеУслугСервисМенеджером.Форма.ФормаДокумента(43,46)}: Переменная не определена (СервисМенеджер)
	Запрос.УстановитьПараметр("СервисМенеджер", <<?>>СервисМенеджер); (Проверка: Сервер)
{Документ.ОказаниеУслугСервисМенеджером.Форма.ФормаДокумента(14,11)}: Процедура или функция с указанным именем не определена (РабочаяДата)
	ДатСег = <<?>>РабочаяДата(); (Проверка: Сервер)



Вот мне и нужно передать одним параметром текущую дату, а вторым - выбранного в шапке документа менеджера.
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361166
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,
РеальнаяДатаВыполнения будет заполнена, а у только запланированных не заполнена.
Незаполненная дата имеет значение, а NULL - это, грубо говоря, отсутствие какого-либо значения. И за пределами запросов null-ами не нужно пользоваться вообще.
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361179
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,
{Документ.ОказаниеУслугСервисМенеджером.Форма.ФормаДокумента(43,46)}: Переменная не определена (СервисМенеджер)И не пихайте запросы в форму документа, все что не связано с интерактивными действиями, кладите в модуль объекта или менеджера.
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361194
deadng
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexander4321Вот мне и нужно передать одним параметром текущую дату, а вторым - выбранного в шапке документа менеджера.
Ну так передавай :) Используй ТекущаяДата(). РабочаяДата() такой функции нет. Есть Свойство "РабочаяДата", которая может не использоваться в зависимости от настроек конфы (ИспользованиеРабочейДаты).
У тебя же в шапке ОтветственныйМенеджер, а СервисныйМенеджер в ТЧ? Какой тебе нужен в итоге? Если второй то делай соединение с ТЧ в запросе.
ПС: научись пользоваться синтакс-помощником. Сильно поможет когда не будет интернета :)
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361202
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321Последний выдох ГПЖnull в ней откуда возьмется? результат запроса пустой?
Мне нужно вывести запланированные, но еще не исполненные услуги. Соответственно, у исполненных услуг РеальнаяДатаВыполнения будет заполнена, а у только запланированных не заполнена.

вы путаете null, пустое значение определенного типа и неопределено... учите мат. часть от 1с
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361204
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321Последний выдох ГПЖ,

по поводу вариантов запросов...
При запуске конфигурации выдает ошибку
Код: sql
1.
2.
3.
4.
{Документ.ОказаниеУслугСервисМенеджером.Форма.ФормаДокумента(43,46)}: Переменная не определена (СервисМенеджер)
	Запрос.УстановитьПараметр("СервисМенеджер", <<?>>СервисМенеджер); (Проверка: Сервер)
{Документ.ОказаниеУслугСервисМенеджером.Форма.ФормаДокумента(14,11)}: Процедура или функция с указанным именем не определена (РабочаяДата)
	ДатСег = <<?>>РабочаяДата(); (Проверка: Сервер)



Вот мне и нужно передать одним параметром текущую дату, а вторым - выбранного в шапке документа менеджера.

курите СП, там четко написано что и на какой стороне видно, раз уж сели писать в клиент-серверном варианте
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361215
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,
Вот мне и нужно передать одним параметром текущую датуПередавайте текущую, ТекущаяДата(). В управляемых формах с рабочей датой лучше не связываться. Если СервисМенеджер это реквизит вашего документа, то в форме его передавайте как Объект.СервисМенеджер, а в модуле объекта просто СервисМенеджер.
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361246
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
deadng Используй ТекущаяДата(). РабочаяДата() такой функции нет.
Это помогло.
javapeckerЕсли СервисМенеджер это реквизит вашего документа, то в форме его передавайте как Объект.СервисМенеджер
Это тоже сработало. На курсах сейчас учусь. Преподаватель задал, вот я и парюсь. С пустой датой тоже все понял.
Добавил к запросу параметр &ПустаяДата . Вот получившийся текст запроса:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
&НаСервере
Процедура ЗаданияНаСегодня()

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

	Запрос.УстановитьПараметр("ПустаяДата",'00010101');
	Запрос.УстановитьПараметр("Сегодня", ТекущаяДата());
	Запрос.УстановитьПараметр("СервисМенеджер", Объект.СервисМенеджер);

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

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

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

		
	
КонецПроцедуры // ЗаданияНаСегодня()



Единственное, что не могу сейчас протестировать, нужно отъехать. Но вечером обязательно проверю работоспособность. Спасибо!
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361422
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер,
| ПланированиеОказаниеУслугСрезПоследних.Услуга,
| ПланированиеОказаниеУслугСрезПоследних.Контрагент,
| ПланированиеОказаниеУслугСрезПоследних.ДокументОснование,
| ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения,
| ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения
|ИЗ
| РегистрСведений.ПланированиеОказаниеУслуг.СрезПоследних КАК ПланированиеОказаниеУслугСрезПоследних
|ГДЕ
| ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер = &СервисМенеджер
| И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &ПустаяДата
| И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &Сегодня";

Запрос.УстановитьПараметр("ПустаяДата",'00010101');
Запрос.УстановитьПараметр("Сегодня", ТекущаяДата());
Запрос.УстановитьПараметр("СервисМенеджер", Объект.СервисМенеджер);



рукалицо... а если я напланировал на 10 лет вперед? мне обязательно учитывать будущее?

| И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &ПустаяДата
| И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &Сегодня";

не удивляйтесь пустоте...
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361621
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний выдох ГПЖ
| И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &ПустаяДата
| И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &Сегодня";

не удивляйтесь пустоте...
Удивился пустоте. Параметр &ПустаяДата подставляю в строку
Код: sql
1.
И ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения = &ПустаяДата";



Также добавил цикл заполнения табличной части из ВыборкаДетальныеЗаписи . В итоге вот, что получилось:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
&НаСервере
Процедура ЗаданияНаСегодня()
     	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	//ДатСег = ТекущаяДата();
	//
	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

	Запрос.УстановитьПараметр("ПустаяДата", '00010101');
	Запрос.УстановитьПараметр("Сегодня", ТекущаяДата());
	Запрос.УстановитьПараметр("СервисМенеджер", Объект.СервисМенеджер);

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

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

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

	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры // ЗаданияНаСегодня()



Тестирую, строки в документе все равно не заполняются. Не посмотрите, остались еще ошибки? Если что, то буду преподавателя на консультации спрашивать. Спасибо!
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361631
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = ДатьВремя(1,1,1) Так проще.

Вручную проверили что у данного менеджера есть записи в регистре сведений?

Если все есть - то пробуйте убирать условия по одному - вдруг заработает?

И вы уверены что Сервисменеджер и объект.менеджер один и тот же справочник?
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361649
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1с,

косячит вот эта строка
Код: sql
1.
2.
3.
|	И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &Сегодня
..........
Запрос.УстановитьПараметр("Сегодня", ТекущаяДата());


Без этого параметра все нормально работает. Единственное, что в отбор попадают и запланированные на будущее, не только на текущую дату, услуги.
Программист 1сПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = ДатьВремя(1,1,1) Так проще.


Это нужно вместо строки
Код: sql
1.
|	И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &Сегодня


вставить такую строку
Код: sql
1.
|	И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = ДатьВремя(1,1,1)

без параметра?
Спасибо!
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361652
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
|	И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = ДатьВремя(1,1,1)


Если такую строку в запрос вставить, то выдает ошибку при попытке запустить на исполнение запрос из документа.
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361711
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,
не ДатьВремя, а ДатаВремя, Программист 1с, видимо, опечатался. И если вы в запросе сравниваете дату с текущей датой, вряд ли она совпадет, потому что текущая дата с секундами, и шансов на совпадение с датой регистра ноль. Приводите даты к началу дня перед сравнением.
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361766
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Параметр сегодняшней даты привожу к началу дня таким образом
Код: sql
1.
2.
3.
ДатСег = НачалоДня(ТекущаяДата());
..........
Запрос.УстановитьПараметр("Сегодня",ДатСег);



А вот как привести к началу дня ПланируемуюДатуВыполнения в запросе? В конструкторе запроса для работы с датами не нашел функции НачалоДня. Там есть ДЕНЬ, НачалоПериода и т.д. Не подскажете, как результат ПланируемойДатыВыполнения в запросе привести к началу дня? Спасибо!
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361773
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в запросе НачалоПериода(ВашаДата,ДЕНЬ)

ps Конечно ДатаВремя - опечатался.
...
Рейтинг: 0 / 0
Проверка заполнения поля
    #38361790
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1с,
Все заработало.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
&НаКлиенте
Процедура ЗаполнитьСегодняшними(Команда)
		
	Если Объект.Состав.Количество()<>0  Тогда
	    Если Вопрос("Очистить текущий вариант?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда
			  Возврат;
		КонецЕсли; 
	КонецЕсли; 
	ЗаданияНаСегодня();

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


&НаСервере
Процедура ЗаданияНаСегодня()
	ДатСег = НачалоДня(ТекущаяДата()); 
    Объект.Состав.Очистить();

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

	Запрос.УстановитьПараметр("ПустаяДата", '00010101');
	Запрос.УстановитьПараметр("Сегодня",ДатСег);
	Запрос.УстановитьПараметр("СервисМенеджер", Объект.СервисМенеджер);

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


Спасибо большое!
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Проверка заполнения поля
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]