Имя: Пароль:
1C
 
обработка по заполнению табличной части документа "Назначение планового начисления"
0 яНачинающая
 
24.05.20
10:12
Добрый день! Пытаюсь написать обработку по заполнению табличной части документа "Назначение планового начисления". На данный момент обработка берет все записи из регистра, а в идеале необходимо, что бы анализировался период документа.
Помогите, пожалуйста, правильно составить запрос, что бы Дата начала входила в период документа "Назначения планового начисления".
Сейчас, при этот запросе, у меня выходит ошибка "Ожидается имя таблицы
<<?>>ГДЕ Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаНачала >= НазначениеПлановогоНачисления.ДатаНазначения"   --------- просьба помочь объяснить, как именно нужно создать условие для периода.


ВЫБРАТЬ
                        Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаНачала КАК ДатаНачала,
                        Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаОкончания КАК ДатаОкончания,
                        Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.НазначаемыйРуководитель КАК НазначаемыйРуководитель,
                        НазначениеПлановогоНачисления.Ссылка КАК Ссылка,
                        НазначениеПлановогоНачисления.ДатаНазначения КАК ДатаНазначения,
                        НазначениеПлановогоНачисления.ДатаОкончания КАК ДатаОкончания1
                    ИЗ
                        Документ.Расш1_ПрактикаСтудентов.ДанныеПоПрактике КАК Расш1_ПрактикаСтудентовДанныеПоПрактике
                            ЛЕВОЕ СОЕДИНЕНИЕ Документ.НазначениеПлановогоНачисления КАК НазначениеПлановогоНачисления
                            ГДЕ Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаНачала >= НазначениеПлановогоНачисления.ДатаНазначения
                                И Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаНачала <= НазначениеПлановогоНачисления.ДатаОкончания
1 antgrom
 
24.05.20
10:13
(0) "ЛЕВОЕ СОЕДИНЕНИЕ" должно быть "по " какому то условию
2 antgrom
 
24.05.20
10:15
например :

ЛЕВОЕ СОЕДИНЕНИЕ Документ.НазначениеПлановогоНачисления КАК НазначениеПлановогоНачисления
по Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаОкончания = НазначениеПлановогоНачисления.ДатаОкончания

В общем - напиши условие этого левого соединения
3 яНачинающая
 
24.05.20
10:32
(2) почему то начал выводить вообще все назначения сотрудника. Может мне будет легче понять, как именно нужно указать отбор по периоду исходя из этого кода? возможно это левое соединение вообще не нужно

"ВЫБРАТЬ
                    |    Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаНачала КАК ДатаНачала,
                    |    Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаОкончания КАК ДатаОкончания,
                    |    Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.НазначаемыйРуководитель КАК НазначаемыйРуководитель,
                    |    НазначениеПлановогоНачисления.Ссылка КАК Ссылка,
                    |    НазначениеПлановогоНачисления.ДатаНазначения КАК ДатаНазначения,
                    |    НазначениеПлановогоНачисления.ДатаОкончания КАК ДатаОкончания1
                    |ИЗ
                    |    Документ.Расш1_ПрактикаСтудентов.ДанныеПоПрактике КАК Расш1_ПрактикаСтудентовДанныеПоПрактике,
                    |    Документ.НазначениеПлановогоНачисления КАК НазначениеПлановогоНачисления"
4 antgrom
 
24.05.20
10:35
(3) сейчас у тебя нет левого соединения вообще.
Определись с данными которые тебе нужно вывести.
5 яНачинающая
 
24.05.20
10:36
изначально было так, просто выводились все запись регистра. После начала пытаться связать с периодом документа

ВЫБРАТЬ
                        Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаНачала КАК ДатаНачала,
                        Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаОкончания КАК ДатаОкончания,
                        Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.НазначаемыйРуководитель КАК НазначаемыйРуководитель
                    ИЗ
                        Документ.Расш1_ПрактикаСтудентов.ДанныеПоПрактике КАК Расш1_ПрактикаСтудентовДанныеПоПрактике
6 яНачинающая
 
24.05.20
10:38
(4) В документе "Назначение планового начисления" есть две даты - ДатаНазначения и ДатаОкончания.
В документ добавила свою обработку, которая сейчас просто выводить все данные из регистра.
Нужно, что бы в документ сажались только те записи, у которых ДатаНачала входит в промежуток ДатаНазначения и ДатаОкончания.
7 antgrom
 
24.05.20
10:41
рассуждай в терминах :
"я хочу получить такие то поля из первой таблицы"

или

"я хочу получить все поля из первой таблицы и некоторые поля из второй таблицы По условию ..."
8 яНачинающая
 
24.05.20
11:00
если мыслить терминами, для меня все логично)))) не доходит как именно поставить это условие, попыталась выстроить так, но выходят вообще все назначения этого сотрудника. Как мне сослаться именно на нужные записи?

ГДЕ
    Расш1_ПрактикаСтудентовДанныеПоПрактике.Ссылка.ДатаНачала МЕЖДУ НазначениеПлановогоНачисления.Ссылка.ДатаНазначения И НазначениеПлановогоНачисления.Ссылка.ДатаОкончания
9 antgrom
 
24.05.20
11:33
чтобы тебе подсказали "как", ты сначала сформулируй словами - какие строки и из каких таблиц ты хочешь получить.

Сформулируй максимально    просто и понятно    - какие строки и из каких документов(регистров) ты хочешь получить.
10 яНачинающая
 
24.05.20
12:08
antgrom, спасибо Вам.
Еще раз перечитала ваши советы , и установила следующее условие, которое помогла сработать периоду.
ПО Расш1_ПрактикаСтудентов.Регистратор = НазначениеПлановогоНачисления.Ссылка

Через Консоль запросов, где значение параметров ДатаНачала и ДатаОкончания1 устанавливаю руками, все работает на ура.
НО когда проверяю как  обработка отрабатывает в самом документе , выходит ошибка
{(12, 60)}: Поле не найдено "ДатаОкончания1"
Расш1_ПрактикаСтудентов.ДатаНачала МЕЖДУ ДатаНазначения И <<?>>ДатаОкончания1


ВЫБРАТЬ
                    |    Расш1_ПрактикаСтудентов.ДатаНачала КАК ДатаНачала,
                    |    Расш1_ПрактикаСтудентов.ДатаОкончания КАК ДатаОкончания,
                    |    Расш1_ПрактикаСтудентов.НазначаемыйРуководитель КАК НазначаемыйРуководитель,
                    |    НазначениеПлановогоНачисления.ДатаНазначения КАК ДатаНазначения,
                    |    НазначениеПлановогоНачисления.ДатаОкончания КАК ДатаОкончания1
                    |ИЗ
                    |    РегистрСведений.Расш1_ПрактикаСтудентов КАК Расш1_ПрактикаСтудентов
                    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.НазначениеПлановогоНачисления КАК НазначениеПлановогоНачисления
                    |        ПО Расш1_ПрактикаСтудентов.Регистратор = НазначениеПлановогоНачисления.Ссылка
                    |ГДЕ
                    |    Расш1_ПрактикаСтудентов.ДатаНачала МЕЖДУ ДатаНазначения И ДатаОкончания1
11 hhhh
 
24.05.20
12:16
|ГДЕ
                    |    Расш1_ПрактикаСтудентов.ДатаНачала МЕЖДУ НазначениеПлановогоНачисления.ДатаНазначения И НазначениеПлановогоНачисления.ДатаОкончания
12 яНачинающая
 
24.05.20
13:12
hhhh, cпасибо, ошибка ушла. Но сейчас у меня обработка просто не срабатывает и ошибок не выдает. Прошу помочь добить уже этот вопрос. Вот последний вариант кода.

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

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

        ЗаполнитьЗначенияСвойств(НоваяСтрока,Выборка);
    КонецЦикла;

КонецПроцедуры
13 antgrom
 
24.05.20
16:19
(12) ещё раз :

Не пиши в 1С код.
Просто напиши здесь словами - какие данные, из какой таблицы ( при каких условиях ) ты хочешь получить.
Просто напиши словами.
Здесь на форуме.
14 hhhh
 
24.05.20
16:23
(12) наверно документ еще не записан. А ты уже к нему пишешь запрос.
15 яНачинающая
 
24.05.20
16:53
Хочу получить данные (ДатаНачала, ДатаОкончания,  НазначаемыйРуководитель)   из регистра Расш1_ПрактикаСтудентов, где ДатаНачала находится в промежутке дат документа (ДатаНазначения И ДатаОкончания)  "Назначение планового начисления".

документ записала, но все равно не потягивает
16 hhhh
 
24.05.20
17:05
(15) наверно у тебя регистратор у регистра это Документ.Расш1_ПрактикаСтудентов

а ты пишешь

ПО Расш1_ПрактикаСтудентов.Регистратор = НазначениеПлановогоНачисления.Ссылка

как будто регистратор документ назначения. У регистра совсем другой регистратор
17 яНачинающая
 
24.05.20
17:16
если я это условие убираю, то выводятся все назначения сотрудника
18 яНачинающая
 
24.05.20
17:17
мне кажется, я нему передать даты документа Назначения планового начисления
19 hhhh
 
24.05.20
18:20
(17) почитай про параметры запроса
Закон Брукера: Даже маленькая практика стоит большой теории.