8.х Автоматическое заполнение ТабличнойЧасти Документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем 064madman, 6 июн 2012.

  1. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Уважаемые специалисты!
    Нужна подсказка по организации автоматического заполнения документа: Создаю конфигурацию для маленькой кафешки где в первую и основную очередь необходимо облегчить работу бармена по составлению СчетаКлиента. Этот документ должен формироваться на базе Справочников Блюда и Ингридиенты а так же РегистраСедений СоставлениеБлюд.
    Я умом понимаю что необходима какая то обработка в закладке ПриИзменении, но как должна выглядеть процедура я не догадаться ни прочитать в книге или интернете не могу. Подскажите пожалуйста :)
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    А что, нельзя тупо обработку создать, в которой будете некоторые данные вводить, и при нажатии какой-нибудь клавиши будет формироваться документ ?
  3. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Дело в том, что тут принципиальный момент для бармена. Должен открываться документ СчетКлиента выбирать Блюдо (в реквизитах документа), а в ТабличнойЧасти автоматически выпадает все составляющие это блюдо Ингридиенты.
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Так и в форме обработки можно что угодно разместить. Ну это ваше дело, делайте как вам угодно :)
  5. kotlovD
    Offline

    kotlovD Опытный в 1С

    Регистрация:
    16 фев 2011
    Сообщения:
    718
    Симпатии:
    0
    Баллы:
    26
    Ну типа выбрал бармен блюдо, в РС есть калькуляция этого блюда, так... Значит в обработке при изменении лезем в этот РС, получаем отттуда калбкуляцию и бомбим ее в ТЧ, предварительно очистив, так чтоли.
    ps А чем Вас не устроили уже имеющиеся на рынке решения для общепита?
  6. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Лишние функции и очень дорого для заказчика.
    Теоритически я все понимаю. Но я не могу найти процедуру как обратмться к регистру и соответсвенно вывалить его содержимое в ТабличнуюЧасть
    Спасибо за подсказку. Буду так же благодарен за примерочный код или что то типа того.
  7. kotlovD
    Offline

    kotlovD Опытный в 1С

    Регистрация:
    16 фев 2011
    Сообщения:
    718
    Симпатии:
    0
    Баллы:
    26
    Думаю, что можно калькуляцию хранить в подчиненном справочнике, вот код
    Код:
    Процедура БлюдоПриИзменении(Элемент)//блюдо это реквизит дока
    
    Если НЕ Блюдо.Пустая()//предполагается, что блюдо это элемент справочника
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Составляющие.Номенклатура,
    | Составляющие.Количество
    |ИЗ
    | Справочник.Составляющие КАК Составляющие
    |ГДЕ
    | Составляющие.ОбъектВладелец = &Блюдо";
    
    Запрос.УстановитьПараметр("Блюдо", Блюдо);
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если НЕ Выборка.Количество() = 0 Тогда
    
    ТЧ.Очистить();//ТЧ - таб часть дока
    
    Пока выборка.Следующий() Цикл
    
    Стр = Тч.Добавить();
    
    ЗаполнитьЗначенияСвойств(Стр, Выборка);//предполагаеься, что в ТЧ есть реквизиты <Номенклатура> и <Количество>
    
    КонецЦикла;
    
    КонецЕсли;
    
    КонецПроцедуры
    ps работоспособность не проверял
  8. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Код:
    &НаСервере
    Процедура блюдоПриИзменении(Элемент)
    СтрокаТабличнойЧасти1=Элементы.ТабличнаяЧасть1.ТекущиеДанные;
    СтрокаТабличнойЧасти1.Ингридиент=Элементы.РегистрСведений.СоставлениеБлюд.Ингридиент;
    СтрокаТабличнойЧасти1.Количество=Элементы.РегистрСведений.СоставлениеБлюд.Количество;
    КонецПроцедуры
    
    Я придумал такое решение на документе СчетКлиента.
    Что я сделал не правильно?
  9. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    предположу, что ошибка в том, что На Сервере нет форм, есть данные, все формы на клиенте.... смотрите в эту сторону
  10. kotlovD
    Offline

    kotlovD Опытный в 1С

    Регистрация:
    16 фев 2011
    Сообщения:
    718
    Симпатии:
    0
    Баллы:
    26
    Все)))
    Если пишете &НаСервере то контекст вашего документа не виден
    Если лезете в регистр, то посмотрите как это делается хотя бы во встроенной справке
  11. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Задам глупый вопрос: если я напишу НаКлиенте, то как система вычленит данные из регистра?
  12. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    думаю, вам надо разграничить действия: выборку данных - на сервер, а отображение и т.д. на клиент, тогда все будет работать...
  13. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое. Теперь осталось найти как это сделать )))
  14. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Почитайте книги:)
  15. kotlovD
    Offline

    kotlovD Опытный в 1С

    Регистрация:
    16 фев 2011
    Сообщения:
    718
    Симпатии:
    0
    Баллы:
    26
    ага ага... и все таки задумайтесь о приобретении готового решения, может это окажется более конструктивно
  16. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Почему он мне пишет:

    {Документ.СчетКлиента.Форма.ФормаДокумента.Форма(5,18)}: Тип не определен (Запрос)
    Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
    Что я делаю не правильно?
  17. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    и еще глупый вопрос: В вашем коде есть текст:
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Составляющие.Номенклатура,

    А как быть если у меня нет номенклатура или как то иначе. Я использую встроенный (не мной определенный) реквизит Наименование?
    Объясню сразу почему: мне бы не хотелось дублировать вводимую информацию. Вопрос: можно ли оставить все как есть или это не возможно?
  18. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Наверняка у вас процедура пыталась выполниться на клиенте, я конечно не работала на 8.2 но предположу, что все запросы надо выполнять на сервере, так как там данные сидят (посмотрите в книге примеры есть наверняка)


    А тут .... вам же привели пример кода - это пример - посмотрите, разберитесь и адаптируйте под себя под свою структуру. Ведь мы же не телепаты, код предлагаем свой....
  19. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    100 % вы этот код выполняете на клиенте, на нем выборка недоступна.
    ВСЕ ДАННЫЕ КОТОРЫЕ НУЖНО ВЫБРАТЬ ИЗ БАЗЫ ВЫПОЛНЯЕТСЯ НА СЕРВЕРЕ!!!!
  20. TopicStarter Overlay
    064madman
    Offline

    064madman Опытный в 1С

    Регистрация:
    23 мар 2012
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое. Пока не понял не разобрался. Вопрос: если я пишу НаСерере регистр будет доступен?
    И следующий вопрос: а в процедуре заполнения выборка будет доступна? Ведь эта то процедура выполняется НаКлиенте?

Поделиться этой страницей