Имя: Пароль:
   
1C
1С v8
Подозрительные записи в таблицах итогов
0 triviumfan
 
10.09.18
15:19
Доброго дня, коллеги.

Сижу смотрю курсы. Подошла тема к регламентным операциям 1с. Речь про пересчет итогов.
Запускаю предложенную автором обработку, показывающая "фантомные" нулевые записи в итогах. Смотрю - ай-яй, дай-ка сделаю полный пересчет на примере одного проблемного регистра.
Бац - помимо нулевых записей основных (в таблице итогов) в 10 раз меньше стало!
Консультант говорит, что все месяца закрывает, там ведь и автоматический пересчет итогов есть, все ок.
Делаю пересчет текущий итогов - все норм, а затем полных из предприятия - происходит свертка! За какие периоды столько было записей правда не ясно.
Потом все равно лезу в ssms - смотрю таблицу итогов. Обнаруживаю записи с 2001-02-01 00:00:00 по 5999-11-01 00:00:00 года, хотя в бд включено смещение дат!!! Откуда такие записи?!
Удалить все итоги и сделать полный пересчет монопольно из конфигуратора?
1 Fragster
 
10.09.18
15:33
есть мнение, что какое-то чудило провело документ январем первого года. а потом в нужный период, но записи в итогах остались
2 triviumfan
 
10.09.18
15:45
(1) БИНГО!
https://yadi.sk/i/GFIg-9NJmjinQQ
Что делать? Кого бить и чем?
3 Fragster
 
10.09.18
15:53
(2) провести правильной датой, пересчитать итоги. 5999 год - это текущие итоги, норма. старье очистится. главное, чтобы между 4018 и 5999 не сильно много было записей :)
4 Fragster
 
10.09.18
15:54
тапком бить того, кто этот документ сделал, можно найти в журнале регистрации
5 Малыш Джон
 
10.09.18
15:56
тапком не поможет :(
6 Малыш Джон
 
10.09.18
15:58
Есть у меня мечта...

Электрошокер к рабочиму месту пользователя, с реагированием на такие ситуации
7 triviumfan
 
10.09.18
15:58
(3) никто не разрешит проводить документы 2015 года.
Думаю, что кто-то обработкой это делал, ибо стандартными средствами это вряд ли получится.
https://yadi.sk/i/IOMhGk1fcL7e_g
"главное, чтобы между 4018 и 5999", - Таких записей нереально много.
Ещё прикол в том, что с 2001 года по 38 записей хранится на каждый месяц вплоть до 2015 (+2000 со смещением), а это как раз дата создания базы (а точнее перехода с ут10.3)
8 triviumfan
 
10.09.18
15:59
Скорее всего после перехода рукоблуды что-то меняли обработками.
9 triviumfan
 
10.09.18
17:08
А вот и не так.
Регистр типовой - РасчетыСпоставщиками.
Доработок движений по нему нету.
В данном случае ДатаПлатежа = "01.01.0001 0:00:00", отсюда движения с такой датой.
10 triviumfan
 
10.09.18
17:09
А вот сам запрос движений по этому регистру:

Функция ТекстЗапросаТаблицаРасчетыСПоставщиками(Запрос, ТекстыЗапроса, Регистры)
    
    ИмяРегистра = "РасчетыСПоставщиками";
    
    Если НЕ ПроведениеСервер.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
        Возврат "";
    КонецЕсли;
    Если НЕ ПроведениеСервер.ЕстьТаблицаЗапроса("ВтТаблицаРасхожденияТоваров", ТекстыЗапроса) Тогда
        ТекстЗапросаВтТаблицаРасхожденияТоваров(Запрос, ТекстыЗапроса);
    КонецЕсли;
    УстановитьПараметрЗапросаАналитикаУчетаПоПартнерам(Запрос);
    
    ТекстЗапроса = "
    |ВЫБРАТЬ
    |    &Период                                                                 КАК Период,
    |    &Период                                                                 КАК ДатаРегистратора,
    |    &ДатаПлатежа                                                             КАК ДатаПлатежа,
    |    ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДС < 0 ТОГДА
    |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |    ИНАЧЕ
    |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    |    КОНЕЦ                                                                    КАК ВидДвижения,
    |    &АналитикаУчетаПоПартнерам                                                 КАК АналитикаУчетаПоПартнерам,
    |
    |    ВЫБОР КОГДА &РасчетыПоДоговорам ТОГДА
    |        &Договор
    |    ИНАЧЕ
    |        ВЫБОР КОГДА &ПоступлениеПоЗаказам И Не &РасчетыПоНакладным ТОГДА
    |            ТаблицаРасхождения.ЗаказПоставщику
    |        ИНАЧЕ
    |            &ДокументОснование
    |        КОНЕЦ
    |    КОНЕЦ                                                                     КАК ЗаказПоставщику,
    |
    |    ВЫБОР КОГДА &РасчетыПоДоговорам ТОГДА
    |        &ГруппаФинансовогоУчетаДоговора
    |    ИНАЧЕ
    |        ВЫБОР КОГДА &ПоступлениеПоЗаказам И Не &РасчетыПоНакладным ТОГДА
    |            ТаблицаРасхождения.ЗаказПоставщику.ГруппаФинансовогоУчета
    |        ИНАЧЕ
    |            &ГруппаФинансовогоУчета
    |        КОНЕЦ
    |    КОНЕЦ                                                                     КАК ГруппаФинансовогоУчета,
    |
    |    ВЫБОР
    |        КОГДА &РасчетыПоДоговорам ТОГДА
    |            ТаблицаРасхождения.ЗаказПоставщику
    |        ИНАЧЕ
    |            Неопределено
    |    КОНЕЦ                                                                    КАК ЗакупкаПоЗаказу,
    |
    |    &ВалютаВзаиморасчетов                                                     КАК Валюта,
    |    ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности) КАК ХозяйственнаяОперация,
    |    &ФормаОплаты                                                             КАК ФормаОплаты,
    |
    |    СУММА(ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДС < 0 ТОГДА
    |        -ТаблицаРасхождения.СуммаВзаиморасчетовСНДС
    |    ИНАЧЕ
    |        ТаблицаРасхождения.СуммаВзаиморасчетовСНДС
    |    КОНЕЦ)                                                                    КАК Сумма,
    |    СУММА(ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДСРегл < 0 ТОГДА
    |        -ТаблицаРасхождения.СуммаСНДСРегл
    |    ИНАЧЕ
    |        ТаблицаРасхождения.СуммаСНДСРегл
    |    КОНЕЦ)                                                                    КАК СуммаРегл,
    |    СУММА(ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДСУпр < 0 ТОГДА
    |        -ТаблицаРасхождения.СуммаСНДСУпр
    |    ИНАЧЕ
    |        ТаблицаРасхождения.СуммаСНДСУпр
    |    КОНЕЦ)                                                                    КАК СуммаУпр,
    |    СУММА(0)                                                                 КАК КОплате,
    |    СУММА(0)                                                                 КАК КПоступлению,
    |    &Организация                                                            КАК Организация
    |ИЗ
    |    ВтТаблицаРасхожденияТоваров КАК ТаблицаРасхождения
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаРасхождения.ЗаказПоставщику,
    |    ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДС < 0 ТОГДА
    |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |    ИНАЧЕ
    |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    |    КОНЕЦ,
    |    ВЫБОР КОГДА &РасчетыПоДоговорам ТОГДА
    |        &ГруппаФинансовогоУчетаДоговора
    |    ИНАЧЕ
    |        ВЫБОР КОГДА &ПоступлениеПоЗаказам И Не &РасчетыПоНакладным ТОГДА
    |            ТаблицаРасхождения.ЗаказПоставщику.ГруппаФинансовогоУчета
    |        ИНАЧЕ
    |            &ГруппаФинансовогоУчета
    |        КОНЕЦ
    |    КОНЕЦ
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    КОНЕЦПЕРИОДА(&ДатаПлатежа, День)                                         КАК Период,
    |    &Период                                                                 КАК ДатаРегистратора,
    |    &ДатаПлатежа                                                             КАК ДатаПлатежа,
    |    ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДС < 0 ТОГДА
    |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |    ИНАЧЕ
    |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    |    КОНЕЦ                                                                    КАК ВидДвижения,
    |    &АналитикаУчетаПоПартнерам                                                 КАК АналитикаУчетаПоПартнерам,
    |
    |    ВЫБОР КОГДА &РасчетыПоДоговорам ТОГДА
    |        &Договор
    |    ИНАЧЕ
    |        ВЫБОР КОГДА &ПоступлениеПоЗаказам И Не &РасчетыПоНакладным ТОГДА
    |            ТаблицаРасхождения.ЗаказПоставщику
    |        ИНАЧЕ
    |            &ДокументОснование
    |        КОНЕЦ
    |    КОНЕЦ                                                                     КАК ЗаказПоставщику,
    |
    |    ВЫБОР КОГДА &РасчетыПоДоговорам ТОГДА
    |        &ГруппаФинансовогоУчетаДоговора
    |    ИНАЧЕ
    |        ВЫБОР КОГДА &ПоступлениеПоЗаказам И Не &РасчетыПоНакладным ТОГДА
    |            ТаблицаРасхождения.ЗаказПоставщику.ГруппаФинансовогоУчета
    |        ИНАЧЕ
    |            &ГруппаФинансовогоУчета
    |        КОНЕЦ
    |    КОНЕЦ                                                                     КАК ГруппаФинансовогоУчета,
    |
    |    Неопределено                                                             КАК ЗакупкаПоЗаказу,
    |    &ВалютаВзаиморасчетов                                                     КАК Валюта,
    |    ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности) КАК ХозяйственнаяОперация,
    |    &ФормаОплаты                                                             КАК ФормаОплаты,
    |
    |    СУММА(0)                                                                 КАК Сумма,
    |    СУММА(0)                                                                 КАК СуммаРегл,
    |    СУММА(0)                                                                 КАК СуммаУпр,
    |    СУММА(ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДС < 0 ТОГДА
    |        -ТаблицаРасхождения.СуммаВзаиморасчетовСНДС
    |    ИНАЧЕ
    |        ТаблицаРасхождения.СуммаВзаиморасчетовСНДС
    |    КОНЕЦ)                                                                    КАК КОплате,
    |    СУММА(0)                                                                 КАК КПоступлению,
    |    &Организация                                                            КАК Организация
    |ИЗ
    |    ВтТаблицаРасхожденияТоваров КАК ТаблицаРасхождения
    |
    |ГДЕ
    |    ((ТаблицаРасхождения.КодСтроки <> 0 И ТаблицаРасхождения.СуммаВзаиморасчетовСНДС > 0)
    |        ИЛИ ТаблицаРасхождения.КодСтроки = 0
    |        ИЛИ &РасчетыПоНакладным)
    |    И НЕ &ГрафикИсполненияВДоговоре
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаРасхождения.ЗаказПоставщику,
    |    ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДС < 0 ТОГДА
    |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    |    ИНАЧЕ
    |        ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    |    КОНЕЦ,
    |    ВЫБОР КОГДА &РасчетыПоДоговорам ТОГДА
    |        &ГруппаФинансовогоУчетаДоговора
    |    ИНАЧЕ
    |        ВЫБОР КОГДА &ПоступлениеПоЗаказам И Не &РасчетыПоНакладным ТОГДА
    |            ТаблицаРасхождения.ЗаказПоставщику.ГруппаФинансовогоУчета
    |        ИНАЧЕ
    |            &ГруппаФинансовогоУчета
    |        КОНЕЦ
    |    КОНЕЦ
    |";
    
    ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
    
    Возврат ТекстЗапроса;
    
КонецФункции
11 triviumfan
 
10.09.18
17:14
Судя по движениям в 11.4, то можно предположить, что это ошибка релиза.

...
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ВЫБОР КОГДА ТаблицаРасхождения.СуммаСНДС < 0 ТОГДА
    |        &Период
    |    ИНАЧЕ
    |        КОНЕЦПЕРИОДА(&ДатаПлатежа, День)
    |    КОНЕЦ                                                                    КАК Период,
    |    &Период                                                                 КАК ДатаРегистратора,
    |    &ДатаПлатежа                                                             КАК ДатаПлатежа,
...
12 hhhh
 
10.09.18
17:23
(11) всё-таки там в релизе стоит запрет на пустую дату платежа. Поэтому всё-таки ваши рукоблуды виноваты, которые сняли эту проверку в конфе.
13 triviumfan
 
10.09.18
18:19
(12) не вижу обязательного заполнения =\
14 triviumfan
 
10.09.18
18:20
(13) максимум вот что:

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    
    Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
        НужноЗаполнитьДату = Ложь;
        Если Не ЗначениеЗаполнено(Объект.ДатаПлатежа) Тогда
            Для Каждого СтрокаРасхождений Из Объект.Расхождения Цикл
                Если СтрокаРасхождений.КодСтроки = 0 Тогда
                    НужноЗаполнитьДату = Истина;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
        Если НужноЗаполнитьДату Тогда
            ЗаполнитьДатуПлатежаПоУмолчаниюНаСервере();
        КонецЕсли;
    КонецЕсли;
...
КонецПроцедуры

Но что-то мне не нравится условие на кодстроки
15 triviumfan
 
10.09.18
18:20
да и прикол, что это при проведении из формы документа...
16 Вафель
 
10.09.18
18:21
чтоб такого не было нужно дату запрета всегда ставить хотя бы 01.01.2000
17 hhhh
 
10.09.18
18:36
(14) ты галки покажи, зачем код? понятно, что в коде не должно быть. Какой это документ?
18 triviumfan
 
10.09.18
20:10
(17) какие галки? это корректировка поступления