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

Вопрос по запросу

Вопрос по запросу
Я
   Nemirov
 
13.02.20 - 09:30
При выполнении запроса не видит проведенную существующую накладную через выборку, и по условию создает новую приходную накладную, через точку остановы прогонял выборка-ссылка = ошибка чтения значения. Для остальных документов, так же по подобной выборке нормально все перезаписывает.
   Nemirov
 
1 - 13.02.20 - 09:30
Функция СформироватьСебестоимость(Дата, Сумма, СтруктурнаяЕдиница)
    
    Если СтруктурнаяЕдиница = Справочники.СтруктурныеЕдиницы.НайтиПоКоду("54") Тогда 
        Контрагент = Справочники.Контрагенты.НайтиПоКоду("1-00008969");//бургеры   //в копии 8967   в оригинале 8969

    Иначе
        Контрагент = Справочники.Контрагенты.НайтиПоКоду("1-00008634");      //японская кухня

    КонецЕсли;    
    
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |    Приход.Ссылка КАК Ссылка
    |ИЗ
    |    Документ.ПриходнаяНакладная КАК Приход
    |ГДЕ
    |    Приход.Дата = &Дата
    |    И Приход.СтруктурнаяЕдиница = &СтруктурнаяЕдиница
    |   И Приход.ПометкаУдаления = ЛОЖЬ
    |   И Приход.Комментарий ПОДОБНО &Комм
    |   И Приход.Контрагент = &Контрагент
    |";
    
    Запрос.УстановитьПараметр("Дата",Дата );
    Запрос.УстановитьПараметр("СтруктурнаяЕдиница",СтруктурнаяЕдиница);
    Запрос.УстановитьПараметр("Контрагент", Контрагент); 
    Запрос.УстановитьПараметр("Комм","%"+"#Создан автоматически загрузкой из iiko."+"%");
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        Приход = Документы.ПриходнаяНакладная;
        Приход= Выборка.Ссылка.ПолучитьОбъект();
        ЭтоНовый = Ложь;
        Приход.УстановитьПометкуУдаления(Ложь);
    Иначе
    Приход = Документы.ПриходнаяНакладная.СоздатьДокумент();//Здесь

    ОмОбщиеПроцедурыИФункции.ПриСозданииНовогоДокумента(Приход);
    ЭтоНовый = Истина;
    КонецЕсли;
    
    Приход.Состав.Очистить();
    Приход.Дата               = Дата - 6;
    Приход.Фирма              = Константы.ФирмаОпределяющаяЦеныДляТорговогоОборудования.Получить();
    Приход.Контрагент         = Контрагент;
    Приход.СтруктурнаяЕдиница = СтруктурнаяЕдиница;
    Приход.Склад              = Приход.СтруктурнаяЕдиница.СкладТорговогоЗала;
    Приход.Договор            = ОпределитьДоговор(Приход.Контрагент,Перечисления.ВидыДоговоров.Покупка,Перечисления.ТипыДоговоров.КупляПродажа,Приход.Фирма);
    Приход.Валюта             = Справочники.Валюты.Рубль;
    Приход.КурсВалютыДоговора = 1;
    Приход.ВариантРасчетаНДС  = Перечисления.ВариантыРасчетаНДС.БезНДС;
    Приход.Комментарий        = "#Создан автоматически загрузкой из iiko.";
    ТекНоменклатура = Справочники.Номенклатура.НайтиПоКоду("1-00022857");//товар 

    НоваяСтрока                       = Приход.Состав.Добавить();
    ЕдиницаИзмерения = ОмОбщиеПроцедурыИФункции.ПолучитьБазовуюЕдиницуИзмерения(ТекНоменклатура);
    НоваяСтрока.ЕдиницаИзмерения      = ЕдиницаИзмерения;
    НоваяСтрока.Коэффициент           = 1;
    НоваяСтрока.Номенклатура          = ТекНоменклатура;
    НоваяСтрока.Количество            = 1;
    НоваяСтрока.КоличествоПоДокументу = 1;
    СтавкаНДС = ОмОбщиеПроцедурыИФункции.ПолучитьСтавкуНДСНаДату(ТекНоменклатура,ТекущаяДата());
    НоваяСтрока.СтавкаНДС             = СтавкаНДС;    
    НоваяСтрока.Цена                  = Сумма;
    ОмРаботаСФормами.РассчитатьСуммуТабЧасти(НоваяСтрока);
    ОмРаботаСФормами.РассчитатьСуммуНДСТабЧасти(НоваяСтрока, Приход.ВариантРасчетаНДС);    
    ОмРаботаСФормами.РассчитатьВсегоТабЧасти(НоваяСтрока, Приход.ВариантРасчетаНДС);
    ОмОбщиеПроцедурыИФункции.СформироватьНомерДокумента(Приход);
    Попытка
        Приход.Записать(РежимЗаписиДокумента.Запись);
        Сообщить(" " + Приход + ": Документ записан.");
        Отказ = Ложь;
    Исключение
        Сообщить(ОписаниеОшибки());
        Отказ = Истина;
    КонецПопытки;
    Если Не Отказ Тогда
        ДокПереоценка                              = Документы.Переоценка.СоздатьДокумент();
        ОмОбщиеПроцедурыИФункции.ПриСозданииНовогоДокумента(ДокПереоценка);
        ДокПереоценка.Автор                        = ПараметрыСеанса.ТекущийПользователь;
        ДокПереоценка.Фирма                        = Приход.Фирма;
        ДокПереоценка.Дата                         = Приход.Дата - 2;
        ДокПереоценка.ДокОснование                 = Приход.Ссылка;
        ДокПереоценка.КатегорияЦен                 = Справочники.КатегорииЦен.Розничная;
        ДокПереоценка.Комментарий                  = "#Создан автоматически";
        ДокПереоценка.СтруктурнаяЕдиница           = Приход.СтруктурнаяЕдиница;
        ДокПереоценка.СтруктурнаяЕдиницаНазначения = Приход.СтруктурнаяЕдиница;
        СтрокаПереоценки                  = ДокПереоценка.Состав.Добавить();
        СтрокаПереоценки.Номенклатура     = ТекНоменклатура;
        СтрокаПереоценки.ЕдиницаИзмерения = ЕдиницаИзмерения;
        СтрокаПереоценки.ЦенаНовая = 1;
        ОмОбщиеПроцедурыИФункции.СформироватьНомерДокумента(ДокПереоценка);
        Попытка
            ДокПереоценка.Записать(РежимЗаписиДокумента.Проведение);
            Сообщить(" " + ДокПереоценка+ ": Документ проведен.");
            Отказ = Ложь;
        Исключение
            Сообщить(ОписаниеОшибки());
            Отказ = Истина;
        КонецПопытки;
    КонецЕсли;
    Если Не Отказ Тогда
        Попытка
            Приход.Записать(РежимЗаписиДокумента.Проведение);
            Сообщить(" " + Приход + ": Документ проведен.");
            Отказ = Ложь;
        Исключение
            Сообщить(ОписаниеОшибки());
            Отказ = Истина;
        КонецПопытки;
    КонецЕсли;
    Возврат(Отказ);
    
КонецФункции
   Nemirov
 
2 - 13.02.20 - 09:31
Помогите
   Nemirov
 
3 - 13.02.20 - 09:31
Исправлюсь
    Запрос.УстановитьПараметр("Дата",Дата - 10 );
   Nemirov
 
4 - 13.02.20 - 09:33
Если Выборка.Следующий() Тогда
        Приход= Выборка.Ссылка.ПолучитьОбъект();
        ЭтоНовый = Ложь;
        Приход.УстановитьПометкуУдаления(Ложь);
Иначе
    Приход = Документы.ПриходнаяНакладная.СоздатьДокумент();//Здесь

    ОмОбщиеПроцедурыИФункции.ПриСозданииНовогоДокумента(Приход);
    ЭтоНовый = Истина;

КонецЕсли;
   Nemirov
 
5 - 13.02.20 - 09:33
Выполняется 2 условие, хотя документ существует.
   unbred
 
6 - 13.02.20 - 09:36
может всё-таки дата между?
   GROOVY
 
7 - 13.02.20 - 09:37
Автор в курсе того что дата минус число = дата минус секунды?
   Nemirov
 
8 - 13.02.20 - 09:42
(6)
Конструкция даты была изначально такой не я автор даты)
Процедура ПриОткрытии()
    
    СоответсвиеМагазинов = Новый Соответствие; 
    СоответсвиеМагазинов.Вставить("2", Справочники.СтруктурныеЕдиницы.НайтиПоКоду("54"));//бургеры

    СоответсвиеМагазинов.Вставить("1", Справочники.СтруктурныеЕдиницы.НайтиПоКоду("52"));//японская кухня

    
    Если АвтоЗапуск Тогда
        ПутьКсерверу = "*******";
        Порт         = "****";
        Логин        = "**";
        Пароль       = "Drsao65";
        ТипЗагрузки = 1;
        //ИмяФайла = "V:\Прием кассовой выручки.csv";

        //КаталогНаДиске = Новый Файл(ИмяФайла);

        //Если КаталогНаДиске.Существует() Тогда        

        //    ПрочитатьФайл();

        //    ОбрабткаНажатияКнопкиВыполнить();

        //Иначе

        //    Сообщить("Файл не найден");

        //КонецЕсли;

        Флажок1 = Истина;
        НачПериода = НачалоДня(ТекущаяДата() - 86400);
        КонПериода = КонецДня(ТекущаяДата() - 86400);
        ПрочитатьCOM();
        ОбрабткаНажатияКнопкиВыполнитьCOM();
        ЭтаФорма.Закрыть();        
    Иначе
        ТипЗагрузки = 0;                      
    КонецЕсли;
    
    //ЭлементыФормы.ПолеВыбора.СписокВыбора.Очистить();

КонецПроцедуры
   catena
 
9 - 13.02.20 - 09:51
(8)Вытаскиваешь запрос в консоль, по одному комментируешь условия, ищешь то, на котором спотыкается, исправляешь.
   Greeen
 
10 - 13.02.20 - 10:40
(0) Если предполагается, что по этому контрагенту должна быть одна накладная в день, то в запросе меняем
|    Приход.Дата = &Дата
на
|    НачалоПериода(Приход.Дата, День) = НачалоПериода(&Дата, День)
и смотрим, попадет что то или нет
   Nemirov
 
11 - 13.02.20 - 10:44
(7) Так задумано, документы проводятся последовательно с разницей в секунды)

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