Задача. Сформировать базу данных минимальных остатков товара на складе для ежедневной перепроверки и дозаказа товара.
Раньше с ДБФ ваапще не сталкивался и попробовал данные о минимальных остатках хранить в ТХТ формате. Не понравилось. Пробовал экспортировать в эксель. Очень не понравился. Загнал данные в ДБФ фалик.
Б=СоздатьОбъект("XBase");
Путь = КаталогИБ()+"\Остатки\"+Строка(Склад.Код)+".DBF";
Сообщить(Путь);
Б.ДобавитьПоле("NN","N",4,0);
Б.ДобавитьПоле("TOVARCODE","S",9,0);
Б.ДобавитьПоле("TOVAR","S",50,0);
Б.ДобавитьПоле("Ostatok","N",10,2);
Если Фс.СуществуетФайл(Путь) = 0 Тогда
Б.СоздатьФайл(Путь);
иначе
Если Вопрос("Файл "+Путь+" уже существует. Заменить его?",4) = 6 тогда
Фс.УдалитьФайл(Путь);
Б.СоздатьФайл(Путь);
иначе
возврат;
КонецЕсли;
КонецЕсли;
Если Б.Открыта()=0 Тогда
Попытка
Б.ОткрытьФайл(Путь);
исключение
Сообщить("Не удалось открыть файл DBF","!");
Возврат;
КонецПопытки
КонецЕсли;
Би = СоздатьОбъект("БухгалтерскиеИтоги");
Би.ИспользоватьСубконто(ВидыСубконто.ТМЦ);
Би.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад);
Би.ВыполнитьЗапрос(РабочаяДата() - 60, РабочаяДата(), "281");
Би.ВыбратьСубконто(ВидыСубконто.МестаХранения);
Би.ПолучитьСубконто(ВидыСубконто.МестаХранения);
Би.ВыбратьСубконто(ВидыСубконто.ТМЦ);
Ном = 1;
Пока Би.ПолучитьСубконто(ВидыСубконто.ТМЦ) = 1 Цикл
Б.Добавить();
Б.NN = Ном;
Б.TOVARCODE = Би.Субконто(ВидыСубконто.ТМЦ).Код;
Б.TOVAR = Би.Субконто(ВидыСубконто.ТМЦ).Наименование;
Б.Ostatok = Би.СКД(3);
Б.Записать();
ном = Ном + 1;
КонецЦикла;
Б.ЗакрытьФайл();
ЗаписьНайдена=ДБФ.Найти("Иванов",0)
ЗаписьНайдена=ДБФ.Найти("Иванов",0)
Радикальное решение - 1срр (прямой запрос + индексированная таблица)
Хотя это не для топикстартера
но человека интересует сериализация (если я правильно понял)
Может действительно не совсем точно ситуацию объяснил.
Кусок кода выполняется единоразово при инициализации базы данных минимальных остатков товара. За 60 дней запрос делается чтобы попали все товары по которым были движения не зависимо от того есть ли они сейчас на остатке или нет. Основная задача - ежедневное сравнение остатка товара с минимальным остатком указанным в ДБФе единоразово. То бишь буду ежедневно смотреть остатки товара и сравнивать с необходимым минимальным остатком в ДБФ. Основная задача - быстро найти нужную запись в ДБФнике и сравнить значения остатков.
Еще раз уточню. ДБФ формируется единоразово. Заполнение минимальных остатков товара будет заполнятся вручную людьми, т. к. планированием сколько чего минимально должно оставаться для нормальной торговли будут решать начальники отделов продаж. Основная задача - быстрый поиск записи в дбв. Копал в сторону индексов, но не понравилось. Вроде как из пушки по воробьям. Метод найти() интуитивно понятен, но смущает описание "найти значение по индексу". Может там все как дважды два, но т.к. с индексами не сталкивался прошу помощи либо разъяснения. Спасибо.
В какой конфигурации это все делается?
В ПУБ, в справочнике ТМЦ есть реквизит МинимальныйОстаток. Его будут заполнять начальники отделов?
И эти минимальные остатки для каждого склада хранятся в 1С? Ведь конфа жутко переработанная, как вы писали. Уже предвижу, в какую сторону она переписана. Если же окажется, что остатки разные не только для каждого склада, но и для каждого отдела продаж... Скорей всего так оно и есть. Но не в этом суть. По моему, речь идет об отчете, в котором, в разрезе отделов и складов, нужно выводить текущий остаток товара на заданную дату, минимальный остаток, и галочку - нужно-ли дозаказывать товар. Если так, то тогда все просто.
Обращение к ДБФ необходимо в случае если у Вас другая БД (не 1С) и необходим экспорт/импорт данных, или например, экспорта/импорта данных из клиент-банка. Если даже у Вас две параллельные базы 1С то стоит обратить внимание на механизм ОЛЕ.
Я конечно дико извиняюсь, но неужели вопрос настолько сложен... Меня интересует как можно посредством 1С найти запись в ДБФ исключая метод простого перебора. Если это метод Найти(), то опишите пожалуйста пример использования, если другой механизм, буду благодарен если Вы мене его продемонстрируете. Значение минимальных остатков товара для каждого товара не считаю целесообразным хранить в 1С, так как эти данные будут использоваться лишь для одного процесса. Зачем приваривать коляску к мотоциклу, если нужно перевести пол мешка картошки...
Ну как знаете. http://pro1c.org.ua/redirect.php?http://www.mista.ru/tutor_1c/dbf.htm. Смотрим в конец страницы.
ПыСы Аллегории проводить не буду.
таблицу ввода данных можно использовать. внешнюю обработку. Один раз нажимаете кнопку "заполнить мин остатки". ставите туда ваш код и заполняете ваш товар с ост. в таблицу. их же можно корректировать вручную. и еще кнопка "текущие остатки": заполняете текущие остатки, обнуляете их.
Внешнюю Обработку можно сохранять, таблица будет тоже сохраняться, т. е ваши мин. остатки.
vadim007 @ 06.03.12, 13:11
,
Через 10 лет, скорее всего, неактуально. Под Вашу задачу отлично бы подошла таблица значений.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua