Баинов Евгений

52
Рейтинг

bainov
Евгений Баинов



  •   Регистрация: 26.02.2009 (15 лет назад)

  •   Был(а) на сайте: 13.07.2018

Друзья
  • Алексей Кокунин
  • Дмитрий Малышев
  • Евгений Комиссаров
Подписчики 5

Группы

Профессиональный разработчик

Рейтинг 52

Отчет по неликвидным товарам

Отчеты и формы Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х Россия Управленческий учет Windows Абонемент ($m) Внешний отчет (ert,erf) Логистика, склад и ТМЦ

Отчет для 1С:Комплексная автоматизация 1.1 выводит список неликвидных товаров по заданным условиям отбора. Остаток товара оценивается в суммах закупки и продажи. Не учитываются продажи и закупки у "своих". Учитываются минимальные остатки для расчета дней в продаже.

5 стартмани

09.03.2016    12265    25    bainov    1       

4

Комментарии

БУОтчет по неликвидным товарам#0 09.03.16 12:37
Отчет для 1С:Комплексная автоматизация 1.1 выводит список неликвидных товаров по заданным условиям отбора.
Остаток товара оценивается в суммах закупки и продажи.
Не учитываются продажи и закупки у "своих". Учитываются минимальные остатки для расчета дней в продаже.
ВК[RClassMngr] ООП для V8. Добавляем наследование v.1.1#92 04.03.15 21:23
(90) AlexO,
Цитата
Нет, не добавят. Потому что ООП - это крест на поддерживаемой ныне и бесконечно парадигме 1С "пропритетарности платформы", как они это понимают.
А чем интересно ООП мешает "проприетарности платформы"?
ВК[RClassMngr] ООП для V8. Добавляем наследование v.1.1#91 04.03.15 21:16
(90) AlexO, Соглашусь с вами, что основным недостатком данной реализации является то, что нельзя сделать наследование более одного уровня.
Но, несмотря на это, все таки мне лично применение этого решения очень облегчает жизнь. Например, интерфейс с отрисовкой кнопок раньше я бы делал несколько дней.
А тут я успел переделать его несколько раз за день всего.

Прикрепленные файлы:

2015-03-05 02-09-46 Скриншот экрана.png
ВК[RClassMngr] ООП для V8. Добавляем наследование v.1.1#89 04.03.15 14:04
(87) AlexO, Предполагаю что в какой нибудь 1С9 добавят ООП - и все, в том числе и Вы, только и будут классы новые вовсю создавать.
И говорить потом - почему это вы отошли от принципов ООП? Сделали все обработками!
:)
ВК[RClassMngr] ООП для V8. Добавляем наследование v.1.1#88 04.03.15 13:59
(87) AlexO, Конечно можно. Я ж говорил что так оно и было раньше. А сейчас код выглядит понятнее. И легче вносить изменения в потомков.
Вы наверное приниципиальный противник ООП.
Не нравится классы проектировать? Или вмешательство в работу платформы 1С для вас кошунство? :)
С классами же проще как-то работать.
По скорости же работы 1С - ничуть не уступает обычному методу работы.
Представленный COM-объект просто переадресовывает обращения от одной обработки к другой.
А нам не приходится напрягать себе мозг лишними усилиями.
В результате глюков меньше, толку больше. Что нам и нужно в итоге.
ВК[RClassMngr] ООП для V8. Добавляем наследование v.1.1#82 01.03.15 14:41
(81) AlexO,
так и сделано: классы программно отрисовывают свои области.
Общие функции - теперь в базовом классе.
Различающиеся методы рисования объектов - в потомках.
Каждый потомок теперь оснащен автоматически своими кнопками-скроллерами, отображаемыми при необходимости (если количество объектов не влезает в панель).

Базовый класс рулит общими процессами: порядком вывода "квадратиков" на экран, настройка вывода кнопок навигации, которые показываются и скрываются при автоматически.
количество элементов по горизонтали и вертикали, цвет, шрифт и т.п.

Потомки же сами выводят свои данные каждого объекта из своего списка в предназначенный ему "квадратик".

Раньше все было реализовано методами 1С. Код был очень громоздким, запутанным, зачастую повторяющимся.
Сейчас наконец-то можно писать на 1C, получая удовольствие от процесса работы с ООП.
А главное, производительность разработки существенно выше, чем при процедурном программировании - меньше ошибок, легче разработка.
ВК[RClassMngr] ООП для V8. Добавляем наследование v.1.1#80 01.03.15 10:54
(79) AlexO, Писал по памяти. Очепятался немного :)

Правильная процедура теста:

Код
Процедура КнопкаВыполнитьНажатие(Кнопка)
   Базовый = Обработки.БазовыйКласс.Создать(); //"Базовый класс" - на самом деле является обычной обработкой
        
   Базовый.ВывестиСписок();                    //Вызываем метод обычной обработки


   Потомок = Обработки.НовыйКласс.Создать().Класс();//Класс-потомок создается уже при помощи метода Класс(), который прописывает ссылку на себя в обработке-предке в переменную Этот. Поскольку вызовы виртуального метода в предке будут идти как Этот.<Имя метода> , то фактически будет отрабатывать переопределенный в потомке метод.
   Потомок.ВывестиСписок();
КонецПроцедуры


Результат работы:

Выводим список методом предка:
Базовый класс рисует. № 1
Базовый класс рисует. № 2
Базовый класс рисует. № 3
Базовый класс рисует. № 4
Базовый класс рисует. № 5
Базовый класс рисует. № 6
Базовый класс рисует. № 7
Базовый класс рисует. № 8
Базовый класс рисует. № 9
Базовый класс рисует. № 10
Выводим список методом потомка:
Класс-потомок класс рисует. № 1 уже по другому.
Класс-потомок класс рисует. № 2 уже по другому.
Класс-потомок класс рисует. № 3 уже по другому.
Класс-потомок класс рисует. № 4 уже по другому.
Класс-потомок класс рисует. № 5 уже по другому.
Класс-потомок класс рисует. № 6 уже по другому.
Класс-потомок класс рисует. № 7 уже по другому.
Класс-потомок класс рисует. № 8 уже по другому.
Класс-потомок класс рисует. № 9 уже по другому.
Класс-потомок класс рисует. № 10 уже по другому.

ВЫВОД:
Респект автору! Решение работает отлично!
Хотя и было разработано во времена 8.0. Пример для 1С идет для 1С 8.0. Кое-как нашел дистрибутив 8.0 чтобы проверить.
Протестировано на 1С:Предприятие 8.3 (8.3.5.1383).
Вдохновившись, за эти выходные переписал частично работу с интерфейсом в нашей программке.
В результате количество программного кода уменьшилось раза в три, а функциональности стало намного больше.
На скриншоте отображен результат приведенного мной выше теста с использованием виртуальных методов.
А также результат применения ООП при разработке интерфейса для моей программы.
Прикрепил обработки для демонстрации возможностей.

Прикрепленные файлы:

2015-03-01 16-13-00 Скриншот экрана.png
ВКДисплей покупателя, второй монитор, поддержка графики, видео, html, javascript, css. Планшет в качестве второго монитора#23 28.02.15 22:41
(20) roadman,
Опубликовали бесплатную версию нашей разработки на такую же тему.
Можно выводить произвольные картинки на второй монитор.
Бесплатная версия эмулирует работу двустрочного дисплея покупателя.
Есть обработка обслуживания для подключения к УТ10.

(16) Решение в виде COM-объекта. Может быть использовано везде, где возможно создание и использование COM-объектов.
Работает надежно, не дергает файловую систему.
Графику выводит через DirectX.

(22) Мы не стали html использовать из-за громоздкости движка. Обмен через файлы тоже пробовали применять - случались глюки.

В следующей версии мы сделаем возможность записи произвольных форм в формате qml при помощи редактора.
Дальнейшая работа с ними в 1С будет заключаться в вызове формы по имени и наполнении полей формы данными.
ВК[RClassMngr] ООП для V8. Добавляем наследование v.1.1#78 28.02.15 22:20
(77) AlexO, Мне удалось таки реализовать при помощи данной разработки полиморфизм.

В обработке БазовыйКласс определяем переменную:

Код
Перем Этот Экспорт; //через эту переменную будем вызывать переопределяемые методы

//Описываем виртуальный метод:


Процедура Рисовать(НомерРисунка) экспорт
   сообщить("Базовый класс рисует. № "+НомерРисунка);
КонецПроцедуры


//Используем метод в базовом классе:

Процедура ВывестиСписок() экспорт

  Для Инд=1 По 10 Цикл
       Этот.Рисовать(Инд);//вызываем свой виртуальный метод через переменную Этот
  КонецЦикла;

КонецПроцедуры

Этот = ЭтотОбъект; //пишем сюда ссылку на ЭтотОбъект. Но в потомке мы переопределим переменную на класс




В потомке НовыйКласс реализовываем инициализирующий метод-конструктор:

Код
Функция Класс() Экспорт
    БазовыйКласс = Обработки.БазовыйКласс.Создать();
   Класс = Новый COMОбъект("RClassMngr.Class");
    Класс._Инит(ЭтотОбъект, БазовыйКласс);
   
    Класс.Этот=Класс; //прописываем себя в переменную Класс базового класса
   
    Возврат Класс;
КонецФункции

//Переопределяем метод 
Процедура Рисовать(НомерРисунка) экспорт
   сообщить("Класс-потомок класс рисует. № "+НомерРисунка+" уже по другому.");
КонецПроцедуры



Используем классы:

Код
Базовый = Обработки.БазовыйКласс.Создать().Класс();
Базовый.ВывестиСписок();

Потомок = Обработки.НовыйКласс.Создать().Класс();
Потомок.ВывестиСписок();
ВК[RClassMngr] ООП для V8. Добавляем наследование v.1.1#75 28.02.15 11:54
Не получается переопределить метод.
Как вызывать абстрактные методы, предназначенные для переопределения в потомках?