Имя: Пароль:
1C
1С v8
Как правильно
🠗 (Волшебник 19.05.2014 17:06)
0 m_roose
 
19.05.14
13:02
Нужно выбрать данные по оплате заказов покупателей. Как правильнее делать запрос в 1с, по регистрам накопления или можно просто по документам все смотреть?
1 Wobland
 
19.05.14
13:04
просто по документам все смотреть нельзя
2 m_roose
 
19.05.14
13:06
(1) а почему?
3 Godofsin
 
19.05.14
13:08
(2) гладиолус?
4 m_roose
 
19.05.14
13:09
(3) так сложно подсказать?( если бы знала толковую книжку, где это можно почитать, не спрашивала бы здесь(
5 jsmith82
 
19.05.14
13:10
(4) Ёмана, деточка. Регистры для того и нужны, чтобы к ним запросы составлять
6 m_roose
 
19.05.14
13:13
если б в них можно было так легко разобраться.. просто непонятно почему именно регистры нужно, если все тоже самое можно сделать через документы
7 vicof
 
19.05.14
13:15
(6) Отличная книжка "Проф разработка 8.2", советую
8 m_roose
 
19.05.14
13:17
(7) спасибо
9 Kalambur
 
19.05.14
13:41
(0) для начала нужно так "как правильно заводить ветки"
10 batmansoft
 
19.05.14
13:46
(6) Потому что один и тот же регистр могут двигать разные документы. Сделаешь запрос по документам, а потом (после обновления или доработок программиста) добиться еще один документ. Будешь переделывать запрос?
11 Серго62
 
19.05.14
13:52
(10) >>Потому что один и тот же регистр могут двигать разные документы

и это не единственная причина...
12 m_roose
 
19.05.14
13:56
тогда новый вопрос! по какому регистру смотреть какая была сумма оплаты по заказу покупателя? самостоятельно не смогла разобраться
13 Серго62
 
19.05.14
13:59
(12) Может быть по тому же регистру, в который пишет документ оплаты?
14 batmansoft
 
19.05.14
14:00
(12) Смотря какая конфа. Но, скорее всего, в его названии присутствует слова Заказ(ы) и Покупатель(я,ю)
15 FIXXXL
 
19.05.14
14:01
(12) если не включено по договорам "отслеживать по заказам" хрен тебе а не отчет
16 Крошка Ру
 
19.05.14
14:02
РН ВзаиморасчетыСКонтрагентами
17 Kookish
 
19.05.14
14:02
Но лучше всего все-таки залезть в конфигуратор и там посмотреть, по каким регистрам накопления документ делает движения. Дальше подключаем женскую интуицию и женскую логику...
18 hhhh
 
19.05.14
14:02
(12) а оно вам точно надо? Запрос писать? Можно ведь воспользоваться готовым отчетом.
19 FIXXXL
 
19.05.14
14:03
себя спроси: "как у меня заказы привязаны к оплатам?"
дальше запрос :)
20 Серго62
 
19.05.14
14:03
(18) Готовым не интересно :-)
21 FIXXXL
 
19.05.14
14:04
(16) не путай, другой РН :)
22 m_roose
 
19.05.14
14:05
(17) в том то и проблема, там куча регистров, по которым документы оплаты делают движения. я не могу понять, по какому правильно нужно делать запрос.
(18) готового отчета не нашла, нужно выводить заказы и по ним сумму оплаты, которая была, или не была

и вообще поэтому и созрела вся эта тема, потому что если делать запрос просто по документам, то проблем нет, это я могу сделать.
23 FIXXXL
 
19.05.14
14:07
(22) конфу скажешь?
24 m_roose
 
19.05.14
14:09
(23) комплексная
25 Серго62
 
19.05.14
14:09
(22) Ищи тот регистр, в который пишут оба документа: заказ и док.оплаты
26 Крошка Ру
 
19.05.14
14:10
(21) А, ну да ))
27 FIXXXL
 
19.05.14
14:12
(25) где вас учат...
28 m_roose
 
19.05.14
14:12
(25) ну по вашей логике это РН - расчеты с контрагентами)
29 m_roose
 
19.05.14
14:39
ну ребяяят, помогите, пожалуйста. если допустим это РН расчеты с контрагентами. то дальше что делать, как запрос составить? какое поле будет показывать оплату? я так понимаю, нужно смотреть ресурс СуммаВзаиморасчетов, ибо там больше никаких и нет. но насколько я поняла, этот ресурс показывает задолженность контрагента по этому заказу. а как узнать сумму оплаты?
30 andreymongol82
 
19.05.14
14:42
(29) А чем все-таки не устраивает "ведомость по заказам"?
31 FIXXXL
 
19.05.14
14:44
(29) там поле есть Заказ-Сделка
заполнено?
32 m_roose
 
19.05.14
14:45
(31) да
33 m_roose
 
19.05.14
14:48
(30) там вроде как не показывается сумма оплаты.. а если это и она, то в каком то странном виде, непонятном для пользователя
34 КонецЕсли
 
19.05.14
14:53
(32)
запрос:
выбрать Сделка,СуммаВзаиморасчетовОстаток из РегистрНакопления.РасчетыСКонтрагентами.Остатки()

дальше сама
35 Михаил Козлов
 
19.05.14
14:59
(29) Оплаты и отгрузки - по РН ВзаиморасчетыСКонтрагентами. Отчет: ведомость по взаиморасчетам с контрагентами. Если ведение взаиморасчетов в договоре НЕ по заказам, то не увидите.
В РН РасчетыСКонтрагентами фиксируется потенциальная (не фактическая) задолженность: клиент заказа на 100 руб, но не платил и ему не отгружали - так 100 руб. и будет висеть. При заполнении платежного документа из этого регистра можно взять непогашенные заказы (чтобы распределить по ним общую сумму платежа).
36 m_roose
 
19.05.14
15:30
(34) это я и сама написала, мне непонятно что дальше с этим делать..
37 m_roose
 
19.05.14
15:32
(35) это я все в курсе. но если учесть, что мне нужны анализировать именно заказы покупателей, то подходит РН расчеты с контрагентами, т.к. именно по нему заказ покупателя может делать движения.
38 FIXXXL
 
19.05.14
15:39
(36) 1с - это ж хня
любой запрос напишет :)
39 catena
 
19.05.14
15:41
Забавно, почти полста постов и ниодного запроса на фотку... Куда мир катится?
40 m_roose
 
19.05.14
15:42
(39) сама удивилась)
41 Wobland
 
19.05.14
15:43
(39) я себе новую учётку обживаю. пока котиков поставил, лайкаю сижу
42 Hans
 
19.05.14
15:43
(40) Зачем тебе эта информация? Типовые отчеты смотрела?
43 catena
 
19.05.14
15:44
(41)Как котиков? А как же обезьянки?
44 m_roose
 
19.05.14
15:46
(42) ну смотрела конечно же. неужели вы думаете, что я настолько тупа, что прежде чем ломать голову, не посмотрела типовой функционал..
45 Wobland
 
19.05.14
15:46
(43) обезьянок я тоже лайкаю. пока не видят котики. т-ссс
46 ДенисЧ
 
19.05.14
15:46
А давайте поправим....
Фотку в студию!!!
47 Wobland
 
19.05.14
15:47
+(46) не взлетит же без неё
48 Александр_
Тверь
 
19.05.14
15:48
(0) делай по регистрам. Не вникай пока зачем и почему. Просто прими это на веру.

По документам тоже можно, есть даже случаи когда это лучший путь. Сейчас не этот случай.
49 Hans
 
19.05.14
15:48
(44) Есть же отчет "Анализ заказов покупателей" не подходит?
50 m_roose
 
19.05.14
15:50
(49) на мой взгляд не подходит, если вы подскажете где там можно увидеть сумму оплаты по заказу, я буду вам очень признательна
51 Крошка Ру
 
19.05.14
15:51
Что интересно: помогают одни, а фотку требуют другие...
52 m_roose
 
19.05.14
15:51
(48) спасибо, пытаюсь. но чувствую брошу я это дело и сделаю по документам
53 ДенисЧ
 
19.05.14
15:51
(50) Если у вас в базе не вводится счёт, по которому вам платят, то овощь вы что увидите.
54 Wobland
 
19.05.14
15:51
(51) лично я дал правильный ответ в самом начале
55 mikecool
 
19.05.14
15:52
ВзаиморасчетыСКонтрагентами
или ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов(если в договоре взаиморасчеты по документам расчетов)
56 Александр_
Тверь
 
19.05.14
15:54
(52) надо себя перебороть. Что-то новое всегда кажется сложным, запутанным, ненужным.
Но если ты хочешь быть хорошим специалистом, то послушай совет. Разберись с регистрами, зачем они нужны. Сделав это один раз (да, до результата пройдет много больше времени чем могло бы) в следующий раз будет на много проще. Не придется переучиваться и менять привычки. Не придется ходить по граблям.
57 КонецЕсли
 
19.05.14
15:57
(52)
"это я и сама написала, мне непонятно что дальше с этим делать.."

А что тебе "непонятно" с регистром, при этом "понятно" с документами?
58 m_roose
 
19.05.14
15:58
(53) не очень вас понимаю
(55) взаиморасчеты ведутся по заказам, вроде бы все, по документам расчета нет
(56) разбиралась, но уже давно, в памяти почти ничего не осталось, поэтому сейчас не могу разобраться
(57) непонятно как из ресурса СуммаВзаиморасчета вытащить именно сумму оплаты. насколько я понимаю, там показывается задолженность контрагента или я не понимаю.... в этом основная моя сложность
59 Александр_
Тверь
 
19.05.14
16:11
(58)
попробую просто...

Документ фиксирует какое-то событие (покупка товара, продажа, возврат, приход денег и т.д.)

Само по себе любое событие имеет много различных аспектов, например:
Покупка товара покупателем - это уменьшение остатка, увеличение денег (или задолженности контрагента).

Тебя сейчас из всего разнообразия аспектов интересуют только те, что влияют на взаиморасчеты с клиентами.
На взаиморасчеты с клиентами могут множество событий, которые фиксируются различными документами, такими как:
Реализация товаров и услуг
Возврат товара
Платежное поручение входящие
Платежное поручение исходящее
Поступление доп расходов
Расходный кассовый ордер
Приходный кассовый ордер
и т.д. - и большое количество других!


Чтобы получить правильные, корректные данные по документам тебе нужно написать запрос в котором будут фигурировать все эти документы! Причем с учетом нюансов их использования. Это большая и сложная работа. Более того, при любом изменении, которые внесут разработчики при обновлении, запрос придется переписывать.

Чтобы избежать всех этих проблем существуют регистры (это одна из их функций). Регистр - это такая хитрая таблица, в которую пишут только то что нужно по определенному аспекту (или нескольким аспектам). Т.е. это такая выжимка нужных тебе данных. Причем если разработчик изменит логику поведения какого-то документа, то она сам учет это в проведении по регистру. Тебе не придется думать об этом.
60 Hans
 
19.05.14
16:11
(58) Вобщем в регистре анализировать расход по оборотам, причем отбирать по виду документа, т.к. такие же движения может делать и закрытие заказа.
61 КонецЕсли
 
19.05.14
16:13
(58) вытаскивай суммаВзаиморасчетовРасход из виртуальной таблицы Обороты с периодичностью Регистратор и отбором в где Регистратор ссылка Документ.Блаблабла
Но, как написано в (59) там много возможных документов "оплат"
62 m_roose
 
19.05.14
16:24
(61) а можно как вариант? беру я значит все заказы, какие мне нужно проанализировать, соединяю их с РН взаиморасчетов. При этом в РН получаю только движения, которые делались документами оплаты для заказов, соответственно группирую эти данные по заказам и суммирую суммы взаиморасчетов
63 John83
 
19.05.14
16:24
я вот такую штуку сделал при выводе заказа в списке

ВЫБРАТЬ
    СУММА(ВЫБОР
            КОГДА ЗаказыПокупателейОбороты.Регистратор ССЫЛКА Документ.ЗаказПокупателя
                    ИЛИ ЗаказыПокупателейОбороты.Регистратор ССЫЛКА Документ.КорректировкаЗаказаПокупателя
                ТОГДА ЗаказыПокупателейОбороты.СуммаВзаиморасчетовОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаЗаказа,
    ЗаказыПокупателейОбороты.ЗаказПокупателя
ПОМЕСТИТЬ СуммаЗаказов
ИЗ
    РегистрНакопления.ЗаказыПокупателей.Обороты(, , Регистратор, ЗаказПокупателя В (&СписокЗаказов)) КАК ЗаказыПокупателейОбороты

СГРУППИРОВАТЬ ПО
    ЗаказыПокупателейОбороты.ЗаказПокупателя
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЕСТЬNULL(СуммаЗаказов.ЗаказПокупателя, РасчетыСКонтрагентамиОстатки.Сделка) КАК Сделка,
    СуммаЗаказов.СуммаЗаказа - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток, 0) КАК Оплачено
ИЗ
    СуммаЗаказов КАК СуммаЗаказов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентами.Остатки(, Сделка В (&СписокЗаказов)) КАК РасчетыСКонтрагентамиОстатки
        ПО (РасчетыСКонтрагентамиОстатки.Сделка = СуммаЗаказов.ЗаказПокупателя)
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ СуммаЗаказов
64 m_roose
 
19.05.14
16:29
(63) а &СписокЗаказов это что?
65 John83
 
19.05.14
16:35
(64) по-моему название параметра само за себя говорит
вот вся процедура
66 John83
 
19.05.14
16:35
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    МассивСсылок = Новый Массив;
    СоответствиеОформлений = Новый Соответствие;
    
    Для Каждого ОфомрлениеСтроки Из ОформленияСтрок Цикл        
        СоответствиеОформлений.Вставить(ОфомрлениеСтроки.ДанныеСтроки.Ссылка, ОфомрлениеСтроки);
        МассивСсылок.Добавить(ОфомрлениеСтроки.ДанныеСтроки.Ссылка);        
    КонецЦикла;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СУММА(ВЫБОР
    |            КОГДА ЗаказыПокупателейОбороты.Регистратор ССЫЛКА Документ.ЗаказПокупателя
    |                    ИЛИ ЗаказыПокупателейОбороты.Регистратор ССЫЛКА Документ.КорректировкаЗаказаПокупателя
    |                ТОГДА ЗаказыПокупателейОбороты.СуммаВзаиморасчетовОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК СуммаЗаказа,
    |    ЗаказыПокупателейОбороты.ЗаказПокупателя
    |ПОМЕСТИТЬ СуммаЗаказов
    |ИЗ
    |    РегистрНакопления.ЗаказыПокупателей.Обороты(, , Регистратор, ЗаказПокупателя В (&СписокЗаказов)) КАК ЗаказыПокупателейОбороты
    |
    |СГРУППИРОВАТЬ ПО
    |    ЗаказыПокупателейОбороты.ЗаказПокупателя
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ЕСТЬNULL(СуммаЗаказов.ЗаказПокупателя, РасчетыСКонтрагентамиОстатки.Сделка) КАК Сделка,
    |    СуммаЗаказов.СуммаЗаказа - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток, 0) КАК Оплачено
    |ИЗ
    |    СуммаЗаказов КАК СуммаЗаказов
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентами.Остатки(, Сделка В (&СписокЗаказов)) КАК РасчетыСКонтрагентамиОстатки
    |        ПО РасчетыСКонтрагентамиОстатки.Сделка = СуммаЗаказов.ЗаказПокупателя
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ СуммаЗаказов";
    Запрос.УстановитьПараметр("СписокЗаказов", МассивСсылок);
    
    Результат = Запрос.Выполнить();
    
    Если НЕ Результат.Пустой() Тогда
        Выборка = Результат.Выбрать();
        Пока Выборка.Следующий() Цикл
            ОформлениеСтроки = СоответствиеОформлений.Получить(Выборка.Сделка);
            ОформлениеСтроки.Ячейки.Оплачено.Значение = Выборка.Оплачено;
        КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры
67 m_roose
 
19.05.14
16:42
(66) спасибо, попробую, но только опять не понятно чем мой вариант не катит? проверила, он правильно работает..
68 Wobland
 
19.05.14
16:42
(67) на этом наборе данных
69 John83
 
19.05.14
16:43
(67) если честно, тему не читал - просто поделился своим кодом
70 m_roose
 
19.05.14
16:53
(68) не поняла?
71 Серго62
 
19.05.14
16:53
(67) Читай (59) там все объяснено.
72 Wobland
 
19.05.14
16:56
(70) есть уверенность в том, что всё будет хорошо с другими данными?
73 Серго62
 
19.05.14
16:59
Может еще вот это внесет какую-то ясность:
http://comprog.org/index/4_4_registry_svedenij_registry_nakoplenija/0-237#
74 m_roose
 
19.05.14
17:03
(73) спасибо, ничего нового я там для себя не подчеркнула
75 DexterMorgan
 
19.05.14
17:11
(74) Для самых твердолобых, которые считают что (59) ерунда и все равно можно делать запрос к документам: для регистров накопления предусмотрено хранение итогов в спец. таблицах, получение данных из которых значительно быстрее, чем из документов
76 m_roose
 
19.05.14
17:14
(75) я и не спорю вообще то, что через документы лучше. где вы видите вообще мое возмущение по этому поводу? я не считаю (59) ерундой. не умничайте
77 m_roose
 
19.05.14
17:40
(69) спасибо еще раз. в консоли запросов работает все, но вот в через сКД не работает, там появляются параметры периода, которые не удаляются, и с ними отчет ничего не возвращает
78 Hans
 
19.05.14
17:48
Вобщем для этой задачи и запрос по документам будет не худшим решением, неудивлюсь если по производительности это может стать лучшим решением. ИМХО, если проектируется конфигурация с нуля для этого вопроса должен быть создан отдельный оборотный регистр.
79 FIXXXL
 
19.05.14
18:38
(55) развела таки :)

m_ если нет в РН движухи - нет запроса
80 John83
 
19.05.14
19:33
(77) какой запрос в скд пытаешься запихнуть?
81 m_roose
 
19.05.14
21:10
(80) ну так который вы написали