1С БСП 3.х : Добавление обработки в справочник «Дополнительные отчеты и обработки»

Ну собственно кому нужно подробнее, есть хорошая статья тут. Там функционал богатый и навороченый можно накрутить теперь. В моём случае для простой обработки хватило рыбы в модуле объекта вида:

Функция СведенияОВнешнейОбработке() Экспорт

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.0.0.0");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.Наименование = "Формирование реестра СО";
	 ПараметрыРегистрации.Разрешения = Неопределено;
    
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
 
    // Добавляем команду
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = "Формирование реестра СО";
    Команда.Идентификатор = "ОткрытьНастройкиЗаполнения";
    
    // КРИТИЧЕСКИ ВАЖНО: Указываем тип команды - Открытие формы
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    Команда.ПоказыватьОповещение = Ложь;
 
    Возврат ПараметрыРегистрации;	

КонецФункции

И обязательно! Нужно поправить функцию ДополнительныеОтчетыИОбработкиПереопределяемый.ОпределитьРазделыСДополнительнымиОбработками, чтобы отображались все разделы. Я вынес в расширение вот такое, чтоб каждый раз руками не прописывать нужные подсистемы:

&После("ОпределитьРазделыСДополнительнымиОбработками")
Процедура Расш1_ОпределитьРазделыСДополнительнымиОбработками(Разделы)
	
	для каждого стр из Метаданные.Подсистемы цикл
		Разделы.Добавить(стр);
	конеццикла;	            	
    
КонецПроцедуры

Озон и возвраты через него

Угораздило меня пару недель назад разбить фонарь задний на машине. Посмотрел на WB, посмотрел на Ozon, посмотрел на Avito. Посмотрел в магазине для УАЗиков у себя в городе. Самые конские цены оказались в физическом магазине. В общем черт меня дернул заказать на замену светодиодные на Ozon.ru. Вот у этого продавца: https://www.ozon.ru/seller/uaz-vnedorozhnik-4h4/ В общем если кратенько, то пришло достаточно быстро. Моей ошибкой было то что не распаковал и не посмотрел состояние прямо на месте. Ну потому что коробка была не мятая, обернута сверху пленкой с пузырьками, оклеена сверху лентами «осторожно хрупкое». В общем приношу домой, распаковываю, и вижу:

Ну ладно думаю, ничего страшного, оформлю возврат продавцу и всё. Оформил, приложил фото. А в ответ прилетает отказ в возврате:

Хорошо появилась кнопка «Оспорить отказ в возврате» в приложении. Оспорил, и Озон возврат одобрил буквально через час. Побеседовал приватно с сотрудником ПВЗ, и она сказала что этот товар уже несколько раз прошел цикл клиент-возврат-клиент-возврат, потому что продавец не помечает этот товар как «сломанный, брак» и не забирает его (ну там видимо за это ему еще и денег нужно платить), и поэтому он в системе висит как «нормальный» и ходит по кругу, до тех пор пока кто-то не попадется менее «упорный» и не будет оформлять возврат.

Этого поста бы не было, если бы продавец повел себя добросовестно, и сразу одобрил возврат, добровольно. Ну и изъял бракованный товар из оборота. Потому как судя посему он опять ушел на склад ОЗОНа как «отличный товар».

P.S. Кстати ржака. Только я вчера наконец эту коробку всучил обратно на ПВЗ, как хобана! и другие фонари которые я заказал снова на замену и должны были придти 25 Сентября, оказались уже в пункте ПВЗ. Вот сильно посмеюсь, если окажется что это та-же коробка которую я вчера сдал. Отпишусь вечером по результату 🙂

Update 24/09/2026: и в самом деле ржака. Пришло другое, но тоже битое:

На этот раз был умнее, и вскрыл прямо в ПВЗ. Сразу же отказался….и заказал в 3 раз. Я упорный, посмотрим что придёт еще разик.

1С: Динамическое количество колонок в макете

Задача: создать отчет с динамическим количеством колонок (за ранее не известным). Обычно подобные задачи решаются при помощи СКД, но я его традиционно недолюбливаю и использовать избегаю, по причине того, что спустя пару месяцев боле-менее сложны отчет превращается в абракадабру, которую чтобы понять приходится тратить очень много времени. Потому так.

Решение:

В макете поименовать не только как обычно горизонтальные области, но и вертикальные. Примерно так:

И области тогда получаем соответственно через тег |, примерно так (как в морском бое):

ОбластьШапка=Макет.ПолучитьОбласть("Шапка | Общая");		

Ну и сам код в конечном итоге сводится к такому:

	МесяцГод1=Макет.ПолучитьОбласть("Шапка | МесяцГод");	
	МесяцГод1.Параметры.ном=7;
		
	МесяцГод2=Макет.ПолучитьОбласть("Шапка | МесяцГод");	
	МесяцГод2.Параметры.ном=8;
	
	ТабДок.Вывести(ОбластьШапка);
	ТабДок.Присоединить(МесяцГод1);
	ТабДок.Присоединить(МесяцГод2);
	
	// заполняем тушку
	Тушка=Макет.ПолучитьОбласть("Тушка | Общая");				
	ТабДок.Вывести(Тушка);                              
	
		месгод=Макет.ПолучитьОбласть("Тушка | МесГод");				
		месгод.Параметры.месгод="Январь";
		ТабДок.Присоединить(месгод);
	
		месгод=Макет.ПолучитьОбласть("Тушка | МесГод");				
		месгод.Параметры.месгод="Февраль";
		ТабДок.Присоединить(месгод);
	
	возврат ТабДок;

Получаем:

Python: изолированная среда запуска скриптов

Иногда полезно бывает устанавливать пакеты при помощи pip не «для всех», а конкретно для какого то скрипта. Ну и кроме того разные скрипты могут требовать разных версий пакетов. Именно для реализации таких возможносетй и была придумана технология «виртуального окружения». По сути это папка внутри которой собраны пакеты необходимые для запуска основного скрипта.

Создание виртуального окружения:

python3 -m venv .venv

Переход в виртуальное окружение:

source .venv/bin/activate

Запуск скрипта без перехода в виртуальное окружение:

.venv/bin/python ppp.py

1С: Добавление функционала прикрепления файлов

Ранее уже была статья.. но 2020 года. Решил обновить чуток. На примере актуальной версии 1С Бухгалтерия (3.0.195.40), добавлю функционал по прикреплению файлов к документу СК_ИскВходящий

  1. Копируем любой справочник с наименованием содержащим на конце словосочетание «ПрисоединенныеФайлы» и переименовываем его в СК_ИскВходящийПрисоединенныеФайлы
  2. Меняем ТИП у реквизита «ВладелецФайла» справочника на «СК_ИскВходящий»
  3. Включаем в состав определяемых типов «ПрисоединенныйФайл» и «ПрисоединенныйФайлОбъект» справочник «СК_ИскВходящийПрисоединенныеФайлы».

4. Расширим состав определяемого типа «ВладелецПрисоединенныхФайлов» нашим документом (ДокументСсылка) «СК_ИскВходящий».

5. Расширим состав типов свойства «Источник» у подписки «ПереопределитьПолучаемуюФормуПрисоединенногоФайла», включив в него справочник «СК_ИскВходящийПрисоединенныеФайлы».

6. Расширим состав типов свойства «Источник» подписки УстановитьПометкуУдаленияПрисоединенныхФайловДокументов, включив в него наш новый документ «ДокументОбъект.СК_ИскВходящий».

7. Расширим состав общей команды «ПрисоединенныеФайлы» и «ПрисоединенныеФайлыБП», включив в него наш новый документ (ДокументСсылка.СК_ИскВходящий).

8. Если необходимо добавить «Скрепку» на форму списка (в типовом варианте должна добавиться автоматически), чтобы картинка значения появлялась при наличии прикрепленных файлов у документа (строка в списке), то выполняем следующие действия:

В форме списка, у реквизита «Список» имеющего тип «ДинамическийСписок» выставляем галку «ПроизвольныйЗапрос», после чего открываем настройку списка (в там же в свойствах) и добавляем в блок «Выбрать»:

НаличиеФайлов.ЕстьФайлы КАК ЕстьФайлы

а в блок «ИЗ» :

{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
ПО НашНовыйДокумент.Ссылка = НаличиеФайлов.ОбъектСФайлами}

После того, как поправили запрос, в реквизитах списка появится «ЕстьФайлы». Перетаскиваем реквизит в табличное поле и указываем в свойствах:

  • Вид: «Поле картинки»;
  • Положение заголовка: «Нет»;
  • Картинка значений: «Файл»;
  • Картинка шапки: «Файл».

Update: Иногда людям не нравится когда появляется сверху вот это меню:

Убрать достаточно просто:

1 2 3 … 313