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

Автор Тема: Вопрос по регистрам сведений  (Прочитано 5700 раз)

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

Оффлайн blacat

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-01-31
  • Сайт: 
  • Профессия: Бухгалтер
Добрый день!
Подскажите, что я делаю не так. Нужно выбрать контактную инфу контрагента. Пробую следующий код:
//------------------------------------------------------------------------------------------------------
   Контрагент = Справочники.Контрагенты.НайтиПоКоду("БЕ0001876");

   ВыборкаОРГ = РегистрыСведений.КонтактнаяИнформация.Выбрать(Новый Структура("Объект", Контрагент));
   Пока ВыборкаОРГ.Следующий() Цикл
       Если Строка(ВыборкаОРГ.Вид) = "Юридический адрес организации" Тогда
              ЮрАдрес = ВыборкаОРГ.Представление;
       ИначеЕсли Строка(ВыборкаОРГ.Вид) = "Телефон организации" Тогда
              Телефон = ВыборкаОРГ.Представление;
       КонецЕсли;   
   КонецЦикла; 
   
  Сообщение(" ЮрАдрес " + ЮрАдрес );
 
//------------------------------------------------------------------------------------------------------
В итоге программа не заходит внутрь цикла. Пробовал и так и подставлять контрагента из формы - результат нулевой.
Подскажите, плиз, где грабли?



Оффлайн sertak

  • ****
  • Сообщений: 274
  • РЕПУТАЦИЯ: 74
  • КПД: 27%
  • Регистрация: 2013-01-16
    • Skype: vitaly_sertakov
  • Сайт: www.sertakov.ru
  • Профессия: Программист 1С
Проверьте, так ли на самом деле называются виды контактной информации: Юридический адрес организации, Телефон организации.
Если ты знаешь свой путь, то удачи и неудачи равно продвигают тебя вперед

Оффлайн СветланаCC

  • Модератор
  • *****
  • Сообщений: 295
  • РЕПУТАЦИЯ: 46
  • КПД: 16%
  • Я человек творческий, что хочу - то и творю))
  • Регистрация: 2010-11-03
  • Сайт: 
  • Профессия: Программист 1С
	Контрагент = Справочники.Контрагенты.НайтиПоКоду("БЕ0001876");
//вытаскиваем адрес
Запрос = Новый Запрос;
Запрос.Текст =
""ВЫБРАТЬ
| КонтактнаяИнформация.Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Контрагент
| И КонтактнаяИнформация.Тип = &Тип
| И КонтактнаяИнформация.Вид = &Вид";
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.Адрес);
Запрос.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
// либо возможно, смотря какой адрес нужен
//Запрос.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Адрес = Выборка.Представление;
КонецЦикла;

//вытаскиваем телефон
Запрос = Новый Запрос;
Запрос.Текст =
""ВЫБРАТЬ
| КонтактнаяИнформация.Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Контрагент
| И КонтактнаяИнформация.Тип = &Тип
| И КонтактнаяИнформация.Вид = &Вид";
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.Телефон);
Запрос.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Телефон = Выборка.Представление;
КонецЦикла;
Тазовод)

Оффлайн СветланаCC

  • Модератор
  • *****
  • Сообщений: 295
  • РЕПУТАЦИЯ: 46
  • КПД: 16%
  • Я человек творческий, что хочу - то и творю))
  • Регистрация: 2010-11-03
  • Сайт: 
  • Профессия: Программист 1С
Либо проще одним запросом -
	Контрагент = Справочники.Контрагенты.НайтиПоКоду("БЕ0001876");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Представление,
| КонтактнаяИнформация.Вид
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Контрагент";
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента Тогда
АдресЮр = Выборка.Представление;
ИначеЕсли Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента Тогда
АдресФакт = Выборка.Представление;
ИначеЕсли Выборка.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента Тогда
Телефон = Выборка.Представление;
КонецЕсли;
КонецЦикла;

Тазовод)

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Ну во-первых, такие вещи следует делать запросом. Во-вторых, конструкций НайтиПоКоду следует избегать, их можно использовать разве что для заполнения реквизитов на форме (то есть так, что пользователь будет явно видеть выбранный элемент и сможет его изменить в случае, если элемент выбран неправильно). Нужно это для того, чтобы избежать разного рода недоразумений, например, изменения кода элемента. В-третьих, вы уверены, что именно внутрь цикла не попадает, а не в условия? По идее, если записи в регистре есть, цикл должен работать, а вот уже ваши условия вызывают сомнения.
Короче говоря, предлагаю использовать следующий код вместо вашего:
// ЮрАдресКонтрагента - вид контактной информации
// обычно юридический адрес - предопределенный элемент справочника, поэтому можно написать так:
ЮрАдресКонтрагента = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
// если вдруг в вашем конкретном случае юридический адрес - не предопределенный элемент, то
// его следует вынести в форму и определять значение "по умолчанию" конструкцией НайтиПоКоду

// тоже самое с телефоном
ТелефонКонтрагента = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(КонтактнаяИнформацияЮрАдрес.Представление КАК СТРОКА) КАК ЮрАдрес,
| ВЫРАЗИТЬ(КонтактнаяИнформацияТелефон.Представление КАК СТРОКА) КАК Телефон
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияЮрАдрес
| ПО Контрагенты.Ссылка = КонтактнаяИнформацияЮрАдрес.Объект
| И (КонтактнаяИнформацияЮрАдрес.Тип = &ТипАдрес)
| И (КонтактнаяИнформацияЮрАдрес.Вид = &ЮрАдресКонтрагента)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияТелефон
| ПО Контрагенты.Ссылка = КонтактнаяИнформацияТелефон.Объект
| И (КонтактнаяИнформацияТелефон.Тип = &ТипТелефон)
| И (КонтактнаяИнформацияТелефон.Вид = &ТелефонКонтрагента)
|ГДЕ
| Контрагенты.Ссылка = &Контрагент";

Запрос.УстановитьПараметр("Контрагент", Контрагент); // предполагается, что контрагент определен заранее - например, вынесен в форму
Запрос.УстановитьПараметр("ЮрАдресКонтрагента", ЮрАдресКонтрагента);
Запрос.УстановитьПараметр("ТипАдрес", Перечисления.ТипыКонтактнойИнформации.Адрес);
Запрос.УстановитьПараметр("ТелефонКонтрагента", ТелефонКонтрагента);
Запрос.УстановитьПараметр("ТипТелефон", Перечисления.ТипыКонтактнойИнформации.Телефон);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Если Выборка.Следующий() Тогда
ЮрАдрес = СокрЛП(Выборка.ЮрАдрес);
Телефон = СокрЛП(Выборка.Телефон);
Если ЗначениеЗаполнено(ЮрАдрес) Тогда
Сообщить("Юр. адрес: " + ЮрАдрес);
КонецЕсли;
Если ЗначениеЗаполнено(Телефон) Тогда
Сообщить("Телефон: " + Телефон);
КонецЕсли;
КонецЕсли;

Оффлайн СветланаCC

  • Модератор
  • *****
  • Сообщений: 295
  • РЕПУТАЦИЯ: 46
  • КПД: 16%
  • Я человек творческий, что хочу - то и творю))
  • Регистрация: 2010-11-03
  • Сайт: 
  • Профессия: Программист 1С
согласна, что нужно делать запросом, но если человеку очень хочет выборкой то вот -
	ВыборкаОРГ = РегистрыСведений.КонтактнаяИнформация.Выбрать(Новый Структура("Объект", Контрагент));	
Пока ВыборкаОРГ.Следующий() Цикл
Если ВыборкаОРГ.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента Тогда
ЮрАдрес = ВыборкаОРГ.Представление;
ИначеЕсли ВыборкаОРГ.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента Тогда
Телефон = ВыборкаОРГ.Представление;
КонецЕсли;   
КонецЦикла; 
Сообщить(ЮрАдрес);
Сообщить(Телефон);
Тазовод)

Оффлайн blacat

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-01-31
  • Сайт: 
  • Профессия: Бухгалтер
Добрый вечер, друзья! Спасибо, что откликнулись на мою просьбу о помощи! Ваши варианты кодов я рассмотрел и уверен, что эта информация мне обязательно еще пригодится. Моя проблема решилась, на решение меня натолкнул mixqn - я сам виноват. Вчера ночью я пытался извлечь данные из регистра сведений в базе, в которой этот регистр НЕ заполнен...:dfbsdfbsdf: Да, бывает и так. На компе стоит несколько одинаковых баз и я был просто уверен, что извлекаю данные из рабочей, а не из тестовой как оказалось в итоге. Т.ч. еще раз всем спасибо и впредь буду внимательнее.


Теги:
 

Возможно ли получение эталонного файла конфигурации *.cf из измененной стандартной, например (УТ 11.1, БП 3.0) или вопрос о том как убрать лишние доработки и привести конфигурацию базы максимально к стандартной после варварских "доработок"?

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

Ответов: 9
Просмотров: 9216
Последний ответ 30 Дек 2015, 22:14
от 1Cnastroika
Вопрос по РИБ "ПоОрганизации"

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

Ответов: 5
Просмотров: 5847
Последний ответ 15 Мар 2013, 21:38
от Besart
Вопрос по "Отчеты о Розничных продажах".

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

Ответов: 1
Просмотров: 3291
Последний ответ 26 Июл 2010, 16:06
от crow1983
Вопрос о действии кнопки "Записать"

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

Ответов: 6
Просмотров: 3443
Последний ответ 06 Окт 2014, 15:23
от jenya1111
Вопрос по отчету "Материалы в эксплуатации".

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

Ответов: 3
Просмотров: 2364
Последний ответ 04 Мар 2015, 11:07
от Дмитрий@

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

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

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


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

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
157 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
48 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal