Re: Вопрос по UserGModule

Существуют ли ограничения по количеству данных выгружаемых скриптом в UserGModule?

Re: Вопрос по UserGModule

Неизвестно. А в связи с чем появился вопрос?

Re: Вопрос по UserGModule

существуют...а вот какие - попробуйте установить экспериментально

Re: Вопрос по UserGModule

Работа с ПСп, вкладка Номенклатура.
Скриптом формирую данные для расчета потребности в материалах, комплектующих, стандартных покупных, вывожу их в UserGModule. На небольших объемах данных работает без проблем. На больших данных скрипт отрабатывает, но выдает пустое окно  с заголовком "ошибки" (текста самих ошибок не выводит), обрабатывает не все данные, выводит в UserGModule ~ 49300 записей, остальные как бы "обрубает".  Может ли это быть  связано с ограничениями по количеству записей выводимых в  UserGModule? Или слишком большое количество записей в Gride и скрипт не может их обработать? Подскажите, пожалуйста, в чем может быть причина.

Re: Вопрос по UserGModule

т.е. открывается грид, в котором только 49300 записей из всех, или грид вообще не открывается?

Re: Вопрос по UserGModule

Grid открывается, в нем ~ 49300 записей (но должно быть больше ). 

На меньших объемах данных, когда в UserGModule выгружалось порядка 45000-46000 скрипт отрабатывал без ошибок. В этом месяце план увеличился и появились такие проблемы.

Re: Вопрос по UserGModule

У меня свалилось, показав 68923 строчки.
Выход - снижайте количество строк, выводимых за один раз, или используйте собственные формы.

Re: Вопрос по UserGModule

Изменила скрипт, количество строк (и даже столбцов) выгружаемых в UserGM уменьшила. Скрипт вопреки всякой логики вывел в GRID 28400 строк из ~32000-35000 (хотя раньше выводил порядка 45000-46000 строк). Вышло тоже самое пустое окно с заголовком "ошибки".  Вожможно в данном случае причина не связана с ограничениями на объем данных выгружаемых в GRID?
Подскажите в чем дело.

Re: Вопрос по UserGModule

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

Re: Вопрос по UserGModule

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

Re: Вопрос по UserGModule

Подробнее о проблеме:
Необходимо рассчитать потребность в материалах, комплектующих, стандартных покупных на план производства. 
Сделала отчетами (в режиме Работа с ПСп, вкладка Номенклатура). Скорость выполнения неприемлема.
Пошла по другому пути. В этом же режиме разработала скрипт, который формирует свой набор данных для расчета потребности, и из- под скрипта отчеты, в которых данные сортирую, группирую, суммирую нужным образом. На больших объемах данных скрипт отрабатывает с ошибкой (пустое окно с заголовком "ошибки") и в GRID выводит не все данные.
Чтобы уменьшить количество строк, выводимых в GRID, изменила скрипт. По повторяющимся позициям  суммирую прямо в скрипте. 
В UserGModule, куда выгружаю данные, ищу нужную позицию используя LocateByPropArray, если нахожу то складываю количество, если не нахожу тогда добавляю новую запись. Таким образом количество записей выгружаемых в GRID уменьшается в два раза. 
Если причина ошибки в ограничении по объему данных выгружаемых в GRID, то все должно бы работать. 
Но и в этом случае скрипт на тех же выбранных рабочих ПСп отрабатывает с  той же ошибкой и не все данные выводит в GRID (вываливается уже на меньшем количестве строк, но обрабатывает приблизительно тоже самое количество изделий). 
Следовательно в данном случае причина ошибки не в ограничении по количеству данных  выгружаемых в GRID, а в чем-то другом.
Возможно мы пошли не по тому пути, но работа проделана немалая и поэтому хотелось бы разобраться в чем же причина ошибки.

Re: Вопрос по UserGModule

Проблему с ограничениями UserGModule обойти не удастся.
Отчет состоит из Access БД, в которой лежат исходные данные, Excel файла, в котором лежат настройки отчета и библиотеки репортера. Предлагаю скриптом TechnologiCS создать Access бд, выгрузить туда данные, затем рядом положить Exel файл с настроенным отчетом (например выгрузить его из архива, куда он будет предусмотрительно помещен), прописать там путь к Access бд, и запустить репортер из Exel файла.

Re: Вопрос по UserGModule

valentina, скажите пожалуйста, а чем Вам приглянулся именно режим номенклатура? и.. если это не тайна, конечно, структуру набора данных для отчёта, которую Вы создавали в TechnologiCS не опишите ли? или даже лучше скриншот.

Re: Вопрос по UserGModule

Режим, из которого формируется набор данных, не имеет значения, поскольку количество выводимых данных в GRID будет одинаково из любого режима. Просто очень много критериев влияло на выбор этого режима, а потом, как советовали, мы снизили количество строк в UserGModule т.е. в GRID стало меньше записей, тем не менее скрипт пройдя тоже количество записей в TCSActiveModule выдает ошибку. Может быть проблема не в UserGModule ?

Re: Вопрос по UserGModule

Меня вот это очень заинтересовало:

valentina писал(а):
Необходимо рассчитать потребность в материалах, комплектующих, стандартных покупных на план производства.
Сделала отчетами (в режиме Работа с ПСп, вкладка Номенклатура). Скорость выполнения неприемлема.

Про UserGModule я сейчас не говорю, просто хочу понять отчего "Скорость выполнения неприемлема"?
Сколько записей у Вас на вкладке Номенклатура и какую структуру данных Вы создали для отчёта? Просто от этого действительно сильно зависит скорость отчёта.

Re: Вопрос по UserGModule

Возвращаясь к прежнему вопросу.... А как скриптом TechnologiCS выгрузить данные в  Access БД ?

Re: Вопрос по UserGModule

Основные приемы такие:

    Dim DatConct ' Connection
    Dim RecSet ' RecordSet
    Dim FullFileNameMDB ' путь к файлу MDB

    Set DatConct = CreateObject("ADODB.Connection")
    DatConct.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&FullFileNameMDB

    DatConct.Execute("CREATE TABLE TABLE_NAME (NMK_ID INTEGER, NMK_NOTE VARCHAR")

    Set RecSet = CreateObject("ADODB.RecordSet")
    Call RecSet.Open("TABLE_NAME",DatConct,1,3)

     RecSet.AddNew ' Добавляем запись в таблицу
         RecSet.Fields(0).Value = TCSActiveModule.Properties.....
         RecSet.Fields(1).Value = TCSActiveModule.Properties.....
     RecSet_Calc_VMAT.Update

P.S. А Вы всё таки ответьте на

Бобов писал(а):
Меня вот это очень заинтересовало:

valentina писал(а):
Необходимо рассчитать потребность в материалах, комплектующих, стандартных покупных на план производства.
Сделала отчетами (в режиме Работа с ПСп, вкладка Номенклатура). Скорость выполнения неприемлема.

Про UserGModule я сейчас не говорю, просто хочу понять отчего "Скорость выполнения неприемлема"?
Сколько записей у Вас на вкладке Номенклатура и какую структуру данных Вы создали для отчёта? Просто от этого действительно сильно зависит скорость отчёта.

Re: Вопрос по UserGModule

Можно ли размер окна UserGModule уменьшить? и как?

Re: Вопрос по UserGModule

Как и у всех модулей https://help.technologics.ru/7.9/TCSAPI … owEx_9.htm
Либо положить на свою форму ввода и там можно делать что угодно.

Re: Вопрос по UserGModule

Олег Зырянов пишет:

Либо положить на свою форму ввода и там можно делать что угодно.

Подскажите примером кода пожалуйста, если у меня на форме Form1 есть панель Panel1, как на Panel1 добавить UserGModule?

Re: Вопрос по UserGModule

Сейчас лучше всего так
https://help.technologics.ru/7.9/TCSAPI … dule_9.htm

Call Form.AddTCSModule( UserGModule, "MyModule", "Panel1", True, False, Null )

Достать модуль по имени можно так https://help.technologics.ru/7.9/TCSAPI … ame_13.htm, удалить так https://help.technologics.ru/7.9/TCSAPI … dule_9.htm

Re: Вопрос по UserGModule

Как повесить обработчик события на UserModule? Мне нужно автоматически пересчитывать значение 4го столбца после того, как пользователь ввел/изменил значение в 3ем столбце

Re: Вопрос по UserGModule

При регистрации модуля на форме ввода укажите RegEvents в True https://help.technologics.ru/7.9/TCSAPI … dule_9.htm
Затем  на форме ввода добавьте такой код

Sub FormEvent_MyModule_OnModuleEvent( Form, ObjName, Module, EventType, EventParams )
'Form As ITCSForm, ObjName As String, Module As IPModule, EventType As TMEventsTypes, EventParams As IEventParams
  if EventType=CSDN_Const.etDLAfterApply Then
     'Пользователь сохранил данные
  End If
End Sub

либо форму редактирования свою сделать, и при сохранение все записать.

Re: Вопрос по UserGModule

etDLScrolled и etDLBeforeScroll срабатывает, а на изменения данных и применение изменений в каком либо поле никаких событий не появляется

в обработчике написал
MsgBox "ObjName=" + CStr(ObjName) + vbCr + "EventType=" + CStr(EventType=), vbSystemModal

Re: Вопрос по UserGModule

Возможно так и есть :( UserGModule может действительно этого события не выдывать. Тогда только форма редактирования своя.