Вход | Регистрация


1С:Предприятие ::

Метки:Объекты конфигурации

Регистры

Я
   Denizzz
 
11.11.04 - 08:19
Доброе утро.
Требуется создать маленькую конфу на собственную АЗС для внутрихоз.нужд:
В течение времени отпускается топливо (ДТ, бензин) на свой транспорт.
Требуется в любое время узнать:
1) сколько отпущено за опр.период в разрезе:
 а) подразделений
 б) транспорта
в) водителей
2) Знать наличие топлива в резервуарах в разрезе видов топлива.
====
Создал справочники Подразделения, Топливо, Транспорт, Водители.
Создал Регистр (оборотн):
Реквизиты - Подразделение, Водитель, ВидТОплива, Транспорт (все на основе справочника)
 Ресурсы - Колво

Так как я только начинающий, хотел бы сразу спросить - правильно ли я действую и что можете еще посоветовать?
 
 
   колодина
1 - 11.11.04 - 08:23
если надо знать наличие топлива - надо еще регистр остатков. вообще очень полезно посмотреть типовую конфигу "торговля и склад" - как и что там реализовано.
   Denizzz
 
2 - 11.11.04 - 08:35
Можно простой пример алгоритма отпуска топлива в Модуле документа?
В ТиС как-то всё запутано для меня кажется
   GrayT
 
3 - 11.11.04 - 08:56
(0)Не верно
   Denizzz
 
4 - 11.11.04 - 08:58
(3) А что именно?
   321
 
5 - 11.11.04 - 09:01
(0)Реквизиты->измерения, лучше использовать регистр остатков+ марка бензина тоже пригодится
   427
 
6 - 11.11.04 - 09:02
а еще пересчет кг на входе и выдача в литрах в зависимости от температуры...
Хотя если тоолько свои машины - нас рать на это....
   321
 
7 - 11.11.04 - 09:06
Еще учитывать в разрезе оператора АЗС не помешает
   Denizzz
 
8 - 11.11.04 - 09:07
(5) требуется знать только сколько отпущено, а для остатков я думаю создать регистр (ост) НаличиеВРезервуарах с реквизитом ВидТоплива
   Оборотень
 
9 - 11.11.04 - 09:08
У Тебя есть справочник Резервуар и ВидТоплива?

Если да, то структура регистра контроля остатков топлива (ОстатокТоплива) примерно такая:

Реквизиты:
ВидТоплива
Резервуар (если конечно нужны остатки по резервуарам)
Ресурсы: Кол-во

В модуле документа:

//проверка остатков
Если Регистр.ОстатокТоплива.Остаток(ВидТоплива, Резервуар, "КолВо")<КолВо Тогда
 //Нет достаточного остатка

  Сообщить("Нет достаточного количества топлива!!! Документ не проведен!!!");
  СтатусВозврата(0);
КонецЕсли;

//Двигаем остатки

Регистр.ОстатокТоплива.ВидТоплива=ВидТоплива;
Регистр.ОстатокТоплива.Резервуар=Резервуар;//(если конечно нужны остатки по резервуарам)

Регистр.ОстатокТоплива.КолВо=КолВо;
Регистр.ОстатокТоплива.ДвижениеРасходВыполнить();

//Двигаем обороты

Регистр.ОборотТоплива.Подразделение=Подразделение;
Регистр.ОборотТоплива.Водитель=Водитель;
Регистр.ОборотТоплива.ВидТОплива=ВидТОплива;
Регистр.ОборотТоплива.Транспорт=Транспорт;
Регистр.ОборотТоплива.КолВо=ДвижениеВыполнить();
//

Вот  и все вроде бы. Еще нужно добавить ВременныйРасчет на тот случай если док задним числом проводить будут
   321
 
10 - 11.11.04 - 09:22
(8) Приход и расход по регистрам остатков за период и покажет сколько залили в резеовуар и сколько отлили :)
 
 
   GrayT
 
11 - 11.11.04 - 09:27
Что ж так упорно Измерения с Реквизитами путаем
   GrayT
 
12 - 11.11.04 - 09:29
+(6) Помнится там еще проблемы есть с поддонными водами. Короче что-нить типа дока инвентаризации потребуется полюбому
   Denizzz
 
13 - 11.11.04 - 09:44
(11) Извиняюсь.
(9) спасибо! коротко и доходчиво! только в конце вроде не
Регистр.ОборотТоплива.КолВо=ДвижениеВыполнить(); (верно опечатка)
 
з.ы. а простенький отчет можно?
   GrayT
 
14 - 11.11.04 - 09:49
(9)Понравилась возможность сливать в один резервуар разные виды топлива :))
(13)Сперва регистры с документами сделай, а отчеты что ты в (0) заказал конструктором за пару минут нарисуешь. Сперва определись четко со структурой регистров и что какими доками двигаться будет
   Denizzz
 
15 - 11.11.04 - 09:51
(14) резервуары не понадобятся
   GrayT
 
16 - 11.11.04 - 09:53
(15)Почему?
   Denizzz
 
17 - 11.11.04 - 11:09
(16) Резервуары объединены по видам топлива
   Оборотень
 
18 - 11.11.04 - 11:14
(13) Конечно же в (9) опечатка :)

(14) Кстати движения регистров тоже удобно конструктором делать :)

(14) к (9) Я собсно сдесь выливал из резервуара :) Хотя мысль интересная :) С точко зрения базы все нормально что влил, то и выливай. Ну а за то что в реале будет ..... это вопрос защиты от дурака :)
   GrayT
 
19 - 11.11.04 - 11:15
Может лучше сделать справочник резервуаров, где реквизитом стоит вид топлива (можно периодическим, правда специфики не знаю)
Регистр соответственно
Изм:Резервуар
Рес:Количество
   Denizzz
 
20 - 11.11.04 - 11:19
И все-таки не вижу смысла использования резервуаров.
Одна емкость - один вид топлива
итог: 3 вида топлива - 3 резервуара.
   GrayT
 
21 - 11.11.04 - 11:20
Если уверен, что послезавтра не будет еще резервуаров, я же не знаю как вы развиваетесь
   321
 
22 - 11.11.04 - 11:20
Denizzz, просто из любопытства, 1с интегрирована с программой по обслуживанию АЗС? Т.е. каким образом будут вводиться данные в систему или же оператор буит трудиться на два фронта?
   Оборотень
 
23 - 11.11.04 - 11:32
(13) Отчет это просто.

Можно так :
Год= ;
Месяц= ;
Регистр.ОборотыТоваров.ИспользоватьПериод(Год,Месяц);
// можно начать перебор

РасходТоплива=Регистр.ОборотыТоваров.СводныйИтог(Подразделение,Водитель,ВидТОплива,Транспорт,"КолВо");

//Убираешь лишние измерения делаешь перебор


А ещё лучше запросом :)
   Denizzz
 
24 - 11.11.04 - 11:33
(22) интересно подметил!
Отпускать топливо будет через Доза-Терминал
А вот движение будет вестись в 1С
   45е54цпвыава
25 - 11.11.04 - 11:37
нужно учесть возможность разбавления бензина ослиной мочой.
   321
 
26 - 11.11.04 - 11:37
(24) и всё-таки ты не ответил на мой вопрос
   Denizzz
 
27 - 11.11.04 - 11:38
(23) спасибо, но немного расплывчато.
допустим надо на бумаге так:
Расход по подразделению №1 за период
Графы: Транспорт, ВидТоплива, Колво
В конце Итого Колво по подразделению

Плиzzz...
   321
 
28 - 11.11.04 - 11:40
(27)Воспользуйся конструктором запросов
   Denizzz
 
29 - 11.11.04 - 11:46
(26) Доза-Терминал не позволяет вести учет в разрезе подразделений, водителей и транспорта. Справочник там хиловат - только клиенты. Но имеется формат выгрузки. Интеграции нет.
   Denizzz
 
30 - 11.11.04 - 11:57
Экспериментирую:

Процедура Сформировать()
    Т=СоздатьОбъект("Таблица");
    Регистр.ОтпускТоплива.ИспользоватьПериод(2004,11);
    Колво=Регистр.ОтпускТоплива.СводныйИтог(Подразделение,,,,"Колво");
    Т.ВывестиСекцию("Секция_1");
    Т.Показать();
КонецПроцедуры

Проверка выдает:

Колво=Регистр.ОтпускТоплива.СводныйИтог(Подразделение<<?>>,,,,"Колво");
{Отчет.РасходУ.Форма.Модуль(5)}: Переменная не определена (Подразделение)
При проверке модуля обнаружены синтаксические ошибки!
   321
 
31 - 11.11.04 - 12:04
Так определи переменную подразделение...
   321
 
32 - 11.11.04 - 12:22
(29)Интегрировать доза-терминал, как систему управления ТРК можно с терминалом системы "Петрол Плюс",а вот её в свою очередь с 1с.Не смотрел подробно, но кажется это геморно, равно как и дублировать ввод данных в двух системах 1с и доза-терминал
   Denizzz
 
33 - 11.11.04 - 12:23
Короче код уже такой:
Процедура Сформировать()
    Перем Подразделение;
    Т=СоздатьОбъект("Таблица");
    Регистр.ОтпускТоплива.ИспользоватьПериод(2004,11);
    Колво=Регистр.ОтпускТоплива.СводныйИтог(Подразделение,,,,"Колво");
    Т.ВывестиСекцию("Секция_1");
    Т.Показать();
КонецПроцедуры

В Секции_1 указал <Колво>

Создал 2 документа на отпуск топливо на разные машины разным топливом из разных подразделений (80 и 20 литров).
В результате при формировании в ячейке стоит 100.
Хотелось бы:
Подразделение 1   - А-92 - 80
Подразделение 2   - Диз  - 20
 
 
   321
 
34 - 11.11.04 - 12:28
(33) Тогда уж лучше запрос использовать с группировкой по подразделению
   Denizzz
 
35 - 11.11.04 - 12:47
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)

    |Период с ВыбНачПериода по ВыбКонПериода;
    |Подразделение = Регистр.ОтпускТоплива.Подразделение;
    |Водитель = Регистр.ОтпускТоплива.Водитель;
    |Колво = Регистр.ОтпускТоплива.Колво;
    |Функция КолвоСумма = Сумма(Колво);
    |Группировка Подразделение упорядочить по Подразделение.Наименование;
    |//}}ЗАПРОС

    ;
   // Если ошибка в запросе, то выход из процедуры

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса

    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"

    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Подразделение

        Таб.ВывестиСекцию("Подразделение");
    КонецЦикла;
   // Заполнение полей "Итого"

    Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы

    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры

ничего в итоге не показывает
   GrayT
 
36 - 11.11.04 - 13:33
Регистр оборотный и документы  проведенные есть?
   321
 
37 - 11.11.04 - 13:35
(36) Оборотный ест-но, регистр остатков сумму не считает...может не тот период указал
   Оборотень
 
38 - 11.11.04 - 15:38
(33) Запрос ИМХО лучше, но если не запросом, то попробуй так:

На форме создай Таблицу Значений
Пусть она зовется ТЗ

в модуле
Процедура Сформировать() 
   Перем Рег; 
   Рег=СоздатьОбъект("Регистр.ОтпускТоплива");
   Рег.ИспользоватьПериод(2004,11); 
  //Рег.УстановитьФильтр(...); или Рег.УстановитьЗначениеФильтра(...);

   Рег.ВыгрузитьИтоги(ТЗ);
КонецПроцедуры 

Если хочешь срез по одному подразделению - ставь фильтры.
А в ячейке у Тебя стоит 100 потому что Переменная Подразделение - пустая
Чтобы заработало нужно присвоить ей конкретное значение.
   Оборотень
 
39 - 11.11.04 - 15:51
(35) А может группировку по Месяцу например добавить?
|Группировка Месяц
Может из-за этого оборотный не считается?
Добавлять естестно лучше в конструкторе :)

Кстати в данном запросе получатся только общие суммы по подразделениям, для вида топлива и т.д. нужно группировки добавлять
   Denizzz
 
40 - 12.11.04 - 08:09
по поводу (35): Сделал в отчете период с 01.11 по 11.11 и он нормально показал сводную по подразделениям. если делаю уже с 02.11 - их уже не видно. Доки проведены 11-м числом
   Denizzz
 
41 - 12.11.04 - 09:01
И еще, когда задаешь период с ДатаНач по <Дату позднее ТА> отчет не формируется и выдает сообщение:
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.новый1.Форма.Модуль(20)}: Невозможно обращение к итогам после ТА
   321
 
42 - 12.11.04 - 09:13
(40)скорее всего у тебя есть какие-то доки за 2-ое число, которые двигают регистры.
(41) А ты не ставь дату больше Т.А.
   Denizzz
 
43 - 12.11.04 - 09:17
1. (42) всего три дока: 1 ввод остатков (проведен 10-м числом) и два расхода (11-м числом)
2. Я то догадаюсь в чем дело, но юзеры когда выберут период за текущий месяц - отчет не сформируется
   321
 
44 - 12.11.04 - 09:24
(43)по поводу п.2: при выборе периода вызывай проверку на корректность.
по поводу п.1: чета на ум ничего не приходит пока, нужно самому увидеть
   Denizzz
 
45 - 12.11.04 - 09:25
(44) могу выслать
   321
 
46 - 12.11.04 - 09:29
(45)Только оперативность не обещаю
   Denizzz
 
47 - 12.11.04 - 09:30
а как на счет e-mail?
icq 322712752
   321
 
48 - 12.11.04 - 09:35
(47)Извини, давай позже, сейчас срочное дело появилось



Список тем форума
Рекламное место пустует   Рекламное место пустует
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует