Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Выбор периода во внешней обработке

Выбор периода во внешней обработке
Я
   SmokingDoo
 
27.10.16 - 23:06
Здравствуйте, помогите пожалуйста дураку третий день пытаюсь понять! Начал учиться программированию на 1С буквально неделю назад.

Создал внешнюю обработку. При нажатии на кнопку "Выполнить", из базы запрашиваются все выданные счёт-фактуры. И их дата и время документа, заменяются датой и временем документа основания (РеализацияТоваров).

Добавил на форму два поля ввода. "НачПериода" и "КонПериода" с типом дата.

В запросе добавил строку [code]|И СчетФактураВыданный.Дата МЕЖДУ НачПериода И КонПериода[/code]
Выдаёт ошибку:
[code]"Поле не найдено "НачПериода"
И СчетФактураВыданный.Дата МЕЖДУ <<?>>НачПериода И КонПериода"[/code]
Никак не могу понять разобраться в чём ошибка, уже психовать начал :-) Ибо понимаю что проблема в каких-то элементарных вещах.


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

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл

        Если Выборка.ДокументОснованиеДата=null Тогда    
          Сообщить("В документе под номером " + Выборка.Номер + " от " +Выборка.Дата +  " отсутствует запись основания" );    
            
    Иначе 

        ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
        ДокументОбъект.Дата = Выборка.ДокументОснованиеДата;
         ДокументОбъект.Записать();    
        //Сообщить("НомерСФ " + Выборка.Номер + " ДатаСФ " + Выборка.Дата + " Номер реализации " + Выборка.ДокументОснованиеНомер + " Дата реализации " + Выборка.ДокументОснованиеДата + " Сумма " + Выборка.СуммаДокумента); 

      
          КонецЕсли;
      КонецЦикла;
КонецПроцедуры
[/code]
 
 
   Кадош
 
1 - 27.10.16 - 23:08
И СчетФактураВыданный.Дата МЕЖДУ &НачПериода И &КонПериода
Запрос.УстановитьПараметр("НачПериода ",НачПериода);
   SmokingDoo
 
2 - 27.10.16 - 23:08
Толстый клиент (Обычное приложение)

Простите, что-то я не разобрался как на форуме код размещать. Нужны теги [Code]? Или это делается автоматически?
   Кадош
 
3 - 27.10.16 - 23:11
Вот так делается период
http://screencast.com/t/6UKS7dMhOjMs
   SmokingDoo
 
4 - 27.10.16 - 23:23
Создал период на форме как показано в видео (Спасибо! буду знать где взять)

Добавил 2 строки после окончания запроса.
Запрос.УстановитьПараметр("НачПериода ",НачПериода);
Запрос.УстановитьПараметр("НачПериода ",КонПериода);

Выводит ошибку:
Не задано значение параметра "НачПериода"
И СчетФактураВыданный.Дата МЕЖДУ <<?>>&НачПериода И &КонПериода

Переношу их перед запросом. При сохранении обработки выдаёт:
"Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("НачПериода ",НачПериода); (Проверка: Толстый клиент (обычное приложение))"

