Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Заполнить табличную часть документа из справочника 3 страниц V   1 2 3 >          
Светлана0000 Подменю пользователя
сообщение 26.11.17, 19:31
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0

Люди добрые, подскажите пожалуйста как заполнить табличную часть документа из справочника. У меня есть справочник Блюда с табличной частью Ингредиенты. И есть документ Заказ с табличной частью Перечень блюд. Хочу чтобы в документе в табличной части при выборе какого-либо блюда из справочника Блюда заполнялась табличная часть в документ.
Вот уже что-то начала, но оно не работает.
&НаСервере
Процедура ЗаполнитьПоляНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    БлюдаИнгредиенты.Ссылка.Наименование КАК Блюдо,
        |    БлюдаИнгредиенты.Игредиент.Наименование КАК Ингредиенты,
        |    БлюдаИнгредиенты.Количество КАК КоличествоИнгредиентов,
        |    БлюдаИнгредиенты.ЕдиницаИзмерения
        |ИЗ
        |    Справочник.Блюда.Ингредиенты КАК БлюдаИнгредиенты
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Заказ.ПереченьБлюд КАК ЗаказПереченьБлюд
        |        ПО БлюдаИнгредиенты.Ссылка.Наименование = ЗаказПереченьБлюд.Блюдо
        |ГДЕ
        |    БлюдаИнгредиенты.Ссылка.Наименование = ЗаказПереченьБлюд.Блюдо.Наименование";
        Объект.ПереченьБлюд.Загрузить( Запрос.Выполнить().Выгрузить());
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПоля(Команда)
    ЗаполнитьПоляНаСервере();
КонецПроцедуры

Bernet Подменю пользователя
сообщение 27.11.17, 7:20
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Светлана0000 @ Вчера, 19:31 * ,
Основная ваша ошибка в том, что вы выбираете наименования в запросах, а не ссылки. Я почти уверен что типы ваших реквизитов это ссылки на справочники, а не строковые выражения - как минимум из-за этого поля могут не заполняться. Во-вторых, тут в запросе не нужно внутреннее соединение с таб. частью заказов - тут опять же нет указания с каким именно документом вы связываетесь, оно возьмет абсолютно все заказы, достаточно как в моем примере просто параметром указать ссылку на Блюдо. Надеюсь разницу между ссылкой и строкой вы понимаете, если нет - то сначала прочитайте хоть какую-то книгу по 1С, даже того же Радченко: Пособие разработчика.
&НаСервере
Процедура ЗаполнитьПоляНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    БлюдаИнгредиенты.Ссылка КАК Блюдо,
        |    БлюдаИнгредиенты.Игредиент КАК Ингредиент,
        |    БлюдаИнгредиенты.Количество КАК КоличествоИнгредиентов,
        |    БлюдаИнгредиенты.ЕдиницаИзмерения
        |ИЗ
        |    Справочник.Блюда.Ингредиенты КАК БлюдаИнгредиенты
        |ГДЕ
        |    БлюдаИнгредиенты.Ссылка = &Блюдо";
        
      Запрос.УстановитьПараметр("Блюдо", Объект.Блюдо); // Объект.Блюдо - это ваш реквизит Блюдо из Заказа

      Выборка = Запрос.Выполнить().Выбрать();
      Пока Выборка.Следующий() Цикл
          
               НоваяСтрока = Объект.ПереченьБлюд.Добавить();
               // если у вас в табличной части Заказа типы ингридиентов не строки, и имена реквизитов совпадают с тем, что у вас в запросе тогда так:
               ЗаполнитьЗначенияСвойство(НоваяСтрока, Выборка);
              
               // или если имена реквизитов не совпадают тогда так:
                НоваяСтрока.ИмяВашегоИнгридиента = Выборка.Ингридиент;
                НоваяСтрока.КоличествоВашегоИнгридиента = Выборка.КоличествоИнгредиентов;
                // и т.д.
                  
      КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПоля(Команда)
    ЗаполнитьПоляНаСервере();
КонецПроцедуры


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Светлана0000,

Светлана0000 Подменю пользователя
сообщение 27.11.17, 11:44
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0

Bernet @ Сегодня, 8:20 * ,
Спасибо большое, все заработало, а вот как сделать теперь кнопку, чтобы при нажатии можно было добавить еще одно блюдо и также заполнить табличную часть ингредиенты?

Bernet Подменю пользователя
сообщение 27.11.17, 14:16
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Немного не понял что вы хотите. Если нужна возможность указывать несколько блюд, то сделайте просто таб. часть "Блюда"


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

logist Подменю пользователя
сообщение 27.11.17, 15:57
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Bernet @ 27.11.17, 14:16) *
то сделайте просто таб. часть "Блюда"

Судя по запросу из первого поста ТС практически не шарит что такое программирование в 1С, а вы как человек знакомый с Общепитом и Рарусом должны догадаться что необходимо, и после того как будет сделана Просто ТЧ Блюда, понадобиться видеть какие ингредиенты в какие блюда входят по нажатию на блюдо, и т.д.. Либо тут самый просто вариант - набить ТЧ ингредиентами, тогда ТЧ Блюда не надо, нужно что-то типа "Подбора" блюд, а результатом подбора будет заполнение ингредиентами smile.gif


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Светлана0000,

Bernet Подменю пользователя
сообщение 27.11.17, 18:25
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

logist @ Сегодня, 15:57 * ,
ну у меня ещё был вариант, что это самописная конфигурация...) то что человек совсем не программировал это я понял, потому и посоветовал начать хотябы с Радченко


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Светлана0000 Подменю пользователя
сообщение 29.11.17, 18:29
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0

Да вы правы, я первый раз создаю конфигурацию, и многое не получается. Сначала я думала сделать ТЧ где будет написано Блюдо и из каких ингредиентов оно состоит, но у меня не получилось обратиться к Блюду как к объекту. И поэтому я сделала отдельно выбор блюда и ТЧ ингредиенты. Но необходимо, чтобы был выбор нескольких блюд. И я думала может сделать кнопку, которая будет добавлять реквизиты Блюда и ТЧ Ингредиенты. Но я не уверена что так вообще можно. Я буду вам очень благодарна если вы мне подскажите как лучше сделать.

Bernet Подменю пользователя
сообщение 29.11.17, 22:40
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Начнем с того, что динамически реквизиты добавить не получится. Точнее элементы на форму можно а именно "реквизиты объекта" не получится - они определяются в конфигураторе в дереве метаданных. То что вы хотите сделать усложнит вам жизнь. Можно конечно где-то хранить эти реквизиты, и каждый раз динамически создавать их на форме, но я считаю в рамках данной задачи это излишнее.
Вам достаточно просто сделать таб. часть с блюдами и все. Обращаться к таб части можно через Объект.ИмяВашейТабЧасти
Строки можно получать и обходить в цикле. или обращаться по индексу при необходимости


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

logist Подменю пользователя
сообщение 29.11.17, 23:36
Сообщение #9

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Bernet @ 29.11.17, 22:40) *
Начнем с того, что динамически реквизиты добавить не получится.

Bernet, вы начали со слишком сложного объяснения, думаю девушка не до конца понимает что такое Объект, или вы понимаете контекст по разному wink.gif
Расскажите как сделать две ТЧ - Блюда и Ингредиенты, и как заполнять первую - подбором, и при этом добавлять данные во вторую. Это и всё что требуется от этого вопроса.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Светлана0000 Подменю пользователя
сообщение 29.11.17, 23:56
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0

Bernet @ Вчера, 23:40 * ,
Скажите, а как мне тогда в том первом запросе установить параметр и условие, ссылаясь не на
объект.Блюдо
, а на табличную часть с полем Блюдо?
Когда пишу
Объект.ТЧ
, а дальше нельзя выбрать мое поле, только через
 Элементы.ТЧ.Поле
. Но через элементы не работает,а как получить объект я не могу понять.

Bernet Подменю пользователя
сообщение 30.11.17, 0:26
Сообщение #11

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

logist @ Вчера, 23:36 * ,
Да, наверно я на умняк упал. Сори. Попробую проще объяснить.

Светлана0000 @ Вчера, 23:56 * ,
Допустим у вас есть:
1) Таб. часть "Блюда" с колонкой "Блюдо" (Тип Справочник "Блюда")
2) Таб. часть "Перечень блюд" с колонками: "Блюдо" (Справочник "Блюда"), "Ингридиент" (Справочник "Ингридиенты"), "КоличествоИнгридиентов" (Число)
3) Добавьте в командную панель таб. части "Ингридиенты" кнопку "Заполнить по блюдам". В Обработчике этой кнопки пишем следущее:
&НаКлиенте
Процедура ЗаполнитьПереченьБлюд(Команда)
    
       ЗаполнитьИнгридиентыПоБлюдамНаСервере();

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьИнгридиентыПоБлюдамНаСервере()

      Запрос = Новый Запрос;
      Запрос.Текст = ""ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    БлюдаИнгредиенты.Ссылка КАК Блюдо,
        |    БлюдаИнгредиенты.Игредиент КАК Ингредиент,
        |    БлюдаИнгредиенты.Количество КАК КоличествоИнгредиентов,
        |    БлюдаИнгредиенты.ЕдиницаИзмерения
        |ИЗ
        |    Справочник.Блюда.Ингредиенты КАК БлюдаИнгредиенты
        |ГДЕ
        |    БлюдаИнгредиенты.Ссылка В (&МассивБлюд)";

       Запрос.УстановитьПараметр("МассивБлюд", Объект.Блюда.ВыгрузитьКолонку("Блюдо"));

       Выборка = Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() Цикл
          
               НоваяСтрока = Объект.ПереченьБлюд.Добавить();
               ЗаполнитьЗначенияСвойство(НоваяСтрока, Выборка);
                                  
      КонецЦикла;

КонецПроцедуры


Сообщение отредактировал Bernet - 30.11.17, 0:27


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Светлана0000,

logist Подменю пользователя
сообщение 30.11.17, 4:33
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Bernet @ 30.11.17, 0:26) *
В Обработчике этой кнопки пишем следущее:

И не забудьте очистить таблицу перед заполнением


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Светлана0000 Подменю пользователя
сообщение 30.11.17, 16:47
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0

Bernet @ Сегодня, 1:26 * ,
Не получается. Выдает вот такую ошибку.
{Документ.Заказ.Форма.ФормаДокумента.Форма(18)}: Ошибка при вызове метода контекста (Выполнить)
    Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(8, 26)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
БлюдаИнгредиенты.Ссылка <<?>>= &МассивБлюд

logist Подменю пользователя
сообщение 30.11.17, 16:51
Сообщение #14

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Bernet @ 30.11.17, 0:26) *
       |    БлюдаИнгредиенты.Ссылка В (&МассивБлюд)";

Посмотрите внимательно на текст запроса.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Светлана0000,

Светлана0000 Подменю пользователя
сообщение 30.11.17, 20:21
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 17:51 * ,
Спасибо огромное все заработало,но у меня возник другой вопрос. Когда я заполняю ингредиенты,мне нужно чтобы поле количество ингредиентов умножалось на количество порций,я не знаю как правильно обратиться. Вот я пишу
НоваяСтрока.КоличествоИнгредиентов = Выборка.КоличествоИнгредиентов * Объект.ПереченьБлюд.Выгрузить(,"КоличествоПорций");

А он выдает ошибку Преобразование к типу Число не может быть выполнено

Bernet Подменю пользователя
сообщение 30.11.17, 20:58
Сообщение #16

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

У колонки "КоличествоПорций" и "КоличествоИнгредиентов " добавьте событие "ПриИзменении", в нем напишите такой код:
ТекущиеДанные = Элементы.ПереченьБлюд.ТекущиеДанные;

Если ТекущиеДанные = Неопределено Тогда
    Возврат;
КонецЕсли;

ТекущиеДанные.КоличествоИнгредиентов  = ТекущиеДанные.КоличествоИнгредиентов  * ТекущиеДанные.КоличествоПорций;


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Светлана0000 Подменю пользователя
сообщение 30.11.17, 23:19
Сообщение #17

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0

Bernet @ Сегодня, 21:58 * ,
А если у меня в разных они таблицах? Я сделала вкладки и в одной таблица ПереченьБлюд, а в другой ПереченьИнгредиентов

logist Подменю пользователя
сообщение 01.12.17, 0:32
Сообщение #18

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Светлана0000 @ 30.11.17, 20:21) *
А он выдает ошибку Преобразование к типу Число не может быть выполнено

На будущее, лучше спросите как сделать, а не делать какую-то фигню (раз уж не разбираетесь), а потом спрашивать почему она не работает wink.gif

Цитата(Bernet @ 30.11.17, 20:58) *
У колонки "КоличествоПорций" и "КоличествоИнгредиентов " добавьте событие "ПриИзменении", в нем напишите такой код:

Та ну, после того как набили блюда и нажали кнопку - надо заполнить программно Ингредиенты, ручное изменение вообще ни к чему не привязано, т.к. при изменении количества блюд надо пересчитать все строки ингредиентов, поэтому луче весь расчет повесть на одну и ту же кнопку, и сделать в одном запросе.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Светлана0000 Подменю пользователя
сообщение 01.12.17, 12:32
Сообщение #19

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0

logist @ Сегодня, 1:32 * ,
Просто у меня с реквизитами всё работает, а вот с ТЧ не получается.

Bernet Подменю пользователя
сообщение 01.12.17, 13:02
Сообщение #20

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Выложите конфигурацию [необходимо зарегистрироваться для просмотра ссылки]
И скажите как вы хотите чтобы работало, тогда перестанем тыкать пальцем в небо


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: Светлана0000,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


3 страниц V   1 2 3 >
Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 16:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!