|
Заполнение справочника контрагентов при приеме данных | ☑ | ||
|---|---|---|---|---|
|
0
Кукуев
05.10.07
✎
14:06
|
В бухгалтерии при загрузке документов принимаю контрагента и, если его нет – заношу в справочник, если он уже есть – пропускаю, делая ТекущийЭлемент.
Код такой: ИНН = ИННПартнераДокумента + "/" + КПППартнераДокумента; ИННКорДок = Лев(ИНН, 10); ИННКор1С = Лев(СпрКонтрагенты.ИНН, 10); Наименование = Партнер; Если (ПустоеЗначение(Наименование) = 0) Тогда Контрагент=ПолучитьПустоеЗначение("Справочник.Контрагенты"); Если (ПустаяСтрока(ИННКорДок) = 0) И (ПустоеЗначение(Контрагент) = 1) Тогда Если (СпрКонтрагенты.НайтиПоРеквизиту(ИННКор1С, ИННКорДок,1) = 1) Тогда Контрагент=СпрКонтрагенты.ТекущийЭлемент(); КонецЕсли; ИначеЕсли (ПустаяСтрока(Наименование) = 0) И (ПустоеЗначение(Контрагент) = 1) Тогда Если (СпрКонтрагенты.НайтиПоНаименованию(Наименование, 0, 1) = 1)Тогда Контрагент=СпрКонтрагенты.ТекущийЭлемент(); КонецЕсли; КонецЕсли; Если (СпрКонтрагенты.НайтиПоНаименованию(Наименование, 0, 1) = 0) И (ПустоеЗначение(Наименование) = 0) И (ПустаяСтрока(ИННКорДок) = 1) Тогда Если Вопрос("У контрагента " + Наименование + " не указан ИНН. Вы хотите записать контрагента?", "Да+Нет") = "Да" Тогда ВвестиЗначение(ИННКорДок, "Введите ИНН для контрагента: " + Наименование, "Строка",10); СпрКонтрагенты.Новый(); ………………………………./ Здесь заполняются реквизиты СпрКонтрагенты.Записать(); Контрагент=СпрКонтрагенты.ТекущийЭлемент(); КонецЕсли; КонецЕсли; Если (ПустоеЗначение(Контрагент)=1) И (СпрКонтрагенты.НайтиПоНаименованию(Наименование, 0, 1) = 0) Тогда СпрКонтрагенты.Новый(); ………………………………………………………..// Здесь заполняются реквизиты СпрКонтрагенты.Записать(); Контрагент=СпрКонтрагенты.ТекущийЭлемент(); Иначе СпрКонтрагенты.НайтиЭлемент(Контрагент); КонецЕсли; КонецЕсли; При загрузке, когда начитается поиск по реквизиту, вываливается ошибка Если (СпрКонтрагенты.НайтиПоРеквизиту(ИННКор1С, ИННКорДок,1) = 1) Тогда {D:\1С\БУХГАЛТЕРИЯ\1SBDEMO\EXTFORMS\1ЗАГРУЗКА ДАННЫХ.ERT(1903)}: Неверное имя реквизита! Переменных наплодил кучу – просто не знаю, как к этому реквизиту подобраться… Подскажите, как, принимая данные, проверить – есть ли такой контрагент в 1С или еще нет, идентифицируя только по ИНН (а не по ИНН/КПП), т.к. в новых данных может быть только реквизит ИННПартнераДокумента? |
|||
|
1
ТелепатБот
гуру
05.10.07
✎
14:06
|
||||
|
2
CrecerRu
05.10.07
✎
14:14
|
(0)Перед загрузко делай ТЗ 2 колонки "Контрагент", "ИНН" и ищи в ней или запросом, если контрагентов не много
|
|||
|
3
CrecerRu
05.10.07
✎
14:15
|
Функция НайтиОрганизациюПоИНН(ИННКраткий, Вид, ДлинаИНН = 10)
Перем Запрос, ТекстЗапроса; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(НайтиЮрЛицо) |ТекущийЭлемент = Справочник." + Вид + ".ТекущийЭлемент; |ИНН = Справочник." + Вид + ".ИНН; |Группировка ТекущийЭлемент без групп; |Условие((Лев(ИНН, " + ДлинаИНН + ") = ИННКраткий) ИЛИ (Лев(ИНН, 12) = ИННКраткий)); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда Пока Запрос.Группировка(1) = 1 Цикл Возврат Запрос.ТекущийЭлемент; КонецЦикла; КонецЕсли; Возврат СоздатьОбъект("Справочник." + Вид); КонецФункции // НайтиОрганизациюПоИНН() |
|||
|
4
Кукуев
05.10.07
✎
14:22
|
(3)Да, с функцией, наверное, должно получиться, но контрагентов довольно много... и еще, честно, говоря, уметь бы эту функцию правильно использовать... (это я о себе, конечно, учусь...)
а нельзя ли без функции как-то найти и сравнить? |
|||
|
5
CrecerRu
05.10.07
✎
14:26
|
(4) Перед загрузкой делай ТЗ 2 колонки "Контрагент", "ИНН" и ищи в ней
|
|||
|
6
Кукуев
05.10.07
✎
14:35
|
(5)Спасибо, попробую так сделать...
к сожалению, вынужден покинуть просторы интернета, но буду премного благодарен, если кто-то еще подскажет, спасибо! |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |