Добавление итога по количеству в электронном документе Товарной накладной
Клиент обнаружил что печатная форма товарной накладной в ЭДО не содержит итогов по количеству:
Сначала я подумал, что это обычная товарная накладная и потратил время на поиски процедуры печати, но не тут-то было. В обычной итог по количеству был.
Запустив поиск по макетам по «Наименование товара (описание выполненных работ, оказанных услуг), имущественного права» я нашел макет, который используется для товарной накладной:
Далее нужно было найти модуль, который формирует эту печатную форму:
Печатная форма заполняется в процедуре ЗаполнитьТабличныйДокументПередачаТоваров из модуля ОбменСКонтрагентамиВнутренний.
Правда, формируется он в фоновом задании, поэтому точка останова не срабатывала, пока не поставил автоматическое подключение к фоновым заданиям:
Процедуру целиком добавил в расширение:
&Вместо(«ЗаполнитьТабличныйДокументПередачаТоваров»)
Процедура эдодп_ЗаполнитьТабличныйДокументПередачаТоваров(ТабличныйДокумент, ДанныеПечати, ДанныеПокупателя, ПараметрыПечати)
…
// Итоги
Итоги.Параметры.Заполнить(ДанныеПечати.Шапка);
//Осипов — добавляем числовой итог +++
ТекОбласть = Итоги.Область(1, 7);
Попытка
ТекИтогоКол = ДанныеПечати.Товары.Итог(«Количество»);
Исключение
ТекИтогоКол = 0;
КонецПопытки;
ТекОбласть.Текст = Формат(ТекИтогоКол, «ЧДЦ=3; ЧРД=,»);
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
//Для обведения
ТекЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
ТекОбласть.ГраницаСлева = ТекЛиния;
ТекОбласть.ГраницаСправа = ТекЛиния;
ТекОбласть.ГраницаСнизу = ТекЛиния;
ТекОбласть.ГраницаСверху = ТекЛиния;
//—
…
КонецПроцедуры
Первая попытка получилась не совсем красивой — не хватало рамки:
Добавил рамку и получилось хорошо:
Время: 1 час.
Иллюстрация лозунга — не ходите дети в 1с. Будете тоже львиное время заниматься откровенной ерундой роясь в кишках идиотской архитектуры
Да, работать в 1С — это вам не «скрипты писать», как утверждают некоторые.
Свдя по твоим примерам это как раз скриптописание, причем самого отвратного толка. Сначала полдня ищем «где менять», потом «как поменять чтобы не все не развалилось»
Расскажите, как вы будете делать по-другому?
Как быстро ищете и как меняете «на века».
Причем за разумный бюджет. 😉
Это сопровождение, детка.
все правильно, не «писать скрипты», а сопровождать их.
ну, называть типовые скриптами это явное «отрицание реальности», они слишком сложны для скриптов. на 1-2 порядка.
и зачем вся это сложность тогда, если вы все равно в 1с код копи-пастите?
«копи-пастите» — это слишком смелое обобщение. Рекомендую вернуться в рамки нормальной дискуссии.
Ответь на вопрос. Что будет когда в очередном обновлении 1с будет изменён алгоритм типовой процедуры?
Стандартно, нужно будет обновить код в расширении и заново вставить изменения. Вас удивляет использование таких типов расширений?
То есть об этом надо помнить?! Обязательно забудут же.
Я к чему? Аннотация Вместо без вызова ПродолжитьВызов есть зло
Ну вы как будто в первый раз в 1С. Если забудут, то увидят ошибку в формате. Можно использовать анннотацию с контролем, но она еще не доработана должным образом.
Нормальный ход. Особенно если делает робот в фоне. Особенно если ошибка логическая и всё внешне правильно
ну вот видите. для параноиков в 1с тоже есть механизмы. 😉
Все разрушится… Это и так происходит — есть такая Библиотека Стандартных Подсистем. На ней нпдо основывать свои разработки. Есть консоль запросов. Так чтобы она заработала надо чтобы ее версия и версия «подсистем» совпадали. Иначе велики шансы что она не откроется. Ибо разработчик взял и поменял по простому сигнатуру вызова процедуры где-то в кишках
Ну, 1С еще далеко до совершенства. Дальше, чем в более ранних версиях. 😉
Какого совершенства? Это просто ппц что в типовых вытворяют
Вот тут согласен.