Чтож я делаю не так? Ибо если не смогу понять это, то дальше изучать конфигурирование не имеет смысла :-(
   Кадош
 
5 - 27.10.16 - 23:26
давай весь код снова
   SmokingDoo
 
6 - 27.10.16 - 23:26
Процедура СФВыданная(Кнопка)//

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

                       
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл

        Если Выборка.ДокументОснованиеДата=null Тогда    
          Сообщить("В документе под номером " + Выборка.Номер + " от " +Выборка.Дата +  " отсутствует запись основания" );    
            
    Иначе 

        ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
        ДокументОбъект.Дата = Выборка.ДокументОснованиеДата;
         ДокументОбъект.Записать();    
        //Сообщить("НомерСФ " + Выборка.Номер + " ДатаСФ " + Выборка.Дата + " Номер реализации " + Выборка.ДокументОснованиеНомер + " Дата реализации " + Выборка.ДокументОснованиеДата + " Сумма " + Выборка.СуммаДокумента); 

      
          КонецЕсли;
      КонецЦикла;
КонецПроцедуры
   SmokingDoo
 
7 - 27.10.16 - 23:27
Простите, не пойму почему так код вставляется.
   Кадош
 
8 - 27.10.16 - 23:32
(7) ты тот же (0) код скопипастил.

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачПериода ",НачПериода);
    Запрос.УстановитьПараметр("КонПериода ",КонецДня(КонПериода));
    Запрос.Текст=    "ВЫБРАТЬ
    |    СчетФактураВыданный.Ссылка КАК Ссылка,
    |    СчетФактураВыданный.Номер КАК Номер,
    |    СчетФактураВыданный.Дата КАК Дата,
    |    СчетФактураВыданный.ДокументОснование.Номер КАК ДокументОснованиеНомер,
    |    СчетФактураВыданный.ДокументОснование.Дата КАК ДокументОснованиеДата,
    |    СчетФактураВыданный.СуммаДокумента КАК СуммаДокумента
    |ИЗ
    |    Документ.СчетФактураВыданный КАК СчетФактураВыданный
    |ГДЕ
    |    НЕ СчетФактураВыданный.ПометкаУдаления
    |    И СчетФактураВыданный.Дата МЕЖДУ &НачПериода И &КонПериода 
    |УПОРЯДОЧИТЬ ПО
    |    Ссылка
    |АВТОУПОРЯДОЧИВАНИЕ";
   SmokingDoo
 
9 - 27.10.16 - 23:36
Форум почему то код на части.
Процедура СФВыданная(Кнопка)
Запрос.УстановитьПараметр("НачПериода ",НачПериода);
Запрос.УстановитьПараметр("НачПериода ",КонПериода);
    Запрос = Новый запрос;
    Запрос.Текст=    "ВЫБРАТЬ
                     |    СчетФактураВыданный.Ссылка КАК Ссылка,
                     |    СчетФактураВыданный.Номер КАК Номер,
                     |    СчетФактураВыданный.Дата КАК Дата,
                     |    СчетФактураВыданный.ДокументОснование.Номер КАК ДокументОснованиеНомер,
                     |    СчетФактураВыданный.ДокументОснование.Дата КАК ДокументОснованиеДата,
                     |    СчетФактураВыданный.СуммаДокумента КАК СуммаДокумента
                     |ИЗ
                     |    Документ.СчетФактураВыданный КАК СчетФактураВыданный
                     |ГДЕ
                     |    НЕ СчетФактураВыданный.ПометкаУдаления
                     |    И СчетФактураВыданный.Дата МЕЖДУ &НачПериода И &КонПериода 
                     |УПОРЯДОЧИТЬ ПО
                     |    Ссылка
                     |АВТОУПОРЯДОЧИВАНИЕ";                       
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
        Если Выборка.ДокументОснованиеДата=null Тогда    
          Сообщить("В документе под номером " + Выборка.Номер + " от " +Выборка.Дата +  " отсутствует запись основания" );    
        Иначе 
        ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
        ДокументОбъект.Дата = Выборка.ДокументОснованиеДата;
         ДокументОбъект.Записать();    
        КонецЕсли;
      КонецЦикла;
КонецПроцедуры
   Кадош
 
10 - 27.10.16 - 23:38
(9) бери мой код из (8)
 
 Рекламное место пустует
   bootini
 
11 - 27.10.16 - 23:39
Пробелы надо убрать

Тут:
Запрос.УстановитьПараметр("НачПериода ",НачПериода);
Запрос.УстановитьПараметр("НачПериода ",КонПериода);

Правильно так:
Запрос.УстановитьПараметр("НачПериода",НачПериода);
Запрос.УстановитьПараметр("НачПериода",КонПериода);
   bootini
 
12 - 27.10.16 - 23:48
Тут ошибка,что сначала пытаешься установать параметры, а потом определяешь переменную "Запрос"

Запрос.УстановитьПараметр("НачПериода ",НачПериода);
Запрос.УстановитьПараметр("НачПериода ",КонПериода);
    Запрос = Новый запрос;

Если хочешь вначаля тогда ставь после определения переменной

Запрос = Новый запрос;
Запрос.УстановитьПараметр("НачПериода ",НачПериода);
Запрос.УстановитьПараметр("НачПериода ",КонПериода);
   bootini
 
13 - 27.10.16 - 23:48
(12) без пробелов естественно "НачПериода"
   SmokingDoo
 
14 - 27.10.16 - 23:54
(10) Кадош
(11) bootini

Спасибо Вам большое добрые люди! Заработало! А самое главное понял зачем Запрос.УстановитьПараметр нужен :-)
   Кадош
 
15 - 27.10.16 - 23:55
(14) хор троекратно поет "Аллилуйа"

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует