|
Вопрос по запросу | ☑ | ||
---|---|---|---|---|
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) Так задумано, документы проводятся последовательно с разницей в секунды)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |