Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Кривой запрос (хотя не факт =). 1С: Предприятие 8.1.

AndrewM
читатель
офлайн
Дата регистрации: 13.04.2010
Сообщений: 11
Пост №1
 
20.12.2010 17:31

"Всем привет.<br><br>Я новичок. Вот нужно подправить чужую прогу, написанную для 1С:Предприятие 8.1.<br>Встала проблема получения адреса прописки сотрудников из таблицы "Сотрудники". Код следующий:<br>"ДЛЯ Cчетчик = 0 по Ведомость.Зарплата.Количество()-1 ЦИКЛ<br> ДанныеСтр = Ведомость.Зарплата.Получить(Cчетчик);<br><br> Запрос = Новый Запрос;<br> Запрос.УстановитьПараметр("Физл",ДанныеСтр.Физлицо);<br> Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);<br> Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ФактАдресФизЛица);<br> Запрос.Текст="ВЫБРАТЬ<br> | КонтактнаяИнформация.Представление,<br> | КонтактнаяИнформация.Объект,<br> | КонтактнаяИнформация.Тип,<br> | КонтактнаяИнформация.Вид,<br> | КонтактнаяИнформация.Объект,<br> | КонтактнаяИнформация.Поле1,<br> | КонтактнаяИнформация.Поле2,<br> | КонтактнаяИнформация.Поле3,<br> | КонтактнаяИнформация.Поле4,<br> | КонтактнаяИнформация.Поле5,<br> | КонтактнаяИнформация.Поле6,<br> | КонтактнаяИнформация.Поле7,<br> | КонтактнаяИнформация.Поле8,<br> | КонтактнаяИнформация.Поле9,<br> | КонтактнаяИнформация.Поле10<br> |<br> |ИЗ<br> | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация<br> |ГДЕ<br> | КонтактнаяИнформация.Объект = &Физл<br> | И КонтактнаяИнформация.Тип = &Тип<br> | И КонтактнаяИнформация.Вид = &Вид";<br> РезЗапросаАд=Запрос.Выполнить().Выгрузить();<br> <br> Если РезЗапросаАд.Количество()>0 тогда<br> // Адрес=Справочники.ВидыКонтактнойИнформации.ФактАдресФизЛица; <br> Индекс = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле1)); <br> Регион = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле2));<br> Район = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле3));<br> Город = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле4));<br> НаселённыйПункт = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле5));<br> Улица = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле6));<br> Дом = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле7));<br> Корпус = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле8));<br> Квартира = СокрЛП(Строка(РезЗапросаАд.Получить(0).Поле9));<br> // Поле10=СокрЛП(строка(РезЗапросаАд.Получить(0).Поле10));<br> Адрес = Индекс + "," + Регион + "," + Район + "," + Город + "," + НаселённыйПункт + "," + Улица + "," + Дом + "," + Корпус + "," + Квартира;<br> Иначе<br> Сигнал();<br> Сообщить("Для сотрудника " + ВРег(ДанныеСтр.Физлицо) + " не заполнены поля проживания!");<br> КонецЕсли;<br> <br> КонецЦикла;"<br><br>Данный код выдаёт, что далеко не у всех сотурдников в моей таблице "Сотрудники" есть адрес.<br>Хотя они есть у всех. Я специально проверял тех, адрес которых этим кодом не находится, и видел у них заполненный "Адрес по прописке физ. лица". К слову сказать, у меня на 1С:Предприятие 8.1 стоит демо база.<br>А у тех, чей адрес этот код находил, адрес брался тоже именно из "Адрес по прописке физ. лица".<br>Подскажите, в чём здесь ошибка."

Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20947
Пост №2
 
20.12.2010 18:04

1. Запрос в цикле, это не комильфо!<br>2. Полностью задачу опиши

AndrewM
читатель
офлайн
Дата регистрации: 13.04.2010
Сообщений: 11
Пост №3
 
21.12.2010 11:30

"Я выгружаю зарплатную ведомость в обычный текстовый файл.<br>Просто каждого сотрудника с суммой и со всеми его данными через определённый разделитель записываю в файл в отдельную строку.<br>Я беру его ФИО, паспортные данные, дату рождения, ИНН и т.д.<br>С этими данными проблем нет, у каждого сотрудника они достаются (кстати, они также в этом цикле берутся такими же запросами, я их просто вырезал, чтобы место сэкономить).<br>Кроме этих полей мне нужно у каждого сотрудника достать адрес по прописке (индекс, регион, район, город, насел. пункт, улица, дом, корпус, квартира). И вот поле адрес то достаётся у одних сотрудников, то не достаётся у других.<br><br>Т.е. условие после этого запроса:<br>"Если РезЗапросаАд.Количество()>0 тогда"<br>то выполняется для одних, то не выполняется для других (соответственно, если не выполняется, переходит в "иначе" и выдаёт сообщение "Для сотрудника ... не заполнены поля проживания!").<br><br>Хотя я проверяю адреса и у первых, и у вторых и вижу у обоих заполненное поле "Адрес по прописке физ. лица".<br><br>Вот, например, кусок кода для получения паспортных данных по каждому сотруднику:<br>"ДЛЯ Cчетчик = 0 по Ведомость.Зарплата.Количество()-1 ЦИКЛ<br> ДанныеСтр = Ведомость.Зарплата.Получить(Cчетчик);<br><br> Запрос = Новый Запрос;<br> Запрос.УстановитьПараметр("Физл",ДанныеСтр.Физлицо);<br> Запрос.Текст = "ВЫБРАТЬ<br> | ПаспортныеДанныеФизЛиц.ФизЛицо,<br> | ПаспортныеДанныеФизЛиц.ДокументСерия,<br> | ПаспортныеДанныеФизЛиц.ДокументНомер,<br> | ПаспортныеДанныеФизЛиц.ДокументКемВыдан,<br> | ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи<br> |ИЗ<br> | РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц<br> |ГДЕ<br> | ПаспортныеДанныеФизЛиц.ФизЛицо =&Физл";<br> РезЗапросаП = Запрос.Выполнить().Выгрузить();<br> <br> Если РезЗапросаП.Количество()>0 тогда<br> СерияПаспорта = СокрЛП(Строка(РезЗапросаП.Получить(0).ДокументСерия));<br> НомерПаспорта = СокрЛП(Строка(РезЗапросаП.Получить(0).ДокументНомер));<br> КемВыдан = СокрЛП(Строка(РезЗапросаП.Получить(0).ДокументКемВыдан));<br> ДатаВыдачи = РезЗапросаП.Получить(0).ДокументДатаВыдачи;<br> Иначе<br> Сигнал();<br> Сообщить("Для сотрудника "+ВРег(ДанныеСтр.Физлицо)+" не указаны Паспортные данные!");<br> КонецЕсли;<br>КонецЦикла;"<br><br>Вот этот код вполне себе нормально работает, паспортные данные по всем сотрудникам выдаёт. Все другие запросы на получение д.р., ИНН и т.д. таким же образом работают и успешно.<br>А с адресом почему-то проблема.<br>Ну я же адрес у них проверяю. Захожу в "Сотрудники", выбираю сотрудника, по которому этот запрос не нашёл адрес, нажимаю "Личные данные сотрудника" и вижу заполненное поле "Адрес по прописке физ. лица".<br><br>Может, есть какой-то другой способ достать адрес по прописке у всех сотрудников?"

AndrewM
читатель
офлайн
Дата регистрации: 13.04.2010
Сообщений: 11
Пост №4
 
22.12.2010 09:37

Ну так что? Никто мне не подскажет?<br>Хелп. Что в моём запросе не так?

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №5
 
22.12.2010 12:22

Совет: возьмите сотрудника, по которому у вас не срабатывает и выполните запрос в КонсолиЗапросов.<br>Результат должен быть пусто, если это так - уберите условия <br>| И КонтактнаяИнформация.Тип = &Тип<br>| И КонтактнаяИнформация.Вид = &Вид<br>И посмотрите, что написано в Тип и Вид.<br>Может там не ФактАдресФизЛица, а скажем ЮрАдресФизЛица.<br>В общем я думаю, что проблема в условиях, а не имея базы подсказать сложно. В принципе зарос рабочий, а если так и данных нет - смотрите условия.

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация