Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поиск по ДБФ
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Talkman
Задача. Сформировать базу данных минимальных остатков товара на складе для ежедневной перепроверки и дозаказа товара.
Раньше с ДБФ ваапще не сталкивался и попробовал данные о минимальных остатках хранить в ТХТ формате. Не понравилось. Пробовал экспортировать в эксель. Очень не понравился. Загнал данные в ДБФ фалик.

    Б=СоздатьОбъект("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;
    КонецЦикла;
    Б.ЗакрытьФайл();



Вроде как все нормально записалось, все устраивает. Только вот ступор у меня вышел, как найти нужній товар в ДБФ-е. В помошнике есть метод НАЙТИ(), но как его правильно применить что-то застопорился... Можете объяснить на пальцах. Буду благодарен также за ссылку на пример. Благодарю.

А поправить отправленное сообщение никак?
MATEVI
ЗаписьНайдена=ДБФ.Найти("Иванов",0)

ЖКК стр 861
А вообще что то не совсем понятно что Вы хотите найти в ДБФе? Вы же его формируете в том куске кода
Стрелок
Цитата(MATEVI @ 05.03.12, 19:22) необходимо зарегистрироваться для просмотра ссылки
ЗаписьНайдена=ДБФ.Найти("Иванов",0)

ЖКК стр 861
А вообще что то не совсем понятно что Вы хотите найти в ДБФе? Вы же его формируете в том куске кода



телепатирую - у него этот кусок кода выполняется медленно. вот и формирует раз в день файлик. Видимо не только с дбф не сталкивался но и с получением остатков вообще.

Топикстартер - копните в сторону стандартных документов расхода товара а также справочник "ТМЦ" в режиме подбора (когда остатки выводятся в табличке. Поверьте всё гораздо проще и прозрачнее

Мама дорогая. А зачем делать запрос за 60 дней если используется только конечное сальдо?
sava1
Радикальное решение - 1срр (прямой запрос + индексированная таблица)
Хотя это не для топикстартера upset.gif
Стрелок
Цитата(sava1 @ 05.03.12, 21:20) необходимо зарегистрироваться для просмотра ссылки
Радикальное решение - 1срр (прямой запрос + индексированная таблица)
Хотя это не для топикстартера upset.gif



прямым запросом и без таблицы всё летает. главное правильно условия наложить (накласть)
sava1
но человека интересует сериализация (если я правильно понял)
Стрелок
Цитата(sava1 @ 05.03.12, 21:37) необходимо зарегистрироваться для просмотра ссылки
но человека интересует сериализация (если я правильно понял)


Его интересует текущий остаток товара и минимально-допустимый (из карточки). Если что - дозаказ. Всё. больше ничего. Получает он в этом коде и пишет в дбф текущий остаток. потом видать хочет читать его и сравнивать с минимальным остатком товара.
vadim007
Цитата(Стрелок @ 05.03.12, 20:40) необходимо зарегистрироваться для просмотра ссылки
Его интересует текущий остаток товара и минимально-допустимый (из карточки). Если что - дозаказ. Всё. больше ничего. Получает он в этом коде и пишет в дбф текущий остаток. потом видать хочет читать его и сравнивать с минимальным остатком товара.

Он же сказал в начале: "Сформировать базу данных минимальных остатков товара на складе для ежедневной перепроверки и дозаказа товара". А формирует просто остатки, не отбирая минимальных. Зачем телепатировать? Вот когда автор четко сформирует свою задачу, тогда можно и объяснить.
Talkman
Может действительно не совсем точно ситуацию объяснил.
Кусок кода выполняется единоразово при инициализации базы данных минимальных остатков товара. За 60 дней запрос делается чтобы попали все товары по которым были движения не зависимо от того есть ли они сейчас на остатке или нет. Основная задача - ежедневное сравнение остатка товара с минимальным остатком указанным в ДБФе единоразово. То бишь буду ежедневно смотреть остатки товара и сравнивать с необходимым минимальным остатком в ДБФ. Основная задача - быстро найти нужную запись в ДБФнике и сравнить значения остатков.

Еще раз уточню. ДБФ формируется единоразово. Заполнение минимальных остатков товара будет заполнятся вручную людьми, т. к. планированием сколько чего минимально должно оставаться для нормальной торговли будут решать начальники отделов продаж. Основная задача - быстрый поиск записи в дбв. Копал в сторону индексов, но не понравилось. Вроде как из пушки по воробьям. Метод найти() интуитивно понятен, но смущает описание "найти значение по индексу". Может там все как дважды два, но т.к. с индексами не сталкивался прошу помощи либо разъяснения. Спасибо.
vadim007
В какой конфигурации это все делается?
Talkman
Цитата(vadim007 @ 06.03.12, 9:47) необходимо зарегистрироваться для просмотра ссылки
В какой конфигурации это все делается?

Жутко переделаная ПУБ. Сравнение остатков будет проводится в отдельной обработке.
vadim007
В ПУБ, в справочнике ТМЦ есть реквизит МинимальныйОстаток. Его будут заполнять начальники отделов?
Talkman
Цитата(vadim007 @ 06.03.12, 10:08) необходимо зарегистрироваться для просмотра ссылки
В ПУБ, в справочнике ТМЦ есть реквизит МинимальныйОстаток. Его будут заполнять начальники отделов?

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

Цитата(Talkman @ 06.03.12, 10:11) необходимо зарегистрироваться для просмотра ссылки
Дело в том, что отдел продаж не один. Грубо говоря есть несколько складов с которых идут продажи и по которым нужно сформировать минимальные остатки для товара.

Минимальные остатки для каждого склада разные
vadim007
И эти минимальные остатки для каждого склада хранятся в 1С? Ведь конфа жутко переработанная, как вы писали. Уже предвижу, в какую сторону она переписана. Если же окажется, что остатки разные не только для каждого склада, но и для каждого отдела продаж... Скорей всего так оно и есть. Но не в этом суть. По моему, речь идет об отчете, в котором, в разрезе отделов и складов, нужно выводить текущий остаток товара на заданную дату, минимальный остаток, и галочку - нужно-ли дозаказывать товар. Если так, то тогда все просто.
Talkman
Цитата(vadim007 @ 06.03.12, 10:22) необходимо зарегистрироваться для просмотра ссылки
И эти минимальные остатки для каждого склада хранятся в 1С? Ведь конфа жутко переработанная, как вы писали. Уже предвижу, в какую сторону она переписана. Если же окажется, что остатки разные не только для каждого склада, но и для каждого отдела продаж... Скорей всего так оно и есть. Но не в этом суть. По моему, речь идет об отчете, в котором, в разрезе отделов и складов, нужно выводить текущий остаток товара на заданную дату, минимальный остаток, и галочку - нужно-ли дозаказывать товар. Если так, то тогда все просто.

Не совсем понимаю о чем сейчас ведется беседа. Есть склады, они же МестаХранения. Для каждого склада само собой свой перечень товаров со своими остатками. Эти остатки и нужно контролировать, чтобы они были не меньше минимальных, установленых руководителями отделов продаж, за которыми закреплены склады. Нюанс только в том, где хранить данные о минимальных остатках товаров в разрезе складов. Мое мнение такое. Зачем править конфу и внедрять дополнительные атрибуты в ТМЦ для хранения минимальных остатков, нагружать конфу лишними данными если их можно хранить в отдельном файле. Зачем менять конфу, если все можно реализовать одной обработкой?
Мы немного отвлеклись от сабжа...

Цитата(vadim007 @ 06.03.12, 10:08) необходимо зарегистрироваться для просмотра ссылки
В ПУБ, в справочнике ТМЦ есть реквизит МинимальныйОстаток. Его будут заполнять начальники отделов?

Минимальные остатки будут вносится в ДБФ файлик. Для каждого склада свой файлик.
MATEVI
Обращение к ДБФ необходимо в случае если у Вас другая БД (не 1С) и необходим экспорт/импорт данных, или например, экспорта/импорта данных из клиент-банка. Если даже у Вас две параллельные базы 1С то стоит обратить внимание на механизм ОЛЕ.
Talkman
Я конечно дико извиняюсь, но неужели вопрос настолько сложен... Меня интересует как можно посредством 1С найти запись в ДБФ исключая метод простого перебора. Если это метод Найти(), то опишите пожалуйста пример использования, если другой механизм, буду благодарен если Вы мене его продемонстрируете. Значение минимальных остатков товара для каждого товара не считаю целесообразным хранить в 1С, так как эти данные будут использоваться лишь для одного процесса. Зачем приваривать коляску к мотоциклу, если нужно перевести пол мешка картошки...
MATEVI
Ну как знаете. необходимо зарегистрироваться для просмотра ссылки. Смотрим в конец страницы.

ПыСы Аллегории проводить не буду.
Talkman
Цитата(MATEVI @ 06.03.12, 11:14) необходимо зарегистрироваться для просмотра ссылки
Ну как знаете. необходимо зарегистрироваться для просмотра ссылки. Смотрим в конец страницы.

ПыСы Аллегории проводить не буду.

Все таки индексы... Значит прямого поиска нет...
Чтож, спасибо. Подумаю о создании подчиненного справочника для ТМЦ, в котором будут реквизиты склад и минимальный остаток.
Либо же из ДБФ загружать данные в ТЗ и уже с ней работать... Короче будем посмотреть...
vadim007
Цитата(Talkman @ 06.03.12, 10:46) необходимо зарегистрироваться для просмотра ссылки
инимальные остатки будут вносится в ДБФ файлик. Для каждого склада свой файлик.

Откуда будут браться минимальные остатки? Я так понял, не из 1С. Если их должны вносить начальники отделов, то нужно их обучить работать с какой-нибудь утилитой редактирования dbf.
Цитата(Talkman @ 06.03.12, 11:03) необходимо зарегистрироваться для просмотра ссылки
Зачем приваривать коляску к мотоциклу, если нужно перевести пол мешка картошки...

Действительно - зачем?
Цитата(Talkman @ 06.03.12, 11:53) необходимо зарегистрироваться для просмотра ссылки
Подумаю о создании подчиненного справочника для ТМЦ, в котором будут реквизиты склад и минимальный остаток.

А я то думал, что в жутко переработанной конфе это уже реализовано, осталась только малость - сравнить текущие и минимальные остатки. Тогда - вперед! Только не нужно новый справочник подчинять справочнику ТМЦ.
Talkman
Цитата(vadim007 @ 06.03.12, 12:11) необходимо зарегистрироваться для просмотра ссылки
Откуда будут браться минимальные остатки? Я так понял, не из 1С. Если их должны вносить начальники отделов, то нужно их обучить работать с какой-нибудь утилитой редактирования dbf.

Действительно - зачем?

А я то думал, что в жутко переработанной конфе это уже реализовано, осталась только малость - сравнить текущие и минимальные остатки. Тогда - вперед! Только не нужно новый справочник подчинять справочнику ТМЦ.

Как так не нужно? А как вы видите структуру справочника?
Домовик
таблицу ввода данных можно использовать. внешнюю обработку. Один раз нажимаете кнопку "заполнить мин остатки". ставите туда ваш код и заполняете ваш товар с ост. в таблицу. их же можно корректировать вручную. и еще кнопка "текущие остатки": заполняете текущие остатки, обнуляете их.
Внешнюю Обработку можно сохранять, таблица будет тоже сохраняться, т. е ваши мин. остатки.
anatol1c
vadim007 @ 06.03.12, 13:11 необходимо зарегистрироваться для просмотра ссылки ,
Через 10 лет, скорее всего, неактуально. Под Вашу задачу отлично бы подошла таблица значений.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.