Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 09:41
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Проверка повторяющихся ИНН через запрос, помогите!  (Прочитано 3543 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VadikSandy

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-17
  • Сайт: 
  • Профессия: Ученик 1С
У меня - справочника - Номенклатура (там реквизиты Дата, НоменклатурныйНомер, ПродЦена и прочее) и Организации (там реквизит один-  ИНН). Так вот надо вести контроль за тем чтоб не добавлять в базу фирмы, ИНН которых уже есть.

Вот кусок кода что я написал, но пишет ошибку "Поле объекта не обнаружено (ИНН)" :dfbbdrfb:



ЗапросINN = Новый Запрос;
   ЗапросINN.Текст =
   "Выбрать
   |   Организации.INN
   |ИЗ
   |   Справочник.Организации КАК Организации
   |ГДЕ
   |   Организации.INN=&INN";
   
   ЗапросINN.УстановитьПараметр("INN",Текст.ИНН);
   
   Если НЕ ЗапросINN.Выполнить().Пустой() Тогда
      Предупреждение("Такой INN существует в базе");
      

   Иначе

//далее идет часть кода ответственная за заполнение реквизитов в случае, если такого ИНН не встречается


Помогите сделать запрос как надо :wacko:


Оффлайн VadikSandy

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-17
  • Сайт: 
  • Профессия: Ученик 1С
вот весь код внешнего отчета



Процедура КнопкаСформироватьНажатие(Кнопка)
   
Текст = Новый ТекстовыйДокумент;
// открытие файла
Текст.Прочитать("I:\export.txt", КодировкаТекста.ANSI);



ЗапросINN = Новый Запрос;
   ЗапросINN.Текст =
   "Выбрать
   |   Организации.INN
   |ИЗ
   |   Справочник.Организации КАК Организации
   |ГДЕ
   |   Организации.INN=&INN";
   
   ЗапросINN.УстановитьПараметр("INN",Текст.ИНН);
   
   Если НЕ ЗапросINN.Выполнить().Пустой() Тогда
      Предупреждение("Такой INN существует в базе");
      

   Иначе

   
//Заполним разделитель в файле
СимволРазделитель = ";";

//Перебираем строки файла и заполняем документ
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
   
   


//Получим очередную строку
Стр = Текст.ПолучитьСтроку(НомерСтроки);


//Занесем строку во временную переменную, с ней и будем работать
ТемпСтрока = Стр;

//Найдем разделитель
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);


//значение до разделителя выбираем
Дата = Лев(ТемпСтрока, НомерСимвола - 1);


//обрезаем строку до первого символа после разделителя
ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);

//Ищем следующий разделитель
//если это поледний реквизит можно просто взять оставшуюся строку
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Номер = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
ИНН = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
ИмяОрг = Лев(ТемпСтрока, НомерСимвола);

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Товар = Лев(ТемпСтрока, НомерСимвола);

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
НомНом = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Ставка = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Колво = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Себест = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
ПродажЦена = Число(Лев(ТемпСтрока, НомерСимвола - 1));







////////////////////////////////////////////////

      Орг=Справочники.Организации.СоздатьЭлемент();
    Ном=Справочники.Номенклатура.СоздатьЭлемент();

      Орг.INN=ИНН;
   Ном.DATE=Дата;
   Ном.KOLVO=Колво;
   Ном.NOMNOM=НомНом;
   Ном.NUM=Номер;
   Ном.ORG=ИмяОрг;
   Ном.PRODCENA=ПродажЦена;
   Ном.SEBEST=Себест;
   Ном.STAVKA=Ставка;
   Ном.TOVAR=Товар;
   
   Ном.Записать();
    Орг.Записать();




////////////////////////////////////////////////







КонецЦикла;

КонецЕсли;

КонецПроцедуры



мало ли понадобится

Оффлайн VadikSandy

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-17
  • Сайт: 
  • Профессия: Ученик 1С
кажется что код запроса вставлена не в ту часть кода.....ндао вставлять после считывания строки из тхт файла

Оффлайн VadikSandy

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-17
  • Сайт: 
  • Профессия: Ученик 1С
Процедура КнопкаСформироватьНажатие(Кнопка)
   
Текст = Новый ТекстовыйДокумент;
// открытие файла
Текст.Прочитать("I:\exportбаза.txt", КодировкаТекста.ANSI);





   
//Заполним разделитель в файле
СимволРазделитель = ";";

//Перебираем строки файла и заполняем документ
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
   
   


