Здравствуйте! Уверена, что когда-то читала нечто подобное на коммьюнити, но когда понадобилось - найти не смогла. Буду благодарна за ссылку на соответствующую тему.
Начальнику отдела продаж нужна возможность одновременной смены ответственных у нескольких выбранных контрагентов. Как это правильно организовать?
Есть несколько мыслей, но ни одной, которая бы обеспечила ПРОСТОЕ решение. Может, конечно, его и нет, но хотелось бы почитать про предлагаемые варианты...
Нравится
Можно сделать действие в разделе [Контрагенты].
Код обработчика примерно следующий:
[javascript]
function amiSetResponsibleOnExecute(ActionMenuItem, Sender) {
var SelectedOwnersIDs = SelectResponsibles();
var SelectedIDs = wndGridData.Window.
ComponentsByName('grdData').SelectedIDs;
if ((SelectedOwnersIDs.Count > 0) && (SelectedIDs.Count > 0)) {
var DSAccounts = GetSingleItemByCode('ds_Account',
'ds_Account_cache_amiSetResponsibleOnExecute_001')
EnableDatasetFilters(DSAccounts, true, ['ID']);
var AccI = OwnI = 0;
var ExitMax = SelectedOwnersIDs.Count > SelectedIDs.Count ?
SelectedOwnersIDs.Count : SelectedIDs.Count;
do {
if (AccI >= SelectedIDs.Count) AccI = 0;
if (OwnI >= SelectedOwnersIDs.Count) OwnI = 0;
SetSQParametersValues(DSAccounts.SelectQuery.Parameters,
['ID'],
[SelectedIDs.Items(AccI)]);
RefreshDataset(DSAccounts);
DSAccounts.Edit();
DSAccounts.Values('OwnerID') = SelectedOwnersIDs.Items(OwnI);
DSAccounts.Post();
OwnI++;
AccI++;
} while (!((AccI >= ExitMax) || (OwnI >= ExitMax)));
}
RefreshDataset(wndGridData.Window.ComponentsByName('dlData').Dataset);
}
[/javascript]
Данной функциональности в базовой версии нет.
Самое простое решение - написать sql-скрипт, который пройдется по записям и изменит соответствующее поле.
Также необходимо определить по какому принципу будет проводится выборка записей, в которых необходимо изменить поле (По дате, ответственному, части название, состоянию и т.д.)