Closed aks60 closed 5 years ago
Мы, вроде, договаривались с вашим коллективом предварять pr-ы обсуждениями. Не забывайте на будущее перед тем, как кодировать, обосновать потребность и алгоритм.
Не вижу структуру, где живёт состав полей для разных типов клиента дилера.
Для нормальной работы компании
Странно. Мне казалось, Клиент дилера
, не имеет отношения к вашей организации. Это косметическое поле позволяет дилеру печатать бумажки для своих заказчиков. Поясните, как вы собираетесь использовать значения вложенных реквизитов этого поля?
Так же, не забываем, что Клиент дилера
- частный случай поля вложенных реквизитов. Мы можем скрывать и по разному обрабатывать вложенные реквизиты в формах, но их состав и порядок определяются выше в метаданных, менять их на лету не следует.
Решение использовать закладки - годное, но для хранения разделителя не надо портить формат.
Вместо this.state.valTab + "'" + data.join('\u00A0')
, лучше добавить этот разделитель в допметаданные поля и единообразно сериализовать вместе с другими полями.
АУ? Это нормально вообще, начать разговор и пропасть?
Синтаксис описания формы должен совпадать с https://github.com/oknosoft/metadata.js/issues/311.
Имена типов DataBtn
и BtnGroup
вызывают сомнения. Может, лучше Tab
и Tabs
и надо решить, как транслировать и надо ли транслировать значение текущей закладки в значение реквизита DataObj
Извини что не ответил сразу. Я понял, что начал беседу не там. Ошибся, всё делаю первый раз и удалил ветку, а тут проблема с компиляцией, пока разбираюсь. Посоветуюсь с Ростиславом.
пн, 15 июл. 2019 г. в 20:22, Evgeniy Malyarov notifications@github.com:
АУ? Это нормально вообще, начать разговор и пропасть? Синтаксис описания формы должен совпадать с oknosoft/metadata.js#311 https://github.com/oknosoft/metadata.js/issues/311. Имена типов DataBtn и BtnGroup вызывают сомнения. Может, лучше Tab и Tabs и надо решить, как транслировать и надо ли транслировать значение текущей закладки в значение реквизита DataObj
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/oknosoft/windowbuilder/pull/533?email_source=notifications&email_token=ABWGZVQVCJD5MPDWOXM7VLLP7SW4DA5CNFSM4IDT4PGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ6MD5Y#issuecomment-511492599, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWGZVT62W7LK3FJB36EXRLP7SW4DANCNFSM4IDT4PGA .
Вынес renderItems
в типовой форме в отдельный экспортный метод, добавил типы Tab
, Tabs
и Condition
, см.: https://github.com/oknosoft/metadata.js/commit/6d6a1f8f1a190ef972bdd6521ee36d0fda76c0f3
Теперь, обработку структуры элементов, можно выкинуть из формы ClientOfDiler
и отдать типовому методу. Что скажете?
Это очень хор.
вт, 16 июл. 2019 г. в 12:30, Evgeniy Malyarov notifications@github.com:
Вынес renderItems в типовой форме в отдельный экспортный метод, добавил типы Tab, Tabs и Condition, см.: oknosoft/metadata.js@6d6a1f8 https://github.com/oknosoft/metadata.js/commit/6d6a1f8f1a190ef972bdd6521ee36d0fda76c0f3 Теперь, обработку структуры элементов, можно выкинуть из формы ClientOfDiler и отдать типовому методу. Что скажете?
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/oknosoft/windowbuilder/pull/533?email_source=notifications&email_token=ABWGZVVZZCW3UXIGHR3KVMTP7WILPA5CNFSM4IDT4PGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2AIY2Y#issuecomment-511741035, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWGZVT7IXLO4MUMFTY627LP7WILPANCNFSM4IDT4PGA .
Хочу увидеть ваш вариант структуры с разным набором полей для физлиц и юрлиц. Куда смотреть?
form.client_of_dealer = {
fields: {
surname: {
synonym: 'Фамилия',
mandatory: true,
type: {types: ['string'], str_len: 50}
},
name: {
synonym: 'Имя',
mandatory: true,
type: {types: ['string'], str_len: 50}
},
patronymic: {
synonym: 'Отчество',
type: {types: ['string'], str_len: 50}
},
passport_serial_number: {
synonym: 'Серия и номер паспорта',
tooltip: 'Серия и номер через пробел',
type: {types: ['string'], str_len: 20}
},
passport_date: {
synonym: 'Дата выдачи паспорта',
type: {types: ['string'], str_len: 20}
},
note: {
synonym: 'Дополнительно',
multiline_mode: true,
type: {types: ['string'], str_len: 50}
},
phone: {
synonym: "Телефон",
type: {
types: ["string"], str_len: 50
}
},
address: {
synonym: "Адрес регистрации",
type: {
types: ["string"], str_len: 50
}
},
passport_office: {
synonym: "Орган выдавший паспорт",
type: {
types: ["string"], str_len: 50
}
},
sex: {
synonym: "Пол",
type: {
types: ["boolean"]
}
},
email: {
synonym: "E-mail адрес",
type: {
types: ["string"], str_len: 50
}
},
full_name_org: {
synonym: 'Полное наименование',
mandatory: true,
type: {types: ['string'], str_len: 50}
},
scort_name_org: {
synonym: 'Сокращенное наименование',
type: {types: ['string'], str_len: 50}
},
yur_address: {
synonym: 'Юридический адрес',
type: {types: ['string'], str_len: 50}
},
mailing_address: {
synonym: 'Почтовый адрес',
type: {types: ['string'], str_len: 50}
},
inn: {
synonym: 'ИНН',
type: {types: ['string'], str_len: 50}
},
kpp: {
synonym: 'КПП',
type: {types: ['string'], str_len: 50}
},
ogrn: {
synonym: 'ОГРН',
type: {types: ['string'], str_len: 50}
},
okpo: {
synonym: 'ОКПО',
type: {types: ['string'], str_len: 50}
},
okato: {
synonym: 'ОКАТО',
type: {types: ['string'], str_len: 50}
},
okogy: {
synonym: 'ОКОГУ',
type: {types: ['string'], str_len: 50}
},
okfs: {
synonym: 'ОКФС',
type: {types: ['string'], str_len: 50}
},
okopf: {
synonym: 'ОКОПФ',
type: {types: ['string'], str_len: 50}
},
gen_director: {
synonym: 'Генеральный директор',
type: {types: ['string'], str_len: 50}
},
glav_byx: {
synonym: 'Главный бухгалтер',
type: {types: ['string'], str_len: 50}
},
phone_org: {
synonym: 'Телефон',
mandatory: true,
type: {types: ['string'], str_len: 50}
},
bank_details: {
synonym: 'Банковские реквизиты',
type: {types: ['string'], str_len: 50}
},
checking_account: {
synonym: 'Расчетный счет',
type: {types: ['string'], str_len: 50}
},
bank: {
synonym: 'Банк',
type: {types: ['string'], str_len: 50}
},
bik: {
synonym: 'БИК',
type: {types: ['string'], str_len: 50}
},
corresp_account: {
synonym: 'Корреспондентский счет',
type: {types: ['string'], str_len: 50}
}
},
obj: {
items: [
{
element: 'BtnGroup',
items: [
{
element: 'DataBtn',
label: 'Физ. лицо',
items: [ //вкладка №1
{
element: 'FormGroup',
row: true,
items: [
{
element: 'FormGroup',
items: [ //колонка №1
{
element: 'DataField',
fld: 'surname',
},
{
element: 'DataField',
fld: 'name',
},
{
element: 'DataField',
fld: 'patronymic',
},
{
element: 'DataField',
fld: 'email',
},
]
},
{
element: 'FormGroup',
items: [ //колонка №2
{
element: 'DataField',
fld: 'passport_serial_number',
},
{
element: 'DataField',
fld: 'passport_date',
},
{
element: 'DataField',
fld: 'note',
},
]
},
{
element: 'FormGroup',
items: [ //колонка №3
{
element: "DataField",
fld: "phone"
}, {
element: "DataField",
fld: "address"
}, {
element: "DataField",
fld: "passport_office"
}, {
element: "DataField",
fld: "sex"
}
]
}
]
}
]
},
{
element: 'DataBtn',
label: 'Юр. лицо',
items: [ //вкладка №2
{
element: 'FormGroup',
row: true,
items: [
{
element: 'FormGroup',
items: [
{
element: 'DataField',
fld: 'full_name_org', //Полное наименование
},
{
element: 'DataField',
fld: 'scort_name_org' //Сокращенное наименование
},
{
element: 'DataField',//Юридический адрес
fld: 'yur_address',
},
{
element: 'DataField',//Почтовый адрес
fld: 'mailing_address',
},
{
element: 'DataField',//ИНН
fld: 'inn',
},
{
element: 'DataField',//КПП
fld: 'kpp',
},
{
element: 'DataField',//ОГРН
fld: 'ogrn',
},
]
},
{
element: 'FormGroup',
items: [
{
element: 'DataField',//ОКПО
fld: 'okpo',
},
{
element: 'DataField',//ОКАТО
fld: 'okato',
},
{
element: 'DataField',//ОКОГУ
fld: 'okogy',
},
{
element: 'DataField',//ОКФС
fld: 'okfs',
},
{
element: 'DataField',//ОКОПФ
fld: 'okopf',
},
{
element: 'DataField',//Генеральный директор
fld: 'gen_director',
},
{
element: 'DataField',//Главный бухгалтер
fld: 'glav_byx',
},
]
},
{
element: 'FormGroup',
items: [
{
element: 'DataField',//Телефон
fld: 'phone_org',
},
{
element: 'DataField',//Банковские реквизиты
fld: 'bank_details',
},
{
element: 'DataField',//Расчетный счет
fld: 'checking_account',
},
{
element: 'DataField',//Банк
fld: 'bank',
},
{
element: 'DataField',//БИК
fld: 'bik',
},
{
element: 'DataField',//Корреспондентский счет
fld: 'corresp_account',
},
]
}
]
}
]
}
]
}
]
},
selection: {
indexes: [
{
mango: false,
}
]
}
};
Ответил на GitHub
вт, 16 июл. 2019 г. в 12:48, Evgeniy Malyarov notifications@github.com:
Хочу увидеть ваш вариант структуры с разным набором полей для физлиц и юрлиц. Куда смотреть?
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/oknosoft/windowbuilder/pull/533?email_source=notifications&email_token=ABWGZVQ3FSCPBOGSWN77WG3P7WKO5A5CNFSM4IDT4PGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2AKJMI#issuecomment-511747249, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWGZVSHPEHD34EHFSKY4QDP7WKO5ANCNFSM4IDT4PGA .
Спасибо, вопрос в очереди.
Абстрактный рендер, вроде, работает - можете проверить в dev (после второго запуска браузера, т.к. crazy_ram). Идея хранить много реквизитов в поле клиент дилера мне не нравится, но вреда от вашего подхода нет - можете пользоваться. Если будете отлаживать на локальных сборках, надо подтянуть изменения файлов метадаты из git. Файлы в npm чуть устарели. Дублирую здесь код модификатора:
const {client_of_dealer} = $p.doc.calc_order.metadata().form;
client_of_dealer.obj = {
items: [
{
element: 'Tabs',
fld: 'individual_legal',
items: [
{
element: 'Tab',
cond_value: 'ФизЛицо',
label: 'Физ. лицо',
},
{
element: 'Tab',
cond_value: 'ЮрЛицо',
label: 'Юр. лицо',
}
]
},
{
element: 'Condition',
fld: 'individual_legal',
cond_value: 'ФизЛицо',
items: [
{
element: 'FormGroup',
row: true,
items: [
{
element: 'FormGroup',
items: [ //колонка №1
{
element: 'DataField',
fld: 'surname',
},
{
element: 'DataField',
fld: 'name',
},
{
element: 'DataField',
fld: 'patronymic',
},
{
element: 'DataField',
fld: 'email',
},
]
},
{
element: 'FormGroup',
items: [ //колонка №2
{
element: 'DataField',
fld: 'passport_serial_number',
},
{
element: 'DataField',
fld: 'passport_date',
},
{
element: 'DataField',
fld: 'note',
},
]
},
{
element: 'FormGroup',
items: [ //колонка №3
{
element: 'DataField',
fld: 'phone'
}, {
element: 'DataField',
fld: 'address'
}, {
element: 'DataField',
fld: 'passport_office'
}, {
element: 'FieldSelectStatic',
fld: 'sex',
options: ['Мужской','Женский']
}
]
}
]
}
],
},
{
element: 'Condition',
fld: 'individual_legal',
cond_value: 'ЮрЛицо',
items: [
{
element: 'FormGroup',
row: true,
items: [
{
element: 'FormGroup',
items: [
{
element: 'DataField',
fld: 'full_name_org', //Полное наименование
},
{
element: 'DataField',
fld: 'scort_name_org' //Сокращенное наименование
},
{
element: 'DataField',//Юридический адрес
fld: 'yur_address',
},
{
element: 'DataField',//Почтовый адрес
fld: 'mailing_address',
},
{
element: 'DataField',//ИНН
fld: 'inn',
},
{
element: 'DataField',//КПП
fld: 'kpp',
},
{
element: 'DataField',//ОГРН
fld: 'ogrn',
},
]
},
{
element: 'FormGroup',
items: [
{
element: 'DataField',//ОКПО
fld: 'okpo',
},
{
element: 'DataField',//ОКАТО
fld: 'okato',
},
{
element: 'DataField',//ОКОГУ
fld: 'okogy',
},
{
element: 'DataField',//ОКФС
fld: 'okfs',
},
{
element: 'DataField',//ОКОПФ
fld: 'okopf',
},
{
element: 'DataField',//Генеральный директор
fld: 'gen_director',
},
{
element: 'DataField',//Главный бухгалтер
fld: 'glav_byx',
},
]
},
{
element: 'FormGroup',
items: [
{
element: 'DataField',//Телефон
fld: 'phone_org',
},
{
element: 'DataField',//Банковские реквизиты
fld: 'bank_details',
},
{
element: 'DataField',//Расчетный счет
fld: 'checking_account',
},
{
element: 'DataField',//Банк
fld: 'bank',
},
{
element: 'DataField',//БИК
fld: 'bik',
},
{
element: 'DataField',//Корреспондентский счет
fld: 'corresp_account',
},
]
}
]
}
]
},
]
};
client_of_dealer.fields = {
surname: {
synonym: 'Фамилия',
mandatory: true,
type: {types: ['string'], str_len: 50}
},
name: {
synonym: 'Имя',
mandatory: true,
type: {types: ['string'], str_len: 50}
},
patronymic: {
synonym: 'Отчество',
type: {types: ['string'], str_len: 50}
},
passport_serial_number: {
synonym: 'Серия и номер паспорта',
tooltip: 'Серия и номер через пробел',
type: {types: ['string'], str_len: 20}
},
passport_date: {
synonym: 'Дата выдачи паспорта',
type: {types: ['string'], str_len: 20}
},
note: {
synonym: 'Дополнительно',
multiline_mode: true,
type: {types: ['string'], str_len: 50}
},
phone: {
synonym: "Телефон",
type: {
types: ["string"], str_len: 50
}
},
address: {
synonym: "Адрес регистрации",
type: {
types: ["string"], str_len: 50
}
},
passport_office: {
synonym: "Орган выдавший паспорт",
type: {
types: ["string"], str_len: 50
}
},
sex: {
synonym: "Пол",
type: {
is_ref: true,
types: ["enm.gender"]
},
'default': 'Мужской'
},
email: {
synonym: "E-mail адрес",
type: {
types: ["string"], str_len: 50
}
},
full_name_org: {
synonym: 'Полное наименование',
mandatory: true,
type: {types: ['string'], str_len: 50}
},
scort_name_org: {
synonym: 'Сокращенное наименование',
type: {types: ['string'], str_len: 50}
},
yur_address: {
synonym: 'Юридический адрес',
type: {types: ['string'], str_len: 50}
},
mailing_address: {
synonym: 'Почтовый адрес',
type: {types: ['string'], str_len: 50}
},
inn: {
synonym: 'ИНН',
type: {types: ['string'], str_len: 11}
},
kpp: {
synonym: 'КПП',
type: {types: ['string'], str_len: 20}
},
ogrn: {
synonym: 'ОГРН',
type: {types: ['string'], str_len: 20}
},
okpo: {
synonym: 'ОКПО',
type: {types: ['string'], str_len: 50}
},
okato: {
synonym: 'ОКАТО',
type: {types: ['string'], str_len: 50}
},
okogy: {
synonym: 'ОКОГУ',
type: {types: ['string'], str_len: 50}
},
okfs: {
synonym: 'ОКФС',
type: {types: ['string'], str_len: 50}
},
okopf: {
synonym: 'ОКОПФ',
type: {types: ['string'], str_len: 50}
},
gen_director: {
synonym: 'Генеральный директор',
type: {types: ['string'], str_len: 50}
},
glav_byx: {
synonym: 'Главный бухгалтер',
type: {types: ['string'], str_len: 50}
},
phone_org: {
synonym: 'Телефон',
mandatory: true,
type: {types: ['string'], str_len: 50}
},
bank_details: {
synonym: 'Банковские реквизиты',
type: {types: ['string'], str_len: 50}
},
checking_account: {
synonym: 'Расчетный счет',
type: {types: ['string'], str_len: 50}
},
bank: {
synonym: 'Банк',
type: {types: ['string'], str_len: 50}
},
bik: {
synonym: 'БИК',
type: {types: ['string'], str_len: 50}
},
corresp_account: {
synonym: 'Корреспондентский счет',
type: {types: ['string'], str_len: 50}
},
individual_legal: {
synonym: 'Юр. / физ. лицо',
type: {
is_ref: true,
types: ['enm.individual_legal']
},
'default': 'ФизЛицо',
}
};
Спасибо. Там в пункте 2 я писал, что вываливается дополнительное окно с гуидом когда событие сохранения возвращает ложь. Можете посмотреть?
чт, 18 июл. 2019 г. в 13:56, Evgeniy Malyarov notifications@github.com:
Closed #533 https://github.com/oknosoft/windowbuilder/pull/533.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/oknosoft/windowbuilder/pull/533?email_source=notifications&email_token=ABWGZVXF2SG75J343UDME6TQABD7XA5CNFSM4IDT4PGKYY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOSSG5P4Q#event-2492323826, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWGZVRASSTTJ7DHNQYCFKDQABD7XANCNFSM4IDT4PGA .
Если заполнить вкладку "Юр. лицо" то лейбл вкладки сохраняется с данными в базе.
чт, 18 июл. 2019 г. в 14:17, Sergey Aksenov gonved60@gmail.com:
Спасибо. Там в пункте 2 я писал, что вываливается дополнительное окно с гуидом когда событие сохранения возвращает ложь. Можете посмотреть?
чт, 18 июл. 2019 г. в 13:56, Evgeniy Malyarov notifications@github.com:
Closed #533 https://github.com/oknosoft/windowbuilder/pull/533.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/oknosoft/windowbuilder/pull/533?email_source=notifications&email_token=ABWGZVXF2SG75J343UDME6TQABD7XA5CNFSM4IDT4PGKYY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOSSG5P4Q#event-2492323826, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWGZVRASSTTJ7DHNQYCFKDQABD7XANCNFSM4IDT4PGA .
Не лейбл, а значение реквизита. Tabs - это такой же элемент управления, как поле ввода или переключатель.
В вашем случае, к Tabs подключено свойство individual_legal, но в общем случае, Tabs-ов может быть несколько, в том числе, вложенных и они могут смотреть каждый на свой реквизит
Сообщение о гуиде?
чт, 18 июл. 2019 г. в 16:11, Evgeniy Malyarov notifications@github.com:
В вашем случае, к Tabs подключено свойство individual_legal, но в общем случае, Tabs-ов может быть несколько, в том числе, вложенных и они могут смотреть каждый на свой реквизит
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/oknosoft/windowbuilder/pull/533?email_source=notifications&email_token=ABWGZVTZJNEXH7SDNN2U57DQABTXBA5CNFSM4IDT4PGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2INOLI#issuecomment-512808749, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWGZVRLRWRNSVGI24GLYWDQABTXBANCNFSM4IDT4PGA .
Если в нашем локальном модификаторе
В каком вашем модификаторе? Внятно шаги для воспроизведения проблемы напишите,
/**
console.log('ecookna: check_impost_to_shtulp')
const {before_save: characteristics_before_save} = $p.CatCharacteristics.prototype; const paramActive = this.params.get(0).param; //ведущая фурнитура
$p.CatCharacteristics.prototype.__define('before_save', { value: function (attr) {
const ox = this;
return Promise.resolve()
.then(() => characteristics_before_save.bind(this)(attr))
.then(before_save_res => {
if (before_save_res === false) {
return before_save_res;
}
const {constructions, coordinates} = ox
let ret = true;
constructions.forEach(_row => {
const {furn} = _row
const {furn_set} = furn
if (furn_set.specification.find({nom: paramActive})) {
coordinates.forEach(el => {
if (el.elm_type.name && el.orientation.name &&
el.inset.name) { if (el.elm_type.name === 'Импост' && el.orientation.name === 'Вертикальная') {
if
(el.inset.name.toLowerCase().indexOf('импост') != -1) {
$p.msg.show_msg({
type: "alert-warning",
text: `Ошибка! Штульповое
изделие должно содержать штульп, а не импост.`, title: "Подмена штульпа импостом" }); ret = false; } } } }) } }) return ret }); }, configurable: true, writable: true }); Если модификатор возвращает false, то появляется дополнительное диалоговое окно.
чт, 18 июл. 2019 г. в 17:38, Evgeniy Malyarov notifications@github.com:
Если в нашем локальном модификаторе
В каком вашем модификаторе? Внятно шаги для воспроизведения проблемы напишите,
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/oknosoft/windowbuilder/pull/533?email_source=notifications&email_token=ABWGZVSUSRMORRH55MOMPNDQAB56NA5CNFSM4IDT4PGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2IWCCY#issuecomment-512844043, or mute the thread https://github.com/notifications/unsubscribe-auth/ABWGZVWP3EOOWDYYRG4WRDTQAB56NANCNFSM4IDT4PGA .
Для чего этот модификатор?
Если он используется runtime в рисовалке, почему поиск импоста ведётся по спецификации, а не по изделию?
Почему вы подменяете метод характеристики, вместо того, чтобы подписаться на событие перед записью?
Если это некая проверка перед записью, про это есть оговоренный синтаксис и подключаются проверки во вставках, чтобы их технолог мог редактировать без программиста.
Проверки не должны пытаться взаимодействовать с интерфейсом (вы внутри формулы пытаетесь show_msg
), а должны где-то накапливать ошибки, которые интерфейс сам покажет пользователю, если контекст позволит. Before_save ведь, не только в текущем заказе случается. но и при копировании или регламентном пересчете.
И давайте уже перенесём обсуждение в ваш репозиторий. Математика этого модификатора специфична для Экоокон и никогда не попадёт в типовой windowbuilder.
Для поля Клиент дилера
нужна настройка в Константы и списки
, чтобы можно было включать доступный режим ввода: Только строка, Только форма, Строка и форма. Необходимость такая возникла в связи с переходом на ввод данных только через форму, т.к. хотим разделять данные и использовать поля обязательные для заполнения.
Модификатор Реквизиты клиента
пока вернул старый, т.к. у Калевы форма перестала работать.
При вводе через поле: 'Иванов{tab}Иван{tab}Иванович', поля разбегаются по своим местам. Ваши люди используют вместо Таба пробел и вся строка попадает в первый реквизит
Ваши люди используют вместо Таба пробел и вся строка попадает в первый реквизит
Кроме использования таба вместо пробела, нашим людям нужно помнить последовательность расположения полей, это не вариант.
Очень нужен этот функционал https://github.com/oknosoft/windowbuilder/pull/533#issuecomment-514055943.
Да легко. Вы же знаете, как ускорить приоритетные задачи: бартер. Вы исправляете или удаляете несколько плохих формул, а я в благодарность поднимаю ваши задачи выше по списку.
Например, формула Контроль штапика
- очень гадкая. Можно с неё начать.
Параметр хотите для абонента, отдела или пользователя?
Для отдела наверное самое оптимальное. Хотя, в нашем случае и для абонента было бы хорошо. Давайте все таки для отдела.
Недавно мы договорились, что параметры отдела физически храним, как допреквизиты подразделения. Пишу, просто для напоминания. Допреквизит и учёт его значения в форме заказа - добавлю. Надеюсь на встречные шаги по формулам. Очень уж они меня бесят.
Можно с неё начать.
Как альтернативу формуле Контроль штапика
, предлагаю следующее решение, проверять короткие сегменты заполнений во вставке импоста. На примере вставки 102309 Импост 81мм WHS-72
. Тестовые изделия 8 и 14 в заказе 00-007-0004
.
Расскажите, зачем вообще потребовалась эта формула. Неужели нет стандартного способа?
Понадобилось для проверки ПТО и для подсказки менеджеру, что имеются короткие штапики и нужно применить инструмент 0-магнит. Инструментом начинают пользоваться когда об этом скажешь, импост двигают кто как может, а здесь как раз ошибка на это указывает и подсказывает что нужно сделать.
Неужели нет стандартного способа?
Может я чего забыл, что за способ?
Ссылку на статью не найду, но для контроля чего угодно есть регламент - обсуждали много раз. Технолог добавляет номенклатуру ошибки в технологический справочник - соединение, вставку или фурнитуру. Предполагаю, что если штапик рождается в примыкающем || соединении, там же надо анализировать его длину, изгибы или что там вы пытаетесь ограничить своей формулой?
Технолог добавляет номенклатуру ошибки в технологический справочник - соединение, вставку или фурнитуру.
Так сейчас и работает. Технолог добавляет номенклатуру ошибки во вставку импоста, задает формулу проверки.
Предполагаю, что если штапик рождается в примыкающем || соединении, там же надо анализировать его длину, изгибы или что там вы пытаетесь ограничить своей формулой?
Только проверка коротких сегментов делается в окрестности точек начала и конца импоста. Короткие сегменты приводят к коротким штапикам.
добавляет номенклатуру ошибки во вставку импоста
А должен - в || соединение, где нужные данные под рукой и не требуется геометрических построений.
Я ведь чего ругаюсь: чтение свойств элементов рисовалки (например, cnn_point
) - это активная операция, которая может потребовать пересчет лучей профиля и даже сброс соединения. Обращаться к свойствам элементов надо с осторожностью, помня про реентерабельность (те, кто программировал под DOS или более ранние операционные системы хорошо помнят, как легко падал-зависал компьютер, если время работы некой функции внутри прерывания оказывалось выше разрешенного. в рисовалке - почти так же).
Наверное, новый тип ошибки нужен, чтобы информировать оперативно во время редактирования, а не при записи заказа. Сообщение можно показывать в snack - он лучше модального диалога. Для диких случаев, можно ещё один тип ошибки сделать - с модальным диалогом. В любом случае, обработка ошибок должна быть стандартизирована, а информирование об ошибках должно вписываться в жизненный цикл изделия, а не всплытием диалогов dhtmlx в неожиданные для рисовалки моменты
Наверное, новый тип ошибки нужен, чтобы информировать оперативно во время редактирования, а не при записи заказа.
Сейчас оперативно информирует красная пунктирная линия во время редактирования. Если нужна расшифровка, пользователь переходит в диалог со списком ошибок.
job_prm
https://github.com/oknosoft/windowbuilder/commit/5103d3bc962417b830aa36de53f22c854dc68740https://github.com/oknosoft/windowbuilder/commit/2a8d5b9f55ddd8c2aacf89ba9ae0319e0014c639 В 1С и js добавил возможность задать умолчания в Абоненте и уточнить значение в подразделении. Dev обновил, задал режим "Только форма" - проверяйте.
Поверил, работает.
Добрый день! Для нормальной работы компании нам нужно расширить форму ClientOfDiller. 1.Предлагаю внести изменения на форме, добавить две вкладки для “Физ. лица” и “Юр. лица”. Пример json см. в файле wnd_debug.js. Есть второй вариант внесения изменений “form.client_of_dealer = { obj:” оставить без изменений и добавить новый тег, например ui.