7.7 Выбрать документы..

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем tmpnikl, 18 янв 2013.

  1. TopicStarter Overlay
    tmpnikl
    Offline

    tmpnikl Опытный в 1С

    Регистрация:
    28 ноя 2012
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Никакой конкретной задачи.., просто так для понимания..
    Хотелось бы в данной процедуре вывести список(сообщить(номер документа)) всех документов(которые находятся в разных журналах) сотрудника..

    Процедура ВыводВсехДокументов()
    Если ТекущийЭлемент().Выбран() = 1 Тогда
    Сообщить(ТекущийЭлемент().Наименование) // элемент выбран

    КонецЕсли;
    КонецПроцедуры
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    выразитесь яснее... Хотите вывести документы, принадлежащие конкретному журналу?
  3. TopicStarter Overlay
    tmpnikl
    Offline

    tmpnikl Опытный в 1С

    Регистрация:
    28 ноя 2012
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Нет, документы принадлежат разным журналам..Алгоритм то понятен, выбран сотрудник, теперь нужен цикл по всем журналам, и поиск этого сотрудника в этом журнале, если этот сотрудник в журнале имеется, то внутренний цикл выввести(сообщить) все документы из этого журнала, далее, переходим к следущему журналу...
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Может просто показать все документы в которых "засветился" сотрудник? Зачем вам журналы?
  5. TopicStarter Overlay
    tmpnikl
    Offline

    tmpnikl Опытный в 1С

    Регистрация:
    28 ноя 2012
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Если это возможно, просто я предполагал, что к документам можно достучаться только через журнал, где этот документ отмечен...
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    совершенно не обязательно.
    Хотел бы уточнить вашу конфигурацию........
  7. TopicStarter Overlay
    tmpnikl
    Offline

    tmpnikl Опытный в 1С

    Регистрация:
    28 ноя 2012
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Не совсем понятно под словом конфигурация..., версия 7.7, конфигурация нетиповая...
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    это и хотелось узнать....
    Для отбора можно написать запрос или простым перебором документов в цикле по условию... Как вам больше нравится
  9. TopicStarter Overlay
    tmpnikl
    Offline

    tmpnikl Опытный в 1С

    Регистрация:
    28 ноя 2012
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Язык запроса в 1С, что-то слишком сложный, и у него есть всякие ограничения(например длина строки запроса и т.д.), поэтому если можно то цикл, как-то ближе к моему пониманию..:)
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ну например....
    Код:
    Док=СоздатьОбъект("Документ"); //просматриваем ВСЕ документы
    Док.ВыбратьДокументы(); //без указания интервала,т.е по всей БД
    Пока Док.ПолучитьДокумент()=1 Цикл
    Если Док.Вид()="ПриходныйОрдер" Тогда //отсекаем по конкретному виду
    Если Док.Сотрудник<>ВыбСотрудник Тогда //проверка по реквизиту шапки. Имя м.б. другим. Главное тип
    продолжить //не срослось...
    КонецЕсли;
    ИначеЕсли Док.Вид()="Отгрузка" Тогда //тут другой вид документа
    
    Если Док.ФизЛицо<>ВыбСотрудник Тогда //проверка по реквизиту шапки. Имя м.б. другим. Главное тип
    продолжить //не срослось...
    КонецЕсли;
    ИначеЕсли Док.Вид()="Реестр" Тогда //тут другой вид документа. Наш сотрудник не в шапке, а в таб. части
    нашли=0;
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку()=1 Цикл
    Если Док.Сотрудник=ВыюСотрудник Тогда
    Нашли=1;
    прервать;
    КонецЕсли; 
    КонецЦикла; 
    Если Нашли=0 Тогда
    Продолжить;
    КонецЕсли;
    ИначеЕсли ...... тут по другим документам вида где есть сотрудник
    КонецЕсли;
    Сообщить(""+Док); //Самое сладкое... показали документ в котором есть сотрудник
    КонецЦикла;
    
    ВыбСотрудник - реквизит формы типа справочник
  11. TopicStarter Overlay
    tmpnikl
    Offline

    tmpnikl Опытный в 1С

    Регистрация:
    28 ноя 2012
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Спасибо..., это конечно уже не важно.. наверное я не так мыслю..., но я предполагал(скорей всего ошибочно...)Делается цикл метаданных по документам, проверяется тип ревизитов шапки и табличной части документа, и если тип = Справочник.Сотрудник(например), то делаем цикл списка документов по выбронному сотруднику Но всё равно большое спасибо...
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    какая стоит задача изначально?
  13. TopicStarter Overlay
    tmpnikl
    Offline

    tmpnikl Опытный в 1С

    Регистрация:
    28 ноя 2012
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
  14. TopicStarter Overlay
    tmpnikl
    Offline

    tmpnikl Опытный в 1С

    Регистрация:
    28 ноя 2012
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Изначальная задача понимание программирование на 1С на примере реально заданной задачи методом проблемно-ориентированного(а не последовательного) обучения ...:), К правильному Результату, конечно, можно прийти различными способами, можно оптимизировать, можно "просто в лоб", у каждого свой сложившийся стиль программирования..я представляю себе алгоритм решения данной задачи, но ещё плохо ориентируюсь в языке 1С(например для каждого объекта метаданных на одно и то же действие отличаются операторы выборки: выбратьЭлементы() в справочнике-ВыбратьСтроки() в документах, ПолучитьЭлемент() — ПолучитьСтроку() и т.д.), та же вышеприведённая задача в модуле при открытии элемента справочника в моём понимании выглядит так...
    Код:
    Процедура ПечатьВсехДок()
    Если ТекущийЭлемент().Выбран() = 1 Тогда
    Сообщить(ТекущийЭлемент().Наименование);
    Колво_Док=Метаданные.Документ();
    Для к1=1 по Колво_Док Цикл
    Сообщить("Идентификатор:"+Метаданные.Документ(к1).Идентификатор);	
    Колво_РШ=Метаданные.Документ(к1).РеквизитШапки();  
    ФлПск_РШ=0;
    Для к2=1 по Колво_РШ Цикл
    Если (Метаданные.Документ(к1).РеквизитШапки(к2).Тип="Справочник") и (Метаданные.Документ(к1).РеквизитШапки(к2).Вид="Сотрудники") Тогда
    Сообщить(Метаданные.Документ(к1).РеквизитШапки(к2));
    ФлПск_РШ=1
    Прервать
    КонецЕсли;
    КонецЦикла;
    Если ФлПск_РШ=1 Тогда
    //Когда выяснили что в этом документе находится наш справочник, тогда начинаем с него выборку
    //Спозиционировали документ, дальше надо как-то найти этого сотрудника по наименованию
    //(пока не знаю, сейчас просматриваю инет), и если этот сотрудник есть,
    //только тогда начинаем выборку этих документов..
    Док = СоздатьОбъект("Документ." + Метаданные.Документ(к1).Идентификатор);
    КонецЕсли
    КонецЦикла;
    КонецЕсли;
    
    Просьба пользоваться тегами
  15. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Да... Подходов много. Ваш код полностью не работоспособен. Общая идея верная. Но куча ошибок.
    К тому же ваш код будет выполняться гараздо медленнее.

Поделиться этой страницей