|   |   | 
| 
 | Вопрос по запросу | ☑ | ||
|---|---|---|---|---|
| 0
    
        Nemirov 13.02.20✎ 09:30 | 
        При выполнении запроса не видит проведенную существующую накладную через выборку, и по условию создает новую приходную накладную, через точку остановы прогонял выборка-ссылка = ошибка чтения значения. Для остальных документов, так же по подобной выборке нормально все перезаписывает.     | |||
| 1
    
        Nemirov 13.02.20✎ 09:30 | 
        Функция СформироватьСебестоимость(Дата, Сумма, СтруктурнаяЕдиница)
 Если СтруктурнаяЕдиница = Справочники.СтруктурныеЕдиницы.НайтиПоКоду("54") Тогда Контрагент = Справочники.Контрагенты.НайтиПоКоду("1-00008969"); //бургеры //в копии 8967 в оригинале 8969 Иначе Контрагент = Справочники.Контрагенты.НайтиПоКоду("1-00008634"); //японская кухня КонецЕсли; Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | Приход.Ссылка КАК Ссылка |ИЗ | Документ.ПриходнаяНакладная КАК Приход |ГДЕ | Приход.Дата = &Дата | И Приход.СтруктурнаяЕдиница = &СтруктурнаяЕдиница | И Приход.ПометкаУдаления = ЛОЖЬ | И Приход.Комментарий ПОДОБНО &Комм | И Приход.Контрагент = &Контрагент |"; Запрос.УстановитьПараметр("Дата",Дата ); Запрос.УстановитьПараметр("СтруктурнаяЕдиница",СтруктурнаяЕдиница); Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.УстановитьПараметр("Комм","%"+"#Создан автоматически загрузкой из iiko."+"%"); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Приход = Документы.ПриходнаяНакладная; Приход= Выборка.Ссылка.ПолучитьОбъект(); ЭтоНовый = Ложь; Приход.УстановитьПометкуУдаления(Ложь); Иначе Приход = Документы.ПриходнаяНакладная.СоздатьДокумент(); //Здесь ОмОбщиеПроцедурыИФункции.ПриСозданииНовогоДокумента(Приход); ЭтоНовый = Истина; КонецЕсли; Приход.Состав.Очистить(); Приход.Дата = Дата - 6; Приход.Фирма = Константы.ФирмаОпределяющаяЦеныДляТорговогоОборудования.Получить(); Приход.Контрагент = Контрагент; Приход.СтруктурнаяЕдиница = СтруктурнаяЕдиница; Приход.Склад = Приход.СтруктурнаяЕдиница.СкладТорговогоЗала; Приход.Договор = ОпределитьДоговор(Приход.Контрагент,Перечисления.ВидыДоговоров.Покупка,Перечисления.ТипыДоговоров.КупляПродажа,Приход.Фирма); Приход.Валюта = Справочники.Валюты.Рубль; Приход.КурсВалютыДоговора = 1; Приход.ВариантРасчетаНДС = Перечисления.ВариантыРасчетаНДС.БезНДС; Приход.Комментарий = "#Создан автоматически загрузкой из iiko."; ТекНоменклатура = Справочники.Номенклатура.НайтиПоКоду("1-00022857"); //товар НоваяСтрока = Приход.Состав.Добавить(); ЕдиницаИзмерения = ОмОбщиеПроцедурыИФункции.ПолучитьБазовуюЕдиницуИзмерения(ТекНоменклатура); НоваяСтрока.ЕдиницаИзмерения = ЕдиницаИзмерения; НоваяСтрока.Коэффициент = 1; НоваяСтрока.Номенклатура = ТекНоменклатура; НоваяСтрока.Количество = 1; НоваяСтрока.КоличествоПоДокументу = 1; СтавкаНДС = ОмОбщиеПроцедурыИФункции.ПолучитьСтавкуНДСНаДату(ТекНоменклатура,ТекущаяДата()); НоваяСтрока.СтавкаНДС = СтавкаНДС; НоваяСтрока.Цена = Сумма; ОмРаботаСФормами.РассчитатьСуммуТабЧасти(НоваяСтрока); ОмРаботаСФормами.РассчитатьСуммуНДСТабЧасти(НоваяСтрока, Приход.ВариантРасчетаНДС); ОмРаботаСФормами.РассчитатьВсегоТабЧасти(НоваяСтрока, Приход.ВариантРасчетаНДС); ОмОбщиеПроцедурыИФункции.СформироватьНомерДокумента(Приход); Попытка Приход.Записать(РежимЗаписиДокумента.Запись); Сообщить(" " + Приход + ": Документ записан."); Отказ = Ложь; Исключение Сообщить(ОписаниеОшибки()); Отказ = Истина; КонецПопытки; Если Не Отказ Тогда ДокПереоценка = Документы.Переоценка.СоздатьДокумент(); ОмОбщиеПроцедурыИФункции.ПриСозданииНовогоДокумента(ДокПереоценка); ДокПереоценка.Автор = ПараметрыСеанса.ТекущийПользователь; ДокПереоценка.Фирма = Приход.Фирма; ДокПереоценка.Дата = Приход.Дата - 2; ДокПереоценка.ДокОснование = Приход.Ссылка; ДокПереоценка.КатегорияЦен = Справочники.КатегорииЦен.Розничная; ДокПереоценка.Комментарий = "#Создан автоматически"; ДокПереоценка.СтруктурнаяЕдиница = Приход.СтруктурнаяЕдиница; ДокПереоценка.СтруктурнаяЕдиницаНазначения = Приход.СтруктурнаяЕдиница; СтрокаПереоценки = ДокПереоценка.Состав.Добавить(); СтрокаПереоценки.Номенклатура = ТекНоменклатура; СтрокаПереоценки.ЕдиницаИзмерения = ЕдиницаИзмерения; СтрокаПереоценки.ЦенаНовая = 1; ОмОбщиеПроцедурыИФункции.СформироватьНомерДокумента(ДокПереоценка); Попытка ДокПереоценка.Записать(РежимЗаписиДокумента.Проведение); Сообщить(" " + ДокПереоценка+ ": Документ проведен."); Отказ = Ложь; Исключение Сообщить(ОписаниеОшибки()); Отказ = Истина; КонецПопытки; КонецЕсли; Если Не Отказ Тогда Попытка Приход.Записать(РежимЗаписиДокумента.Проведение); Сообщить(" " + Приход + ": Документ проведен."); Отказ = Ложь; Исключение Сообщить(ОписаниеОшибки()); Отказ = Истина; КонецПопытки; КонецЕсли; Возврат(Отказ); КонецФункции | |||
| 2
    
        Nemirov 13.02.20✎ 09:31 | 
        Помогите     | |||
| 3
    
        Nemirov 13.02.20✎ 09:31 | 
        Исправлюсь
 Запрос.УстановитьПараметр("Дата",Дата - 10 ); | |||
| 4
    
        Nemirov 13.02.20✎ 09:33 | 
        Если Выборка.Следующий() Тогда
 Приход= Выборка.Ссылка.ПолучитьОбъект(); ЭтоНовый = Ложь; Приход.УстановитьПометкуУдаления(Ложь); Иначе Приход = Документы.ПриходнаяНакладная.СоздатьДокумент(); //Здесь ОмОбщиеПроцедурыИФункции.ПриСозданииНовогоДокумента(Приход); ЭтоНовый = Истина; КонецЕсли; | |||
| 5
    
        Nemirov 13.02.20✎ 09:33 | 
        Выполняется 2 условие, хотя документ существует.     | |||
| 6
    
        unbred 13.02.20✎ 09:36 | 
        может всё-таки дата между?     | |||
| 7
    
        GROOVY 13.02.20✎ 09:37 | 
        Автор в курсе того что дата минус число = дата минус секунды?     | |||
| 8
    
        Nemirov 13.02.20✎ 09:42 | 
        (6) 
 Конструкция даты была изначально такой не я автор даты) Процедура ПриОткрытии() СоответсвиеМагазинов = Новый Соответствие; СоответсвиеМагазинов.Вставить("2", Справочники.СтруктурныеЕдиницы.НайтиПоКоду("54")); //бургеры СоответсвиеМагазинов.Вставить("1", Справочники.СтруктурныеЕдиницы.НайтиПоКоду("52")); //японская кухня Если АвтоЗапуск Тогда ПутьКсерверу = "*******"; Порт = "****"; Логин = "**"; Пароль = "Drsao65"; ТипЗагрузки = 1; //ИмяФайла = "V:\Прием кассовой выручки.csv"; //КаталогНаДиске = Новый Файл(ИмяФайла); //Если КаталогНаДиске.Существует() Тогда // ПрочитатьФайл(); // ОбрабткаНажатияКнопкиВыполнить(); //Иначе // Сообщить("Файл не найден"); //КонецЕсли; Флажок1 = Истина; НачПериода = НачалоДня(ТекущаяДата() - 86400); КонПериода = КонецДня(ТекущаяДата() - 86400); ПрочитатьCOM(); ОбрабткаНажатияКнопкиВыполнитьCOM(); ЭтаФорма.Закрыть(); Иначе ТипЗагрузки = 0; КонецЕсли; //ЭлементыФормы.ПолеВыбора.СписокВыбора.Очистить(); КонецПроцедуры | |||
| 9
    
        catena 13.02.20✎ 09:51 | 
        (8)Вытаскиваешь запрос в консоль, по одному комментируешь условия, ищешь то, на котором спотыкается, исправляешь.     | |||
| 10
    
        Greeen 13.02.20✎ 10:40 | 
        (0) Если предполагается, что по этому контрагенту должна быть одна накладная в день, то в запросе меняем
 | Приход.Дата = &Дата на | НачалоПериода(Приход.Дата, День) = НачалоПериода(&Дата, День) и смотрим, попадет что то или нет | |||
| 11
    
        Nemirov 13.02.20✎ 10:44 | 
        (7) Так задумано, документы проводятся последовательно с разницей в секунды)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |