Вопрос № 118547: Здравствуйте уважаемые эксперты! 1с 7.7 ТиС. Скажите пожалуйста как сделать проверку уникальности артикула в номенклатуре при записи нового элемента?...Вопрос № 118588: Для клиент-банка Сбербанка нужно выгружать в формате DBASE III. Подскажите как бы это сделать. Сейчас я выгружаю в DBASE IV (xbase), а потом в Экселе Файл->Сохранить как.., но это не есть хорошо.....Вопрос № 118593:
Как в конфигураторе сделать бы экспорт списка пользователей (с их правами и интерфейсами)? Аналогично сделать экспорт прав каждого набора прав (извините за тавтологию)? Если можно ссылки на утилиты.....
Вопрос № 118.547
Здравствуйте уважаемые эксперты! 1с 7.7 ТиС. Скажите пожалуйста как сделать проверку уникальности артикула в номенклатуре при записи нового элемента?
Отправлен: 15.01.2008, 10:48
Вопрос задала: Darina (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Леутин Андрей !!! Здравствуйте, Darina! самый простой вариант такой - в процедуру ПриЗаписи формы элемента (надеюсь у вас новый элемент добавляется только в форме элемента?), в самое ее начало добавьте следующий код
справНомен = СоздатьОбъект("Справочник.Номенклатура"); Если справНомен.НайтиПоРеквизиту("Артикул", Артикул, 1) = 1 Тогда Сообщить("такой артикул уже есть"); СтатусВозврата(0); Возврат; КонецЕсли;
Не забудьте только
проверить стоит ли в вашей базе у реквизита "Артикул" признак "Сортировка". Если нет - установите его. Это делается так - щелкаете 2 раза мышкой по реквизиту артикул в окне конфигурации и в открывшейся форме "свойства" перключаетесь на вкладку "дополнительные" там должна стоять галочка напротив надписи "сортировка" Удачи вам!
Ответ отправил: Леутин Андрей (статус: 1-ый класс)
Ответ отправлен: 15.01.2008, 11:01 Оценка за ответ: 5 Комментарий оценки: Спасибо! Я делала всё также только моя ошибка была вместо просто Артикул я писала ТекущийЭлемент().Артикул
Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Darina! Предыдущий ответ интересен, но скорее всего Вы найдете свой собственный элемент. Необходимо при поиске отсечь свой собственный ТекущийЭлемент() Например, так: Если ПустоеЗначение(Артикул)=0 Тогда может ведь быть пустой артикул, для служебных ТМЦ Спрр = СоздатьОбЪект("Справочник.Номенклатура"); Спрр.ВыбратьЭлементыПоРеквизиту("Артикул",Артикул,0,0); Пока Спрр.ПолучитьЭлемент()=1 Цикл Если Спрр.ТекущийЭлемент()<>ТекущийЭлемент() Тогда Предупреждение("Такой
артикул уже существует в "+Спрр+"!"); СтатусВозврата(0); Возврат; КонецЕсли; КонецЦикла; КонецЕсли; А насчет сортировки я согласен. Включение сортировки несколько увеличивает размер индексных файлов, но очень ускоряет работу.
Отвечает: Gimmy
Здравствуйте, Darina!
нужно создать процедуру для проверки уникальности в предопределенной процедуре при записи
Приложение:
Ответ отправил: Gimmy (статус: 1-ый класс)
Ответ отправлен: 15.01.2008, 12:37
Вопрос № 118.588
Для клиент-банка Сбербанка нужно выгружать в формате DBASE III. Подскажите как бы это сделать. Сейчас я выгружаю в DBASE IV (xbase), а потом в Экселе Файл->Сохранить как.., но это не есть хорошо..
Отвечает: Леутин Андрей
Здравствуйте, Гудков Сергей Евгеньевич!
Никакими средствами объекта XBase изменить формат записи к сожалению нельзя. Я бы предложил воспользоваться прямыми запросами
Что вроде такого
//изменим запись в реестре чтобы коректно считать dbf
wsh = СоздатьОбъект("WScript.Shell"); файл
wsh.RegWrite("HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet3.0EnginesXbaseDataCodePage","ANSI","REG_SZ");
wsh.RegWrite("HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet3.0EnginesXbaseBDE",2,"REG_DWORD");
//создадим ОЛЕ-объект
DBConn = СоздатьОбъект("ADODB.Connection");
DBConn.Open("Provider=Microsoft.Jet.OLEDB.3.0;" +
"Data Source=" + КаталогИБ() + ";" +
"Extended Properties=""DBASE III;"";");
// создадим запрос
ТекстЗапроса = "CREATE TABLE <TABLE-NAME>
( <COLUMN name> <DATA type>[(<SIZE>)],
<COLUMN name> <DATA type> [(<SIZE>)] ... )"; //сюда пишите запрос на сиквеле, создающий Ваш файл.
//Я его не написал. потому что не знаю ни структуры выходной таблицы ни источников данных
//я думаю написать такой запрос никакой сложности не составит
//выполним запрос
Persons = DBConn.Execute(ТекстЗапроса);
//закроем базу и вернем на место реестр
DBConn.Close();
wsh.RegWrite("HKLMSOFTWAREMicrosoftJet4.0EnginesXbaseDataCodePage", "OEM","REG_SZ");
вот примерно так
Ответ отправил: Леутин Андрей (статус: 1-ый класс)
Ответ отправлен: 15.01.2008, 15:18 Оценка за ответ: 3 Комментарий оценки: Н-да, наворот. Тогда можно сделать пустой dbf в формате DBASE III (шаблон), копировать и заполнять из 1С.
Вопрос № 118.593
Как в конфигураторе сделать бы экспорт списка пользователей (с их правами и интерфейсами)? Аналогично сделать экспорт прав каждого набора прав (извините за тавтологию)? Если можно ссылки на утилиты..
Отвечает: Dmitry Stashenko
Здравствуйте, Гудков Сергей Евгеньевич!
Ну по экспорту прав каждого набора прав может помочь Конфигратор - Конфигурация - Описание структуры метаданных, и внизу права будут, а по экспорту списка пользователей - можно разобрать файлик users.usr например.
Ответ отправил: Dmitry Stashenko (статус: Студент)
Ответ отправлен: 15.01.2008, 22:29 Оценка за ответ: 5 Комментарий оценки: То что надо!! Мне нужно было разгрести права на метаданные. Большое спасибо!
Отвечает: Nikakoy
Здравствуйте, Гудков Сергей Евгеньевич!
Для баз с одинаковыми конфигурациями перенос пользователей осуществляю копированием каталога UsrDef. Если для пользователей указаны каталоги,то формирую такие же в базе-приемнике.
По поводу наборов прав. Для конфигураций с одинаковым набором элементов(структурой) можно воспользоваться стандартными CTRL+C в базе источнике и CTRL+V в приемнике......
При структурах различающихся незначительно тоже возможно. Переносится основа набора, а изменения вносятся по ситуации....
Ответ отправил: Nikakoy (статус: 1-ый класс)
Ответ отправлен: 16.01.2008, 22:40 Оценка за ответ: 2 Комментарий оценки: Я же не спрашивал "как перенести пользователей"! Я спрашивал "как сделать экспорт". У меня задача была проанализировать права пользователей, т. е. отдать главбуху список пользователей с правами на редактирование метаданных.