Здравствуйте. Имеется конфигурация 1С Бухгалтерский учет 7.7 с релизом 7.70.570 (релиз в конкретном случае не так важен), а также имеется другая программа, используемая в аптеке. Наладили выгрузку из этой программы в 1С Бухгалтерию 7.7, но есть небольшая трудность. Система работы такая: из аптекарской программы (будем её так называть) выгружается файл с расширением *.ttx. Потом в 1С БУ 7.7, с помощью созданной обработки, загружается информация из этого файла. Но при загрузке появляется проблема, контрагенты начинают дублироваться. Опытным путем заметили, что, если у контрагента убрать кпп, то дублирования не происходит. Если необходимо (а скорее всего необходимо) скину обработку или код обработки, потому что сам не могу никак додуматься, где надо исправить, чтобы данной проблемы не было. Заранее спасибо за любую полезную информацию.
---
AndrewUs, тьфу, елки, увидел "Если Дог.НайтиПоНаименованию("Основной договор",0,1)=0 Тогда
"...

В функции НайтиДоговор (151 строка) поменяйте на "Если Дог.НайтиПоНаименованию("Основной договор",1,1)=0 Тогда" и будет счастье. :)
---
AndrewUs,

```1c
    Функция ВернутьИНН(ТекИНН)
    Перем ИНН, НомНайдСим;
    ИНН=СокрЛП(ТекИНН);
    НомНайдСим = Найти(ИНН,"/");
    Если НомНайдСим = 0 Тогда
    НомНайдСим = Найти(ИНН,"\");
    КонецЕсли;

    Если НомНайдСим <> 0 Тогда
    ИНН = СокрЛП(Лев(ИНН,НомНайдСим - 1));
    КонецЕсли;

    Возврат ИНН;
    КонецФункции
```

Добавляете ее над функцией "НайтиКонтрагента(ИмяСубк,СтрокаПоиска,СтрокаИНН" и строку "|Условие (СокрЛП(ИНН)=СокрЛП(СтрокаИНН))";" в НайтиКонтрагента меняете на "|Условие (ВернутьИНН(СтрокаИНН)=ВернутьИНН(ИНН))";".
Тестируете на пробной базе (копия).
---
Обычно идентификация контрагента при выгрузках-загрузках 1с-ных идет по ИНН+КПП
В бух 77 один реквизит где ИНН/КПП в куче.
Выкладывайте свою обработку или текст, попробуем помочь
---
Irken_1, Выкладываю обработку.
---
Можете выслать файл выгрузки хотя бы по одному контрагенту?
и что в карточке этого контрагента в той программе откуда идет выгрузка?
Потому что в обработке идет чисто сравнение двух реквизитов в бух и что пришло.
Надо посмотреть что приходит из источника? может там тоже кпп добавлен но не через / поэтому сравнение неверное и добавляется новый контрагент.
Ну или сами в отладчике можете посмотреть по одному контрагенту Функция НайтиКонтрагента(....) что пришло в 1с бух и что реально в карточке по этому контрагнету.
---
Irken_1, Вам необходимо выслать файл, из которого загружаются данные ... верно?
Вот файл, за январь 2014.
---
А если просто при сравнении искать вхождение в строку данного ИНН? Тогда даже если дальше будет стоять КПП, то всё равно контрагент не задвоится.
---
Natali_77, Вот это мне как раз и нужно, но как это сделать ... я в 7.7 не силен ...
---
AndrewUs, может приведете несколько примеров соответствия, какой ИНН указан в файле выгрузки и какой у соответствующего контрагента в справочнике 1С (на всякий случай, файл выгрузки читается например Блокнотом). В файле каждая строка состоит из разделенных запятыми полей. Предпоследнее поле - ИНН (в том виде, в котором он выгружается из внешней программы), последнее - наименование контрагента (тоже из внешней программы).
Соответствие:
Контрагент: Протек 42 /Курск
ИНН в файле: 7724053916\1
ИНН в 1С: ??????????????
Не видя базы, но хотя бы видя примеры, можно будет думать, как сделать "отсечение символов" и поможет ли это.
---
Pari, ИНН в 1С 7724053916\463202001
---
то что прислали в файле это вы уже во внешней программе убрали кпп?
---
Irken_1, т.е. нужно во внешней программе проставить у контагентов кпп?
---
добавьте по одному контрагенту кпп и вышлите файл выгрузки
---
потому что надо понять как выгрузка складывает инн и кпп в файле.
---
Irken_1, С этим сложнее, программы этой сейчас у меня нет, буду связываться с человеком, чтобы это сделал и выгрузил файл.
---
Irken_1, А вот такой момент, что нужно добавить в имеющийся код, что бы было не важно есть у контрагента кпп в 1с или нет? Мне говорили, что можно сделать отсечение символов, но более подробной информацией делиться не пожелали.
---
Нашла в вашем файле контрагента, посмотрите что в карточке вашей внешней программы "Протек 42 /Курск" это что? - "7724053916\1" это вроде как информация инн, а после слэша это кпп?
---
Irken_1, Видимо в той программе и проставили это значение "\1", скорее всего это и есть кпп.
---
Андрей, вобщем в вашу задачку можно решить это точно.
Удалять кпп из внешней программы скорей всего некорректно, вы ведь первичку выдаете из нее, а не из 1с?
Вобщем надо понять как инн и кпп сливаются в один реквизит из вашей внешней программы при выгрузке. И далее смотреть как инн вместе с кпп заполнены в 1с.
---
Irken_1, Удалять кпп из внешней программы никто и не собирался. Да первичка во внешней программе. А инн и кпп в 1с заполняются через косую линию, т.е. ИНН\КПП ...
---
Но "\1" - это никак не КПП. КПП - 9 симолов.
Что значит "начинают дублироваться" ? У дублей ИНН\КПП совпадает полностью ?
Возможно у Вас в аптекарской программе заведены несколько например обособленных подразделения (ИНН одинаковый, КПП разные) одного контрагента.
Тогда надо разобраться - Вы продажу кому производите, договор у Вас с кем ? Нескольким подразделениям или всё-таки некоему "головному", а остальные фактически - только в роли грузополучателя ? В зависимости от этого в бухгалтерской\налоговой отчетности должны фигурировать либо один КПП, либо все.
Вариант с "\1" наводит ещё на мысль, что возможно менеджеры в аптекарской программе сознательно "размножили" контрагентов через \1 \2 \3 , чтобы отделить например разные торговые точки - для своего удобства
---
в этой обработке по загрузке запрос выборка из справочника с условием СокрЛП(ИНН) - из справочника = СокрЛП(ИННВнещнийИсточник)
Вопрос по какому принципу и что сливается в переменную ИНН из аптеки. То что выкладывалось вроде как без КПП, но контрагенты со слэшом это что?
Ждем ответа чтобы что-то уяснить как вырулить с загрузкой.
---
Irken_1, Сам жду ответа от программистов той программы ... как будет внесена некоторая ясность обязательно отпишу.
---
А если не брать в рассмотрение данного контрагента "Протек 42 /Курск", взять, например, "Фарма /Орел" где нет в ИНН этого слеша?
---
Нет ИНН в 1с бух или в аптеке?
---
Irken_1, Нет, вы не поняли, ИНН есть у всех, я говорил про другого контрагента, у которго нет в ИНН слеша, потому что, возможно, это какая-то опечатка в аптекарской программе. И будем рассматривать другого, у которого четко прописан ИНН.
---
Но это может работать только в том случае, если строка получаемая из программы-экспортера форматируется аналогично 1с.
Т.е. ИНН\КПП или ИНН\билиберда ИНН/либилерда. При наличии сторонних (прочих не числовых) символов в строке будут ошибки (все это тоже решаемо, но нужно знать ньюансы и не лениться :)).
---
Jill, А, если, в 1С указан ИНН\КПП, а в программе только ИНН и наоборот?
---
AndrewUs, не важно.
Функция ВернутьИНН возвращает только ИНН, или, точнее сказать, часть строки ТекИНН до слеша, либо, если слеша нет, строку целиком (ну и плюс еще лишние пробелы удаляет).
---
Jill, Функция отличная, спасибо, но в итоге, контрагент продублировался ... нигде не ошибся, проверил несколько раз ...
---
AndrewUs, а какой ИНН у контрагента в апт. системе?
---
Jill, ИНН полностью совпадает, но, названия у них разные ... и в 1с кпп еще прописан.
---
AndrewUs, хмм... Интересно. Ну тут проще под отладчиком глянуть, чем теоретизировать.
Нужен загружаемый файл. И сознаться которые из контрагентов продублировались.
---
Jill, В третьем и пятом моих сообщениях были файлы, которые можно скачать. Например, продублировался АМП/Воронеж, просто я по этому контрагенту проверяю. Просто, возможно, а скорее всего ошибка, точнее, упущен момент в самой обработке. Хотя, неизвествно, что там не так ... Спасибо, что пытаетесь помочь.
---
Создал в чистой базе контрагента "ТестКонтр" с ИНН\ОКП "3665012499\555" - операции по "АМП /Воронеж" загрузились на него. Нового АМП не появилось...
Если у Вас обработка выглядит так же (прикрепил ту что пользовал), то нужно смотреть на реальной базе.

И я бы порекомендовал Вам пригласить 1с программиста.

ЗЫ а вообще, ИМХО, импорт очень своеобразно написан. При загрузке больших объемов терпение нужно железное иметь.
---
Jill, Не поверите, я сам 1С Программист, но правда начинающий. А другой 1С программист просто поступает не совсем красиво. Ему деньги отдали обработку написал, но с косяками, а исправлять не хочет, мол платите еще.
---
AndrewUs, Да в чистой базе у меня обработка тоже не продублировала ... может быть стоит проверить с самого начала, т.е. начать смотреть и загружать с того момента, когда началось дублирование?
---
AndrewUs, ну да, есть такие кадры, хотя тут сложно судить: такие ТЗ порой интересные раздают, а потом выясняется...
Но как я уже говорил: то что очень "своеобразно" он ее написал, на мой взгляд, это факт.

(37)
Загружать нужно, естественно, до момента задвоения, иначе вся инфа будет грузиться на "первого попавшегося" контрагента с ИНН, совпадающим с ИНН контрагента программы-экспортера.
Флаг "Удалять операции перед загрузкой" удаляет, как это ни странно, только операции - задвоениями не занимается. :)
---
Jill, Да, задвоение в справочнике действительно остается и не удаляется, даже не помечается на удаление ... ну это не так важно. Значит, все-таки стоит попробовать с самого начала задвоения. Спасибо.
---
Jill, А вот такой вот момент, при загрузке с момента задвоения, при формировании ОСБ по счету, всё с контрагентом хорошо, но появляется ещё одна строка "Основной договор", т.е. идут две строки основного договора ... и приходится перевыбирать основной договор в операции, которая загружалась. Хотя в списке договоров контрагента он там один. Не подхватывается получается основной договор.
---
AndrewUs, до "задвоения" второго договора точно не было?
---
Jill, Точно не было. Там такой момент, один основной договор идет на операции, которые были загружены, а другой, а точнее тот же самый, основной договор идет на выписки, может быть стоит перевыгрузить выписки ... ???
---
AndrewUs, я так понимаю "основной договор для выписок" уже был в базе?
По-поводу необходимости перегрузки выписок ничего сказать не могу - не знаю каким образом они импортируются...
Но оно, на самом деле, не особо важно.
Важно знать что унификация договоров контрагента в обработке загрузки операций происходит по наименованию, т.е. "Основной_договор" и "Основной__договор" не одно и то же.
Нужно сравнить наименования договоров "операций" и "выписок" и устранить несоответствия перед загрузкой операций в 1с, в учетных системах-экспортерах и, при необходимости, в обработках импорта (наименования договоров по умолчанию), если они присутствуют.
---
Jill, Дело в том, что основной договор один у контрагента. И в данном случае вопрос такой, при открытии операций, выгруженных ранее, и перевыборе этого самого основного договора по контрагентам двойные строки пропадают.
А выгрузка выписок идет из обычной системы клиент банка стандартными обработками.
Я так понимаю, что нужно контрагентов посмотреть и в клиент банке на счет договоров?
---
AndrewUs, оу...
"Хотя в списке договоров контрагента он там один."
Умудрился незаметить.

Странно у меня ничего не двоится.
Это уже на конкретной базе лучше смотреть...
---
Jill, Да вот же. У меня в чистой базе, с созданными контрагентами, тоже не двоится ... буду еще ковыряться. Если интересно, то могу потом отписать чем дело закончилось?
---
AndrewUs, интересно.
Можно отписать даже в том случае, если, таки, получится смоделировать ситуацию. :)
---
AndrewUs, тьфу, елки, увидел "Если Дог.НайтиПоНаименованию("Основной договор",0,1)=0 Тогда
"...

В функции НайтиДоговор (151 строка) поменяйте на "Если Дог.НайтиПоНаименованию("Основной договор",1,1)=0 Тогда" и будет счастье. :)
---
Jill, Сейчас попробую.
---
Jill, Попробовал, получилось, вроде бы, с единственной помаркой, но это уже врятле наша вина .... пусть бухи смотрят документы, ранее введенные.