|
Если есть такой документ, тогда не создавать | ☑ | ||
---|---|---|---|---|
0
Snail
03.11.20
✎
14:40
|
Написал обработку загрузки документов из эекселя, как сделать проверку на одинаковые документы? Выбрал файл эксель, создалось куча документов, выбрал опять этот файл и получил по 2 копии. Подскажите как сделать)
|
|||
1
Волшебник
03.11.20
✎
14:43
|
НайтиПоНомеру()
|
|||
2
Snail
03.11.20
✎
14:43
|
Спасибо!
|
|||
3
Snail
03.11.20
✎
14:45
|
А номер разве будет в новом документе перед записью?
|
|||
4
Aleksey
03.11.20
✎
14:47
|
(3) А что значит есть такой документ? По какому признаку ты его идентифицируешь? Разве в екселе не может быть 2 одинаковых строки? И как понять что это новый или просто такая же строка, но с другой суммой?
|
|||
5
Fish
03.11.20
✎
14:52
|
(0) Сделай проверку на уникальность перед созданием.
|
|||
6
ГдеСобака Зарыта
03.11.20
✎
14:56
|
Нужно Excel засунуть во временную таблицу запроса, соединить с существующими документами по ключевым полям и ГДЕ СуществующиеДоки.Ссылка ЕСТЬ NULL.
|
|||
7
Snail
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) Полагаю у ТС отсутствует скилл написания запросов)
|
|||
11
Snail
03.11.20
✎
15:02
|
ГдеСобакаЗарыта, да не прокачал еще )
|
|||
12
Snail
03.11.20
✎
15:02
|
Сума = Сумма опечатался
|
|||
13
Волшебник
03.11.20
✎
15:02
|
Пахнет запросом в цикле...
|
|||
14
ДенисЧ
03.11.20
✎
15:03
|
(9) от сумы не зарекаются.
|
|||
15
Snail
03.11.20
✎
15:04
|
Делать выборку документов и перед записью проверять?
Будет цикл в цикле |
|||
16
Snail
03.11.20
✎
15:04
|
Там и так 2 цикла один на шапку документа, второй на табличную часть
|
|||
17
Волшебник
03.11.20
✎
15:06
|
(16) Надо ещё проверять дубли строк. Нужен запрос во вложенном цикле
|
|||
18
АгентБезопасной Нацио
03.11.20
✎
15:08
|
(9) от сумы не зарекаются
|
|||
19
piter3
03.11.20
✎
15:10
|
А сколько записей всего?
|
|||
20
Snail
03.11.20
✎
15:16
|
документов создает от 3 до 70 с одного файла
|
|||
21
ГдеСобака Зарыта
03.11.20
✎
15:16
|
Еще хороший вариант - чтоб не случалось "Выбрал файл эксель, создалось куча документов, выбрал опять этот файл и получил по 2 копии", нужно после первой загрузки файл удалять. SHIFT+DEL. И тогда второй не будет. Ваш Кэп
|
|||
22
Snail
03.11.20
✎
15:20
|
ГдеСобакаЗарыта, это было бы идеально, но..
При создании документа есть реквизит Авто = Истина После того как что-то поменять в документе Авто = Ложь И такой документ уже нельзя удалять :( И нужно чтобы после повторной загрузки создавать копию такого документа |
|||
23
Snail
03.11.20
✎
15:21
|
Проверки на Авто и Контрагент было бы достаточно
|
|||
24
Aleksey
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) ну чего уж ты сразу так... можно создавать не "сколько жмет на кнопку", а вдвое больше. Тебе что, уидов жалко?
|
|||
29
Snail
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) недостаточно
|
|||
33
Snail
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) а точно? если вкратце, что за "бизнес процесс"? типа инкасация что ли какая то?
|
|||
37
Snail
03.11.20
✎
15:46
|
Заказы булок на магазины
|
|||
38
УдавВПопугаях
03.11.20
✎
15:46
|
один контрагент, а водителей 2 не может быть?
глупый вопрос, конечно может, если даже не в реальности, то по ошибке заполнения экселя, проверочка нужна (37) а хде номенклатура тогда |
|||
39
Snail
03.11.20
✎
15:47
|
В файле эксель есть код водителя
|
|||
40
Snail
03.11.20
✎
15:51
|
сделать выборку документов за день по контрагенту?
Если есть в выборке такой контрагент и Авто = Истина - не создавать документ |
|||
41
УдавВПопугаях
03.11.20
✎
16:03
|
(40) я бы запросом и по регистру (если он есть) делал
если регистра нет, то в запросе к документам надо учесть признаки проведенности и пометок на удаление + да, условия на контрагента и дату поставки признак Авто в таком варианте, как ситуация сейчас выглядит, какой то сомнительный |
|||
42
УдавВПопугаях
03.11.20
✎
16:05
|
при этом неясно, что с номенклатурой, она у вас только одна? это дополнительный разрез получается, если есть, надо учитывать тоже
|
|||
43
УдавВПопугаях
03.11.20
✎
16:11
|
Запрос.Текст = "Выбрать Документ.Ссылка Из Документ.Заказ Как Документ Где Документ.Проведен = Истина И Документ.Контрагент = &Контр И Документ.ДатаПоставки = &Дата";
Для Каждого ИтераторЧтения Из Экселя Цикл Запрос.УстановитьПараметр("Контрагент", КонтрагентПолученныйИзЭкселя); ...Параметры... Если Запрос.Выполнить().ПУстой() ТОгда Документ = Документы.Заказ.СоздатьДокумент(); ДОкумент.Контрагент = Контрагент; ...Реквизиты... Документ.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; конструкция неточна! смысл такой |
|||
44
Snail
03.11.20
✎
16:11
|
Номенклатуры много, но ее ненадо учитывать
|
|||
45
Snail
03.11.20
✎
16:13
|
УдавВПопугаях, оргомное спасибо!
|
|||
46
Волшебник
03.11.20
✎
16:13
|
(43) Ужасный запрос. Лучше так:
ВЫБРАТЬ Ссылка ИЗ Документ.Заказ ГДЕ Проведен И Контрагент = &Контр И ДатаПоставки = &Дата |
|||
47
УдавВПопугаях
03.11.20
✎
16:19
|
(44) интересный заказ булок, но без булок, ну и ладно, инкасация похоже все таки
(45) ну это не инструкция к действию один в один, надо подправить под свою ситуацию (46) )) |
|||
48
Snail
03.11.20
✎
16:29
|
УдавВПопугаях, это булки. И в документ из экселя я все запихиваю в ТЧ документа
|
|||
49
Snail
03.11.20
✎
16:30
|
В колонках контрагенты с кодами в строках номенклатура с кодами
|
|||
50
УдавВПопугаях
03.11.20
✎
16:35
|
(49) вот и смотри - загрузили один раз эксель для контрагента1 с номенклатурой1 на дату1, создали документ, записали, провели
потом в эксель добавляют для этого же контрагента на эту же дату еще одну строку, но с другой номенклатурой, а запрос только по контр и дате уже вернет результат выборки и в условие, где создается/модифицируется документ уже не попадет и новая позиция не добавится тебе то виднее конечно, что и как должно быть, но из того что видно отсюда |
|||
51
УдавВПопугаях
03.11.20
✎
16:42
|
еще могут и просто сумму/количество поменять... вариантов много, лучше какую то подсистему магазинам сделать для подачи заявок/заказов в 1с, тогда сами будут рулить что и на когда заказывать и если что не так, то виноваты сами
|
|||
52
Snail
03.11.20
✎
16:44
|
НовыйДокумент = Документы.РГП.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата() + 86400; Объект.Водитель = Справочники.Водители.НайтиПоРеквизиту("Код", ТЗ2[2][0]); НовыйДокумент.Водитель = Объект.Водитель; НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("Код",ТЗ2[1][КК]); Для Каждого СтрокаТЗ Из ТЗ2 Цикл А = СтрокаТЗ.Проба; Если А = 0 Или А = 1 Или А = 2 Или А = 3 Тогда Продолжить; Иначе Стр = НовыйДокумент.ТЧР.Добавить(); Стр.ТМЦ = Справочники.Булки.НайтиПоРеквизиту("Код", СтрокаТЗ.Колонка1); Стр.Количество = СтрокаТЗ[КК]; КонецЕсли; КонецЦикла; НовийДокумент.Записать(); |
|||
53
Мимохожий Однако
03.11.20
✎
17:25
|
Записывай в документ контрольную сумму файла-источника. А перед загрузкой проверяй наличие документов, порожденных этим файлом.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |