Если ПустоеЗначение(конт)=0 Тогда Если ПустоеЗначение(конт.ТекущийДокумент)=1 Тогда Возврат; КонецЕсли; ИмяЖурнала=Метаданные.Документ(конт.ТекущийДокумент.Вид()).Журнал.Идентификатор; ИмяЖурналаТаб=Метаданные.Документ(конт.ТекущийДокумент.Вид()).Журнал.Синоним; Иначе ИмяЖурнала="ПолныйЖурнал"; ИмяЖурналаТаб="Полный журнал"; КонецЕсли;
Для ЖЖ = 1 по Метаданные.Документ() Цикл // получим ссылку на документ Если ИмяЖурнала<>"ПолныйЖурнал" Тогда Попытка Если Метаданные.Документ(ЖЖ).Журнал.Идентификатор<>ИмяЖурнала Тогда Продолжить; КонецЕсли; Исключение Продолжить; КонецПопытки; КонецЕсли;
Попытка ТЗДок.Контрагент=Док.Контрагент; Исключение ТЗДок.Контрагент=0; КонецПопытки;
Попытка ТЗДок.СуммаНДС=Док.Итог("НДС"); Исключение Попытка ТЗДок.СуммаНДС=Док.НДС; Исключение ТЗДок.СуммаНДС=0; КонецПопытки; КонецПопытки;
Попытка ТЗДок.СуммаСНДС=Док.Итог("СуммаСНДС"); Исключение Попытка ТЗДок.СуммаСНДС=Док.СуммаСНДС; Исключение ТЗДок.СуммаСНДС=0; КонецПопытки; КонецПопытки;
Если Док.Вернули2экз=0 Тогда ТЗДок.СтатусДок = "-"; ТЗДок.Внимание=1; Иначе ТЗДок.СтатусДок = "Да"; ТЗДок.Внимание=2; КонецЕсли;
КонецЦикла;
КонецЦикла;
ТЗДок.Сортировать("ДатаДок+,НомерДок+");
Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Реестр"); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); ТЗДок.ВыбратьСтроки(); Пока ТЗДок.ПолучитьСтроку()=1 Цикл Если ТЗДок.Внимание=1 Тогда Таб.ВывестиСекцию("Строка_1"); Иначе Таб.ВывестиСекцию("Строка_2"); КонецЕсли; КонецЦикла; Таб.ВывестиСекцию("Подвал"); Таб.ТолькоПросмотр(1); Таб.ПараметрыСтраницы(1,100,1,10,5,10,10,0,7,1); Таб.Показать("Печать Реестр 2-ых экземпляров документов",""); КонецПроцедуры
Понимаю что можно было бы использовать стандартный алгоритм вывода обычного Реестра в каждом журнале, но ведь в принципе должен был быть метод обращения к журналу как и к обычным объектам т.е. Справочнику, Документу, Отчету и т.п. упрощающий сам перебор информации.
Группа: Пользователи
Сообщений: 96
Спасибо сказали: 8 раз
Рейтинг: 0
И это всё для чего? проверить не ввели ли случайно дубль документа? Совпадающий по НДС и сумме с НДС? Зачем? А если надо ввести дубль или совпадение (для разных контрагентов например)? А если открыли общий журнал то что с чем сравниваться будет? В общем мне кажется Вы где то с постановкой задачи "накосячили". Можно дословно сюда запостить то что сказал заказчик?
А не проще ли (т.к. сравнивать документы имеет смысл только одного вида) сделать так
1. в обычных журналах по кнопке этой хитрой выкидывать список видов документов которые надо сравнить (виды документов получаем через метаданные как документы принадлежащие этому журналу) 2. в общем журнале выдаём весь список видов
код на пол экрана. а главное - всё универсально кроме общего журнала.
если нет желания то через формекс можно получить всё практически что угодно
Честно сказать мне кажется что там и журнала то не надо. Запрос по документам с использованием Конт.Вид(). И в случае полного (общего) журнала как то придется "послаживать" запрос. Но я что то все равно задачу до конца не понимаю. Что ищем, что проверяем?
И это всё для чего? проверить не ввели ли случайно дубль документа? Совпадающий по НДС и сумме с НДС? Зачем? А если надо ввести дубль или совпадение (для разных контрагентов например)? А если открыли общий журнал то что с чем сравниваться будет? В общем мне кажется Вы где то с постановкой задачи "накосячили". Можно дословно сюда запостить то что сказал заказчик?
ТЗ: выводить реестр документов с разными вариантами сортировки только тех документов, которые присутствуют в открытом у пользователя журнале.
Цитата(Стрелок @ 05.03.12, 19:46)
А не проще ли (т.к. сравнивать документы имеет смысл только одного вида) сделать так 1. в обычных журналах по кнопке этой хитрой выкидывать список видов документов которые надо сравнить (виды документов получаем через метаданные как документы принадлежащие этому журналу) 2. в общем журнале выдаём весь список видов
ничего не сравнивается, не придумывайте
Цитата(Стрелок @ 05.03.12, 19:46)
если нет желания то через формекс можно получить всё практически что угодно
формекс не подходит так как у большинства клиентов на компах администраторы запретили использование внешних библиотек в целях безопасности. Данный вариант с формексом не подходит.
Цитата(sava1 @ 05.03.12, 20:01)
А где Вы собираетесь проверять идентификатор журнала? Глобальной обработки-то нет?
в глобальном модуле естсественно
Цитата(Стрелок @ 05.03.12, 20:05)
Так не хочет вставлять во все журналы идентификатор. Хочет универсальную на все случаи жизни
верно. Эта операция не для одного клиента, и не для одинаковых конфигураций. Скопировать кнопку проще, чем во всех журналах прописывать идентификатор.
По вышевставленному коду задача на практике уже выполняется. Всё прекрасно работает. В случае отсутствия документов в журнале данный алгоритм не имеет смысла (ведь реестр в любом случае будет пустой независимо от вида журнала).
P.S. а кого смущает переменная "Вернули2экз", так это пользователь через неё отмечает вернули/отдали ли второй экземпляр документа контрагенту или нет (например Приходная, Расходная, НН, ЗКП, Договор и т.п.)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!