Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
RedPirate
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
1

Выборка с проведением

06.09.2011, 15:22. Просмотров 1158. Ответов 12
Метки нет (Все метки)

Товарисчи, тут такое дело. Значит делаю выборку:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПриходныйКассовыйОрдер.Ссылка КАК Документ
                   |ИЗ
                   |    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
                   |ГДЕ
                   |    ПриходныйКассовыйОрдер.Дата МЕЖДУ &Начало И &Конец";
    Запрос.УстановитьПараметр("Начало",НачалоПериода);
    Запрос.УстановитьПараметр("Конец",КонецПериода);
 
    Выборка = Запрос.Выполнить().Выбрать();
 
    Пока Выборка.Следующий() Цикл   
            Выборка.Документ.Записать(РежимЗаписиДокумента.Проведение);         
    КонецЦикла;
В книге Гончарова "Примеры разработки", точно такой же пример есть и точно так же все написано. Но вот у меня почему то не работает(Как обычно).
Поэтому подскажите как правильно сделать. Если я щас делаю какую то глупейшую ошибку, то сильно не пинайте.

Добавлено через 12 минут
А вот так работает! =)
1C
1
2
ДокОбъект = Выборка.Приходный.ПолучитьОбъект();
        ДокОбъект.Записать(РежимЗаписиДокумента.Проведение)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2011, 15:22
Ответы с готовыми решениями:

помогите с проведением по 2 регистрам
помогите с проведением по 2 регистрам

Выборка
Здравствуйте!!! Столкнулась с проблемой.. Существует некая внешняя обработка,...

Выборка.Следующий()
Доброго времени суток, дорогие друзья! Пришло время дурацких вопросов от...

Выборка из справочника
Как сделать так, чтобы в документе в поле (которое является справочником) можно...

выборка из запроса
нужно по выборке создать документ ПНК для каждого поставщика для этого мы...

12
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
06.09.2011, 15:37 2
потому что именно так и нужно делать
попробуй, вдруг и так покатит

Выборка.Документ.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);
0
RedPirate
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
06.09.2011, 16:27  [ТС] 3
Ага, прокатило =) Спасибо!
Вопрос такой, можно как нибудь добавлять в выборку параметры, используя элементы управления? Т.е. Например на фоме есть флажок, мы ставим галочку и в выборку добавиться выбор ещё одного параметра, например РасходныйКассовыйОрдер.Ссылка ?
Я попробовал как с обычным текстом поступить т.е.
C
1
2
"ВЫБРАТЬ"+ Символы.ПС + НовыйПараметр + Символы.ПС +
"|ИЗ и так далеее "
;
Но не получается так.
0
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
06.09.2011, 16:33 4
Символы.ПС там не нужны. Скорее всего забыл запятые проставить.

я это делаю например вот так, правда добавляю не поля выборки, а условие отбора

1C
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
Запрос = Новый Запрос;                 
    Запрос.Текст = "ВЫБРАТЬ
                   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент,
                   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация КАК Организация,
                   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности,
                   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток,
                   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход
                   |
                   |ИЗ
                   |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(
                   |            &НачДата,
                   |            &КонДата,
                   |            ,
                   |            ,
                   |            #УсловиеОтбора#
               |                ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
                   |ИТОГИ
                   |    СУММА(СуммаВзаиморасчетовКонечныйОстаток),
                   |    СУММА(СуммаВзаиморасчетовПриход)
                   |ПО
                   |    Контрагент";                   
                       
    УсловиеОтбора = "";
    Запрос.УстановитьПараметр("НачДата", НачПериода);
    Запрос.УстановитьПараметр("КонДата", КонПериода);
 
    
    
    Если ЗначениеЗаполнено(Контрагент) Тогда
        УсловиеОтбора = УсловиеОтбора + "Контрагент В (&Контрагент)";
        Запрос.УстановитьПараметр("Контрагент", Контрагент);
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Организация) Тогда
        Если НЕ ПустаяСтрока(УсловиеОтбора) Тогда
            УсловиеОтбора = УсловиеОтбора + " И ";
        КонецЕсли;
        УсловиеОтбора = УсловиеОтбора + "Организация В (&Организация)";
        Запрос.УстановитьПараметр("Организация", Организация);
    КонецЕсли;
    
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "#УсловиеОтбора#", УсловиеОтбора);
0
RedPirate
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
06.09.2011, 16:36  [ТС] 5
Здорово, щас попробую!
0
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
06.09.2011, 17:06 6
Либо так:

"ВЫБРАТЬ
| "+?(ПоКонтрагентам, "Контрагент,","")+"
| ПриходныйКассовыйОрдер.Ссылка КАК Документ
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.Дата МЕЖДУ &Начало И &Конец";
1
RedPirate
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
07.09.2011, 12:18  [ТС] 7
Сделал вот такую штукенцию...
1C
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
54
55
56
57
    ДокументыВыбора = "";
    ИсточникВыбора = "";
    УсловиеВыбора = "";
    Если ФлПрихКассОрд Тогда
        ДокументыВыбора = ДокументыВыбора + "
        |   ПриходныйКассовыйОрдер.Ссылка КАК Приходный,";
        ИсточникВыбора = ИсточникВыбора + "
        |   Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер,";
        УсловиеВыбора = УсловиеВыбора + "
        |   И ПриходныйКассовыйОрдер.Дата МЕЖДУ &Начало И &Конец"; 
    КонецЕсли;  
    
    Если ФлРасхКассОрд Тогда
        ДокументыВыбора = ДокументыВыбора + "
        |   РасходныйКассовыйОрдер.Ссылка КАК Расходный,";
        ИсточникВыбора = ИсточникВыбора + "
        |   Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер,";
        УсловиеВыбора = УсловиеВыбора + "
        |   И РасходныйКассовыйОрдер.Дата МЕЖДУ &Начало И &Конец";
    КонецЕсли;
    
    Если ФлПостТовар Тогда
        ДокументыВыбора = ДокументыВыбора + "
        |   ПоступлениеТоваровУслуг.Ссылка КАК Поступление,";
        ИсточникВыбора = ИсточникВыбора + "
        |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг,";
        УсловиеВыбора = УсловиеВыбора + "
        |   И ПоступлениеТоваровУслуг.Дата МЕЖДУ &Начало И &Конец";
    КонецЕсли;
    
    Если ФлРеалТовар Тогда
        ДокументыВыбора = ДокументыВыбора + "
        |   РеализацияТоваровУслуг.Ссылка КАК Реализация,";
        ИсточникВыбора = ИсточникВыбора + "
        |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг,";
        УсловиеВыбора = УсловиеВыбора + "
        |   И РеализацияТоваровУслуг.Дата МЕЖДУ &Начало И &Конец";
    КонецЕсли;
 
    
    ДокументыВыбора = Сред(ДокументыВыбора,1,СтрДлина(ДокументыВыбора)-1);
    ИсточникВыбора = Сред(ИсточникВыбора,1,СтрДлина(ИсточникВыбора)-1);
    УсловиеВыбора = Сред(УсловиеВыбора,4);
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ" + ДокументыВыбора + "     
                   |ИЗ            
                   |" + ИсточникВыбора + "
                   |
                   |ГДЕ
                   |" + УсловиеВыбора + " ";
 
    Запрос.УстановитьПараметр("Начало",НачалоПериода);
    Запрос.УстановитьПараметр("Конец",КонецПериода);
    
        
    //Выборка = Запрос.Выполнить().Выбрать();
    Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
Однако, получается такая фигня, если я выбираю один документ, то он выбирается нормально, а вот если выбрать сразу несколько документов, то в результате выборка будет выбирать один и тот же документ по несколько раз и выводить их. т.е. вместо того что бы вывести 4 документ одного вида и 6 другого он выведет по 20 копий всех этих документов. Как так? Как быть?
0
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
07.09.2011, 12:26 8
посмотри на результирующий текст запроса, найди и исправь ошибки
0
RedPirate
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
07.09.2011, 15:59  [ТС] 9
Посмотрел, всё там нормально.

Добавлено через 1 час 22 минуты
Я тут подумал и решил сделать два запроса объединив их, в одном запросе будут выбираться приходные документы, а в другом расходные. Только теперь ещё один косяк(Как обычно). Как в запросе сделать что бы он по пустому полю искал т.е. типо
ВЫБРАТЬ
|Пустое поле
|ИЗ
|Пустое поле КАК Пустое поле

Через ВЫРАЗИТЬ КАК не получается
ВЫРАЗИТЬ(Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер) КАК NULL ошибку выдает

Добавлено через 54 минуты
Всё разобрался надо NULL использовать "| NULL КАК Приходный,"
Но косяк всё равно остался, если среди выбираемых документов отсутствует документ за ту дату по которой ведется поиск, то не один документ не выбирается, даже если с такой датой есть.

С запросом всё ок
1C
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
ВЫБРАТЬ
    ПриходныйКассовыйОрдер.Ссылка КАК Приходный,
    ПоступлениеТоваровУслуг.Ссылка КАК Поступление     
ИЗ            
 
    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер,
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
 
ГДЕ
 ПриходныйКассовыйОрдер.Дата МЕЖДУ &Начало И &Конец
    И ПоступлениеТоваровУслуг.Дата МЕЖДУ &Начало И &Конец 
 
ОБЪЕДИНИТЬ
          
ВЫБРАТЬ
    РасходныйКассовыйОрдер.Ссылка,
    РеализацияТоваровУслуг.Ссылка      
ИЗ            
 
    Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер,
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
 
ГДЕ
 РасходныйКассовыйОрдер.Дата МЕЖДУ &Начало И &Конец
    И РеализацияТоваровУслуг.Дата МЕЖДУ &Начало И &Конец
0
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
07.09.2011, 16:22 10
попробуй через менеджер временных таблиц
0
RedPirate
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
07.09.2011, 16:35  [ТС] 11
А используя временные таблицы можно будет изменять документы, перепрводить их и т.д.?
0
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
07.09.2011, 16:37 12
МенеджерВременныхТаблиц
см справку
0
RedPirate
22 / 22 / 0
Регистрация: 13.05.2011
Сообщений: 197
07.09.2011, 17:06  [ТС] 13
Нет, не буду я их использовать.
0
07.09.2011, 17:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2011, 17:06

Выборка из запроса
Доброго вечера! Столкнулся с достаточно сложной для меня, как начинающего,...

Выборка документов
Здравствуйте у меня такой вопрос, как мне сделать выборку документов по...

выборка номенклатуры в 1с V 8
Здравствуйте, мне очень нужно сделать выборку из номенклатуры основная еденица...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru