Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Если есть такой документ, тогда не создавать

Если есть такой документ, тогда не создавать
Я
   Snail
 
03.11.20 - 14:40
Написал обработку загрузки документов из эекселя, как сделать проверку на одинаковые документы? Выбрал файл эксель, создалось куча документов, выбрал опять этот файл и получил по 2 копии. Подскажите как сделать)
   Волшебник
 
1 - 03.11.20 - 14:43
НайтиПоНомеру()
   Snail
 
2 - 03.11.20 - 14:43
Спасибо!
   Snail
 
3 - 03.11.20 - 14:45
А номер разве будет в новом документе перед записью?
   Aleksey
 
4 - 03.11.20 - 14:47
(3) А что значит есть такой документ? По какому признаку ты его идентифицируешь? Разве в екселе не может быть 2 одинаковых строки? И как понять что это новый или просто такая же строка, но с другой суммой?
   Fish
 
5 - 03.11.20 - 14:52
(0) Сделай проверку на уникальность перед созданием.
   ГдеСобакаЗарыта
 
6 - 03.11.20 - 14:56
Нужно Excel засунуть во временную таблицу запроса, соединить с существующими документами по ключевым полям и ГДЕ СуществующиеДоки.Ссылка ЕСТЬ NULL.
   Snail
 
7 - 03.11.20 - 14:58
Алексей,
Авто после записи = истина
Контрагент
Водитель
Сума
Дата
Вот такую проверку
   ДенисЧ
 
8 - 03.11.20 - 14:59
(7) Критерий есть. Что мешает вставить проверку и поиск по этому критерию?
   Волшебник
 
9 - 03.11.20 - 15:00
(8) Вероятно, ошибка. Поле "Сума" не обнаружено
   ГдеСобакаЗарыта
 
10 - 03.11.20 - 15:01
(8) Полагаю у ТС отсутствует скилл написания запросов)
   Snail
 
11 - 03.11.20 - 15:02
ГдеСобакаЗарыта, да не прокачал еще )
   Snail
 
12 - 03.11.20 - 15:02
Сума = Сумма опечатался
   Волшебник
 
13 - 03.11.20 - 15:02
Пахнет запросом в цикле...
   ДенисЧ
 
14 - 03.11.20 - 15:03
(9) от сумы не зарекаются.
   Snail
 
15 - 03.11.20 - 15:04
Делать выборку документов и перед записью проверять?
Будет цикл в цикле
   Snail
 
16 - 03.11.20 - 15:04
Там и так 2 цикла один на шапку документа, второй на табличную часть
   Волшебник
 
17 - 03.11.20 - 15:06
(16) Надо ещё проверять дубли строк. Нужен запрос во вложенном цикле
   АгентБезопаснойНацио
 
18 - 03.11.20 - 15:08
(9) от сумы не зарекаются
   piter3
 
19 - 03.11.20 - 15:10
А сколько записей всего?
   Snail
 
20 - 03.11.20 - 15:16
документов создает от 3 до 70 с одного файла
   ГдеСобакаЗарыта
 
21 - 03.11.20 - 15:16
Еще хороший вариант - чтоб не случалось "Выбрал файл эксель, создалось куча документов, выбрал опять этот файл и получил по 2 копии", нужно после первой загрузки файл удалять. SHIFT+DEL. И тогда второй не будет. Ваш Кэп
   Snail
 
22 - 03.11.20 - 15:20
ГдеСобакаЗарыта, это было бы идеально, но..
При создании документа есть реквизит Авто = Истина
После того как что-то поменять в документе Авто = Ложь
И такой документ уже нельзя удалять :(
И нужно чтобы после повторной загрузки создавать копию такого документа
   Snail
 
23 - 03.11.20 - 15:21
Проверки на  Авто и Контрагент было бы достаточно
   Aleksey
 
24 - 03.11.20 - 15:28
(23) Без даты не взлетит
   УдавВПопугаях
 
25 - 03.11.20 - 15:28
что за белеберда..
   АгентБезопаснойНацио
 
26 - 03.11.20 - 15:28
(22) Нужно - "Сделай!"©
   УдавВПопугаях
 
27 - 03.11.20 - 15:29
сколько раз пользователь жмет кнопку столько документов и создается, жжесть
   АгентБезопаснойНацио
 
28 - 03.11.20 - 15:30
(27) ну чего уж ты сразу так... можно создавать не "сколько жмет на кнопку", а вдвое больше. Тебе что, уидов жалко?
   Snail
 
29 - 03.11.20 - 15:34
ВыборкаДокументов = Документы.РасходнаяНакладная.Выбрать(НачалоДня(ТекущаяДата()),КонецДня(ТекущаяДата()),  КакТутУказатьКонтрагента);
   УдавВПопугаях
 
30 - 03.11.20 - 15:37
ну ладно, он пытается идентифицировать типа копии, спрашивает тут, но ёпырст, откуда мы знаем как он, что и когда грузит, где будет копия, а где нет. Один раз для одного контрагента, для одной номенклатуры, раз в месяц, раз в жизни или как?
ну после (7) все сразу стало понятно
"как сделать проверку на одинаковые документы?"
ТС, что означает слово одинаковые? по какому признаку?
 
 Рекламное место пустует
   ГдеСобакаЗарыта
 
31 - 03.11.20 - 15:38
(27) Не самое страшное. Я видел обработку загрузки из файла, которая сначала удаляла документы за период, указанный в файле, а потом загружала новые. Один раз ей подсунули случайно левый файл, обработка период в нем не нашла и тупо грохнула все доки поступлений в базе. Типа период не указан, значит выбираем все. Заказчик очень расстроился.
   УдавВПопугаях
 
32 - 03.11.20 - 15:39
(23) недостаточно
   Snail
 
33 - 03.11.20 - 15:41
(30) один день,  однин контрагент
   УдавВПопугаях
 
34 - 03.11.20 - 15:42
(31) гггггг
у нас однажды грохнули ЗначенияСвойствОбъектов, после нескольких лет активного использования механизма где только можно, расстроились все, ну копия конечно разрулила
   АгентБезопаснойНацио
 
35 - 03.11.20 - 15:42
(31)  период не указан, значит выбираем все. Вид документа не указан - удаляем все.
В пределе: пустой файл удаляет базу :-)
   УдавВПопугаях
 
36 - 03.11.20 - 15:44
(33) а точно? если вкратце, что за "бизнес процесс"? типа инкасация что ли какая то?
   Snail
 
37 - 03.11.20 - 15:46
Заказы булок на магазины
   УдавВПопугаях
 
38 - 03.11.20 - 15:46
один контрагент, а водителей 2 не может быть?
глупый вопрос, конечно может, если даже не в реальности, то по ошибке заполнения экселя, проверочка нужна
(37) а хде номенклатура тогда
   Snail
 
39 - 03.11.20 - 15:47
В файле эксель есть код водителя
   Snail
 
40 - 03.11.20 - 15:51
сделать выборку документов за день по контрагенту?
Если есть в выборке такой контрагент и Авто = Истина - не создавать документ
   УдавВПопугаях
 
41 - 03.11.20 - 16:03
(40) я бы запросом и по регистру (если он есть) делал
если регистра нет, то в запросе к документам надо учесть признаки проведенности и пометок на удаление + да, условия на контрагента и дату поставки
признак Авто в таком варианте, как ситуация сейчас выглядит, какой то сомнительный
   УдавВПопугаях
 
42 - 03.11.20 - 16:05
при этом неясно, что с номенклатурой, она у вас только одна? это дополнительный разрез получается, если есть, надо учитывать тоже
   УдавВПопугаях
 
43 - 03.11.20 - 16:11
Запрос.Текст = "Выбрать Документ.Ссылка Из Документ.Заказ Как Документ Где Документ.Проведен = Истина И Документ.Контрагент = &Контр И Документ.ДатаПоставки = &Дата";
Для Каждого ИтераторЧтения Из Экселя Цикл
Запрос.УстановитьПараметр("Контрагент", КонтрагентПолученныйИзЭкселя);
...Параметры...
Если Запрос.Выполнить().ПУстой() ТОгда
Документ = Документы.Заказ.СоздатьДокумент();
ДОкумент.Контрагент = Контрагент;
...Реквизиты...
Документ.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;

конструкция неточна! смысл такой
   Snail
 
44 - 03.11.20 - 16:11
Номенклатуры много, но ее ненадо учитывать
   Snail
 
45 - 03.11.20 - 16:13
УдавВПопугаях, оргомное спасибо!
   Волшебник
 
46 - 03.11.20 - 16:13
(43) Ужасный запрос. Лучше так:

ВЫБРАТЬ Ссылка ИЗ Документ.Заказ ГДЕ Проведен И Контрагент = &Контр И ДатаПоставки = &Дата
   УдавВПопугаях
 
47 - 03.11.20 - 16:19
(44) интересный заказ булок, но без булок, ну и ладно, инкасация похоже все таки
(45) ну это не инструкция к действию один в один, надо подправить под свою ситуацию
(46) ))
   Snail
 
48 - 03.11.20 - 16:29
УдавВПопугаях, это булки. И в документ из экселя я все запихиваю в ТЧ документа
   Snail
 
49 - 03.11.20 - 16:30
В колонках контрагенты с кодами в строках номенклатура с кодами
   УдавВПопугаях
 
50 - 03.11.20 - 16:35
(49) вот и смотри - загрузили один раз эксель для контрагента1 с номенклатурой1 на дату1, создали документ, записали, провели
потом в эксель добавляют для этого же контрагента на эту же дату еще одну строку, но с другой номенклатурой, а запрос только по контр и дате уже вернет результат выборки и в условие, где создается/модифицируется документ уже не попадет и новая позиция не добавится
тебе то виднее конечно, что и как должно быть, но из того что видно отсюда
   УдавВПопугаях
 
51 - 03.11.20 - 16:42
еще могут и просто сумму/количество поменять... вариантов много, лучше какую то подсистему магазинам сделать для подачи заявок/заказов в 1с, тогда сами будут рулить что и на когда заказывать и если что не так, то виноваты сами
   Snail
 
52 - 03.11.20 - 16:44
НовыйДокумент = Документы.РГП.СоздатьДокумент();    
            НовыйДокумент.Дата = ТекущаяДата() + 86400;
            Объект.Водитель = Справочники.Водители.НайтиПоРеквизиту("Код", ТЗ2[2][0]);    
            НовыйДокумент.Водитель  = Объект.Водитель;                    
            НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("Код",ТЗ2[1][КК]);
            Для Каждого СтрокаТЗ  Из ТЗ2 Цикл
                А = СтрокаТЗ.Проба;
                Если А = 0 Или А = 1 Или А = 2 Или А = 3 Тогда
                    Продолжить;
                Иначе 
                    Стр = НовыйДокумент.ТЧР.Добавить();
                    Стр.ТМЦ = Справочники.Булки.НайтиПоРеквизиту("Код", СтрокаТЗ.Колонка1);
                    Стр.Количество = СтрокаТЗ[КК]; 
                КонецЕсли;
            КонецЦикла;
НовийДокумент.Записать();
   МимохожийОднако
 
53 - 03.11.20 - 17:25
Записывай в документ контрольную сумму файла-источника. А перед загрузкой проверяй наличие документов, порожденных этим файлом.


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