Имя: Пароль:
1C
1С v8
Выбор периода в выгрузке
0 Aslay
 
18.09.18
13:05
Приветствую. Есть самописная обработка-выгрузка справочников и оборотов. Она не верно работает, точнее выгружает документы только до вчерашнего числа. Допустим сегодня сформировали автозаказ, так сегодняшние заказы обработка не выгружает. Глянул код и честно гвооря меня он смутил.

НастройкаПериода.УстановитьПериод(Период.ДатаНачала, ?(Период.ДатаОкончания='0001-01-01', Период.ДатаОкончания, КонецДня(Период.ДатаОкончания)));

Есть тут кодеры? подскажите?
1 catena
 
18.09.18
13:09
Что именно подсказать-то?
2 НоваяВолна
 
18.09.18
13:14
(0) Что не понятно? Если не задан Период.ДатаОкончания, то берется ДатаОкончания на начало дня, а если задан то на конец дня
3 Михаил Козлов
 
18.09.18
13:15
Напишите так:
НастройкаПериода.УстановитьПериод(Период.ДатаНачала, ?(ЗначениеЗаполнено(Период.ДатаОкончания), КонецДня(Период.ДатаОкончания), КонецДня(Текущая.Дата)));
4 Aslay
 
18.09.18
13:35
(1) (2) непонятна причина выгрузки не день в день а минус 1 день. не в этои ли строчка проблемная?
5 catena
 
18.09.18
13:39
(4)Вы пытаетесь методом тыка найти, где исправить? Это не та строчка, можно продолжать поиски.
6 Aslay
 
29.09.18
11:02
(5) скорее всего да. в 1сных кодах я не особо. не так давно начал изучать.

Потихоьнку разобрался что выгружает с регистра накопления, приход-перемещение день в день, а вот обороты выгружает только на следующий день. Какая то зависимость от перемещения. Чуть позже покажу процедуру выборки, может и подскажете а точнее ткнете носом в ошибку.
7 Cool_Profi
 
29.09.18
11:03
А почему это ошибкой считается? Может, так и было задумаено?
8 Aslay
 
29.09.18
11:20
Наверное стоит расписать как и для чего она. есть магазин и склад.  С магазина внешней обработкой в фтп сливаются заказы, перемещения(с товара с магазина на склад-допустим велосипеды уже не актуальны),  в биглит с фтп (это система складского учета) перемещения падают сразу, номенклатура тоже сразу, а вот заказы только на следующий день. Почему неправильно-потому что завсклад должен ориентироватся на заказ(в биглите) и перемещать их в магазин. Сейчас операторы формируют заказ и передают почтой).
9 Aslay
 
29.09.18
12:21
насколько я понимаю в приведенном коде ниже идет инициилизация данных для выгрузки

"ВЫБРАТЬ
        |    ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
        |    ТоварыНаСкладахОбороты.Регистратор,
        |    ЕСТЬNULL(ТоварыНаСкладахОбороты.Регистратор.Контрагент, ЕСТЬNULL(ПартииТоваровНаСкладах.ДокументОприходования.Контрагент, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))) КАК Контрагент,
        |    ТоварыНаСкладахОбороты.Регистратор.Номер,
        |    ТоварыНаСкладахОбороты.Регистратор.Дата,
        |    ВЫБОР
        |        КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
        |            ТОГДА ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоРасход, 0) + ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0)
        |        ИНАЧЕ ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоРасход, 0) + ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0)
        |    КОНЕЦ КАК Количество,
        |    ТоварыНаСкладах.ВидДвижения,
        |    ТоварыНаСкладах.НомерСтроки
        |ПОМЕСТИТЬ ВТ_Остатки
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, &УсловиеСклад) КАК ТоварыНаСкладахОбороты
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
        |        ПО ТоварыНаСкладахОбороты.Регистратор = ТоварыНаСкладах.Регистратор
        |            И ТоварыНаСкладахОбороты.Номенклатура = ТоварыНаСкладах.Номенклатура
        |            И ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры
        |            И ТоварыНаСкладахОбороты.СерияНоменклатуры = ТоварыНаСкладах.СерияНоменклатуры
        |            И ТоварыНаСкладахОбороты.Качество = ТоварыНаСкладах.Качество
        |            И ТоварыНаСкладахОбороты.Склад = ТоварыНаСкладах.Склад
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
        |        ПО ТоварыНаСкладахОбороты.Регистратор = ПартииТоваровНаСкладах.Регистратор
        |            И ТоварыНаСкладахОбороты.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
        |            И ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры
        |            И ТоварыНаСкладахОбороты.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры
        |            И ТоварыНаСкладахОбороты.Качество = ПартииТоваровНаСкладах.Качество
        |            И ТоварыНаСкладахОбороты.Склад = ПартииТоваровНаСкладах.Склад
        |;";
10 Aslay
 
01.10.18
15:24
КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
        |            ТОГДА ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоРасход, 0) + ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0)
        |        ИНАЧЕ ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоРасход, 0) + ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0)

в ТОГДА и в ИНАЧЕ стоит +. По моему в иначе должен быть -.  Сеичас не могу проверить обработку, Но как по вашему мнению, ошибка в знаке?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший