Универсальная сортировка ТЧ документа с произвольным уровнем вложенности сортируемого реквизита
Учетные задачи - Печатные формы
Что-то типа такого я не встречал (или проскользнуло мимо меня)... А инструмент-то - нужный, потому что извращенность менеджеров/клиентов границ не знает: сегодня одному надо чтобы накладная была отсортирована по артикулам, завтра другому надо отсортировать по дате окончания действия сертификата на номенклатурные позиции накладной. На всех кнопочек и времени удовлетворять неустоявшиеся "хотелки" - не напасешься! Поэтому садимся и быстренько пишем универсальное решение.
Установка - как для любой внешней печатной формы: скопировать обработку в каталог КаталогБазы\ExtForms\PrnForms\, далее меню-сервис-регистрация внешних печатных форм - подключить к требуемому документу. Обработка может быть использована с любым документом, поэтому подключайте ко всем документам, к которым сочтете нужным.
Продемонстрируем на примере (см.картинки в конце описания): допустим, товарную часть накладной надо отсортировать по дате окончания срока действия сертифкатов. По кнопке выбора печатной формы (1) выбираем "Универсальную сортировку..."(2), видим список реквизитов табличной части нашего документа. Далее спускаемся по иерархии(вложенности) реквизитов к нужному реквизиту: так как сертификат описывает номенклатуру - выбираем "Номенклатуру", т.е. спускаемся ниже на 2 уровень (3), видим перечень реквизитов справочника номенклатуры (кстати, всегда можно вернуться на предыдущий уровень) (4), выбираем реквизит "Сертификат", попадаем в перечень реквизитов, описывающих сертификат (5) и видим требуемое: дату окончания срока действия сертификата - жмакаем ее два раза мышью (6); при клике мышью на реквизите сортировка всегда производится по возрастанию значения реквизита (в противном случае - воспользуйтесь кнопкой под списком реквизитов). Все...
В заголовке таблицы всегда показывается наше текущее местонахождение в иерархии реквизитов. Если "заблудились" - всегда можно в один клик вернуться к самому началу: кнопка "Заново" в подвале таблицы.
Установка выполняется пользователем самостоятельно для любых нужных документов с табличной частью с использованием типового механизма подключаемых внешних печатных форм.
Пользуйтесь! Желаю успехов.
Обработка предоставляется AS IS (как есть). Возможны, конечно, несоответствия вашим ожиданиям - пишите, высказывайте пожелания... Особенно интересует как это дело будет работать в конфигурации бухучета и зарплаты и кадров - жду ваших отзывов.
06.06.09 Внесены изменения (в соответствии с замечаниями и подсказаками, сделанными в комментах), а) обработка не требует внешних компонент; б) блокировка "нештатных" ситуаций при вызове обработки...
04.07.09 Исправлена ошибка, могла проявляться когда в табличной части документа присутствовали реквизиты типа "справочник" и "документ" неопределенного вида.
Анонс: готовится к выходу очередная версия, которая будет поддерживать возможность сортировки по реквизитам неопределенных типов. Следите за новостями...
Родственная разработка, позволяющая сортировать ТЧ документа не "вглубь", а "вширь" по составному ключу из нескольких реквизитов табличной части, находится здесь
Еще одна родственная разработка по свертке и сортировка табличной части документа находится здесь
Вступайте в нашу телеграмм-группу Инфостарт
Сортировка документ табличная часть
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Печатные формы Бухгалтер Пользователь Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Торговля и склад 7.7 Транспорт, автопарки, такси Бухгалтерский учет Управленческий учет Абонемент ($m)
Новые формы Транспортных накладных, а также журнал учета, в соответствии с постановлением Правительства РФ от 30.11.2021 № 2116 (действуют с 01.03.2022г.) для конфигураций Бухгалтерия 7.7 и Торговля и Склад 7.7.
1 стартмани
01.10.2021 15291 137 Ant10 0
Печатные формы Бухгалтер Пользователь 1С:Предприятие 7.7 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Производство+Услуги+Бухгалтерия 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 1.х 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Розница 2 Россия Бухгалтерский учет Налоговый учет Абонемент ($m)
Внешние печатные формы Счета-Фактуры( СФ ) и Универсального Передаточного Документа( УПД ) (в редакции постановления Правительства Российской Федерации от 2 апреля 2021 г. № 534) для большинство конфигураций (УТ,БП,УПП,УСО,ЕРП,УНФ,Розница,КА) одним архивом. . Бонус печатные формы Счета-фактур и УПД для Бух.учета, ТиС, Комплексная конфигурация 4.5 1С 7.7; универсального корректировочного документа (УКД) для УТ10/УПП1/КА1 Внешние печатные формы (УПД, счет фактура) за поставщика из Управление торговли 10.3 (все релизы); УПП 1.3; УСО 1.3; КА 1.1; БП 2.0. Так же формы для прослеживаемых товаров с колонками (c РНПТ) . *поправлено от 19.12.2023
2 стартмани
25.06.2021 102103 1322 Kontakt 319
Печатные формы Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Абонемент ($m)
Новая форма УПД № 534 (с 01.07.2021г) для Бух. 7.7
25.06.2021 27546 0 Touch_Of_Soul 47
Печатные формы Банковские операции Бухгалтер Бухгалтерский учет 7.7 1С:Упрощенное налогообложение 7.7 Россия Абонемент ($m)
Печатная форма счета для конфигурации 1С: Упрощенная система налогообложения 7.7 (ред. 1.3) с QR кодом для оплаты в терминалах Сбербанка РФ.
1 стартмани
20.07.2017 22171 84 Voland36 8
Печатные формы Оптовая торговля Производство готовой продукции (работ, услуг) Бухгалтер 1С:Предприятие 7.7 1С:Бухгалтерия 7.7 1С:Торговля и склад 7.7 Россия Бухгалтерский учет НДС Абонемент ($m)
Еще одна поделка на заданную тему. Отличается от аналогичных разработок и от типового решения тем, что не только выводится новая строка в шапке "Идентификатор государственного контракта, договора (соглашения)", но и печатается этот самый идентификатор госконтракта. Может пригодиться тем, кто осуществляет поставки по госконтрактам - с 01.07.2017 они обязаны указывать ИГК в счетах-фактурах и УПД, а не просто печатать пустографку.
1 стартмани
04.07.2017 44060 337 Cooler 49
Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Бухгалтерский учет Платные (руб)
Обработка загружает из файла Excel документы "Поступление", "Отгрузка", "Счет на оплату". Возможно сохранение настройки соответствия полей. Есть демоверсия. Есть интересная функция загрузки сразу и поступления, и отгрузки (цены в отгрузке будут установлены больше на выбранный процент). Элементы номенклатуры ищутся по полям поиска и могут создаваться новые, если не найдены.
9516 руб.
02.06.2015 45438 3 5
Печатные формы Документооборот и делопроизводство (СЭД) Логистика, склад и ТМЦ Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)
Внешняя обработка, позволяющая выводить на печать УПД из документа "Поступление товаров". Сделано в виде внешней обработки, а не печатной формы, потому что в типовой форме поступления отсутствует кнопка "Печать".
2 стартмани
06.05.2015 26970 37 cargobird 5
Печатные формы Оптовая торговля Логистика, склад и ТМЦ Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)
Несмотря на повсеместное внедрение платформы 1С:8.3, до сих пор во многих организациях успешно выполняют свои функции конфигурации на базе 1С:7.7, не всегда обновленные. Предлагаемая внешняя печатная форма позволит продлить срок эффективной эксплуатации этих конфигураций (только бухгалтерские)
1 стартмани
01.02.2015 46336 224 kserdyukov 6
это просто потому как дешевое и сегодня дома сидел удаленно с офисом...
да и проперло попрограммить...
ТабличнаяЧасть.Сортировать(ТЗреквизитов.Идентификатор+Направление);
перезалил...
картинку из двух пиктограммок - сделаю...
Придираюсь , само собой :
все-таки наличие отдельной колонки для обозначения уровня логично.
Клик на на ней означает раскрыть группу. Клик на самой группе означает отсортировать по наименованию (выбор наименования по умолчанию).
Т.е. подход понятный и привычный для всех пользователей 1с.
вот так:
.
а с кликами по группе и по иконке - не бум усложнять сущностей.. (резон определенный в этом есть), но вот не всегда наименование есть .. и код...
Конкретно - нельзя управлять многострочной частью через контекст открытой формы... решение - просто загрузить formex.dll
Поэтому, лучше формекс..
Можно и без формекса - передать параметром в форму документа и в самом документе Изменять документ, Но... нужно править форму документа, а это - тоже зло...
ЗЫ: а вот для данной поделки Чебура - модальность вполне можно использовать..
>>Конкретно - нельзя управлять многострочной частью через контекст открытой формы...
>>решение - просто загрузить formex.dll
Подсказка - или можно просто загрузить 1С++, не загружая ФормЕкс :)
некоторые монстры все-таки любят 1С++ без ФормЕкс.
Почему без формекса во вн. печатной форме
не работает
Контекст.ЗагрузитьТабличнуюЧасть(ТЧ),
но работает
Контекст.СортироватьСтроки(ПеременнаяСортировки) - НЕ знаю.
(44) Про рег.отчетность в Зике - спасибо.
Бухов научу : перед запуском проверять есть ли v7plus в каталоге базы.
Есть 2 типа контекста - программный контекст модуля проведения и контекст открытой формы. Второе - это просто "указатель" на открытую в данный момент форму чего либо. Позволяет через обращаться к атрибутам самой формы.
Первый - иметь программный контекст в глобальнике...
"Позволяет через обращаться к атрибутам самой формы .."
и атрибутам соответствующего объекта , загруженным в оперативную память.
Так на мой взгляд, получше.
А что означает "иметь программный контекст в глобальнике" я не понял .
"Просто ее время еще не пришло. Пока в этом секторе жируют студенты."
Я только выдохнул "Ух..".
Выдам другой вывод по отношению к 77 и 1с++ - тоже пристрастный и более обоснованный :
"Время вышло. Нужно умирать."
Дискуссия возможна лишь по вопросу : "Как умереть красиво и вовремя".
Контекст открытой формы это совокупность переменных и методов, доступных в программном модуле этой формы.
Поэтому фраза "изменить контекст" мне несколько непонятна. Что Вы собираетесь изменять? И как?
К слову, 1С++ позволяет максимально просто и элегантно выполнять методы контекста.
Например Конт.МояПроцеура()
Попробуйте проделать такой финт без ВК.
Соглашусь.
"К слову, 1С++ позволяет максимально просто и элегантно выполнять методы контекста.
Например Конт.МояПроцеура()
Попробуйте проделать такой финт без ВК."
Семерочник восхитится - восьмерочник пожмет плечами.
И еще раз к слову.
Некоторый функционал из 1С++ был в свое бессовестно применен в восьмерке.
Это о пожатии плечьми.
Только не надо меня спрашивать, какой конкретно.
На эту тему перетерто было немало. Если интересно, можете поискать.
Не хочу подствлять лишний раз фирму-кормильца.
Ну ,пусть побалуются. Наверно, интересно.
Если фраза про фирму-кормильца достоверна :
"Некоторый функционал из 1С++ был в свое бессовестно применен в восьмерке."
то тогда более пристальный взгляд на 1с++ , возможно , оправдан.
Я лично предпочитаю работать с механизмом, который разобран по косточкам, собран обратно, смазан и абсолютно мне понятен.
Про достоверность.
Информация достоверная. Как и то, что разработчики 1С++ неоднократно обращались к 1С по поводу более глубокого сотрудничества.
А в ответ полное молчание - косвенное доказательство признания превосходства 1С++ в некоторых моментах.
по кнопке печати в списках журналов вызывается глобальная процедура с передачей команды в открываемую форму...
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(?((Модифицированность()=0) и (ПустоеЗначение(ТекущийДокумент())=0), ТекущийДокумент(), глВзятьКонтекст(Контекст)), "Контекст");
- согласен, но что вы хотите от сваянного по быстрому... - мне хватает, кому надо - может обратиться ко мне за отдельные сольдо ;-)
> нельзя сортировать по нескольким реквизитам одновременно
- не сделано специально, ибо жирно будет нахаляву ;-)
..
если знаешь альтернативное решение, позволяющее делать сабж (0), желательно с "одновременно по нескольким реквизитам" - озвучь, плиз...
А отсортировать ТЗ - тьфу.. плёвое дело
:)
..
кстати, ты что имел в виду, когда говорил "неинформативно" - типа непонятно на каком адресе во всей цепочке пройденной иерархии находимся?
Коли ты формекс вообще не используешь (кроме как для избавления от недоделки 1с), то делаем так:
//глСервис = "";
//Попытка глСервис = СоздатьОбъект("Сервис");
//Исключение
// Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "FormEx.dll") <> 1 Тогда
// Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "ExtForms\" + "FormEx.dll") <> 1 Тогда
// Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "FormEx.dll") <> 1 Тогда
// КонецЕсли;
// КонецЕсли;
// КонецЕсли;
// Попытка глСервис = СоздатьОбъект("Сервис");
// Исключение
// Предупреждение("Не удалось инициализировать компоненту Formex.dll
// |Сортировка недоступна...",30);
// Возврат;
// КонецПопытки;
//КонецПопытки;
Если ПустоеЗначение(Форма.Параметр) = 1
Тогда //без параметров, вызов - только по механизму внешних печ.форм
Возврат;
КонецЕсли;
Если ПустоеЗначение(Форма.Параметр.Получить("Модально")) = 1 Тогда
Форма.Параметр.ДобавитьЗначение("угу","Модально");
ОткрытьФормуМодально("Отчет#",Форма.Параметр,РасположениеФайла());
Возврат;
КонецЕсли;
Наслаждаемся положительными эмоциями без загрузки ВК...
Если не делаем код,как в (29), а оставляем всё как есть:
err КонтекстТекущегоДокумента.ЗагрузитьТабличнуюЧасть(ТабличнаяЧасть);
{..... .\EXTFORMS\PRNFORMS\_UNISORT.ERT(561)}: Значение не представляет агрегатный объект (ЗагрузитьТабличнуюЧасть)
Ибо нефик забывать про условие, что ТипЗначения(КонтекстТекущегоДокумента) должен быть = 100 ...
а то, что знал, но не применил - это да, за это меня попинать завсегда можно...
;-)
Начал анализировать, почему же я ее пропустил, обратил внимание на дату 29.12.2005.
Понял, что в этот день я уже второй день, как начал встречать Новый Год :)
ЗЫ ностальгия, понимАИшь :)
В ПриОткрытии() - бесполезно, формы в это момент не вообще. Но как таки узнать, не используя ВК могу сказать за пузырь пива ;)
Но от вопроса уходишь. Я вообще не знаю, как устроены окна в восьмерке.
Я спросил про классик MDI.
На кой, извините, хер нужна модальность, если после появления окна, требующего реакции юзера, можно спокойно закрыть основную программу?
:)
А вот в восьмерке что-то мало энтузиастов. А я не верю, что она самодостаточно.
Здесь где-то проскакивала ВК для восьмерки типа "Нетленка...".
Почему она появилась? Ведь повторяет тот же формекс.
А ты почему миракл развиваешь? А?
Значит, не все ладно в восьмом королевстве?
Все, чего мне лично не хватало, уже давно новая Miracle делает: и в трей сворачивает, и баллуны выводит, и по иконке окошко прячет/показывает и т.д. и т.п. Зато юзаю её одну, родимую, а не обвешан со всех сторон длл-ками
Да просто потому, что было ИНТЕРЕСНО написать универсальную и для 77 и для 81. Кстати, когда начинал ее писать, я ваще тогда с 8-кой не работал. Всех моих достаточно плотных трудов - с прошлой недели на 8-ке
И ключевой момент - что число е в степени 30 содержит как целую часть , так и дробную с бесконечным количеством дес.знаков.
И ставить вопрос о количестве знаков в этом числе некорректно,
Корректно же ставить вопрос о количестве знаков лишь в целой части этого числа.
Тестируйте и пинайте разработчика...
вот так получшее:
Процедура ПриОткрытии()
СтатусВозврата(0);
Если ПустоеЗначение(Форма.Параметр) = 1
Тогда //без параметров, вызов - только по механизму внешних печ.форм
Предупреждение("Обработку сортировки табл.части документа следует использовать при помощи
|механизма внешних печатных форм или аналогичного ему по функционалу.
|Сортировка недоступна...",30);
Возврат;
КонецЕсли;
КонтекстТекущегоДокумента = Форма.Параметр.Получить("Контекст");
Если ПустоеЗначение(КонтекстТекущегоДокумента) = 1
Тогда //защита от несанкционированного вызова
Предупреждение("Отсутствует доступ к табл.части документа,
|Сортировка недоступна...",30);
Возврат;
КонецЕсли;
_типКонтекста = глВернутьТипКонтекста(КонтекстТекущегоДокумента);
Если _типКонтекста <> "Документ"
Тогда //только для доков
Предупреждение("Сортировка табл.части документа недоступна
|для объекта вида <"+_типКонтекста+">...",30);
Возврат;
КонецЕсли;
Если ТипЗначения(КонтекстТекущегоДокумента) <> 100 Тогда
ОткрытьФорму(КонтекстТекущегоДокумента,КонтекстТекущегоДокумента);
Форма.Параметр.Установить("Контекст",КонтекстТекущегоДокумента);
КонецЕсли;
Если Форма.МодальныйРежим() = 0
Тогда
ОткрытьФормуМодально("Отчет#",Форма.Параметр,РасположениеФайла());
Возврат;
КонецЕсли;
:)
Тут порядок другой...и ключевое вот тут:
Если ТипЗначения(КонтекстТекущегоДокумента) <> 100 Тогда
........ ОткрытьФорму(КонтекстТекущегоДокумента,КонтекстТекущегоДокумента);
........Форма.Параметр.Установить("Контекст",КонтекстТекущегоДокумента);
КонецЕсли;
в тис (у меня 939) при открытии печ.формы из журнала - передается контекст...
прдется в свою добавить готовые профили сортировок...
запусти через кнопку "Действия" запуском процедур глДействия с организацией передачи требуемых параметров (этот вариант менее универсален по сравнению с ВПЧ)
.
или при запуске обработки вывали вопрос на выбор нужного документа и выбранный документ подсунть по коду в нужное место
Если в своей обработке ты собираешься повторять подход Чебура , то это пошло , да и публика заскучает .
Было бы интересно объединить в новой обработке подход Чебура "вглубь" и подход Арчибальда "вширь"(сортировка по нескольким произвольным реквизитам).
И сам похихикаешь , и публика зевать не будет.
Меховые уши навострит,
Слушать станет: как там мумитролли
В мумидоле? Как там айболит?
Чем там дышит Йожыг из тумана?
Пьет ли можжевеловый чаёк?
В лапах цепких у него бердана.
Взгляд его внимателен и строг.
Для врагов преграда и препона.
Для друзей надежда и оплот.
Не прорвутся злые покемоны!
Гадкий телепузик не пройдет!
Он стоит на страже мирной жизни.
Дрозд щебечет, яблони в цвету...
Дышится легко в моей отчизне,
Ибо Чебурашка на посту!
Не раскрыт внутренний мир Чебурашки, его переживания. Он предстает перед нами эдаким истуканом на посту . Не хватает какой -то детали , какой-то мелочи , оживляющей картинку : например, "дрожащий хвостик сзади".
Чебур , не слушай Арчибальда , слушай правду. Минус за слабый стих. От знатока.
Юный сын к отцу пришел И сказал, смущаясь:
"Я любовь себе нашел, Часто с ней встречаюсь.
Я дарю ей шоколад, Покупаю кексы,
Но мой опыт маловат, Папа, в плане секса"
У меня секретов нет. Слушайте, ребята,
Папы этого ответ не витиеватый.
"Не в подарках дело сын. Глупость и нелепость!
Выход здесь всегда один. Женщина - как крепость.
Эту крепость надо брать Нежностью и лаской.
Силу можно применять, Но всегда с опаской.
Ты садись, раз уж пришел,
И послушай, кроха
С сексом в жизни - хорошо!
А без секса - плохо.
Краткий экскурс в чудный мир-
Мир противоречий
Мы с тобою совершим
В этот чудный вечер.
Если девушка сама Задирает юбку
И глядит на твой карман - Это проститутка.
С ними лучше не ходить, Так как, между прочим,
Мне за год не оплатить стоимости ночи.
Если девушка с тобой, А потом с Андрюхой,
А наутро с Мустафой - Это просто шлюха.
С нею можно так, разок, Коль совсем тоскливо,
Но не суйся к ней, сынок, Без презерватива.
Если девушка с другой даже на гулянке,
Помни, сын мой дорогой - Это лесбиянки.
Их тебе не возбудить, Здесь, сынок, другое.
Лучше сразу обходить Лесбос стороною.
Если ты ее ласкал, А она молчала.
Если ты его достал, А она убрала,
Участь женщины такой, Друг мой незавидна.
Это подтвердит любой - Женщина фригидна.
Если ходит за тобой Мальчик неотвязно,
Этот мальчик голубой, что весьма опасно.
Прочь гони его скорей без заездов пробных,
Пусть бежит искать друзей средь себе подобных.
Если ты, Андрей, Иван с Тоней и Варюхой -
Бей в зеленый барабан - это групповуха.
В этом есть какой-то смысл, я не возражаю,
Потому что даже мысль эта возбуждает.
Об одном тебя прошу, Обойдись без грязи.
Я тебе не разрешу, Блин, случайных связей.
Ты одну себе найди, Девку поприличней
Познакомить приводи. Понял? Ну, отлично!
И, уж раз ты в это влез, Помни сын мой Сема
Самый безопасный секс -Секс по телефону.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 20280
Создание 04.06.09 21:25
Обновление 20.11.13 21:14
Просмотры 38185
Загрузки 0
Рейтинг
28
Комментарии 209
Код открыт Да
Рубрики Печатные формы
Кому Для всех
Тип файла Внешняя обработка (ert,epf)
Платформа
Оперативный учет 7.7
,
Бухгалтерский учет 7.7
,
Расчет 7.7
Конфигурация 1C77
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)