Коллеги, здравствуйте! Нужна помощь.



В bpm'sales enterprise есть функционал работы со счетами. при добавлении в счет новых продуктов, открывается отдельная страница с удобным поиском.

 

Изображение удалено.



Мы добавили кастомную сущность - Коммерческое предложение. В нем так же надо реализовать добавление товаров. Подскажите, можно ли использовать функционал реализованный в Счетах и как это сделать.



Пока реализовали через lookup-поле и выбор продукта в модальном окне. Но это не так удобно, как в случае со счетами.

Нравится

1 комментарий
Лучший ответ

Переносили весь функционал при разработке проекта и скажем так: геморой тот ещё. Причем это было до того, как террасофт переделал этот функционал под BaseSchemaModule. Я так глянул - разницы +/- никакой, наибольшая проблема - миллиард esq запросов с кучей столбцов. На вскидку - неделька переноса и отладки. Может быть 2, как пойдёт)

Переносили весь функционал при разработке проекта и скажем так: геморой тот ещё. Причем это было до того, как террасофт переделал этот функционал под BaseSchemaModule. Я так глянул - разницы +/- никакой, наибольшая проблема - миллиард esq запросов с кучей столбцов. На вскидку - неделька переноса и отладки. Может быть 2, как пойдёт)

Показать все комментарии

Добрый день !

Наблюдаю следующую картину:

При входе в документы и генерации счетов на период, первые счета генерируются нормально.
Затем же..рандомно, можно после 100 счета, может раньше,может после 400-го SQL забирает себе почти всю оперативную память и вылетает дебаггер.

В чем может быть дело, куда смотреть ?

И кто смог бы проверить всю конфигурацию ? Это вопрос к местным форумчанам или конкретно к разрабам, что под нас дописывали функционал ?

Нравится

4 комментария

"Шамбрай Иван" написал:
Затем же..рандомно, можно после 100 счета, может раньше,может после 400-го SQL забирает себе почти всю оперативную память и вылетает дебаггер.

В чем может быть дело, куда смотреть ?


Смотреть надо в дебаггер. На то он и существует.
"Шамбрай Иван" написал:
И кто смог бы проверить всю конфигурацию ? Это вопрос к местным форумчанам или конкретно к разрабам, что под нас дописывали функционал ?

Что понимается под проверить всю конфигурацию?
А чтоб дописывали конкретно под вас, то это уж как повезет: можно к разрабам (но не знаю занимаются ли они этим), можно найти фирму партнера террасофта и обратится к ней, может кто-то из форумчан заинтересуется и предложит вам свои услуги в качестве фрилансера.

"Шамбрай Иван" написал:SQL забирает себе почти всю оперативную память и вылетает дебаггер

а я вот не понял... у вас сервер SQL стоит на том же ПК, где вы печатаете отчеты и он забивает память при генерации отчета? интересно, что у вас за СУБД такая

Всем привет. SQL-сервер установлен там же, где и Террасофт, на том же сервере.

Проверить конфигурацию - уже буду дергать разрабов, они не всегда правда отвечают своевременно, вот.

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

Здравствуйте, Иван!
Попробуйте провести отладку самостоятельно до появления ошибки, пока это возможно, чтобы понять в каком месте ошибка.
Или предоставьте дамп базы, чтобы мы провели отладку у себя.

Показать все комментарии

Господа!
Вопрос по резервам Продуктов на Cкладе:

  1. Кто как организует: А) хранение в таблицах, Б) просмотр доступных товаров и В) контроль резервирования продуктов?

    Для простоты реализации можем предположить, что партионный учет на складе отсутствует (либо, что он есть, но не касается резервов)

    В голове плавают способа четыре реализации, но у каждого свои минусы. — но, повторюсь, кто что посоветует?

  2. Кстати, а кто знает, что и как используют наши коллеги в различных WMS (Warehouse management system)?

P.P.S. Вопрос безотносительный к версии продукта, но конкретно интересует XRM или XRM Distribution
P.P.P.S. Есть, кстати, у клиента и несколько критериев использования, чуть позже попробую адаптировать для форума и кинуть.

Нравится

3 комментария

Добрый день, Глеб.

В TS_XRM резервов нет. Но они реализованы в базовой версии TS_XRM_Disctribution.
Реализована служебная табличка tbl_ReservedOffering, в которой хранятся идентификаторы зарезервированного продукта, количество и прочая необходимая информация.
Отследить резерв можно в композитной детали Продукт_в_Счете (версия 3.4.1+) или выводя в реестр раздела продуктов колонку Зарезервировано.
Также, есть системная настройка "Период резервирования продукта", в которой указывается количество дней, после которых резерв снимается.

"Maxim Gritsenko" написал:

В TS_XRM резервов нет. Но они реализованы в базовой версии TS_XRM_Disctribution.

Реализована служебная табличка tbl_ReservedOffering, в которой хранятся идентификаторы зарезервированного продукта, количество и прочая необходимая информация.

Отследить резерв можно в композитной детали Продукт_в_Счете (версия 3.4.1+) или выводя в реестр раздела продуктов колонку Зарезервировано.

Да, Максим, сталкивался в версиях 3.3.х с данной конфигурацией от IT-СФЕРА, но кажется, по складу был ряд несовершенностей.

Поясните, если не трудно, а как поведет себя данная система (XRM Distribution)
в следующих кейсах:

1) Уменьшение перечня/кол-ва товара:
1. Продукт "А" в Документе, 10 шт.
2. Резервируем. (Резерв "А" = 10 шт.)
3. Продукт "А" в Документе, уменьшаем до 9 шт.
4. Резервируем.
ВОПРОС: Резерв "А" будет "10 шт." или "9 шт."?

2) Дробление резерва
1. Продукт "Б" в Документе, 10 ед.
2. Резервируем. (Резерв "Б" = 10 ед.)
3. Продукт "Б" в Документе, увеличиваем до 12 ед.
4. Резервируем.
ВОПРОС: Резерв "Б" будет из двух записей (=10 ед. и =2 ед.) или одной (= 12 ед.)?

Кстати, коллеги из ИТ-Сферы, тоже подключайтесь к обсуждению! :wink:

Глеб, доброе утро.

Вертикаль XRM Distribution разработана компанией Terrasoft ;)

Вопрос 1: Резерв будет уменьшен на единицу при уменьшении количества продукта в счете/договоре/продукте (не документе).

Вопрос 2: Резерв будет из двух записей.

Показать все комментарии

Задачи две:
1. Так как у каждого контграгента можно выставлять по несколько платежных реквизитов, то хорошо бы для поставщика и клиента в карточке редактирования счета иметь возможность выбора платежных реквизитов.
2. Для каждого типа платежных реквизитов поставщика использовать свою нумерацию счета с префиксом. Например, для компании ООО "Контакт-Центр" счета будут именоваться "СКЦ-15", а для компании ООО "Цифровая Страна" - "СЦС-51". Соответственно логично, что при выборе платежных реквизитов поставщика сразу формировать номер счета с учетом порядка.

Как я собираюсь это делать:
1. В таблицу и карточку редактирования платежных реквизитов внести поле префикса для счета. Соответсвенно префиксы "СКЦ-" и "СЦС-"
2. Добавить в карточку редактирования счета список выбора платежных реквизитов.
3. Добавить в таблицу счета целочисленное поле СчетчикНомера
4. Создать скрипт на изменение значениея поля списка реквизитов поставщика. Этот скрипт для соответствующего типа платежных реквизитов через SQL запрос формирует номер счета и записывает его в поле СчетчикНомера (естественно чтобы не считался текущий счет при выборе максимального номера СчетчикНомера, то в SQL запросе исключаем текущую запись). В номер счета подставляется текст префикс+СчетчикНомера.

Если есть другие реализации, буду рад услышать.

Нравится

5 комментариев

Здравствуйте, Илья.

Есть одно маленькое замечание: в базовой версии продукта, существует системная настройка InvoiceNumber, которая хранит текущий номер счета. Соответственно есть вариант реализации автоматической нумерации счета, используя эту настройку. Т.е при изменении значения поля платежные реквизиты в карточке счета, считываем эту настройку, считываем префикс счета, формируем номер счета и записываем его в поле "Номер". После чего системную настройку увеличиваем на 1.

Если у Вас возникнут дополнительные вопросы в рамках реализации описанного Вами функционала - обращайтесь.

"Олейник Дмитрий" написал:

Здравствуйте, Илья.

