8.х Здравствуйте! помогите решить задачу

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

  1. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Нужно по кнопке "Заполнить", которая находится в документе "РасходнаяНакладная" заполнить новый документ данными из документа "БанковскаяВыписка".
    Как это сделать?
    Пробовал так:

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

    Реквизиты и табличные части у двух этих документов одинаковые.

    Вложения:

    Последнее редактирование модератором: 14 янв 2020
  2. (>_<)
    Offline

    (>_<)

    Регистрация:
    5 окт 2019
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    ДокументСсылка
  3. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Я пробую так:

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

    Подскажите новичку, что не так?
    Надо данные документа БанковскаяВыписка считать из базы данных запросом, и заполнить этими данными
    документ РасходнаяНакладная по кнопке "Заполнить".
    Реквизиты и Табличные части идентичные.
    Табличная часть "Заказы" с реквизитами Товары, Количество, Цена и Сумма.
    И как и где применить метод Записать?
    Последнее редактирование модератором: 14 янв 2020
  4. Briz
    Offline

    Briz Опытный в 1С

    Регистрация:
    9 апр 2013
    Сообщения:
    130
    Симпатии:
    16
    Баллы:
    29
    (1) Вам же в (2) сказали.!!
    У Вас: Если ТипЗнч(ПинкиИБрэйн) = Тип("ДокументОбъект.БанковскаяВыписка") Тогда
    а НАДО: Тип("ДокументСсылка.БанковскаяВыписка")

    (3) а Вы ПОПРОБУЙТЕ открыть свой запрос конструктором ;-)
    >>где применить метод Записать?
    а ЗАЧЕМ..? проверите заполнение, потом кнопкой запишите...
  5. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Briz, для того чтобы я это сделал, мне нужно много времени. Я готов это всё учить.
    Но меня время поджимает. Это тестовое задание для стажера.
  6. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204
    Любопытно. Зачем Вы тогда делаете эту задачу?
  7. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Модератор, я тебя понимаю, знаешь 1с. Но это столь важное в жизни достижение. Это кусок хлеба.
    Мне как новичку нужна помощь, и это естественно.
    Вот и объясни мне зачем тогда существует данный портал?
    Сможешь конструктивно объяснить?
  8. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204
    Данный портал существует для помощи в трудную минуту. Для обмена опытом. Для познания новых знаний. Все люди, сидящие здесь, делают это совершенно безвозмездно. Просто это наш образ жизни. Таких как Вы, пордон, тут было много, которые с криками: "Почему вы мне не помогаете", уходили ни с чем. Запомните раз и на всегда. Вам никто ничем не обязан. Если Вам не помогают, значит не могут или не хотят. И претензии тут не принято выставлять. Это во-первых. Во-вторых, я на "ты" не обращался. С своими знакомыми будете так разговаривать.

    По факту Вашей проблемы. Вы просите не помочь Вам в чем-то одном, а по сути, просите, чтобы за вас сделали. Как Вы сами выразились, это наш хлеб. Если только конечно кому то заняться нечем, то может быть решат Вашу проблему.

    В запросе Вы устанавливаете параметр Ссылка значением Табличной части судя по всему.
    Код:
    Запрос.УстановитьПараметр("Ссылка", Объект.Заказы);
    Сюда нужно передавать ссылку на документ Банковской выписки, которого в вашем скриншоте не наблюдается.
  9. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Я вас понял. Без обид.
    Я туда вставил так:
    Запрос.УстановитьПараметр("Ссылка", Объект.БанковскаяВыпискаЗаказы);

    Всё равно пишет, что объект не найдет.
    Прошелся отладчиком.
    Значение Тип: Пустой.

    Что можно в этом случае сделать.
  10. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204
    Где пишет? Скрин дайте.

    Объект.БанковскаяВыпискаЗаказы - это что? Его нет в скриншоте первом.
  11. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Переделал по другому:

    Код:
    &НаСервере
    Функция ПолучитьТоварыЗаказаНаСервере() 
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                        |    БанковскаяВыпискаЗаказы.Товар,
                        |    БанковскаяВыпискаЗаказы.Количество,
                        |    БанковскаяВыпискаЗаказы.Цена,
                        |    БанковскаяВыпискаЗаказы.Сумма
                        |ИЗ
                        |    Документ.БанковскаяВыписка.Заказы КАК БанковскаяВыпискаЗаказы
                        |ГДЕ
                        |    БанковскаяВыпискаЗаказы.Ссылка = &Ссылка";
                        //|    БанковскаяВыпискаЗаказы.Колеровка = ИСТИНА
                        //|    И БанковскаяВыпискаЗаказы.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Требуется)
                        //|    И БанковскаяВыпискаЗаказы.Ссылка = &БанковскаяВыпискаЗаказы
                        //|    ";
        Запрос.УстановитьПараметр("Ссылка", Объект.БанковскаяВыпискаЗаказы); 
        РезультатЗапроса =  Запрос.Выполнить();
    //  РезультатЗапроса = Запрос.Выполнить().Выгрузить();
        Если РезультатЗапроса.Пустой() Тогда
            сообщить("Нечего добавлять!");
        Иначе
            Результат = РезультатЗапроса.Выгрузить();
            Объект.Заказы.Очистить();
            Для каждого Стр из Результат Цикл
                НоваяСтрока  = Объект.Заказы.Добавить();
                НоваяСтрока.Товар = Стр.Товар;
                НоваяСтрока.Количество = Стр.Количество;
                НоваяСтрока.Цена = Стр.Цена;
                НоваяСтрока.Сумма = Стр.Сумма;
            КонецЦикла;
        Конецесли
    
    КонецФункции
    
    &НаКлиенте
    Процедура Заполнить()
        ПолучитьТоварыЗаказаНаСервере(); 
    КонецПроцедуры
    Всё равно ошибка та же.
    --- Объединение сообщений, 14 янв 2020 ---
    ВОТ ВСЕ СКРИНЫ: https://yadi.sk/d/v6L8HMTpOh1g-A
  12. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
  13. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204
    Код:
    Запрос.УстановитьПараметр("Ссылка", Объект.БанковскаяВыпискаЗаказы); 
    Потому что у вас нет Объект.БанковскаяВыпискаЗаказы. Сюда нужно передавать ссылку на документ.
    --- Объединение сообщений, 14 янв 2020 ---
    Вы на основании чего собрались заполнять документ расходная? Какими данными?
  14. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Чтобы я туда не вписывал:
    ГДЕ
    | БанковскаяВыпискаЗаказы.Ссылка = &БанковскаяВыпискаЗаказы";

    Запрос.УстановитьПараметр("БанковскаяВыпискаЗаказы", Ссылка.БанковскаяВыпискаЗаказы);

    или

    ГДЕ
    | БанковскаяВыпискаЗаказы.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", Ссылка.БанковскаяВыпискаЗаказы);

    Переменная Ссылка не определена
  15. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204
    У вас в принципе нет этого реквизита нигде. БанковскаяВыпискаЗаказы
    У вас всегда будет ошибка. Создайте реквизит в расходной с типом ДокументСсылка.БанковскаяВыписка и назовите его БанковскаяВыпискаЗаказы. В режиме предприятие заполните его и нажмите заполнить. И этой ошибки не будет.
  16. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    И в документе "БанковскаяВыписка" и в документе "РасходнаяНакладная" - есть два реквизита "Клиент" и "Склад".

    Я заполнял форму документа "РасходнаяНакладная" "вводом на основании" из документа "БанковскаяВыписка".

    Какой реквизит мне выбрать, чтобы исправить ошибку?
  17. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204
    Вы не понимаете да? Что такое запрос?! Запрос - это как опрос базы данных. А параметры - это вопросы для опроса. Если вам так будет понятнее.

    Вы делаете запрос к документу банковская выписка и пытаетесь сделать отбор по ссылке на этот документ.
    Программе нужно явно указать на эту ссылку. Вы пытаетесь сделать это вот в этом куске
    Код:
    Запрос.УстановитьПараметр("Ссылка", Объект.БанковскаяВыпискаЗаказы);
    Но такого реквизита "БанковскаяВыпискаЗаказы" у вас не существует. Поэтому ошибка и вылезает.

    Представьте что у вас 1000 документов банковская выписка. Из какого конкретно документа вы хотите получить данные? Так вот конкретно этот документ и нужно передать в запрос.
  18. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Вот часть текста задания:

    Документ отгрузки должен позволять произвести отгрузку сразу по нескольким заказам покупателя. В табличной части документа отгрузки должен быть реквизит «БанковскаяВыписка», в котором хранится ссылка на заказ покупателя, по которому производится отгрузка. В документе отгрузки должна быть кнопка «Заполнить». При нажатии на эту кнопку табличная часть документа должна заполняться по методу FIFO товарами из заказов покупателей, которые еще не были отгружены, но уже были оплачены; при этом в табличную часть должны попадать только те товары из заказов, для которых достаточно товаров на складе для отгрузки.
  19. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    8.157
    Симпатии:
    553
    Баллы:
    204
    Прошу меня простить, но задачи на спеца вам рано решать. Я не знаю как объяснить еще.
    --- Объединение сообщений, 14 янв 2020 ---
    Ваша задача решается не так просто как вы думаете. Нужны регистры, нужны движения. Нужен механизм партионного учета и оплат. Контроль остатков и прочее.
  20. TopicStarter Overlay
    nwo666
    Offline

    nwo666

    Регистрация:
    8 янв 2020
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Благодарю!
    Не могли бы вы подсказать: в какой задаче из сборника по специалисту 1С по платформе посмотреть похожую задачу?
    Это же задача из Оперативного Учета? Из какого?