как картины Пишу код

962
Рейтинг

Пишу код как картины
yurii_host



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

  •   Был(а) на сайте: сегодня в 02:39


Группы

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

Рейтинг 962

Публикации

Шаблон экспресс теста на базе xUnitFor1C


Опишу способ организации последовательных асинхронных методов, которому я недавно научился.


Иногда возникает необходимость узнать, как называется в конфигураторе открытая форма. Данный инструмент поможет это сделать из режима предприятия.


Инструмент для ежедневного использования. Позволяет просматривать основные таблицы ссылочных объектов и регистров в удобном виде. Имеет некоторые дополнительные полезные возможности.


Чуть более комплексное описание, чем на других ресурсах


Данный прием позволяет отлаживать и дорабатывать модуль менеджера во внешней обработке без необходимости пересохранять конфигурацию и перезапускать базу


Данная статья про инструмент, который я использую уже продолжительное время, и который, по моему мнению, заслуживает внимания. Также опишу несколько примеров его применения.


Предлагаю несколько каркасов для создания новых объектов в типовых конфигурациях. Это выжимка из кода нескольких конфигураций, которая позволит быстро и красиво создавать и дорабатывать объекты метаданных с соблюдением идеологии исходной системы



Хочу посвятить публикацию одному приему, который я впервые увидел в типовой ерпи. Если честно, описание идеи довольно короткое, и слабо тянет на целую публикацию. Но я намеренно выделил ее в отдельную статью, чтобы акцентировать на ней внимание, т.к. считаю, что данная техника СУЩЕСТВЕННО повышает читаемость, а также заставляет структурировать тексты запросов.


Комментарии

DevПростой запуск юнит-тестов#2 29.01.17 14:57
(1) а выложил уже, только архив с браузером исключил
https://github.com/progromaking/templates
DevПростой запуск юнит-тестов#0 28.01.17 14:20
Шаблон экспресс теста на базе xUnitFor1C
DevJavascript и 1С. Кросс-платформенное взаимодействие#36 28.01.17 11:01
(35) очень интересно. А можно вас попросить выложить пример кода по созданию ком объекта хрома?
Насколько мне известно сам хром (и другие браузеры кроме ие) не имеют ком интерфейса. Вы наверное какую-нибудь стороннюю dll используете?

Я бы тоже поэкспериментировал в этом направлении
DevПример универсальной функции для создания схемы компоновки данных#10 15.01.17 17:57
(9) дело ваше.
Но на всякий случай порекомендую ознакомиться с системой стандартов и методик на эту тему.

http://its.1c.ru/db/v8std#content:2149184148:hdoc

см пункты 1, 2 и 3.4

А по поводу лаконичности: лучше передавать в функцию правильные параметры, тогда попытка вообще не понадобится
DevПример универсальной функции для создания схемы компоновки данных#8 15.01.17 14:08
Идея интересная.

Но попытка явно лишняя. Ведь ошибка может выскочить только в том случае, если вызывающий код передал неправильные параметры. Почему вы считаете, что в этом случае нужно возвратить пустое значение? Это же не логично. Намного проще и быстрее будет найти ошибку, если выскочит исключение с описанием.

Если же ошибку нужно скрыть от пользователя, то в попытку нужно оборачивать сам вызов данной функции.
DevКак построить цепочку асинхронных вызовов#29 14.01.17 0:15
(19)
Вы скорее всего имели не таблицу значений, а массив структур, т.к. действия выполняются на клиенте
Но даже если мы будем использовать такую коллекцию, то нам придется выбирать между двумя невыгодными вариантами:
1. Либо писать процедуру обхода такой коллекции для каждого сценария. Тогда каждый такой обход будет содержать специфические для данного сценария действия. В чем же тогда простота?
2. Либо нужно написать очень универсальный метод, в котором каждый элемент коллекции шагов должен содержать множество ключей, типа "СоответствиеДействийИОтветов", "ОтветДляПрерыванияСценария" и т.п. в таком духе. Похожий подход с массивом структур уже реализован в БСП, правда он используется для другого. Если интересно, можете посмотреть в демо БСП (2.3.2) внешнюю обработку ЗагрузкаНоменклатурыИзПрайсЛистаСоСценарием.epf, а в ней функцию СформироватьСценарий(). Я предполагаю, что если попытаться написать универсально, то получится что-то подобное. Там довольно большой объем служебного кода, трудно быстро понять, какие параметры за что отвечают. Хотя этот механизм и рабочий, но порог вхождения в работу с ним - довольно высокий.

В моем примере (я его чуть усложнил) всего три универсальные обслуживающие процедуры и одна основная. При этом читаемость (описания шагов) не страдает, по сравнению с описанием сценария, а универсальность намного выше
DevКак построить цепочку асинхронных вызовов#28 13.01.17 23:26
(7) исправил пример в публикации по вашей рекомендации. Основная процедура вроде как упростилась.
Также немного усложнил пример, чтобы продемонстрировать гибкость данного способа
DevКак построить цепочку асинхронных вызовов#25 13.01.17 14:35
(23)
Согласен, что некачественное и что лучше сделать одну форму.
Но тут возникают противоречия.
Во-первых, если уже есть решение, которое построено через вопросы. Что делать? Часть вопросов будет в одной форме, а часть в отдельных окнах. Переделывать?
Во-вторых, бюджет на то, чтобы нарисовать интерфейс - больше, чем на более простое решение.
В-третьих, что делать, если нужно в одной из проверок открыть другую уже существующую форму (например, мастер создания Заказа поставщику)?
В-четвертых, был еще такой случай, что сначала нужна была одна проверка. Сделали через вопрос. Потом понадобилась еще одна. И никто уже написанное другим разработчиком не переделывает и в бюджет не закладывает.

Но мне подход без цепочки тоже нравится больше, в том случае есть возможность его использовать
DevКак построить цепочку асинхронных вызовов#21 13.01.17 12:34
(16)
Вот примеры из жизни (было несколько месяцев назад при доработке ерпи)

Требуется добавить проверки в заказ поставщику перед действием Провести и закрыть
1. Проверить, что сумма заказа соответствует бюджету. Вывести вопрос
2. Проверить, что остаток после заказа плюс остаток на складе - не превысит норму. Если превысит - вывести вопрос.
3. Проверить ограничения, накладываемые поставщиком (что количество товара больше или равно минимальной партии). Вывести вопрос

При проведении поступления
1. Проверить соответствие цен в поступлении ценам в заказе. Если различаются - вывести сумму отклонения и вопрос.
2. Проверить соответствие количества в поступлении количеству в заказе. Если некоторый товар не пришел, то предложить: ничего не делать, перенести в новый заказ (открыть мастер создания заказа поставщику), удалить из текущего, вернуться к редактированию.

Эти проверки были добавлены поверх существующих типовых. Нетрудно догадаться, что это все будет развиваться и усложняться со временем. Через некоторое время у заказчика появятся новые хотелки.
DevКак построить цепочку асинхронных вызовов#12 11.01.17 22:27
(11) Я не упоминал адекватность. Я лишь высказал свое наблюдение, что такого рода комментарии неконструктивны и бессмысленны.
Меня всегда удивляли подобные комментаторы, которые бросают вот такие фразы. Ведь толку от них ноль.
Ну не нравится тебе статья, пройди дальше, не читай. Ведь никто же не заставляет. Возможно другим она будет полезна.
Бывает, что не согласен с точкой зрения автора - значит аргументируй. Может действительно у человека есть здравая мысль. Пусть не скрывает ее.
А какой смысл от пустых обвинений?