Есть одно маленькое замечание: в базовой версии продукта, существует системная настройка InvoiceNumber, которая хранит текущий номер счета. Соответственно есть вариант реализации автоматической нумерации счета, используя эту настройку. Т.е при изменении значения поля платежные реквизиты в карточке счета, считываем эту настройку, считываем префикс счета, формируем номер счета и записываем его в поле "Номер". После чего системную настройку увеличиваем на 1.

Если у Вас возникнут дополнительные вопросы в рамках реализации описанного Вами функционала - обращайтесь.

С уважением,

Олейник Дмитрий

Эксперт 3-й линии поддержки

Да так проще, спасибо.

Подскажите, реализовали ли вы 2-й пункт своего плана (2. Добавить в карточку редактирования счета список выбора платежных реквизитов.)
Если да то поделитесь реализацией.
С Уважением Дмитрий

"Анищенко Дмитрий" написал:

Подскажите, реализовали ли вы 2-й пункт своего плана (2. Добавить в карточку редактирования счета список выбора платежных реквизитов.)

Если да то поделитесь реализацией.

С Уважением Дмитрий

Да делали.

Илья, поделитесь реализацией?)

Показать все комментарии

Подскажите, пожалуйста, в стандартной интеграции при экспорте счетов в 1С существует ли возможность ввода на основании этого счета других документов, например Актов (автоматическое создание актов во время перекидки счетов)?

Нравится

1 комментарий

Здравствуйте Иван,
Автоматическое создание актов не предусмотрено.
Все зависит от конфигурации 1С и поставленных модулей
Пример создания Документа при экспорте счета:

function OnAfterRecordImport(Param, Dataset, Select1C) {
         var DocObj = GetScriptObjectByVersion(Param).GetObject(Param.Obj1C, 'Документ.Акт1…');
         DocObj.CreateDocument();
         DocObj.Number = 1234;
         DocObj.Счет = Select1C;
         DocObj.Write();
}
Показать все комментарии

Необходимо иметь возможность сортировать/фильтровать список счетов по количеству дней просрочки с оплатой. Как это можно реализовать?

Спасибо.

Нравится

5 комментариев

Создать поле, в которое путем ежедневного расчета будет вноситься срок просрочки (числом) и фильтровать по нему.

Спасибо. А как организовать ежедневный расчет?

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

Здравствуйте Сергей

Данную проблему мы пытались решить в рамках инцидента, тогда я полное решение предоставить не смог. В переписке Вы предлагали следующий код:

         Date1 = new Date (Dataset.Values('ContractPayDate'));
         Date2 = new Date (Dataset.Values('PaymentDate'));
         Date3 = new Date();
         res = 0;
 
      if (Date1.getTime() == 0 ) {
                        res = 0
      } else {
            if (Date2.getTime() == 0) {
                        res = Math.floor((Date3.getTime() - Date1.getTime())/(1000*60*60*24))}
                  else {
                        res = Math.floor((Date2.getTime() - Date1.getTime())/(1000*60*60* 24))}
                                                        };

Предлагаю данную логику реализовать по средствам job на MS SQL Server 2008, как советует Олег

Как это сделать:
1. Логике описанной в блоке javascript соответсвует следующий Update

update tbl_invoice
set DelayCalc = ISNULL(DateDiff(minute,ContractPayDate,ISNULL(PaymentDate,{fn NOW()} )),0) 

Пояснения:
Если ContractPayDate не заполнено тогда Просрочка DelayCalc = 0
ContractPayDate -> Null ->DateDiff(minute,ContractPayDate,ISNULL(PaymentDate,{fn NOW()} )) = NULL
ISNULL(DateDiff(minute,ContractPayDate,ISNULL(PaymentDate,{fn NOW()} ))) = 0

Если PaymentDate не заполнено, тогда берем текущую дату высчитывем DelayCalc = ContractPayDate - ТекущаяДата в минутах
ISNULL(PaymentDate,{fn NOW()} )
{fn NOW()} - взять текущую дату
ISNULL - функция отработки в случае если 1й аргумент NULL (в данном случае PaymentDate), если не NULL функция возвращает само значение 1го аргумента (в данном случае PaymentDate)

Если заполено ContractPayDate и DelayCalc вычисляем DelayCalc = ContractPayDate - PaymentDate в минутах

Подробнее про DateDiff http://msdn.microsoft.com/en-us/library/ms189794.aspx