//Получим очередную строку
Стр = Текст.ПолучитьСтроку(НомерСтроки);


//Занесем строку во временную переменную, с ней и будем работать
ТемпСтрока = Стр;

//Найдем разделитель
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);


//значение до разделителя выбираем
Дата = Лев(ТемпСтрока, НомерСимвола - 1);


//обрезаем строку до первого символа после разделителя
ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);

//Ищем следующий разделитель
//если это поледний реквизит можно просто взять оставшуюся строку
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Номер = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
ИНН = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
ИмяОрг = Лев(ТемпСтрока, НомерСимвола);

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Товар = Лев(ТемпСтрока, НомерСимвола);

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
НомНом = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Ставка = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Колво = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
Себест = Число(Лев(ТемпСтрока, НомерСимвола - 1));

ТемпСтрока = Сред(ТемпСтрока, НомерСимвола + 1);
НомерСимвола = Найти(ТемпСтрока, СимволРазделитель);
ПродажЦена = Число(Лев(ТемпСтрока, НомерСимвола - 1));





ЗапросINN = Новый Запрос;
   ЗапросINN.Текст =
   "Выбрать
   |   Организации.INN
   |ИЗ
   |   Справочник.Организации КАК Организации
   |ГДЕ
   |   Организации.INN=&INN";
   
   ЗапросINN.УстановитьПараметр("INN",ИНН);
   
   Если НЕ ЗапросINN.Выполнить().Пустой() Тогда
      Предупреждение("Такой INN существует в базе");
      

   Иначе


////////////////////////////////////////////////

      Орг=Справочники.Организации.СоздатьЭлемент();
    Ном=Справочники.Номенклатура.СоздатьЭлемент();

      Орг.INN=ИНН;
   Ном.DATE=Дата;
   Ном.KOLVO=Колво;
   Ном.NOMNOM=НомНом;
   Ном.NUM=Номер;
   Ном.ORG=ИмяОрг;
   Ном.PRODCENA=ПродажЦена;
   Ном.SEBEST=Себест;
   Ном.STAVKA=Ставка;
   Ном.TOVAR=Товар;
   
   Ном.Записать();
    Орг.Записать();


////////////////////////////////////////////////


   КонецЕсли;





КонецЦикла;


КонецПроцедуры



сам развиваю тему))) это пашет, но косячно, ладно разберусь)

Оффлайн chuevsf

  • Хочу! Хочу! Хочу! Мышь на палочке!
  • Глобальный модератор
  • *****
  • Сообщений: 1376
  • РЕПУТАЦИЯ: 345
  • КПД: 25%
  • Регистрация: 2010-07-08
    • Skype: chuevsf
  • Сайт: 
  • Профессия: Программист 1С
Это долго. Сделай проще. ВЫведи список отсортированный по ИНН.
Организация ИНН

Увидишь задвоенность и будет тебе счастье.

Оффлайн Шурыгин Иван Сергеевич

  • забей на все....
  • ****
  • Сообщений: 330
  • РЕПУТАЦИЯ: 82
  • КПД: 25%
  • забей на все!
  • Регистрация: 2011-05-23
  • Сайт: 
  • Профессия: Программист 8.1
а еще можно в запрос загнать такую строку КоличествоРазличных(Орг.ИНН) и Количество(Орг.ИНН) и увидишь сколько еще работать по исправлению
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================


Теги:
 

Помогите срочно!! В вкладке "Сервис"--> "Журнал регистрации" отражаются все операции как можно определить сделаны ли операции "задним числом" и как вычислить первоначальную информацию какой расчет поменял на другой?

Автор 2ronРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4291
Последний ответ 24 Дек 2015, 15:34
от дфтын
Помогите подобрать Back-office и Front-office

Автор avrnskРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 5546
Последний ответ 07 Сен 2010, 12:01
от mohock
Помогите с отчётами в УТ 10.3. (Ведомость по товарам и ведомость по заказам)

Автор chum710Раздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 5882
Последний ответ 28 Мар 2012, 13:02
от chum710
Помогите с отчетом "Валовая прибыль"

Автор Dm109Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 4361
Последний ответ 10 Сен 2015, 13:57
от Dm109
помогите с отчетом "характеристики контрагентов"

Автор Vasya PovarРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1975
Последний ответ 07 Дек 2016, 15:53
от Kironten

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
168 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
46 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
29 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 711
  • Точка Скрытых: 0
  • Точка Пользователей: 9
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal