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

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

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

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

&НаКлиенте
Процедура ЗаполнитьПоля(Команда)
    ЗаполнитьПоляНаСервере();
КонецПроцедуры
Светлана0000
Bernet @ Сегодня, 8:20 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо большое, все заработало, а вот как сделать теперь кнопку, чтобы при нажатии можно было добавить еще одно блюдо и также заполнить табличную часть ингредиенты?
Bernet
Немного не понял что вы хотите. Если нужна возможность указывать несколько блюд, то сделайте просто таб. часть "Блюда"
logist
Цитата(Bernet @ 27.11.17, 14:16) необходимо зарегистрироваться для просмотра ссылки
то сделайте просто таб. часть "Блюда"

Судя по запросу из первого поста ТС практически не шарит что такое программирование в 1С, а вы как человек знакомый с Общепитом и Рарусом должны догадаться что необходимо, и после того как будет сделана Просто ТЧ Блюда, понадобиться видеть какие ингредиенты в какие блюда входят по нажатию на блюдо, и т.д.. Либо тут самый просто вариант - набить ТЧ ингредиентами, тогда ТЧ Блюда не надо, нужно что-то типа "Подбора" блюд, а результатом подбора будет заполнение ингредиентами smile.gif
Bernet
logist @ Сегодня, 15:57 необходимо зарегистрироваться для просмотра ссылки ,
ну у меня ещё был вариант, что это самописная конфигурация...) то что человек совсем не программировал это я понял, потому и посоветовал начать хотябы с Радченко
Светлана0000
Да вы правы, я первый раз создаю конфигурацию, и многое не получается. Сначала я думала сделать ТЧ где будет написано Блюдо и из каких ингредиентов оно состоит, но у меня не получилось обратиться к Блюду как к объекту. И поэтому я сделала отдельно выбор блюда и ТЧ ингредиенты. Но необходимо, чтобы был выбор нескольких блюд. И я думала может сделать кнопку, которая будет добавлять реквизиты Блюда и ТЧ Ингредиенты. Но я не уверена что так вообще можно. Я буду вам очень благодарна если вы мне подскажите как лучше сделать.
Bernet
Начнем с того, что динамически реквизиты добавить не получится. Точнее элементы на форму можно а именно "реквизиты объекта" не получится - они определяются в конфигураторе в дереве метаданных. То что вы хотите сделать усложнит вам жизнь. Можно конечно где-то хранить эти реквизиты, и каждый раз динамически создавать их на форме, но я считаю в рамках данной задачи это излишнее.
Вам достаточно просто сделать таб. часть с блюдами и все. Обращаться к таб части можно через Объект.ИмяВашейТабЧасти
Строки можно получать и обходить в цикле. или обращаться по индексу при необходимости
logist
Цитата(Bernet @ 29.11.17, 22:40) необходимо зарегистрироваться для просмотра ссылки
Начнем с того, что динамически реквизиты добавить не получится.

Bernet, вы начали со слишком сложного объяснения, думаю девушка не до конца понимает что такое Объект, или вы понимаете контекст по разному wink.gif
Расскажите как сделать две ТЧ - Блюда и Ингредиенты, и как заполнять первую - подбором, и при этом добавлять данные во вторую. Это и всё что требуется от этого вопроса.
Светлана0000
Bernet @ Вчера, 23:40 необходимо зарегистрироваться для просмотра ссылки ,
Скажите, а как мне тогда в том первом запросе установить параметр и условие, ссылаясь не на
объект.Блюдо
, а на табличную часть с полем Блюдо?
Когда пишу
Объект.ТЧ
, а дальше нельзя выбрать мое поле, только через
 Элементы.ТЧ.Поле
. Но через элементы не работает,а как получить объект я не могу понять.
Bernet
logist @ Вчера, 23:36 необходимо зарегистрироваться для просмотра ссылки ,
Да, наверно я на умняк упал. Сори. Попробую проще объяснить.

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

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

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

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

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

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

КонецПроцедуры
logist
Цитата(Bernet @ 30.11.17, 0:26) необходимо зарегистрироваться для просмотра ссылки
В Обработчике этой кнопки пишем следущее:

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

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

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

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

ТекущиеДанные.КоличествоИнгредиентов  = ТекущиеДанные.КоличествоИнгредиентов  * ТекущиеДанные.КоличествоПорций;
Светлана0000
Bernet @ Сегодня, 21:58 необходимо зарегистрироваться для просмотра ссылки ,
А если у меня в разных они таблицах? Я сделала вкладки и в одной таблица ПереченьБлюд, а в другой ПереченьИнгредиентов
logist
Цитата(Светлана0000 @ 30.11.17, 20:21) необходимо зарегистрироваться для просмотра ссылки
А он выдает ошибку Преобразование к типу Число не может быть выполнено

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

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

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

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

1. Пришло время прочитать что такое Отладчик.
2. Так же надо научится описывать проблему так что бы она была понятна всем, из текущего описания не понятно что происходит сейчас.

Светлана0000
logist @ Сегодня, 13:57 необходимо зарегистрироваться для просмотра ссылки ,
Я создаю ингредиент Мука и ставлю единицу измерения килограммы, затем при создании блюда я выбираю в ТЧ ингредиент мука и хочу чтобы единица измерения заполнялась автоматически кг.
Это вроде тоже самое что мне нужно было и до этого с заполнением Ингредиентов, но мне кажется я не установила какой-то параметр.
logist
Цитата(logist @ 03.12.17, 12:57) необходимо зарегистрироваться для просмотра ссылки
1. Пришло время прочитать что такое Отладчик.
2. Так же надо научится описывать проблему так что бы она была понятна всем, из текущего описания не понятно что происходит сейчас.

Повторюсь, и раз уж вы решились программировать, учитесь разъясняться:
3. "У меня есть справочник такой-то, в документе имеет тип СправочниксСсылка такой-то, Я делаю то-то, и там у меня тип такой-то, а там точно такой же, но он не заполняется, отладчиком смотрела, всё корректно".
Если бы вы всё это проделали, то возможно выявили ошибку самостоятельно, а так, не видя конфигурации, мы тут включаем Вангу и пытаемся сообразить, что у вас там и почему оно не работает... Или не пытаемся, и вы ждете вашего ангела хранителя - Bernet smile.gif
Светлана0000
logist @ Сегодня, 20:07 необходимо зарегистрироваться для просмотра ссылки ,
Да,я пока плохо умею объяснять, но я ведь только учусь. А Bernet мне действительно очень сильно помог,не знаю чтобы я бы делала если не Bernet. Попробую еще раз объяснить.
У меня есть справочник Ингредиенты (в нем реквизит ЕдиницаИзмерения с типом ПеречислениеСсылка). Также у меня есть справочник Блюда с ТЧ Ингредиенты (с полями Ингредиент,Количество и ЕдиницаИзмерения с типом ПеречислениеСсылка). Вот и я хочу чтобы когда я заполняю Блюда в ТЧ в поле ЕдиницаИзмерения заполнялись данные из справочника Ингредиенты (реквизит ЕдиницаИзмерения). Для этого пишу в обработчик ИнгредиентыИгредиентПриИзменении вот такой код
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Ингредиенты.Наименование,
                   |    Ингредиенты.ЕдиницаИзмерения,
                   |    БлюдаИнгредиенты.Ингредиент КАК Ингредиент
                   |ИЗ
                   |    Справочник.Блюда.Ингредиенты КАК БлюдаИнгредиенты
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Ингредиенты КАК Ингредиенты
                   |        ПО БлюдаИнгредиенты.Ингредиент = Ингредиенты.Ссылка
                   |ГДЕ
                   |    БлюдаИнгредиенты.Ссылка = &Ссылка";
                                     
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);

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

Когда запускаю, то ничего не происходит. Когда ставлю точку останова то в цикл он как будто не заходит.
logist
Цитата(Светлана0000 @ 03.12.17, 20:27) необходимо зарегистрироваться для просмотра ссылки
НоваяСтрока.ЕдиницаИзмерения

Здесь какой тип?

Цитата(Светлана0000 @ 03.12.17, 20:27) необходимо зарегистрироваться для просмотра ссылки
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);

Что в параметре? Результат запроса пустой?
Светлана0000
logist @ Сегодня, 21:55 необходимо зарегистрироваться для просмотра ссылки ,
НоваяСтрока.ЕдиницаИзмерения
тип ПеречислениеСсылка
Bernet
Светлана0000 @ Вчера, 21:01 необходимо зарегистрироваться для просмотра ссылки ,
Добавьте событие "ПриИзменении" для колонки "Ингредиент" справочника "Блюда" и пропишите такой код:

&НаКлиенте
Процедура ИнгредиентыИгредиентПриИзменении(Элемент)
    
    ТекущиеДанные = Элементы.Ингредиенты.ТекущиеДанные;
    
    Если ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    ТекущиеДанные.ЕдиницаИзмерения = ПолучитьЕдиницуИзмеренияИнгридиентаНаСервере(ТекущиеДанные.Ингредиент);
    
КонецПроцедуры

&НаСервере
функция ПолучитьЕдиницуИзмеренияИнгридиентаНаСервере(Ингредиент)
    
    Если НЕ ЗначениеЗаполнено(Ингредиент) Тогда
        Возврат Перечисления.ЕдиницаИзмерения.ПустаяСсылка();
    Иначе
        Возврат Ингредиент.ЕдиницаИзмерения;
    КонецЕсли;
    
КонецФункции


P.S. Я бы на вашем месте делал Единицы Измерения справочником, а не перечислением. Рано или поздно придете к тому, что надо будет добавить новую единицу и придется лезть в конфигуратор.
Светлана0000
Bernet @ Сегодня, 10:23 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо большое, я вот только не пойму почему когда я запустила первый раз все работало, а сейчас перестало, я только хотела поменять как вы сказали на справочник, но потом передумала и поставила все обратно, но почему-то теперь не работает. И где кнопка заполнение ингредиентов Единица измерения тоже не заполняется. Когда тип меняешь, а потом ставишь обратно, оно не должно разве работать опять?
Bernet
Светлана0000 @ Сегодня, 15:44 необходимо зарегистрироваться для просмотра ссылки ,
Проверьте типы реквизитов и их привязку с элементами на форме, при изменении типа реквизита путь к данным может очищаться. Откройте форму, откройте свойства поля на форме и посмотрите есть ли привязка к вашему реквизиту (поле "ПутьКДанным") - если нету - проставьте
Светлана0000
Bernet @ Сегодня, 16:51 необходимо зарегистрироваться для просмотра ссылки ,
ПутьКДанным везде проставлен и типы реквизитов везде ПеречислениеСсылка стоит, всё равно не работает

Bernet
Везде проставлии одинаковый тип? И в Блюдах и в Ингредиентах?
P.S. Если изменили на Справочник, тогда в коде
&НаСервере
функция ПолучитьЕдиницуИзмеренияИнгридиентаНаСервере(Ингредиент)
    
    Если НЕ ЗначениеЗаполнено(Ингредиент) Тогда
        Возврат Справочники.ЕдиницаИзмерения.ПустаяСсылка();
    Иначе
        Возврат Ингредиент.ЕдиницаИзмерения;
    КонецЕсли;
    
КонецФункции

вместо этой строки
Цитата
Возврат Перечисления.ЕдиницаИзмерения.ПустаяСсылка();

должно быть
Цитата
Возврат Справочники.ЕдиницаИзмерения.ПустаяСсылка();

Светлана0000
Bernet @ Сегодня, 17:01 необходимо зарегистрироваться для просмотра ссылки ,
Ну да, а что не надо было?

Bernet @ Сегодня, 17:01 необходимо зарегистрироваться для просмотра ссылки ,
Нет я перечисления оставила.Поэтому и не пойму почему не работает.
Bernet
Должно работать, хз.
При смене типа реквизиты очищаются ещё... т.е. надо заново проставить единицы измерения у ингредиентов...

Светлана0000
Bernet @ Сегодня, 17:08 необходимо зарегистрироваться для просмотра ссылки ,
Да все заработало,спасибо вам огромное))))
Vofka
Цитата(Светлана0000 @ 04.12.17, 16:14) необходимо зарегистрироваться для просмотра ссылки
Да все заработало,спасибо вам огромное))))

Для спасибо есть специальная кнопочка.
logist
Цитата(Bernet @ 04.12.17, 9:23) необходимо зарегистрироваться для просмотра ссылки
    Если ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;

Bernet, какая вероятность того что условие сработает в событии ПриИзменении?
Bernet
logist @ Сегодня, 0:13 необходимо зарегистрироваться для просмотра ссылки ,
Согласен, в данном контексте нулевая, можно было обойтись без этих трех строчек. Просто привычка ставить проверки чтобы не наткнуться на "Поле объекта не обнаружено"....
тут можно было их не писать, я просто спешил ответить
Светлана0000
Vofka @ Вчера, 17:45 необходимо зарегистрироваться для просмотра ссылки ,
Я знаю что есть специальная кнопка, но мне кажется все равно приятнее когда человек это говорит,а не просто тыкнул на кнопку.
Petre
Светлана0000 @ Сегодня, 13:53 необходимо зарегистрироваться для просмотра ссылки ,
Это не так. Каждое сообщение "поднимает" тему и заставляет пользователя открывать и смотреть. А смотреть, фактически, не на что. Это занимает время пользователя, который может провести его для оказания помощи другим.
Vofka
Цитата(Светлана0000 @ 05.12.17, 13:53) необходимо зарегистрироваться для просмотра ссылки
Я знаю что есть специальная кнопка, но мне кажется все равно приятнее когда человек это говорит,а не просто тыкнул на кнопку.

Возможно. Но при этом если ещё и кнопочку нажать, то становится ещё приятнее smile.gif
Светлана0000
У меня есть документ Заказ, в нем две вкладки ТЧ Блюда и ТЧ Ингредиенты, сначала я заполняю блюда( наименование, кол-во порций и т.д), далее нажимаю на кнопку заполнить ингредиенты и во вкладке Ингредиенты с учетом порций заполняются ингредиенты, далее перед проведением проходит проверка на наличие этих ингредиентов на складе, и если не хватает то выводится сообщение что такого-то ингредиента не хватает. А как мне сделать чтобы выводилось еще и блюдо в какое входит этот ингредиент???? Скорее всего это нужно что-то в запросе изменить, но у меня не получается. Помогите пожалуйста.

 i 

Не надо увеличивать размер шрифта без надобности
 


Светлана0000 @ Сегодня, 15:20 необходимо зарегистрироваться для просмотра ссылки ,
Вот проверка
Процедура ОбработкаПроведения(Отказ, Режим)
    // проверяем остатки
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |     Ингредиенты.Ингредиент КАК Ингредиент,
    |     СУММА(Ингредиенты.КоличествоИнгредиентов) КАК КоличествоИнгредиентов
    |ПОМЕСТИТЬ ВтИнгридиенты
    |ИЗ
    |    Документ.Заказ.ПереченьИнгредиентов КАК Ингредиенты
    |ГДЕ
    |    Ингредиенты.Ссылка = &ТекущийДокумент
    |СГРУППИРОВАТЬ ПО
    |    Ингредиенты.Ингредиент
    |;
    |///////////////////////////////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |      ВтИнгридиенты.Ингредиент КАК Товар,
    |      ВтИнгридиенты.КоличествоИнгредиентов КАК Количество,
    |    ЕСТЬNULL(ОстаткиТоваров.КоличествоОстаток, 0) КАК КоличествоОстаток
    |ИЗ
    |     ВтИнгридиенты КАК ВтИнгридиенты     
    |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&Период, Товар В (ВЫБРАТЬ ВтИнгридиенты.Ингредиент ИЗ ВтИнгридиенты КАК ВтИнгридиенты )) КАК ОстаткиТоваров
    |        ПО ВтИнгридиенты.Ингредиент = ОстаткиТоваров.Товар
    |";
    
    Запрос.УстановитьПараметр("Период", Дата);
    Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
    
    Движения.ОстаткиТоваров.Записывать = Истина;
    
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        
        Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
        
            Сообщить("Недостаточно товара - "+Выборка.Товар+", необходимо - "+Выборка.Количество+", в наличии - "+Выборка.КоличествоОстаток );
            
            Отказ = Истина;
            Продолжить;    
        КонецЕсли;
        
        Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
        ЗаполнитьЗначенияСвойств(Движение, Выборка);
        Движение.Период = Дата;
        Движение.Регистратор = Ссылка;
                
    КонецЦикла;
    
    
КонецПроцедуры
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.