|
v7: Не получается проверить доки на дублирование | ☑ | ||
---|---|---|---|---|
0
ЮлияКорж
03.01.12
✎
13:11
|
Пишу обработку,чтобы проверить документиы на дублирование и что то не хочет работать
Процедура Выполнить() Перем с3; с3=СоздатьОбъект("ТаблицаЗначений"); ДокПриема=СоздатьОбъект("Документ.ПриказОПриеме"); ДокПриема.ВыгрузитьТабличнуюЧасть(с3); ДокПриема.ВыбратьДокументы(); Пока ДокПриема.ПолучитьДокумент()>0 Цикл Если с3.Принадлежит(ДокПриема.ТекущийДокумент())=1 тогда Сообщить("Дубликат"); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
andrewks
03.01.12
✎
13:13
|
мдэ... тут в консерватории что-то менять надо...
|
|||
2
Злопчинский
03.01.12
✎
13:25
|
между вот этими двумя строками
ДокПриема=СоздатьОбъект("Документ.ПриказОПриеме"); ДокПриема.ВыгрузитьТабличнуюЧасть(с3); - мысль не возникает написать код для ПОЗИЦИОНИРОВАНИЯ на НУЖНОМ документе? это раз. . а так как КАЖДЫЙ ДОКУМЕНТ - есть УНИКАЛЬНЫЙ ОБЪЕКТ, даже если всё его наполнение совпадает с другим документом - то вам кабздец - не найдете вы дубля ниткогда |
|||
3
NS
03.01.12
✎
13:26
|
(2) Не видишь, в коде ошибки в каждой строке!
|
|||
4
Злопчинский
03.01.12
✎
13:27
|
(3) это видимо привыкли типа как в стиралку кучей барахло закинули - на выходе - то что надо! - в программировании так не получается исчо..
|
|||
5
Злопчинский
03.01.12
✎
13:28
|
(0) с3.Принадлежит() - это метод СПИСКАЗНАЧЕНИЙ, а не таблицы значений
|
|||
6
Злопчинский
03.01.12
✎
13:30
|
(3) но радует, что буквы -то правильно названы! а то, что не смогли прочитать слово - ну так видимо еще не учили!!!
. я вот например в пятом классе перед тем как начать изучать иностранный язык - буквы на каникулах выучил и был жутко разачарован когда оказалось что в английском языке русские слова не записываются английскими букваит... |
|||
7
Попытка1С
03.01.12
✎
13:50
|
Сообщить("Дубликат"); - тут все верно!
|
|||
8
Mikeware
03.01.12
✎
13:52
|
(6) ты не один такой :-)))
|
|||
9
Злопчинский
03.01.12
✎
13:55
|
(8) что и ты тоже..????!! ;-) а ты был раньше в детсве уверен что вагоный друг к другу буферами примагничиваются..? а машины ездять по принципу реактивного движения из-за выхлопной трубы..?
|
|||
10
NS
03.01.12
✎
13:55
|
(7) Нет, неверно, не пишет в каком документе дубликат.
|
|||
11
Злопчинский
03.01.12
✎
13:57
|
Господа! давайте поможем гарной дивичине с Мариуполя!
|
|||
12
Mikeware
03.01.12
✎
13:57
|
(9) Про язык - я тоже. Правда, не про английский, но это вторично...
А вот про вагоны я знал. И принцип реактивного движения - тоже ... |
|||
13
Mikeware
03.01.12
✎
13:58
|
(11) Помочь ей можно только одним...
|
|||
14
Злопчинский
03.01.12
✎
14:00
|
(12) ну так я тоже про принципи реактивного движения знал - поэтому и думал...
|
|||
15
Aleksey
03.01.12
✎
14:01
|
(13) Срочно замуж?
|
|||
16
Злопчинский
03.01.12
✎
14:01
|
(13) не надо!!! пусть помучается!
|
|||
17
Злопчинский
03.01.12
✎
14:02
|
кста, никогда не работал с девками -программистками... как они? у кого был опыт?
|
|||
18
Torquader
03.01.12
✎
14:03
|
Кстати, в журнале документов и в самих таблицах документов, в dbf-исполнении вполне встречаются дубли (у меня даже были два разных документа с одинаковым ID).
Только поиск таких документов из обработки невозможен, так как система изначально предполагает позиционирование на ID документа и считает его уникальным. В случае записи двух одинаковых ID в dbf-файл средствами 1С будет виден только первый документ. А в случае (0), скорей всего, хотели найти документы с совпадающим содержимым, но надо сказать, что это не совсем тривиальная задача, так как нужно будет перебирать метаданные. То есть нужно выбирать все реквизиты документа и сравнивать их с данными в таблице значений, куда мы заносим такие реквизиты, а также не забыть применить Хэш-функцию, чтобы использовать поиск по таблице, а не полный перебор. Кроме того, нужно на забывать, что от перестановки строк в документе его содержимое не меняется. |
|||
19
Rie
03.01.12
✎
14:03
|
(17) Работал. Замечательные программистки. Очень аккуратный код. (Без шуток, мой опыт именно таков).
|
|||
20
Torquader
03.01.12
✎
14:04
|
(17) Иногда даже можно работать - даёшь пример, объясняешь, как его приладить к нужному месту и всё - чаще всего даже ошибки найдёт сама (конечно, если это действительно программист, а не дятел в юбке).
|
|||
21
Злопчинский
03.01.12
✎
14:05
|
(19) а код от "мужского" кода отличается (ну кроме аккурат ности)..?
|
|||
22
Rie
03.01.12
✎
14:16
|
(21) Не замечал отличий. Писали действительно очень хорошо. Потом одну конкурент сманил. Другая ушла на вольные хлеба :-(
|
|||
23
Mikeware
03.01.12
✎
14:17
|
(17) Работал с одной - прошедшей школу франча. Это был пипец. Работала аккуратно, но строго по заданию. Такое ощущение, что думать вперед не умела вообще.
|
|||
24
Злопчинский
03.01.12
✎
14:17
|
блин, судя по всему в Мариуполе внезапно кончился интернет..
|
|||
25
2S
03.01.12
✎
14:18
|
тэкс, фото не зачетное, треба сменить...
код порадовал... |
|||
26
Torquader
03.01.12
✎
14:18
|
(24) Нет, скорей всего, кто-то понял, что программирование - не для него, и ушёл борщ варить.
|
|||
27
Злопчинский
03.01.12
✎
14:24
|
(26) ну не может все быть так плохо.. может просто у герлы еще шампусик с НГ не выветрился..???
|
|||
28
Mikeware
03.01.12
✎
14:25
|
(27)человек столько не выпьет...
|
|||
29
Torquader
03.01.12
✎
14:26
|
(27) Не верю, что спиртное может создавать кашу в голове - а в данном случае именно каша.
|
|||
30
ЮлияКорж
03.01.12
✎
14:39
|
Чесно сейчас каша в голове ,я не выспалась ну мы 8-ку данные перегрузили,
а там много ошибок один тип из которых допустим два или три одинаковых дока приемана одного сотрудника |
|||
31
Злопчинский
03.01.12
✎
14:45
|
(30) срочно потрахаться, выспаться, ликвидировать кашу в голове. потом - приходи.
|
|||
32
Torquader
03.01.12
✎
14:54
|
(30) Так зачем искать дули в семёрке, если они в восьмёрке ?
Поди что-то не так перегрузили, раз так получилось - а не попробовать ли перегрузить ещё раз - до первого рабочего дня можно многое успеть. Хотя, проще программиста "на коньяк" пригласить. |
|||
33
Cthulhu
03.01.12
✎
14:58
|
03.01
выходной же, вы чо!!! |
|||
34
Злопчинский
03.01.12
✎
15:14
|
не, я в Мариуполь не поеду...
|
|||
35
Torquader
03.01.12
✎
15:32
|
(34) Не переживай так - коньяк - вещь универсальная - её можно и по почте выслать, если что (как и готовое решение).
|
|||
36
Злопчинский
03.01.12
✎
15:50
|
(35) мариупольский коньяк? боже упаси
|
|||
37
Web00001
03.01.12
✎
16:12
|
(17) я работал, только приятные впечатления как от кода, так и от самой программистки :)
|
|||
38
Web00001
03.01.12
✎
16:14
|
(0) А что за конфа? Откуда в 77 в доке приема ТЧ?
|
|||
39
Злопчинский
03.01.12
✎
16:38
|
пока что девчушки-ппрограммистики оставляют благоприятное впечателнеи судя по отзывам
|
|||
40
ЮлияКорж
03.01.12
✎
16:52
|
Спасибо за комплементы
|
|||
41
Злопчинский
03.01.12
✎
16:56
|
(40) Юлия, срочно (31)
и усвоить разницу между комплЕментарностью и комплИментом |
|||
42
ЮлияКорж
03.01.12
✎
18:09
|
Так на вопрос мне ни кто и не ответил как мне найти дубликат,что нельзя выгрузить табличную часть в список значений и сравнить этот список с табл частью доков пусть это будет приближенный дубликат вероятный но
|
|||
43
ЮлияКорж
03.01.12
✎
18:10
|
дока отдельно по ключевым полям таким как дата и
|
|||
44
Злопчинский
03.01.12
✎
18:48
|
(42), так, хорошо что 31 уже сделано - наступило просветление в мозгах...
|
|||
45
Злопчинский
03.01.12
✎
19:01
|
вариант раз:
открываешь список значений идешь по выборке доков для каждого дока формруешь ИД, в который включаешь нужные тебе поля проверяешь список значений на наличие требуемого ИД делаешь вывод добавляешь текдокумент в списокзначенйи для следующего прохода . вариант два: таблица значений с двумя столбцами, один столбец - счетчик, второй - строка обходишь доки и добавлешь строки в ТЗ документ пишешь в строку путем значениеВстроку() пробегаешь по ТЗ - вырезаешь из строк даты и номера доков (чтобы не мешали похожести) потом сворачиваешь ТЗ по строковому столбцу, смотришь строки где счетчик больше 1 |
|||
46
Злопчинский
03.01.12
✎
19:08
|
ну и самое главное - тч в доках не зубудь отсортировать..
|
|||
47
Попытка1С
03.01.12
✎
19:21
|
Кстати я поддержу (38)..
|
|||
48
Злопчинский
03.01.12
✎
19:45
|
(47) мне кажется, что приятнее поддерживать Юлию.. ;-)
|
|||
49
Cthulhu
03.01.12
✎
19:50
|
(48): разве что осязательно.
|
|||
50
Bww_
03.01.12
✎
20:08
|
(5) попробуй новый объект "СказкаЗначений"
|
|||
51
Torquader
03.01.12
✎
22:25
|
(47) Ну даже если и нет табличной части - человеку лучше объяснить, как это должно делаться - явно потом захотят ещё и другие документы поискать.
Как вариант, можно сделать так: // создаём таблицу значений // предполагается, что у документа нет аттрибута Hash // также предполагается, что дата документа и его номер нам не важны // (в данном случае нельзя принять одного человека дважды) // если дата важна, то для неё нужно сделать такое же поле // если у документа есть аттрибут Hash, то можно использовать // в таблице значений колонку DocNum - её в документе точно нет DocKind="ПриказОПриеме"; ValTab=CreateObject("ValueTable"); ValTab.NewColumn("Hash"); MetaDoc=Metadata.Document(DocKind); HeadCount=MetaDoc.HeadAttribute(); For i=1 To HeadCount Do ValTab.NewColumn(MetaDoc.HeadAttribute(i).Identifier); EndDo; // теперь нужно выбрать все документы Doc=CreateObject("Document."+DocKind); If Doc.SelectDocuments(,)=1 Then While Doc.GetDocument()=1 Do // рассчитываем Hash Hash=""; For i=1 To HeadCount Do Hash=Hash+"|"+String(Doc.GetAttrib(MetaDoc.HeadAttribute(i).Identifier)); EndDo; // ищем его в таблице l=0; If ValTab.FindValue(Hash,l,1)=1 Then // нашли совпадение - проверяем, что оно верное For i=1 To HeadCount Do If Doc.GetAttrib(MetaDoc.HeadAttribute(i).Identifier)<>ValTab.GetValue(l,i+1)Then i=0; Break; EndIf; EndDo; If i<>0 Then Message("Имеем дубликат:"+TrimAll(Doc.DocNum)+" от "+String(Doc.DocDate)); Continue; EndIf; EndIf; // если дубликата нет, то добавляем ValTab.NewLine(); ValTab.Hash=Hash; // добавляем остальные реквизиты For i=1 To HeadCount Do ValTab.SetValue(Doc.GetAttrib(MetaDoc.HeadAttribute(i).Identifier),ValTag.LineNum,i+1); EndDo; EndDo; EndIf; |
|||
52
Злопчинский
04.01.12
✎
00:38
|
(51) - папа, ты это с кем сейчас разговаривал...
|
|||
53
Torquader
04.01.12
✎
15:01
|
(52) С тобой.
А (ноль) или поймёт, что в (51) сказано, или поймёт, что он полный (ноль). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |