Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Anmut
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 12
1

Заполнение табличной части документа при выборе реквизита

29.08.2015, 07:59. Просмотров 3165. Ответов 15
Метки нет (Все метки)

Доброго дня!
Будьте добры, подскажите, пожалуйста!

Имеется:
1. Справочник "ТехнологическаяКарта". В нем реквизит - "ГотоваяПродукция" и ТЧ "Сырье" с колонкой "Номенклатура"
2. Документ "ТехнологическаяОперация" с четырмя ТЧ - "ГотоваяПродукция", "Сырье", "Комплектующие" и "Убытки".
В данному документе один из реквизитов - "ТехнологическаяКарта" имеет тип -СправочникСсылка.ТехнологическаяКарта

Задача:

Как сделать, чтобы При выборе технологической карты, автоматически заполнились табличные части данными из справочника. А именно, чтоб в колонку "Номенклатура" ТЧ "ГотоваяПродукция" попали данные из реквизита "ГотоваяПродукция" справочника "ТехнологическаяКарта", а колонка "Номенклатура" ТЧ "Сырье" и "Убытки" заполнились Номенклатурой из ТЧ "Сырье" справочника "ТехнологическаяКарта".

Очень буду признателен за помощь! Только если есть возможность, то не надо просто скидывать код, а пояснить еще. Понимаю, что надо делать запрос и цикл с выборкой, но ни когда еще этого не делал, только учусь и хочу понимать что буду делать, чтоб потом не обращаться повторно с просьбой что ни так в моих кодах)))

За ранее благодарен!

Добавлено через 1 час 59 минут
Попробовал вытянуть данные хотя бы для одной ТЧ:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
&НаКлиенте
Процедура ТехнологическаяКартаПриИзменении(Элемент)
         ЗаполнитьТабличнуюЧасть();
КонецПроцедуры
 
&НаСервере
Процедура ЗаполнитьТабличнуюЧасть()
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ГотоваяПродукция.Наименование
        |ИЗ
        |    Справочник.ТехнологическиеКарты КАК ТехнологическиеКарты";
 
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    Для каждого Стр из РезультатЗапроса Цикл
        НоваяСтрока = Объект.ГотоваяПродукция.Добавить();
        НоваяСтрока.Номенклатура = Результат.Наименование; 
    КонецЦикла
КонецПроцедуры
Что-то не получается (((
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2015, 07:59
Ответы с готовыми решениями:

Автоматическое заполнение табличной части документа при изменении реквизита этого документа
Здравствуйте. Делаю свою конфу на 1с 8.3.5. Добавил справочник "Сотрудники" и подчиненный ему...

Программное заполнение табличной части документа из табличной части справочника
Доброго! Ситуация, поставившая меня в тупик. Имеем 1с 8.2 УФ Имеем справочник "Работ" Имеем...

Автоматическое заполнение табличной части документа из табличной части другого
Добрый день. Совсем недавно начал изучать 1С и пока не могу найти решения собственной задачи)...

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

Отображение не стандартного реквизита справочника в табличной части документа
Здравствуйте. Столкнулся с проблемой в собственной конфе на 1с 8.3.5. Есть 2 справочника ...

15
Fairuza
5213 / 2642 / 471
Регистрация: 23.11.2010
Сообщений: 8,690
29.08.2015, 08:38 2
А не
1C
1
НоваяСтрока.Номенклатура = Стр.Наименование;
0
Anmut
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 12
29.08.2015, 11:11  [ТС] 3
ругается(((
{Документ.ТехнологическаяОперация.Форма.ФормаДокумента.Форма(74)}: Поле объекта не обнаружено (Наименование)

Добавлено через 12 минут
разобрался:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаСервере
Процедура ЗаполнитьТабличнуюЧасть()
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ГотоваяПродукция
        |ИЗ
        |    Справочник.ТехнологическиеКарты КАК ТехнологическиеКарты";
 
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    Для каждого Стр из РезультатЗапроса Цикл
        НоваяСтрока = Объект.ГотоваяПродукция.Добавить();
        НоваяСтрока.Номенклатура = Стр.ГотоваяПродукция;
    КонецЦикла
КонецПроцедуры
так сказать, невнимательность))))

Добавлено через 13 минут
Ну вот не задача - перестали автоматически подставляться единицы измерения(((
Может кто подскажет в чем проблема?
0
1c-k
339 / 315 / 42
Регистрация: 20.08.2014
Сообщений: 1,238
Записей в блоге: 1
29.08.2015, 13:39 4
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
&НаСервере
Процедура ЗаполнитьТабличнуюЧасть()
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ТехнологическиеКарты.ГотоваяПродукция Как Наименование
        |ИЗ
        |    Справочник.ТехнологическиеКарты КАК";
 
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
   ТабличнаяЧасть  = Объект.ГотоваяПродукция;
 
    Для каждого Стр из РезультатЗапроса Цикл
        НоваяСтрока = ТабличнаяЧасть.Добавить();
        ЗаполнитьЗначениеСвойств(НоваяСтрока, Стр);
    КонецЦикла
КонецПроцедуры
ЗаполнитьЗначениесвойств() заполнит одну строку из другой по совпадению наименования колонок.
Соответственно в запросе надо ывбрать все поля, которые требуются в ТабличнаяЧасть.
И наименования, а так же ТИПЫ данных в выборке запроса и в строке табличной части должны совпадать.
0
29.08.2015, 13:39
Anmut
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 12
01.09.2015, 05:24  [ТС] 5
Спасибо конечно огромное!
Но боюсь это для меня точно пока не по силам((
Ну или, по крайне мере, я точно не понял, что надо сделать... Но за совет спасибо, может потом разберусь.

Добавлено через 16 часов 19 минут
Пытаюсь заполнить другую ТЧ, вытянув данные из того же справочника. Только сейчас это не реквизит справочника, а реквизит табличной части:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
&НаСервере
Процедура ЗаполнитьТабличнуюЧастьСырье()
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    Сырье.Номенклатура
        |ИЗ
        |    Справочник.ТехнологическиеКарты КАК ТехнологическиеКарты";
 
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    Для каждого Стр из РезультатЗапроса Цикл
        НоваяСтрока = Объект.Сырье.Добавить();
        НоваяСтрока.Номенклатура = Стр.Сырье.Номенклатура;
        
    КонецЦикла
КонецПроцедуры
Строка добавляется, но не заполняется. Пишет Номенклатура не найдена. Подскажите, пожалуйста в чем ошибка? Скорее всего неправильно обращаюсь к реквизиту таб.части...
0
Fairuza
5213 / 2642 / 471
Регистрация: 23.11.2010
Сообщений: 8,690
01.09.2015, 07:22 6
Если не ошибаюсь, надо
1C
1
2
3
4
5
Запрос.Текст = 
        "ВЫБРАТЬ
        |    Сырье.Номенклатура
        |ИЗ
        |    Справочник.ТехнологическиеКарты.Сырье КАК Сырье";
1
1c-k
339 / 315 / 42
Регистрация: 20.08.2014
Сообщений: 1,238
Записей в блоге: 1
01.09.2015, 07:55 7
Цитата Сообщение от Anmut Посмотреть сообщение
Стр.Сырье.Номенклатура
Стр.Номенклатура, т.к. в Выборке будет Колонка Номенклатура.
1C
1
2
3
4
  "ВЫБРАТЬ
        |    Сырье.Номенклатура Как Номенклатура
        |ИЗ
        |    Справочник.ТехнологическиеКарты КАК ТехнологическиеКарты";
0
Anmut
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 12
01.09.2015, 13:28  [ТС] 8
Спасибо огромное! Сработало так:

1C
1
2
3
4
5
Запрос.Текст = 
        "ВЫБРАТЬ
        |    Сырье.Номенклатура
        |ИЗ
        |    Справочник.ТехнологическиеКарты.Сырье КАК Сырье";
Добавлено через 3 минуты
Ну опять же проблема((
В этой ТЧ у меня тоже автоматом подставлялись дополнительные данные в колонки из других справочников и регистров при изменении номенклатуры, а сейчас нет(((
0
1c-k
339 / 315 / 42
Регистрация: 20.08.2014
Сообщений: 1,238
Записей в блоге: 1
01.09.2015, 15:27 9
Anmut, прописать надо в процедуру приизменение какие колонки должны обработаться и как.
0
Anmut
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 12
02.09.2015, 11:10  [ТС] 10
У меня они давно прописаны были(((
1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура СырьеНоменклатураПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.Сырье.ТекущиеДанные;
СтрокаТабличнойЧасти.Коэффициент=РаботаСоСправочником.КоэффициентСмеси(Объект.Дата,СтрокаТабличнойЧасти.Номенклатура);
СтрокаТабличнойЧасти.ЕдиницыИзмерения=ПолучитьЗначениеРеквизитаНаСервере(СтрокатабличнойЧасти.Номенклатура,"ЕдиницыИзмерения");
СтрокаТабличнойЧасти.Количество=СтрокаТабличнойЧасти.Коэффициент*Объект.Объем;
СтрокаТабличнойЧасти.Цена=РаботаСоСправочником.РозничнаяЦена(Объект.Дата,СтрокаТабличнойЧасти.Номенклатура);
РаботаСДокументами.РассчитатьСумма(СтрокаТабличнойЧасти);
КонецПроцедуры
Ранее это работало, а как номенклатура стала заполняться автоматически, перестало работать..
0
1c-k
339 / 315 / 42
Регистрация: 20.08.2014
Сообщений: 1,238
Записей в блоге: 1
02.09.2015, 11:15 11
Anmut, а что мешает после заполнения автоматом номенклатуры прописать эти же строки?
0
Anmut
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 12
02.09.2015, 13:00  [ТС] 12
1C
1
2
3
4
5
6
&НаКлиенте
Процедура ТехнологическаяКартаПриИзменении(Элемент)
         ЗаполнитьТабличнуюЧастьГотоваяПродукция();
         ЗаполнитьТабличнуюЧастьСырье();
         
КонецПроцедуры
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
&НаСервере
Процедура ЗаполнитьТабличнуюЧастьСырье()
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    Сырье.Номенклатура
        |ИЗ
        |    Справочник.ТехнологическиеКарты.Сырье КАК Сырье";
 
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    Для каждого Стр из РезультатЗапроса Цикл
        НоваяСтрока = Объект.Сырье.Добавить();
        НоваяСтрока.Номенклатура = Стр.Номенклатура;
        
        
    КонецЦикла
КонецПроцедуры
В какой из этих процедур прописать? Ругается(((
0
1c-k
339 / 315 / 42
Регистрация: 20.08.2014
Сообщений: 1,238
Записей в блоге: 1
02.09.2015, 13:05 13
Anmut,
1C
1
2
3
4
5
6
7
8
9
10
11
&НаКлиенте
Процедура ТехнологическаяКартаПриИзменении(Элемент)
         ЗаполнитьТабличнуюЧастьГотоваяПродукция();
         ЗаполнитьТабличнуюЧастьСырье();
         СтрокаТабличнойЧасти=Элементы.Сырье.ТекущиеДанные;
СтрокаТабличнойЧасти.Коэффициент=РаботаСоСправочником.КоэффициентСмеси(Объект.Дата,СтрокаТабличнойЧасти.Номенклатура);
СтрокаТабличнойЧасти.ЕдиницыИзмерения=ПолучитьЗначениеРеквизитаНаСервере(СтрокатабличнойЧасти.Номенклатура,"ЕдиницыИзмерения");
СтрокаТабличнойЧасти.Количество=СтрокаТабличнойЧасти.Коэффициент*Объект.Объем;
СтрокаТабличнойЧасти.Цена=РаботаСоСправочником.РозничнаяЦена(Объект.Дата,СтрокаТабличнойЧасти.Номенклатура);
РаботаСДокументами.РассчитатьСумма(СтрокаТабличнойЧасти);
КонецПроцедуры
0
Anmut
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 12
02.09.2015, 13:09  [ТС] 14
пробовал уже так -
{Документ.ТехнологическаяОперация.Форма.ФормаДокумента.Форма(29)}: Значение не является значением объектного типа (Коэффициент)
СтрокаТабличнойЧасти.Коэффициент=РаботаСоСправочником.КоэффициентСмеси(Объект.Дата,СтрокаТабличнойЧасти.Номенклатура);

Добавлено через 1 минуту
Попробовал удалить эту строку ругается на следующую(((-

{Документ.ТехнологическаяОперация.Форма.ФормаДокумента.Форма(30)}: Значение не является значением объектного типа (ЕдиницыИзмерения)
СтрокаТабличнойЧасти.ЕдиницыИзмерения=ПолучитьЗначениеРеквизитаНаСервере(СтрокатабличнойЧасти.Номенклатура,"ЕдиницыИзмер ения");
0
1c-k
339 / 315 / 42
Регистрация: 20.08.2014
Сообщений: 1,238
Записей в блоге: 1
02.09.2015, 13:16 15
Anmut, РаботаСоСправочником - общий модуль. Если серверный модуль - должна быть галка вызов сервера.
КоэффициентСмеси - это функция, она должна быть экспортной.

Добавлено через 1 минуту
Anmut, ПолучитьЗначениеРеквизитаНаСервере - функция, пошаговой пройтись и посмотреть, что к нему не прилетает на сервер.
Ваще в ЛС напиши, тимвьювер нужен будет и пару минут времени.
1
Anmut
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 12
02.09.2015, 13:48  [ТС] 16
Обязательно напишу - я от помощи не отказываюсь никогда)))). Завтра только, а то пора домой смываться с работы))). Спасибо!
0
02.09.2015, 13:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2015, 13:48

Заполнение табличной части документа
Всем привет. Народ, помогите пожалуйста. Такой вопрос: создал документ, добавил туда табличную...

Заполнение Табличной части документа
Здравствуйте! Заполняю табличную часть документа из справочника Номенклатура. Нужно, чтобы при...

Автоматическое заполнение табличной части документа
В документе при выборе реквизита Услуга, должна автоматически заполняться ТЧ - поле Оборудование. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru