Уроки по 1С. Дорабатываем динамические списки программно

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 มิ.ย. 2023
  • На примере 1С: УНФ 3.0 расскажу, как программно создавать и модифицировать уже существующие динамические списки.
    Статья на сайте: kbs41.ru/list_modification/

ความคิดเห็น • 7

  • @morskoj
    @morskoj 8 หลายเดือนก่อน

    Здравствуйте, спасибо за видео. У Вас ОС Линукс? если да, то какой? Спасибо.

    • @EALarin41
      @EALarin41  8 หลายเดือนก่อน

      Здравствуйте. На моей рабочей машине windows. Но у двух клиентов в под 1С используется Debian.

  • @user-bm4sl7jq1e
    @user-bm4sl7jq1e ปีที่แล้ว

    Два вопроса.
    1.Можно ли функционал по изменению списка использовать в стандартных формах УНФ. Ну например для формы списка номенклатуры. Там уже есть процедура смены запроса "Процедура ПереопределитьТекстЗапросаСписокЗапасы()". Причем ее структура такова, что дописать пару своих полей в текст не очень понятно где (особенно смущает группа команд
    ПараметрыСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
    ПараметрыСписка.ТекстЗапроса = ТекстЗапроса;
    ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.СписокЗапасы, ПараметрыСписка);
    в конце процедуры. Можно, конечно полностью ее заменить, на свой текст с нужными полями, но велика вероятность того, что при обновлении дополнение превратится в тыкву.
    2.Можно ли делать при выводе строк сборные поля, составленные из разных типов данных, не добавляя дублирующего поля в справочник. Ну например мне понадобилось наименование номенклатуры дополнить размером в формате ВхДхШ в мм. Типа есть номенклатура "Железяка" с размерами 5,0см 100,0см 30,0см нужно вывести виде "Железяка 50х1000х300". При этом в тексте запроса привести число к строке нельзя. Есть ли какой то выход или единственный путь добавить поле "РазмерВмм" и записывать туда значение при изменении размеров?

    • @EALarin41
      @EALarin41  ปีที่แล้ว

      На счет первого вопроса. Именно в УНФ версии 1.6, я делал модификацию при помощи расширения выполняя процедуру после названной вами
      &НаСервере
      &После("ПереопределитьТекстЗапросаВСписках")
      Процедура ТВП_ПереопределитьТекстЗапросаВСписках()
      ТВП_СкорректироватьЗапрос();
      КонецПроцедуры
      Так как при обновлении и вправду всё может поехать, чтобы как то минимизировать риски, я переводил результирующий запрос в схему запросов и корректировал запрос при помощи объектной модели. Некоторое количество обновлений доработка пережила вообще без каких либо изменений.
      Посмотрите моё расширение, откапал где то в архивах:
      kbs41.ru/wp-content/uploads/2023/06/ТоварыВПути.zip
      Если не знакомы с объектной схемой запросов, очень рекомендую видео с другого канала th-cam.com/video/ZOfY81f100c/w-d-xo.html
      По поводу второго вопроса.
      Честно говоря не могу полностью понять суть вопроса. Если дополнить наименование какими либо данными, то вполне возможно.
      Например та же длинна ширина высота
      ВЫБРАТЬ
      Номенклатура.Наименование + " Д:" + СТРОКА(Номенклатура.Длина) + " Ш:" + СТРОКА(Номенклатура.Ширина) + " В:" + СТРОКА(Номенклатура.Высота) КАК Поле1
      ИЗ
      Справочник.Номенклатура КАК Номенклатура
      В Демо УНФ в результате получается вот такая строка:
      Лак мебельный Д:10 Ш:15 В:20

    • @EALarin41
      @EALarin41  ปีที่แล้ว

      Можно приводить и число к строке, и строку к числу. Правда второе - крайне гемморойное занятие.

    • @user-bm4sl7jq1e
      @user-bm4sl7jq1e ปีที่แล้ว

      @@EALarin41 Спасибо за ответ. Как выяснилось, в интернете очень много устаревших сведений, поэтому я и не нашел эту функцию - первые две страницы в Гугле выдали данные до декабря 2020, когда эта функция появилась в запросах 1С 8.3
      Осталось решить, как избавиться от пробелов разделителей. Все же для больших размеров по стандарту должно быть "15х1500х2400", а не "15х1 500х2 400".

    • @user-wp9vn9gy6r
      @user-wp9vn9gy6r 9 หลายเดือนก่อน

      ​@@user-bm4sl7jq1eжжжжжжжжжжжж