Коллеги, спасибо, будем пробовать

Показать все комментарии

После импорта счетов и операций, каким образом действовать, чтобы сумма оплаты в счете соответствовала сумме по операциям? И должно ли это считаться автоматически в системе?

Нравится

2 комментария

"Штинов Антон Викторович" написал:должно ли это считаться автоматически в системе?

В принципе, не должно. В системе реализовано действие в разделе "Счета" с названием "Пересчитать сумму". После его выполнения сумма счёта становится равной сумме по продуктам в счёте, а сумма оплаты - сумме по операциям.

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

Показать все комментарии

      При работе с системой возникла необходимость следующей доработки конфигурации:
При работе с клиентами на основании договора выписываются счета. Большинство из них стандартные и отличаются разве что датой ну и естественно контрагентом, продуктом и тд. Вся необходимая информация заложена в договоре, карточке контрагента, продукте к договору, всё стандартно. Хотелось бы реализовать механизм, когда при выборе соотвествующего действия в разделе договора, на основании всех договоров (естественно отобранных фильтрами по тех или иных критериях) осуществлялось создание счетов. Поля, которые следует изменять (дата, период оплаты и др.) можно вывести в отдельном окне и уже используя ети данные плюс значения из других полей формировать счета.
      Получиться создание грубо говоря по "одному клику", что в свою очередь каждый раз будет сохранять время сотрудников (самое важное!), при правильной реализации исключит возникновение бесконечных поисков "кому же я забыл выставить счет" и тд. Такая схема применительна и в других случаях, например, в разделе Документы, когда выписываются акты на те же счета. 
      Думаю те, кто сталкивался с подобными медитациями в террасофте ("не трогайте меня - я счета выписываю"))) поддержат/дополнят/исправят меня или посоветуют другой механизм реализаци...
      Вот такая идея, вернее сказать необходимость в моей ситуации:-)
      Дискуссия неизбежна!

Нравится

Поделиться

20 комментариев

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

"Fishi" написал:Дискуссия неизбежна!

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

"Агутин Алексей" написал:Похожий функционал, например, есть в разделе Контакты, где Вы по одному действию создаете задачу для Контакта.

TS X25 3.1.1.26. При выборе нескольких контактов и действии "Создать задачи" соответствующее количество раз открывается карточка редактирования задачи. Я же говорил об открытии карточки один раз и копировании полей в последующие. В данном случае действие для меня совсем не понятное, потому что вместо економии времени на вбивание полей в задачах, економится время разве что на выбор действия "Создать задачу" :confused: Возможно, в дальнейшых
"Агутин Алексей" написал:Также похожие действия неоднократно разрабатывались в различных конфигурация.

Вот потому и пишу, что задача казалось бы не такая уж и нестандартная, но на форуме о реализации что-то найти трудно. Ведь если у кого-то есть рабочая реализация, то не нужно будет изобретать велосипед, а достаточно просто внести изменения для соответствия своей кинфигурации. Не одним же только менеджарам время економить:wink:

В Вашем случаем обычно применяется следующая схема:
1) В раздел Договора добавляется пункт меню "Создать счет".
2) В обработчике события этого пункта меню вызывается окно редактирования Счета с предварительным заполнением полей. Состав и содержание полей для заполнения определяется Вами.
Как добавить пункт меню и показать окно редактирования можно прочитать в
FAQ

Добрый день.
Мы эту проблему решили не много по другому.
Создали Бизнес процесс, который запускается автоматически по одному на каждый счет. (В wa_InvoiceAction добавили параметров, что бы потом клонировать был удобно.) В БП действия следущие: Создается счет, добавляются продукты, ставится задача ответственному отправить счет. После ее завершения через два дня ставится задача другому ответственному отследить приход денег. Если нет, то опять через 2 дня отследить приход.
Все вроде бы довольны :smile:

"Хомутов Кирилл" написал:Добрый день.
Мы эту проблему решили не много по другому.
Создали Бизнес процесс, который запускается автоматически по одному на каждый счет. (В wa_InvoiceAction добавили параметров, что бы потом клонировать был удобно.) В БП действия следущие: Создается счет, добавляются продукты, ставится задача ответственному отправить счет. После ее завершения через два дня ставится задача другому ответственному отследить приход денег. Если нет, то опять через 2 дня отследить приход.
Все вроде бы довольны

upd:(не ту ссылку вставил)
http://community.terrasoft.ua/ideas/4262
Я так и думал, что многие через БП будут реализовывать :)
Хотел поинтересоваться, используете ли Вы при этом планирование, и если да - то как ?

Создали окошко, которое при onPrepare запускает БП, а в onShow закрывает само себя.
На сервере шедулер, там запускается террасофт с параметрами для запуска окна.
Сейчас там таких БП стало много и мы стали объединять окна.
Т.е. одна задача в планировщике запускает окошко, которое стартует серию БП.

Понятно, но хотелось бы реализовать функцмонал без помощи БП, следовательно через действие. И тут сразу возникает несколько вопросов.
Начнем с малого, чисто теоретически. Какой вариант посоветуете выбирать:
1. Действие в разделе Договора->Создать свой счет(станд. карточка счета)->Добавить продукт к счету(карт. продукт в счете)->Автоматически повторить действие для всех договоров.
2. Действие в разделе Договора->Окно редактирования (своя карточка с полями, которые будут вноситься в поля счета и продукта к счету)-> Создание скриптом счета и продукта к нему.
В первом случае необходимо использование TemplateWindow? Если да, то получается много лишних полей, которые могут заполнятся автоматически.
А во втором, если создавать окно, то какой датасет привязать, и можно ли обойтись одним окном?

Как мне думается, оба варианта имеют право на жизнь, оба имеют как преимущества, так и недостатки. Лично я бы склонился скорее ко второму, думаю, первый реализовать будет сложнее. Прокомментирую каждый.

1) упрощает задачу тем, что при подготовке карточек редактирования у Вас уже заполнены поля по умолчанию. Также в scr_DB есть функции, позволяющие скопировать в новый датасет все поля датасета, кроме системных (ID, CreatedOn, CreatedByID и т.д., полный список - в начале этого же скрипта) и вычисляемых. Это функции CopyRowData и CopyFullData. Думаю, основной недостаток - медленная работа (функции каждый раз проходят по всем полям датасета). Нужно также не забывать о полях, которые заполняются автоматически, но разные для каждой записи (например, номер счёта). Впрочем, последнее касается обоих вариантов.

2) в этом случае можно создать окно, наследуя wnd_BaseEdit. Датасет привязывать не нужно. При обработке btnOKOnClick можно выполнять необходимое действие: считывать установленные в окне значения и подставлять их в запросы на вставку в БД. Датасет раздела Договора можно передать в это окно как атрибут, а дальше - как удобнее: создать два сервиса InsertQuery или же использовать Connector.DBEngine.ExecuteCustomSQL(SQLText, Parameters). Одного окна вполне достаточно, но в запросах необходимо не забывать и о тех значениях, которые в окне редактирования заполняются автоматически: здесь их нужно включать в параметры.

Понимаю, что данные описания очень поверхностны, но надеюсь, кое-что прояснилось.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Спасибо за разъяснения ,теперь картина еще более прояснилась.
Думаю остановлюсь на втором варианте, но, закономерно возникает несколько вопросов:
1. В созданное окно добавил несколько DateTimeControl, NumericControl и LookupControl. Считывать последние, я так понимаю, нужно из LookupDataset, а вот DateTime и Numeric?
2. Можно ли в обработчике btnOKOnClick использовать function CreateInvoiceByContract() из wnd_ContractsWorkspaceScript? Если так, то вызов CreateNewWindowEdit(Self, 'wnd_InvoiceEdit', DefaultValues, Attributes) будет излишним и что вместо него прописать? И Attributes('IsCreatedByContractID') = ContractDataset.Values('ID') тоже ненужен, посколько там происходит вызов ProcessCopyOfferingDetail, а в данном случае продукт создается заведома известный и только некоторые поля берутся в зависимости от договора и созданной карточки. Но с другой стороны, Счет должен иметь привязку к Договору(или возможно лучше создавать связь самому в скрипте?).

Насчет CreateNewWindowEdit(), кажется, решение следующее:
InvoiceDataset.Append();
InvoiceID = Connector.GenGUID();
InvoiceDataset.Values('ID') = InvoiceID;
.....
InvoiceDataset.Post();

По первому пункту: значение LookupControl'a Вы можете получить так: LookupControlName.LookupDatasetLink.Dataset.Values('ID').

Что касается остальных перечисленных контролов, их значения получить просто: ControlName.Value. У DateTimeControl'ов перед присвоением значения полю датасета полезно проверять свойство DateTimeControlName.IsNull.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Вот только для LookupControl'a ругается "Источник данных не открыт"

Тогда можно в обработке события OnNotify окна анализировать атрибуты объекта Sender:

var ControlText = Sender.Attributes('DisplayFieldValues').CommaText;
var KeyValues = Sender.Attributes('KeyValues');
var ParamsArray = new Array();
for (var i = 0; i < KeyValues.Count; i++) {
	ParamsArray[i] = KeyValues.Items(i);
}

Таким образом после выбора значения в окне справочника Вы получаете выбранные ID (KeyValues) и отображаемые значения. Можно записать их в глобальные переменные и использовать в обработке OKOnClick.

Если полей типа "Справочник" несколько, можно в обработке их событий OnPrepareSelectWindow присваивать окну атрибут с названием контрола, а потом в OnNotify его анализировать.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

По ходу выполнения возник еще один вопрос. На форуме ответ так и не нашел:
В разделе, например Счета добавил действие. В результате на основании счета создается документ в разделе Документы. Как реализовать автоматическое добавление созданного документа в Подчиненные к выбранному счету?
В Договорах, как я понял, для действия "Создать счет" реализовано передачей атрибута IsCreatedByContractID в CreateNewWindowEdit, или я ошибаюсь?

Если у Вас есть оба ID: счёта и документа, которые записаны в переменные InvoiceID и DocumentID, можно прямо в действии, после создания документа, выполнить следующее:

var Parameters = CreateSPParameters();
CreateSPParameter(Parameters, 'ID', pdtGUID, Connector.GenGUID());
CreateSPParameter(Parameters, 'InvoiceID', pdtGUID, InvoiceID);
CreateSPParameter(Parameters, 'DocumentID', pdtGUID, DocumentID);
var SQLText = 'insert into tbl_DocumentInDocument (ID, ParentInvoiceID, ChildDocumentID) values (:ID, :InvoiceID, :DocumentID';
Connector.DBEngine.ExecuteCustomSQL(SQLText, Parameters);

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

"Лабьяк Олег Игоревич" написал:Если у Вас есть оба ID: счёта и документа, которые записаны в переменные InvoiceID и DocumentID

ID счета есть, а вот документ создается вызовом CreateNewWindowEdit, следовательно нужно как-то после его создания передавать ID, как проще всего реализовать?

Проще всего реализовать через механизм нотификации.

Например, при создании документа в качестве объекта NotifyObject указываете раздел "Договора" с помощью одноимённого атрибута. Дальше, в скрипте раздела договоров при обработке события wnd_ContractsWorkspaceOnNotify анализируете сообщение и объект, отправивший его. Если сообщение равно MSG_OK и название отправителя - wnd_DocumentEdit, выполняете запрос, приведённый выше.

Атрибут IsCreatedByContractID на самом деле используется для копирования продуктов из договора в счёт.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

В wnd_InvoicesWorkspaceOnNotify получаю ID счета и созданного документа, но при выполнении запроса появляется ошибка: "Ошибка выполнения метода 'wnd_InvoicesWorkspaceOnNotify'. Object expected «Call Stack»". Возможно нужно дополнительно подключить какой-то скрипт?
И ещё - в предпоследней строчке запроса не должно быть ":DocumentID)';" вместо ":DocumentID';"?;

Да, действительно, я пропустил закрывающуюся скобку...

Если ошибка возникает при выполнении CreateSPParameters или CreateSPParameter, значит, к Вашему скрипту не подключен скрипт scr_DB, либо же в этом скрипте отсутствуют данные функции. Привожу их текст:

function CreateSPParameters() {
    return System.CreateObject('TSObjectLibrary.Parameters');
}
 
function CreateSPParameter(Parameters, Name, DataType, Value) {
	var Parameter = Parameters.CreateItem();
	Parameter.Name = Name;
	Parameter.DataType = DataType;
	Parameter.Value = Value;
	Parameters.Add(Parameter);
	return Parameter;
}

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Добавил функции, всё работает.:lol:
Спасибо!

Показать все комментарии